Annotation of 3BSD/cmd/lisp/qfuncl.s, revision 1.1

1.1     ! root        1: #  opus 30 compiler call to ??? interface routines
        !             2:        .globl  __qf0
        !             3: __qf0:
        !             4:        subl3   $4,r6,r7
        !             5:        jbr     __qfuncl
        !             6: 
        !             7:        .globl  __qf1
        !             8: __qf1:
        !             9:        subl3   $8,r6,r7
        !            10:        jbr     __qfuncl
        !            11: 
        !            12:        .globl  __qf2
        !            13: __qf2:
        !            14:        subl3   $12,r6,r7
        !            15:        jbr     __qfuncl
        !            16: 
        !            17:        .globl  __qf3
        !            18: __qf3:
        !            19:        subl3   $16,r6,r7
        !            20:        jbr     __qfuncl
        !            21: 
        !            22:        .globl  __qf4
        !            23: __qf4:
        !            24:        subl3   $20,r6,r7
        !            25:        jbr     __qfuncl
        !            26: 
        !            27:        .globl  __qfuncl
        !            28: __qfuncl:                              # quick function call
        !            29:        cmpl    r6,_nplim               # make sure stack ok
        !            30:        blss    on1
        !            31:        calls   $0,_namerr
        !            32: on1:   movl    (r7),r0                 # bring in addr of atom
        !            33:        pushl   r0                      # stack addr of atom of fcn to call
        !            34:        movl    8(r0),r0                # bring in fcn binding addr
        !            35:        jleq    nonexf                  # jump if fcn non existant
        !            36:        ashl    $-9,r0,r1               # see if bcd
        !            37:        cmpb    $5,_typetable+1[r1]     # we are calling
        !            38:        jeql    gotbcd
        !            39: hackit:
        !            40:        calls   $1,_Lfuncal             # call lisp stuff
        !            41:        movl    r7,r6                   # restore np to top
        !            42:        rsb                             # return to callee
        !            43: gotbcd:
        !            44:        addl2   $4,r7                   # inc lbot by one nament
        !            45:        calls   $1,*(r0)                # call code
        !            46:        movab   -4(r7),r6               # restore np to top
        !            47:        rsb                             # return
        !            48: 
        !            49: nonexf: # non existant function, call c function to take care of it,
        !            50:        # we could process it here but wish to minimize assembly language
        !            51:        # code.
        !            52:        # we should never return from this call
        !            53:        # the addr of the atom is already stacked
        !            54: 
        !            55:        calls   $1,_Undeff              # call handler
        !            56:        clrl    r0                      # return nil to compiled code
        !            57:        rsb                             # if ever should return here
        !            58: 
        !            59:        .globl  __erthrow               # errmessage for uncaught throws
        !            60: __erthrow: 
        !            61:        .byte   'U,'n,'c,'a,'u,'g,'h,'t,' ,'t,'h,'r,'o,'w
        !            62:        .byte   ' ,'f,'r,'o,'m,' ,'c,'o,'m,'p,'i,'l,'e,'d
        !            63:        .byte   ' ,'c,'o,'d,'e,0
        !            64: 
        !            65:        .globl _tynames
        !            66: _tynames:
        !            67:        .long   0                               # nothing here
        !            68:        .long   _lispsys+20*4   # str_name
        !            69:        .long   _lispsys+21*4   # atom_name
        !            70:        .long   _lispsys+19*4   # int_name
        !            71:        .long   _lispsys+23*4   # dtpr_name
        !            72:        .long   _lispsys+22*4   # doub_name
        !            73:        .long   _lispsys+58*4   # funct_name
        !            74:        .long   _lispsys+83*4   # port_name
        !            75:        .long   _lispsys+47*4   # array_name
        !            76:        .long   0                               # nothing here
        !            77:        .long   _lispsys+50*4   # sdot_name
        !            78:        .long   _lispsys+53*4   # val_nam
        !            79: 
        !            80: 
        !            81: 
        !            82: 
        !            83: 
        !            84: 

unix.superglobalmegacorp.com

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