BSD 1 development
[unix-history] / px / 00int.s
CommitLineData
4e754410
BJ
1/
2/ Berkeley UNIX Pascal Assembler Kernel
3/
4.globl _interpret
5.globl _pcttot, _pdattim, _alloc, _free, _error, _fflush, _maxstk
6.globl _pputch, _pmessage, _pwrite, _pwril
7.globl atan, cos, exp, log, sin, sqrt
8.globl fptrap
9.globl _display, _dp, _lino, _draino
10.globl _seed, _randa, _randc, _randm, _randim
11.globl _atof
12.globl _argc, _argv, _errno
13.globl _file, _nodump, _pxpbuf, _pmflush
14.if FP
15fptrap:
16 4
17.endif
18/
19indir = 0
20return = 115 / jmp (lp)
21times = 43.
22lp = r5
23lc = r4
24error = 104000 ^ sys
25/
26ONE = 040200 /$1.0
27HALF = 040000 /$.5
28/
29_interpret:
30 setl
31 sys signal; 7.; onemt
32.if !FP
33 sys signal; 4.; fptrap
34.endif
35.if FP
36 sys signal; 4.; 0
37.endif
38 mov $_display,_dp
39 mov $loop,lp
40 mov 2(sp),lc
41 mov sp,*_dp
42 mov $_unit0,-(sp)
43 mov $_unit1,-(sp)
44/
45/ main interpreter loop
46/ the pseudo-op 'return'
47/ transfers here
48/
49loop:
50 movb (lc)+,r0
51 add r0,r0
52 movb (lc)+,r3
53 jmp *optab(r0)
54badop:
55 mov $EBADOP,_perrno
56 error EBADOP
57/cloop:
58/ movb (lc)+,r0
59/ mov r0,r1
60/ add r0,r0
61/ add $128.,r1
62/ ash $2,r1
63/ add $cntab,r1
64/ add $1,2(r1)
65/ adc (r1)
66/ movb (lc)+,r3
67/ jmp *optab(r0)
68/.bss
69/cntab:
70/ .=.+1024.
71/.text
72.bss
73_perrno: .=.+2
74.text
75onemt:
76 setd
77/ mov (sp)+,r0
78/ sub $2,r0
79/.if SEPID
80/ sys 61. /fetchi
81/.endif
82/.if !SEPID
83/ mov (r0),r0
84/.endif
85/ bic $!377,r0
86/ mov r0,-(sp)
87 mov _perrno,-(sp)
88 jsr pc,_error
89/\f
90_ABORT:
91 4
92_HALT:
93 mov $EHALT,_perrno
94 error EHALT
95_NODUMP:
96 inc _nodump
97_BEG:
98 mov (lc)+,r3
99 add $2,_dp
100 mov *_dp,-(sp)
101 mov lc,-(sp)
102 add $10.,lc
103 mov buf,-(sp)
104 mov _file,-(sp)
105 tst -(sp)
106 mov sp,*_dp
107 mov sp,r0
108 add r3,r0
109 cmp r0,sp
110 bhi 9f
111 cmp r0,_maxstk
112 blos 9f
113 tst r3
114 beq 2f
1151:
116 clr -(sp)
117 cmp sp,r0
118 bhi 1b
1192:
120 mov *_dp,r1
121 mov sp,(r1)
122 return
1239:
124 mov $ESTKOVFLO,_perrno
125 error ESTKOVFLO
126_END:
127 jsr pc,blkexit
128 mov *_dp,sp
129 tst (sp)+
130 mov (sp)+,_file
131 mov (sp)+,buf
132 tst (sp)+
133 mov (sp)+,*_dp
134 cmp _dp,$_display+2
135 bhi 3f
136 mov $_unit1,r0
137 mov FBUF(r0),-(sp)
138 jsr pc,_fflush
139 jsr pc,_pmflush
140 clr r0
141/ sys creat; cntdata; 0644
142/ sys write; cntab; 1024.
143/.data
144/cntdata: <counts\0>
145/.even
146/.text
147 jsr pc,_psexit
148.globl _psexit
1493:
150 mov (sp)+,_dp
151 mov (sp)+,lc
152 mov (sp)+,_lino
153 return
154_CALL:
155 mov lc,r0
156 add (lc)+,r0
157 mov _lino,-(sp)
158 mov lc,-(sp)
159 mov _dp,-(sp)
160 add $_display,r3
161 mov r3,_dp
162 mov r0,lc
163 return
164_PUSH:
165 bne 1f
166 mov (lc)+,r3
1671:
168 mov sp,r0
169 add r3,r0
1701:
171 cmp sp,r0
172 blos 1f
173 clr -(sp)
174 br 1b
1751:
176 return
177_POP:
178 bne 1f
179 mov (lc)+,r3
1801:
181 add r3,sp
182 return
183_SDUP:
184 mov (sp),-(sp)
185 return
186_IF:
187 tstb (sp)+
188 beq _TRA
189 tst (lc)+
190 return
191_ASRT:
192 tstb (sp)+
193 beq 9f
194 return
1959:
196 mov $EASRT,_perrno
197 error EASRT
198_TRA:
199 add (lc),lc
200 return
201_LINO:
202 bne 1f
203 mov (lc)+,r3
2041:
205 mov r3,_lino
206 mov *_dp,r1
207 cmp (r1),sp
208 bne 2f
209 add $1,_stcnt+2
210 adc _stcnt
211 sub $1,_stlim+2
212 sbc _stlim
213 bne 1f
214 tst _stlim+2
215 bne 1f
216 mov $ESTLIM,_perrno
217 error ESTLIM
2181:
219 return
2202:
221 mov $ESTKNEMP,_perrno
222 error ESTKNEMP
223.data
224.globl _stcnt, _stlim
225_stcnt: 0
226 0
227_stlim: 7
228 120440
229.text
230_GOTO:
231 add (lc),lc
232 add $_display,r3
2331:
234 mov *_dp,r2
235 cmp r3,_dp
236 beq 1f
237 cmp _dp,$_display
238 beq 9f
239 jsr pc,blkexit
240 tst (r2)+
241 mov (r2)+,_file
242 mov (r2)+,buf
243 tst (r2)+
244 mov (r2)+,*_dp
245 mov (r2)+,_dp
246 br 1b
2471:
248 mov (r2),sp
249 return
2509:
251 mov $EGOTO,_perrno
252 error EGOTO
253blkexit:
254 mov r2,-(sp)
255 mov fchain,r2
2561:
257 tst r2
258 beq 2f
259 cmp FLEV(r2),*_dp
260 bhi 2f
261 bit $FWRITE,FUNIT(r2)
262 beq 4f
263 mov FBUF(r2),-(sp)
264 jsr pc,_fflush
265 tst (sp)+
2664:
267 mov FUNIT(r2),r0
268 bmi 3f
269 bic $!17,r0
270 sys close
271 bec 3f
272 mov PFNAME(r2),_file
273 mov $ECLOSE,_perrno
274 error ECLOSE
2753:
276 bit $TEMP,FUNIT(r2)
277 beq 4f
278 mov PFNAME(r2),0f
279 sys indir;8f
280.data
2818: sys unlink;0: ..
282.text
283 bec 4f
284 mov PFNAME(r2),_file
285 mov $EREMOVE,_perrno
286 error EREMOVE
2874:
288 mov FNAME(r2),-(sp)
289 jsr pc,_free
290 mov r2,(sp)
291 mov FCHAIN(r2),r2
292 sub $518.+14.,(sp)
293 jsr pc,_free
294 tst (sp)+
295 br 1b
2962:
297 mov r2,fchain
298 mov (sp)+,r2
299 rts pc
300_pmflush:
301 tst _pxpbuf
302 beq 1f
303 sys creat; pmonout; 644
304 sys indir; 8f
305.data
3068: sys write; _pxpbuf: ..; _pxpsize: ..
307pmonout: <pmon.out\0>
308.even
309.text
3101:
311 rts pc