Annotation of 3BSD/cmd/px/00int.s, revision 1.1.1.1

1.1       root        1: #
                      2: # 00int.s
                      3: #
                      4: _ABORT:
                      5:        halt                    #stop immediately!!!
                      6: _HALT:
                      7:        movw    $EHALT,_perrno
                      8:        jbr     error
                      9: _CALL:
                     10:        cvtbl   (r10)+,r0       #entry level of new proc
                     11:        movl    (r10)+,r1       #new entry point
                     12:        pushr   $R11|R10|R9     #save lino, lc, dp
                     13:        moval   _display[r0],r9
                     14:        addl3   r1,ap,r10       #calc new entry point
                     15:        jmp     (r8)
                     16: _NODUMP:
                     17:        moval   iloop,r8        #disable profiling
                     18:        incw    _nodump
                     19:        bicpsw  $0xe0           #disable overflow checks
                     20: _BEG:
                     21:        incl    r10
                     22:        cvtwl   (r10)+,r0       #r0 has local variable size
                     23:        bgtr    framesize       #current max is 32768 bytes
                     24:        addl2   _addrsze,r9     #enter local scope
                     25:        pushl   (r9)            #save old display value
                     26:        pushl   r10             #pointer to proc name
                     27:        addl2   $8,r10          #skip over name text
                     28:        movzwl  (r10)+,r11      #set new lino
                     29:        pushl   r7              #save I/O info
                     30:        pushl   _file
                     31:        subl2   $4,sp           #space for top of frame pointer
                     32:        movl    sp,(r9)         #set new display pointer
                     33:        addl3   r0,sp,r1        #r1 points to new top of stack
                     34:        clrl    tempsize(r1)    #check for memory (fault => not available)
                     35:        movl    r1,(sp)         #set new top of stack pointer
                     36:        movl    r1,sp           #allocate local variables
                     37:        mnegl   r0,r0           #r0 has amount of space to alloc
                     38:        movc5   $0,(r2),$0,r0,(sp)   #zero out local variables
                     39:        jmp     (r8)
                     40: framesize:
                     41:        movw    $EFRAMESIZE,_perrno
                     42:        jbr     error
                     43: _BLKBEG:
                     44:        incl    r10
                     45:        mnegl   (sp)+,r0        #r0 has size of block
                     46:        cmpl    *(r9),sp        #check stack integrity
                     47:        bneq    stknemp
                     48:        subl3   r0,sp,r1        #r1 points to new top of stack
                     49:        clrl    tempsize(r1)    #check for memory (fault => not available)
                     50:        movl    r1,sp           #allocate space
                     51:        movl    sp,*(dp)        #set top of stack ptr
                     52:        movc5   $0,(r2),$0,r0,(sp)   #clear space
                     53:        jmp     (r8)
                     54: stknemp:
                     55:        movw    $ESTKNEMP,_perrno
                     56:        jbr     error
                     57: _END:
                     58:        pushl   (r9)            #flush and close local files
                     59:        calls   $1,_pclose
                     60:        movl    (r9),sp         #deallocate local vars
                     61:        movl    4(sp),_file     #restore old I/O info
                     62:        movl    8(sp),r7
                     63:        movl    16(sp),(r9)     #restore old display entry
                     64:        addl2   $20,sp          #deallocate current frame
                     65:        addl3   $_display,_addrsze,r0
                     66:        cmpl    r9,r0           #exiting main proc ???
                     67:        beql    l0011
                     68:        popr    $R11|R10|R9     #restore lino, lc, dp
                     69:        jmp     (r8)
                     70: l0011:
                     71:        ret                     #end of interpretation
                     72: _GOTO:
                     73:        cvtbl   (r10)+,r0
                     74:        bneq    l0016
                     75:        cvtwl   (r10)+,r0
                     76: l0016:
                     77:        moval   _display[r0],r0 #r0 has exit dp value
                     78:        addl3   (r10),ap,r10            #establish return address
                     79: l0017:
                     80:        cmpl    r0,r9           #check for done
                     81:        beql    l0018
                     82:        cmpl    r9,$_display    #check for end of stack
                     83:        beql    egoto
                     84:        pushl   (r9)            #flush and close local files
                     85:        calls   $1,_pclose
                     86:        movl    (r9),sp         #deallocate local vars
                     87:        movl    4(sp),_file     #restore old I/O info
                     88:        movl    8(sp),r7
                     89:        movl    16(sp),(r9)     #restore old display entry
                     90:        addl2   $20,sp          #deallocate current frame
                     91:        movl    (sp),r9         #get old display pointer
                     92:        brb     l0017           #continue
                     93: l0018:
                     94:        movl    *(r9),sp        #reset sp to top of stack
                     95:        jmp     (r8)
                     96: egoto:
                     97:        movl    $EGOTO,_perrno
                     98:        jbr     error
                     99: _LINO:
                    100:        cmpl    *(r9),sp        #check stack integrity
                    101:        jneq    stknemp
                    102:        cvtbl   (r10)+,r11      #update line number
                    103:        bneq    l0015
                    104:        cvtwl   (r10)+,r11
                    105: l0015:
                    106:        aoblss  _stlim,_stcnt,l0021   #update statement count
                    107:        movw    $ESTLIM,_perrno
                    108:        jbr     error
                    109: l0021:
                    110:        jmp     (r8)
                    111: _IF:
                    112:        tstw    (sp)+
                    113:        beql    _TRA
                    114:        addl2   $3,r10
                    115:        jmp     (r8)
                    116: _TRA4:
                    117:        addl3   1(r10),ap,r10
                    118:        jmp     (r8)
                    119: _TRA:
                    120:        incl    r10
                    121:        cvtwl   (r10),r0
                    122:        addl2   r0,r10
                    123:        jmp     (r8)
                    124: _PUSH:
                    125:        cvtbl   (r10)+,r0
                    126:        bneq    l0012
                    127:        cvtwl   (r10)+,r0
                    128: l0012:
                    129:        jgtr    framesize       #current maximum of 32768
                    130:        mnegl   r0,r0
                    131:        blbc    r0,l0020
                    132:        incl    r0
                    133: l0020:
                    134:        subl3   r0,sp,r1        #r1 points to new top of stack
                    135:        clrl    tempsize(r1)    #check for memory (fault => not available)
                    136:        movl    r1,sp           #allocate the memory
                    137:        movc5   $0,(r2),$0,r0,(sp)
                    138:        jmp     (r8)
                    139: _POP:
                    140:        cvtbl   (r10)+,r0
                    141:        bneq    l0013
                    142:        cvtwl   (r10)+,r0
                    143: l0013:
                    144:        addl2   r0,sp
                    145:        jmp     (r8)
                    146: _PUSH4:
                    147:        incl    r10
                    148:        mnegl   (sp)+,r0
                    149:        blbc    r0,l0019
                    150:        incl    r0
                    151: l0019:
                    152:        subl3   r0,sp,r1        #r1 points to new top of stack
                    153:        clrl    tempsize(r1)    #check for memeory (fault => not available)
                    154:        movl    r1,sp           #allocate the memory
                    155:        movc5   $0,(r2),$0,r0,(sp)
                    156:        jmp     (r8)
                    157: _POP4:
                    158:        incl    r10
                    159:        addl2   (sp)+,sp
                    160:        jmp     (r8)
                    161: _SDUP:
                    162:        incl    r10
                    163:        movw    (sp),-(sp)
                    164:        jmp     (r8)
                    165: _ASRT:
                    166:        incl    r10
                    167:        tstw    (sp)+
                    168:        beql    l0014
                    169:        jmp     (r8)
                    170: l0014:
                    171:        movw    $EASRT,_perrno
                    172:        jbr     error

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.