BSD 4 development
[unix-history] / .ref-BSD-3 / usr / src / cmd / px / 00case.s
CommitLineData
c427afba
CH
1# 00case.s
2#
3# Berkeley Pascal Assembler Kernel
4#
5 .globl _interpret #normal interpreter entry point
6#
7# register definitions
8#
9# registers R0 - R6 are for scratch use
10#
11 .set lino, r11
12 .set lc, r10
13 .set dp, r9
14 .set loop, r8
15 .set buf, r7
16#
17# Global constants
18#
19 .set R2,0x004 #register fields in call mask
20 .set R3,0x008
21 .set R4,0x010
22 .set R5,0x020
23 .set R6,0x040
24 .set R7,0x080
25 .set R8,0x100
26 .set R9,0x200
27 .set R10,0x400
28 .set R11,0x800
29 .set SIGINT,2 #interrupt signal
30 .set SIGFPE,8 #arithmetic exception signal
31 .set SIGSEGV,11 #segmentation violation
32 .set MASK,6 #offset of save mask in call stack
33 .set FP,12 #offset of "fp" in call stack
34 .set PC,16 #offset of "pc" in call stack
35 .set REGS,20 #beginning of saved registers in call stack
36 .set O_DATE,0346 #DATE opcode number
37 .set O_TIME,0347 #TIME opcode number
38 .set tempsize,-256 #maximum required temporary stack space
39 .set HZ,60 #interrupt frequency
40#
41# program variables
42#
43 .globl _display #runtime display
44 .globl _addrsze #size of addresses
45 .globl _file #current file name
46 .globl _bufopt #standard output buffering option
47 .globl _fchain #head of active file chain
48 .globl _llimit #max number of output lines
49 .globl _stcnt #number of stmts executed
50 .globl _stlim #max number of stmts to exec
51 .globl _nodump #1 => no postmortum dump
52 .globl _perrno #interpreter error number
53 .globl _profcnts #PX profile execution counts
54 .globl _pxpbuf #ptr to pxp buffer
55 .globl _pxpsize #size of pxp buffer
56 .globl _argc #number of passed args
57 .globl _argv #values of passed args
58 .globl __iob #base of I/O buffer block
59#
60# system subroutines
61#
62 .globl _signal
63 .globl _time
64 .globl _times
65#
66# system math routines
67#
68 .globl _atan
69 .globl _cos
70 .globl _exp
71 .globl _log
72 .globl _sin
73 .globl _sqrt
74 .globl _srand
75 .globl _rand
76#
77# pascal specific subroutines
78#
79 .globl _error #error message routine
80 .globl _palloc #heap allocator
81 .globl _pfree
82 .globl _pcttot #set constructor
83 .globl _pdattim #getting date, time info
84 .globl _perror #process pxp errors
85#
86# initializing the interpreter
87#
88_interpret:
89 .word 0xffc #register save mask
90 moval iloop,r8
91 tstl 8(ap) #check for profiling
92 beql l0050
93 moval ploop,r8 #set profiling request
94l0050:
95 callg *4(ap),l0051 #set ap to base of program
96 ret
97l0051:
98 .word 0
99 bispsw $0xe0 #enable overflow traps
100 movl ap,r10 #program start address
101 moval _display,r9
102 moval -4(sp),(r9)
103 pushal stderr #set up global file variables
104 movl sp,stderr+FLEV
105 movl _llimit,stderr+LLIMIT
106 pushal stdout
107 movl sp,stdout+FLEV
108 movl _llimit,stdout+LLIMIT
109 pushal stdin
110 movl sp,stdin+FLEV
111 moval stdin,_fchain
112 jmp (r8) #begin interpreter
113#
114# main interpreter loop
115# the instruction 'jmp (loop)'
116# transfers here
117#
118ploop:
119 movzbl (r10),r0
120 incl _profcnts[r0]
121iloop:
122 caseb (r10)+,$0,$255
123optab:
124 .word _ABORT-optab
125 .word _HALT-optab
126 .word _TRA4-optab
127 .word _NODUMP-optab
128 .word _BEG-optab
129 .word _END-optab
130 .word _CALL-optab
131 .word _TRACNT-optab
132 .word _PUSH-optab
133 .word _POP-optab
134 .word _INX4-optab
135 .word _SDUP-optab
136 .word _IF-optab
137 .word _TRA-optab
138 .word _LINO-optab
139 .word _GOTO-optab
140 .word _REL2-optab
141 .word _REL4-optab
142 .word _REL24-optab
143 .word _REL42-optab
144 .word _REL8-optab
145 .word _RELG-optab
146 .word _RELT-optab
147 .word badop-optab
148 .word _REL28-optab
149 .word _REL48-optab
150 .word _REL82-optab
151 .word _REL84-optab
152 .word _AND-optab
153 .word _OR-optab
154 .word _NOT-optab
155 .word badop-optab
156 .word _AS2-optab
157 .word _AS4-optab
158 .word _AS24-optab
159 .word _AS42-optab
160 .word _AS8-optab
161 .word _INX2P2-optab
162 .word _INX4P2-optab
163 .word _AS-optab
164 .word _AS21-optab
165 .word _AS41-optab
166 .word _AS28-optab
167 .word _AS48-optab
168 .word _OFF-optab
169 .word _INX2-optab
170 .word _NIL-optab
171 .word _LV-optab
172 .word _ADD2-optab
173 .word _ADD4-optab
174 .word _ADD24-optab
175 .word _ADD42-optab
176 .word _ADD28-optab
177 .word _ADD48-optab
178 .word _ADD82-optab
179 .word _ADD84-optab
180 .word _SUB2-optab
181 .word _SUB4-optab
182 .word _SUB24-optab
183 .word _SUB42-optab
184 .word _SUB28-optab
185 .word _SUB48-optab
186 .word _SUB82-optab
187 .word _SUB84-optab
188 .word _MUL2-optab
189 .word _MUL4-optab
190 .word _MUL24-optab
191 .word _MUL42-optab
192 .word _MUL28-optab
193 .word _MUL48-optab
194 .word _MUL82-optab
195 .word _MUL84-optab
196 .word _ABS2-optab
197 .word _ABS4-optab
198 .word _ABS8-optab
199 .word badop-optab
200 .word _ADD8-optab
201 .word _SUB8-optab
202 .word _MUL8-optab
203 .word _DVD8-optab
204 .word _DIV2-optab
205 .word _DIV4-optab
206 .word _DIV24-optab
207 .word _DIV42-optab
208 .word badop-optab
209 .word badop-optab
210 .word badop-optab
211 .word badop-optab
212 .word _MOD2-optab
213 .word _MOD4-optab
214 .word _MOD24-optab
215 .word _MOD42-optab
216 .word badop-optab
217 .word badop-optab
218 .word badop-optab
219 .word badop-optab
220 .word _NEG2-optab
221 .word _NEG4-optab
222 .word _NEG8-optab
223 .word badop-optab
224 .word badop-optab
225 .word badop-optab
226 .word badop-optab
227 .word badop-optab
228 .word badop-optab
229 .word badop-optab
230 .word badop-optab
231 .word badop-optab
232 .word badop-optab
233 .word badop-optab
234 .word badop-optab
235 .word badop-optab
236 .word _DVD2-optab
237 .word _DVD4-optab
238 .word _DVD24-optab
239 .word _DVD42-optab
240 .word _DVD28-optab
241 .word _DVD48-optab
242 .word _DVD82-optab
243 .word _DVD84-optab
244 .word _RV1-optab
245 .word _RV2-optab
246 .word _RV4-optab
247 .word _RV8-optab
248 .word _IND1-optab
249 .word _IND2-optab
250 .word _IND4-optab
251 .word _IND8-optab
252 .word _CON1-optab
253 .word _CON2-optab
254 .word _CON4-optab
255 .word _CON8-optab
256 .word _RV-optab
257 .word _IND-optab
258 .word _CON-optab
259 .word badop-optab
260 .word _RANG2-optab
261 .word _RANG42-optab
262 .word _RSNG2-optab
263 .word _RSNG42-optab
264 .word _RANG4-optab
265 .word _RANG24-optab
266 .word _RSNG4-optab
267 .word _RSNG24-optab
268 .word _WRITEF-optab
269 .word _WRITEC-optab
270 .word _WRITES-optab
271 .word _WRITEB-optab
272 .word badop-optab
273 .word badop-optab
274 .word badop-optab
275 .word badop-optab
276 .word _BLKBEG-optab
277 .word _PUSH4-optab
278 .word _POP4-optab
279 .word badop-optab
280 .word badop-optab
281 .word badop-optab
282 .word badop-optab
283 .word badop-optab
284 .word _CASE1OP-optab
285 .word _CASE2OP-optab
286 .word _CASE4OP-optab
287 .word _PXPBUF-optab
288 .word _COUNT-optab
289 .word badop-optab
290 .word badop-optab
291 .word badop-optab
292 .word _ADDT-optab
293 .word _SUBT-optab
294 .word _MULT-optab
295 .word _INCT-optab
296 .word _CTTOT-optab
297 .word _CARD-optab
298 .word _IN-optab
299 .word _ASRT-optab
300 .word _FOR1U-optab
301 .word _FOR2U-optab
302 .word _FOR4U-optab
303 .word _FOR1D-optab
304 .word _FOR2D-optab
305 .word _FOR4D-optab
306 .word _STLIM-optab
307 .word _SCLCK-optab
308 .word _STOI-optab
309 .word _STOD-optab
310 .word _ITOD-optab
311 .word _ITOS-optab
312 .word _BUFF-optab
313 .word _WCLCK-optab
314 .word _WRHEX2-optab
315 .word _WRHEX4-optab
316 .word _GET-optab
317 .word _PUT-optab
318 .word _MESSAGE-optab
319 .word _FNIL-optab
320 .word _EOF-optab
321 .word _EOLN-optab
322 .word _RESET-optab
323 .word _REWRITE-optab
324 .word _REMOVE-optab
325 .word _READ4-optab
326 .word _UNIT-optab
327 .word _READC-optab
328 .word _READ8-optab
329 .word _UNITINP-optab
330 .word _UNITOUT-optab
331 .word _READLN-optab
332 .word _WRIT2-optab
333 .word _WRIT4-optab
334 .word _WRITB-optab
335 .word _WRITC-optab
336 .word _WRIT8-optab
337 .word _WRITG-optab
338 .word _WRIT82-optab
339 .word _WRITLN-optab
340 .word _WROCT2-optab
341 .word _WROCT4-optab
342 .word _FLUSH-optab
343 .word _PACK-optab
344 .word _UNPACK-optab
345 .word _LLIMIT-optab
346 .word _ARGC-optab
347 .word _ARGV-optab
348 .word _CLCK-optab
349 .word _SEED-optab
350 .word _RANDOM-optab
351 .word _DISPOSE-optab
352 .word _NEW-optab
353 .word _EXPO-optab
354 .word _DATE-optab
355 .word _TIME-optab
356 .word _ATAN-optab
357 .word _COS-optab
358 .word _EXP-optab
359 .word _LN-optab
360 .word _SIN-optab
361 .word _SQRT-optab
362 .word _CHR2-optab
363 .word _CHR4-optab
364 .word _ODD2-optab
365 .word _ODD4-optab
366 .word _PRED2-optab
367 .word _PRED4-optab
368 .word _PRED24-optab
369 .word _SUCC2-optab
370 .word _SUCC4-optab
371 .word _SUCC24-optab
372 .word _DEFNAME-optab
373 .word _PAGE-optab
374 .word _UNDEF-optab
375 .word _SQR2-optab
376 .word _SQR4-optab
377 .word _SQR8-optab
378 .word _ROUND-optab
379 .word _TRUNC-optab
380badop:
381 incl r10
382 movw $EBADOP,_perrno
383 jbr error