Annotation of 3BSD/cmd/lisp/qfuncl.s, revision 1.1.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.