Commit | Line | Data |
---|---|---|
18d1c3cd JF |
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 |