Annotation of 3BSD/cmd/px/00int.s, revision 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.