BSD 3 development
[unix-history] / usr / src / cmd / px / 00int.s
CommitLineData
5ca535a0
CH
1#\f
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)
40framesize:
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)
54stknemp:
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)
70l0011:
71 ret #end of interpretation
72_GOTO:
73 cvtbl (r10)+,r0
74 bneq l0016
75 cvtwl (r10)+,r0
76l0016:
77 moval _display[r0],r0 #r0 has exit dp value
78 addl3 (r10),ap,r10 #establish return address
79l0017:
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
93l0018:
94 movl *(r9),sp #reset sp to top of stack
95 jmp (r8)
96egoto:
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
105l0015:
106 aoblss _stlim,_stcnt,l0021 #update statement count
107 movw $ESTLIM,_perrno
108 jbr error
109l0021:
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
128l0012:
129 jgtr framesize #current maximum of 32768
130 mnegl r0,r0
131 blbc r0,l0020
132 incl r0
133l0020:
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
143l0013:
144 addl2 r0,sp
145 jmp (r8)
146_PUSH4:
147 incl r10
148 mnegl (sp)+,r0
149 blbc r0,l0019
150 incl r0
151l0019:
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)
170l0014:
171 movw $EASRT,_perrno
172 jbr error