Commit | Line | Data |
---|---|---|
ed4c4f10 BJ |
1 | / |
2 | / BUILT IN FUNCTIONS | |
3 | / | |
4 | _LLIMIT: | |
5 | add $4.,sp | |
6 | return | |
7 | _ARGC: | |
8 | mov _argc,-(sp) | |
9 | sxt -(sp) | |
10 | return | |
11 | _ARGV: | |
12 | bne 1f | |
13 | mov (lc)+,r3 | |
14 | 1: | |
15 | mov (sp)+,r1 | |
16 | mov (sp)+,r0 | |
17 | blt 9f | |
18 | cmp r0,_argc | |
19 | bge 9f | |
20 | add r0,r0 | |
21 | add _argv,r0 | |
22 | mov (r0),r0 | |
23 | inc r3 | |
24 | br 3f | |
25 | 1: | |
26 | movb (r0)+,r2 | |
27 | bne 2f | |
28 | dec r0 | |
29 | mov $' ,r2 | |
30 | 2: | |
31 | movb r2,(r1)+ | |
32 | 3: | |
33 | sob r3,1b | |
34 | return | |
35 | 9: | |
36 | mov $EARGV,_perrno | |
37 | error EARGV | |
38 | _SCLCK: | |
39 | mov $2,-(sp) | |
40 | br 1f | |
41 | _CLCK: | |
42 | clr -(sp) | |
43 | 1: | |
44 | sub $12.,sp | |
45 | mov sp,0f | |
46 | sys indir; 1f | |
47 | mov sp,r0 | |
48 | add 12.(sp),r0 | |
49 | mov (r0),r0 | |
50 | add $14.,sp | |
51 | mul $1000.,r0 | |
52 | mov r1,-(sp) | |
53 | mov r0,-(sp) | |
54 | movif (sp)+,fr0 | |
55 | mov $HZ,-(sp) | |
56 | sxt -(sp) | |
57 | movif (sp)+,fr1 | |
58 | divf fr1,fr0 | |
59 | movfi fr0,-(sp) | |
60 | return | |
61 | .data | |
62 | 1: | |
63 | sys times; 0:.. | |
64 | .text | |
65 | _DATE: | |
66 | _TIME: | |
67 | asr r0 | |
68 | bic $!377,r0 | |
69 | mov r0,-(sp) | |
70 | jsr pc,_pdattim | |
71 | cmp (sp)+,(sp)+ | |
72 | return | |
73 | _SEED: | |
74 | mov (sp)+,r0 | |
75 | mov (sp)+,r1 | |
76 | mov _seed+2,-(sp) | |
77 | mov _seed,-(sp) | |
78 | mov r0,_seed | |
79 | mov r1,_seed+2 | |
80 | return | |
81 | _RANDOM: | |
82 | movif _seed,fr0 | |
83 | mulf _randa,fr0 | |
84 | addf _randc,fr0 | |
85 | movf fr0,fr2 | |
86 | modf _randim,fr2 | |
87 | movf fr2,(sp) | |
88 | mulf _randm,fr2 | |
89 | movfi fr2,_seed | |
90 | return | |
91 | _DISPOSE: | |
92 | tst (sp) | |
93 | beq 1f | |
94 | jsr pc,_free | |
95 | 1: | |
96 | tst (sp)+ | |
97 | return | |
98 | _NEW: | |
99 | bne 1f | |
100 | mov (lc)+,r3 | |
101 | 1: | |
102 | mov r3,-(sp) | |
103 | jsr pc,_alloc | |
104 | tst (sp)+ | |
105 | mov r0,*(sp)+ | |
106 | return | |
107 | _EXPO: | |
108 | movf (sp)+,fr0 | |
109 | movei fr0,-(sp) | |
110 | sxt -(sp) | |
111 | return | |
112 | _ATAN: | |
113 | movf (sp)+,fr0 | |
114 | jsr pc,atan | |
115 | movf fr0,-(sp) | |
116 | return | |
117 | _COS: | |
118 | movf (sp)+,fr0 | |
119 | jsr pc,cos | |
120 | movf fr0,-(sp) | |
121 | return | |
122 | _EXP: | |
123 | movf (sp)+,fr0 | |
124 | jsr pc,exp | |
125 | movf fr0,-(sp) | |
126 | return | |
127 | _LN: | |
128 | movf (sp)+,fr0 | |
129 | cfcc | |
130 | ble 9f | |
131 | jsr pc,log | |
132 | movf fr0,-(sp) | |
133 | return | |
134 | 9: | |
135 | mov $ELN,_perrno | |
136 | error ELN | |
137 | _SIN: | |
138 | movf (sp)+,fr0 | |
139 | jsr pc,sin | |
140 | movf fr0,-(sp) | |
141 | return | |
142 | _SQRT: | |
143 | movf (sp)+,fr0 | |
144 | cfcc | |
145 | bmi 9f | |
146 | jsr pc,sqrt | |
147 | movf fr0,-(sp) | |
148 | return | |
149 | 9: | |
150 | mov $ESQRT,_perrno | |
151 | error ESQRT | |
152 | _CHR4: | |
153 | tst (sp)+ | |
154 | bne 1f | |
155 | _CHR2: | |
156 | cmp (sp),$177 | |
157 | bhi 1f | |
158 | return | |
159 | 1: | |
160 | mov $ECHR,_perrno | |
161 | error ECHR | |
162 | _ODD4: | |
163 | tst (sp)+ | |
164 | _ODD2: | |
165 | bic $!1,(sp) | |
166 | return | |
167 | _PRED2: | |
168 | dec (sp) | |
169 | return | |
170 | _PRED4: | |
171 | sub $1,2(sp) | |
172 | sbc (sp) | |
173 | return | |
174 | _PRED24: | |
175 | sub $1,(sp) | |
176 | sxt -(sp) | |
177 | return | |
178 | _STLIM: | |
179 | mov (sp)+,r0 | |
180 | bge 1f | |
181 | tst (sp)+ | |
182 | return | |
183 | 1: | |
184 | mov (sp)+,r1 | |
185 | sub _stcnt+2,r1 | |
186 | sbc r0 | |
187 | sub _stcnt,r0 | |
188 | ashc $0,r0 | |
189 | bge 1f | |
190 | mov $ESTLIM,_perrno | |
191 | error ESTLIM | |
192 | 1: | |
193 | mov r0,_stlim | |
194 | mov r1,_stlim+2 | |
195 | return | |
196 | _SUCC2: | |
197 | inc (sp) | |
198 | return | |
199 | _SUCC4: | |
200 | add $1,2(sp) | |
201 | adc (sp) | |
202 | return | |
203 | _SUCC24: | |
204 | add $1,(sp) | |
205 | sxt -(sp) | |
206 | return | |
207 | _ROUND: | |
208 | movf (sp)+,fr0 | |
209 | cfcc | |
210 | bmi 1f | |
211 | addf $HALF,fr0 | |
212 | br 2f | |
213 | 1: | |
214 | subf $HALF,fr0 | |
215 | 2: | |
216 | movfi fr0,-(sp) | |
217 | return | |
218 | _TRUNC: | |
219 | movf (sp)+,fr0 | |
220 | movfi fr0,-(sp) | |
221 | return | |
222 | _UNDEF: | |
223 | add $8,sp | |
224 | clr -(sp) | |
225 | return | |
226 | / | |
227 | / pack(a,i,z) | |
228 | / | |
229 | / with: a: array[m..n] of t | |
230 | / z: packed array[u..v] of t | |
231 | / | |
232 | / semantics: for j := u to v do | |
233 | / z[j] := a[j-u+i]; | |
234 | / | |
235 | / need to check: | |
236 | / 1. i >= m | |
237 | / 2. i+(v-u) <= n (i.e. i-m <= (n-m)-(v-u)) | |
238 | / | |
239 | / on stack: lv(z), lv(a), rv(i) (len 2) | |
240 | / | |
241 | / move w(t)*(v-u+1) bytes from lv(a)+w(t)*(i-m) to lv(z) | |
242 | / | |
243 | _PACK: | |
244 | bne 1f | |
245 | mov (lc)+,r3 | |
246 | 1: | |
247 | mov $pack,reta | |
248 | / | |
249 | / check conditions 1 and 2 | |
250 | / | |
251 | pakunp: | |
252 | mov 4(sp),r1 | |
253 | sub (lc)+,r1 / m | |
254 | blt 9f | |
255 | cmp r1,(lc)+ / (n-m)-(u-v) | |
256 | bgt 9f | |
257 | mul r3,r1 | |
258 | mov (sp)+,r0 | |
259 | add (sp)+,r1 | |
260 | tst (sp)+ | |
261 | mov (lc)+,r3 | |
262 | inc r3 | |
263 | jmp *reta | |
264 | unpack: | |
265 | mov r0,r2 | |
266 | mov r1,r0 | |
267 | mov r2,r1 | |
268 | br pack | |
269 | 1: | |
270 | movb (r1)+,(r0)+ | |
271 | pack: | |
272 | sob r3,1b | |
273 | return | |
274 | / | |
275 | / unpack(z,a,i) | |
276 | / | |
277 | / with: z and a as in pack | |
278 | / | |
279 | / semantics: for j := u to v do | |
280 | / a[j-u+i] := z[j] | |
281 | / | |
282 | _UNPACK: | |
283 | bne 1f | |
284 | mov (lc)+,r3 | |
285 | 1: | |
286 | mov $unpack,reta | |
287 | br pakunp | |
288 | 9: | |
289 | cmp reta,$pack | |
290 | beq 1f | |
291 | mov $EUNPACK,_perrno | |
292 | error EUNPACK | |
293 | 1: | |
294 | mov $EPACK,_perrno | |
295 | error EPACK | |
296 | _WCLCK: | |
297 | sys time | |
298 | mov r1,-(sp) | |
299 | mov r0,-(sp) | |
300 | return |