| 160 | 3355+ | | | nop | | | | | ; |
|
160+1 | 3355+ | 1006434 | | jmp | .1 | | | | |
|
160+2 | 3356 | | .1: | ; | |
|
161 | 3356 | | | call | | | | | ;load formal param | @3356
|
161+1 | 3356 | 7307175001640 | | lnk | GenInst.lnk | : | jmp | GenInst.ent | |
|
162 | 3357 | | ; |
|
163 | 3357 | | .doit: | ; | |
|
164 | 3357 | 0031166577777 | | o00 | dicent | / | lod | -1 | ;get address of proc data |
|
165 | 3358 | 0404031 | | sto | IdInfo | | | | ;save it for later | @3358
|
166 | 3358+ | 0066253 | | and | TMMflg | | | | ;=00010000000000 Bit31 |
|
167 | 3359 | 1146440 | | jz | .doit1 | | | | ;-> |
|
168 | 3359+ | 0602212 | | lod | B19.28 | | | | ;=00001777000000 <00255/400> |
|
169 | 3360 | 0464031 | | ans | IdInfo | | | | ; | @3360
|
170 | 3360+ | | .doit1: | ; | |
|
171 | 3360+ | 0646233 | | lis | Link31 | | | | ;arg number (negated) |
|
172 | 3361 | 0564031 | | o27 | IdInfo | | | | ;index into formals |
|
173 | 3361+ | 0603445 | | lod | GPs+0 | | | | ;=GP1F 20,0 |
|
174 | 3362 | | | call | | | | | ;store as formal param | @3362
|
174+1 | 3362 | 7320121004033 | | lnk | gencode.lnk | : | jmp | gencode.ent | |
|
175 | 3363 | 0606233 | | lod | Link31 | | | | ;check count |
|
176 | 3363+ | 1026423 | | jn | .B1 | | | | ;->still some to do |
|
177 | 3364 | 1006312 | | jmp | .7 | | | | ;finished, go generate call | @3364
|
178 | 3364+ | | | pad | | | | | ; |
|
178+1 | 3364+ | 0000000 | | 00 | 0 | | | | |
|
179 | 3365 | | ; |
|
180 | 3365 | | .B2: | ; | |
|
181 | 3365 | | | call | | | | | ; |
|
181+1 | 3365 | 7323731005037 | | lnk | GenLoad0.lnk | : | jmp | GenLoad0.ent | |
|
182 | 3366 | 0040000 | | o02 | 0 | | | | ;=1 | @3366
|
183 | 3366+ | 0562151 | | o27 | stkp | | | | ;delete one stack entry |
|
184 | 3367 | 0606237 | | lod | dicpt1 | | | | ; |
|
185 | 3367+ | 0066253 | | and | TMMflg | | | | ;=00010000000000 (Bit 31) |
|
186 | 3368 | 1046454 | | jz | .B3 | | | | ;-> | @3368
|
187 | 3368+ | 0606237 | | lod | dicpt1 | | | | ; |
|
188 | 3369 | 0062215 | | and | realbit | | | | ;=0300000000000 |
|
189 | 3369+ | 0404306 | | sto | W2246 | | | | ; |
|
190 | 3370 | 0603450 | | lod | GPs+3 | | | | ;=GPs+85 (1914) | @3370
|
191 | 3370+ | | | nop | | | | | ; |
|
191+1 | 3370+ | 1006453 | | jmp | .1 | | | | |
|
191+2 | 3371 | | .1: | ; | |
|
192 | 3371 | | | call | | | | | ; |
|
192+1 | 3371 | 7320121004033 | | lnk | gencode.lnk | : | jmp | gencode.ent | |
|
193 | 3372 | | .B3: | ; | |
|
194 | 3372 | 0031166600000 | | o00 | dicent | / | lod | 0 | ; |
|
195 | 3373 | 0126265 | | sub | checkb | | | | ;='CHECKB' |
|
196 | 3373+ | 1006353 | | jmp | .B4 | | | | ;-> |
|
197 | 3374 | | =3307 | |
|
198 | 3307 | | ; |
|
199 | 3307 | | ; (just checked id against checkb) |
|
200 | 3307 | | .B4: | ; | |
|
201 | 3307 | 1046357 | | jz | .chk1 | | | | ;-> checkb |
|
202 | 3307+ | 0121454 | | sub | K7 | | | | ;=7 |
|
203 | 3308 | 1046357 | | jz | .chk1 | | | | ;-> checki | @3308
|
204 | 3308+ | 0121451 | | sub | K9 | | | | ;=9 |
|
205 | 3309 | 1046357 | | jz | .chk1 | | | | ;-> checkr |
|
206 | 3309+ | 0122207 | | sub | K1c | | | | ;=1 |
|
207 | 3310 | 1050607 | | jz | .chk2 | | | | ;-> checks | @3310
|
208 | 3310+ | 1006435 | | jmp | .doit | | | | ;-> not a check? call |
|
209 | 3311 | | ; |
|
210 | 3311 | | .chk1: | ; | |
|
211 | 3311 | 1600000 | | kbd | 0 | | | | ; |
|
212 | 3311+ | 0062225 | | and | Bbit | | | | ;=<000/000> |
|
213 | 3312 | 1046320 | | jz | .done | | | | ;ignore call | @3312
|
214 | 3312+ | 1006435 | | jmp | .doit | | | | ;compile it |
|
215 | 3313 | | ; |
|
216 | 3313 | | =4487 | |
|
217 | 4487 | | .chk2: | ; | |
|
218 | 4487 | 1600000 | | kbd | 0 | | | | ; |
|
219 | 4487+ | 0062225 | | and | Bbit | | | | ;=<000/000> |
|
220 | 4488 | 1150603 | | jz | .chk3 | | | | ; | @4488
|
221 | 4488+ | 1006435 | | jmp | .doit | | | | ; |
|
222 | 4489 | | ; |
|
223 | 4489 | | =4483+ | |
|
224 | 4483+ | | .chk3: | ; | |
|
225 | 4483+ | 0601525 | | lod | L853 | | | | ; |
|
226 | 4484 | 0341477 | | stc | putcode.ent | | | | ; | @4484
|
227 | 4484+ | 0607035 | | lod | W3613 | | | | ; |
|
228 | 4485 | 0342145 | | stc | ObjPC | | | | ; |
|
229 | 4485+ | 0607036 | | lod | W3614 | | | | ; |
|
230 | 4486 | 0341426 | | stc | W790 | | | | ; | @4486
|
231 | 4486+ | 1006320 | | jmp | .done | | | | ; |
|
232 | 4487 | | ; |
|
233 | 4487 | | ; |
|
234 | 4487 | | =3374 | |
|
235 | 3374 | | ; procedure call should have arguments, check for them |
|
236 | 3374 | | .args: | ; | |
|
237 | 3374 | 0600600 | | lod | token | | | | ;token | @3374
|
238 | 3374+ | 0122204 | | sub | K47a | | | | ;=47 [(] |
|
239 | 3375 | 1046460 | | jz | .arg1 | | | | ;-> parameter list |
|
240 | 3375+ | 1006575 | | jmp | _err41 | | | | ; |
|
241 | 3376 | | ; |
|
242 | 3376 | | ; looks OK so far |
|
243 | 3376 | | .arg1: | ; | |
|
244 | 3376 | 0606252 | | lod | Argno1 | | | | ;1*BIT29 | @3376
|
245 | 3376+ | 0406236 | | sto | argno | | | | ;argno |
|
246 | 3377 | | .arg2: | ; | |
|
247 | 3377 | 0606235 | | lod | dicent | | | | ;address of dic entry |
|
248 | 3377+ | 0426237 | | stn | dicpt1 | | | | ;store negated |
|
249 | 3378 | 0606236 | | lod | argno | | | | ;argno*BIT29 | @3378
|
250 | 3378+ | | .arg3: | ; | |
|
251 | 3378+ | 0126262 | | sub | Argno6 | | | | ;=6 * BIT29 |
|
252 | 3379 | 1026465 | | jn | .arg4 | | | | ;->ok, this word |
|
253 | 3379+ | 1046465 | | jz | .arg4 | | | | ;->ok, ditto |
|
254 | 3380 | 0446237 | | inc | dicpt1 | | | | ;decrement address (negated) | @3380
|
255 | 3380+ | 1106462 | | jmp | .arg3 | | | | ;and try again |
|
256 | 3381 | | ; |
|
257 | 3381 | | .arg4: | ; | |
|
258 | 3381 | 0106262 | | add | Argno6 | | | | ;=6 * BIT29 add back last one |
|
259 | 3381+ | 0406240 | | sto | Pinfo | | | | ;save sextet number |
|
260 | 3382 | 3131176577775 | | lcs | dicpt1 | / | lod | -3 | ;complement address, load params | @3382
|
261 | 3383 | 0206240 | | exa | Pinfo | | | | ;swap with sextet number |
|
262 | 3383+ | 1246263 | | mul | W3251 | | | | ;=014000 6*Bit11 |
|
263 | 3384 | 1006471 | | jmp | .arg5 | | | | ;-->> | @3384
|
264 | 3384+ | | | pad | | | | | |
|
264+1 | 3384+ | 0000000 | | 00 | 0 | | | | |
|
265 | 3385 | | ; |
|
266 | 3385 | | .arg5: | ; | |
|
267 | 3385 | 1031203317772 | | exa | Pinfo | / | sll | -6 | ;swap with param word, shift to top |
|
268 | 3386 | 0062243 | | and | MskArgTp | | | | ;=03740000000000 extract type | @3386
|
269 | 3386+ | 0406240 | | sto | Pinfo | | | | ;and save it |
|
270 | 3387 | 0066251 | | and | W3241 | | | | ;=03040000000000 |
|
271 | 3387+ | 1146476 | | jz | .arg6 | | | | ;->simple variable, call by value |
|
272 | 3388 | 1320001 | | sll | 1 | | | | ;test bit 38 (procbit) | @3388
|
273 | 3388+ | 1026543 | | jn | .argerr | | | | ;set->procedure argument |
|
274 | 3389 | 1320001 | | sll | 1 | | | | ;test bit 37 (arrbit) |
|
275 | 3389+ | 1126566 | | jn | .argarr | | | | ;set->array argument |
|
276 | 3390 | 1106621 | | jmp | .argnm | | | | ;call by name argument | @3390
|
277 | 3390+ | | ; |
|
278 | 3390+ | | ; from 3387+ |
|
279 | 3390+ | | .arg6: | ; | |
|
280 | 3390+ | 0606240 | | lod | Pinfo | | | | ;reload save type info |
|
281 | 3391 | 1220041 | | srl | 33 | | | | ; >>33 |
|
282 | 3391+ | 0062210 | | and | K7a | | | | ;=07 |
|
283 | 3392 | 1631177006534 | | stc | dicpt1 | / | jmp | .argsw | ;switch on type | @3392
|
284 | 3393 | | ;-------------------------------- |
|
285 | 3393 | | ; return here after arg has been processed |
|
286 | 3393 | | ; |
|
287 | 3393 | | .argdone: | ; | |
|
288 | 3393 | 0040600 | | o02 | token | | | | ;token+1 |
|
289 | 3393+ | 0122201 | | sub | K42 | | | | ;=42 [,]+1 |
|
290 | 3394 | 1046505 | | jz | .argcomma | | | | ;-> | @3394
|
291 | 3394+ | 0122210 | | sub | K7a | | | | ;=7 [)]+1 |
|
292 | 3395 | 1046507 | | jz | .argrpar | | | | ;-> |
|
293 | 3395+ | 1006575 | | jmp | _err41 | | | | ;error in param list |
|
294 | 3396 | | ; |
|
295 | 3396 | | .3396: | ; | |
|
296 | 3396 | | | call | | | | | ; | @3396
|
296+1 | 3396 | 7306371006514 | | lnk | SkipPLC.lnk | : | jmp | SkipPLC.ent | |
|
297 | 3397 | | ; |
|
298 | 3397 | | .argcomma: | ; | |
|
299 | 3397 | 0606252 | | lod | Argno1 | | | | ; |
|
300 | 3397+ | 0506236 | | ads | argno | | | | |
|
301 | 3398 | 1006461 | | jmp | .arg2 | | | | ; | @3398
|
302 | 3398+ | | | pad | | | | | |
|
302+1 | 3398+ | 0000000 | | 00 | 0 | | | | |
|
303 | 3399 | | ; |
|
304 | 3399 | | ; from 3395, ) at end of param list |
|
305 | 3399 | | ; |
|
306 | 3399 | | .argrpar: | ; | |
|
307 | 3399 | 0031166577776 | | o00 | dicent | / | lod | -2 | ; |
|
308 | 3400 | 0066246 | | and | W3238 | | | | ;=03776000000000 | @3400
|
309 | 3400+ | 0126236 | | sub | argno | | | | ;=0002000000000 |
|
310 | 3401 | | | jnz | | | | | ; |
|
310+1 | 3401 | 1046512 | | jz | .1 | | | | |
|
310+2 | 3401+ | 1006504 | | jmp | CallProc.3396 | | | | |
|
310+3 | 3402 | | .1: | ; | |
|
311 | 3402 | | | call | | | | | ; | @3402
|
311+1 | 3402 | 7322411004503 | | lnk | advance.lnk | : | jmp | advance.ent | |
|
312 | 3403 | 1106277 | | jmp | .C1 | | | | ;-->> |
|
313 | 3403+ | | | pad | | | | | |
|
313+1 | 3403+ | 0000000 | | 00 | 0 | | | | |
|
314 | 3404 | | =3263+ | |
|
315 | 3263+ | | ; |
|
316 | 3263+ | | ; all argument are now compiled and address info is on stack, thunks (where needed) |
|
317 | 3263+ | | ; have also been generated. All that remains is to copy the arguments into |
|
318 | 3263+ | | ; the formals and invoke the procedure/function |
|
319 | 3263+ | | ; |
|
320 | 3263+ | | .C1: | ; | |
|
321 | 3263+ | 0606247 | | lod | W3239 | | | | ;=00070000000000 |
|
322 | 3264 | 0031166057777 | | o00 | dicent | / | and | -1 | ; | @3264
|
323 | 3265 | 0126253 | | sub | TMMflg | | | | ;=00010000000000 |
|
324 | 3265+ | 1026311 | | jn | .C4 | | | | ;-> |
|
325 | 3266 | 1146304 | | jz | .C2 | | | | ; | @3266
|
326 | 3266+ | 0126250 | | sub | W3240 | | | | ;=00030000000000 |
|
327 | 3267 | 1046307 | | jz | .C3 | | | | ; |
|
328 | 3267+ | 1026327 | | jn | .d3 | | | | ; |
|
329 | 3268 | 1006350 | | jmp | _err09 | | | | ; | @3268
|
330 | 3268+ | | ; |
|
331 | 3268+ | | .C2: | ; | |
|
332 | 3268+ | 0040000 | | o02 | 0 | | | | ; |
|
333 | 3269 | 2710646600000 | | o27 | stkp | / | lod | 0 | ; |
|
334 | 3270 | 0404031 | | sto | IdInfo | | | | ; | @3270
|
335 | 3270+ | 1006361 | | jmp | .C2a | | | | ; |
|
336 | 3271 | | =3313 | |
|
337 | 3313 | | .C2a: | ; | |
|
338 | 3313 | | | call | | | | | ; |
|
338+1 | 3313 | 7323761005051 | | lnk | FreeTemp.lnk | : | jmp | FreeTemp.ent | |
|
339 | 3314 | 1006312 | | jmp | .7 | | | | ; | @3314
|
340 | 3314+ | | | pad | | | | | |
|
340+1 | 3314+ | 0000000 | | 00 | 0 | | | | |
|
341 | 3315 | | ; |
|
342 | 3315 | | =3271 | |
|
343 | 3271 | | .C3: | ; | |
|
344 | 3271 | 0031166577776 | | o00 | dicent | / | lod | -2 | ; |
|
345 | 3272 | | | call | | | | | ; | @3272
|
345+1 | 3272 | 7320121006411 | | lnk | PrepCall.lnk | : | jmp | PrepCall.ent | |
|
346 | 3273 | | .C4: | ; | |
|
347 | 3273 | 1006420 | | jmp | .B0 | | | | ;-> |
|
348 | 3273+ | | | pad | | | | | |
|
348+1 | 3273+ | 0000000 | | 00 | 0 | | | | |
|
349 | 3274 | | =3420 | |
|
350 | 3420 | | .argsw: | ; | |
|
351 | 3420 | 4032614000000 | | jmp | .argerr | : | o00 | 0 | ;+0 no explicit type | @3420
|
352 | 3421 | 4032724000000 | | jmp | .argboo | : | o00 | 0 | ;+1 boolean |
|
353 | 3422 | 4032700000000 | | jmp | .argint | : | o00 | 0 | ;+2 integer |
|
354 | 3423 | 4032650000000 | | jmp | .argrl | : | o00 | 0 | ;+3 real |
|
355 | 3424 | 4433104000000 | | jmp | .argnm | : | o00 | 0 | ;+4 array | @3424
|
356 | 3425 | 4433104000000 | | jmp | .argnm | : | o00 | 0 | ;+5 switch |
|
357 | 3426 | 4033060000000 | | jmp | .argstr | : | o00 | 0 | ;+6 string |
|
358 | 3427 | | | ; | |
|
359 | 3427 | | .argerr: | ;+7 label | |
|
360 | 3427 | | _err44: | ; | |
|
361 | 3427 | 1661044 | | lnk | errlnk | | | | ;error 44: non-allowable parameter | @3427
|
362 | 3427+ | 1001070 | | jmp | Error | | | | ;call error handler |
|
363 | 3428 | | ; |
|
364 | 3428 | | .strarg: | ; | |
|
365 | 3428 | | | call | | | | | ;compile string, leave ptr on stk | @3428
|
365+1 | 3428 | 7331155006764 | | lnk | CompStrPtr.lnk | : | jmp | CompStrPtr.ent | |
|
366 | 3429 | 0140000 | | cla | 0 | | | | ; |
|
367 | 3429+ | | | nop | | | | | ; |
|
367+1 | 3429+ | 1006546 | | jmp | .1 | | | | |
|
367+2 | 3430 | | .1: | ; | |
|
368 | 3430 | | | call | | | | | ; | @3430
|
368+1 | 3430 | 7323731005012 | | lnk | push.lnk | : | jmp | push.ent | |
|
369 | 3431 | | | call | | | | | ;compile code to load string ptr |
|
369+1 | 3431 | 7323761005021 | | lnk | SaveTemp.lnk | : | jmp | SaveTemp.ent | |
|
370 | 3432 | | | call | | | | | ; | @3432
|
370+1 | 3432 | 7322411004503 | | lnk | advance.lnk | : | jmp | advance.ent | |
|
371 | 3433 | 1006501 | | jmp | .argdone | | | | ; |
|
372 | 3433+ | | | pad | | | | | ; |
|
372+1 | 3433+ | 0000000 | | 00 | 0 | | | | |
|
373 | 3434 | | ; |
|
374 | 3434 | | .argrl: | ; | |
|
375 | 3434 | | | call | | | | | ;compile address expression | @3434
|
375+1 | 3434 | 7326171000000 | | lnk | GetValue.lnk | : | jmp | GetValue.ent | |
|
376 | 3435 | 0010646577777 | | o00 | stkp | / | lod | -1 | ;load address from stack |
|
377 | 3436 | 0062215 | | and | realbit | | | | ;check type | @3436
|
378 | 3436+ | 0122215 | | sub | realbit | | | | ;should be real |
|
379 | 3437 | 1046576 | | jz | .argmatch | | | | ;OK, no problem |
|
380 | 3437+ | | ; |
|
381 | 3437+ | | ; handle case when real/int mismatch |
|
382 | 3437+ | | ; |
|
383 | 3437+ | | .argri: | ; | |
|
384 | 3437+ | 0606253 | | lod | TMMflg | | | | ;=00100000000000 Bit31 |
|
385 | 3438 | 0010646477777 | | o00 | stkp | / | ads | -1 | ;add to stacked info | @3438
|
386 | 3439 | 1006576 | | jmp | .argmatch | | | | ; |
|
387 | 3439+ | | | pad | | | | | ; |
|
387+1 | 3439+ | 0000000 | | 00 | 0 | | | | |
|
388 | 3440 | | ; |
|
389 | 3440 | | .argint: | ; | |
|
390 | 3440 | | | call | | | | | ;compile expression in store | @3440
|
390+1 | 3440 | 7326171000000 | | lnk | GetValue.lnk | : | jmp | GetValue.ent | |
|
391 | 3441 | 0010646577777 | | o00 | stkp | / | lod | -1 | ; |
|
392 | 3442 | 0062215 | | and | realbit | | | | ;=0300000000000 | @3442
|
393 | 3442+ | 0122214 | | sub | intbit | | | | ;=0200000000000 |
|
394 | 3443 | 1046576 | | jz | .argmatch | | | | ;-> |
|
395 | 3443+ | 1106555 | | jmp | .argri | | | | ; |
|
396 | 3444 | | =3445 | |
|
397 | 3445 | | .argboo: | ; | |
|
398 | 3445 | | | call | | | | | ; |
|
398+1 | 3445 | 7326605006214 | | lnk | L3212.lnk | : | jmp | L3212.ent | |
|
399 | 3446 | 1006576 | | jmp | .argmatch | | | | ; | @3446
|
400 | 3446+ | | ; |
|
401 | 3446+ | | .argarr: | ; | |
|
402 | 3446+ | 0543427 | | cls | idptr | | | | ; |
|
403 | 3447 | | | call | | | | | ; |
|
403+1 | 3447 | 7322411004503 | | lnk | advance.lnk | : | jmp | advance.ent | |
|
404 | 3448 | 0603427 | | lod | idptr | | | | ; | @3448
|
405 | 3448+ | 0062202 | | and | arrbit | | | | ; |
|
406 | 3449 | 1146612 | | jz | _err43a | | | | ;expected string or array |
|
407 | 3449+ | | .strvar: | ; | |
|
408 | 3449+ | 0603427 | | lod | idptr | | | | ; |
|
409 | 3450 | | | call | | | | | ; | @3450
|
409+1 | 3450 | 7323731006564 | | lnk | MaskPush.lnk | : | jmp | MaskPush.ent | |
|
410 | 3451 | | | call | | | | | ; |
|
410+1 | 3451 | 7322411004503 | | lnk | advance.lnk | : | jmp | advance.ent | |
|
411 | 3452 | 1006576 | | jmp | .argmatch | | | | ; | @3452
|
412 | 3452+ | | | pad | | | | | ; |
|
412+1 | 3452+ | 0000000 | | 00 | 0 | | | | |
|
413 | 3453 | | ; |
|
414 | 3453 | | _err41: | ; | |
|
415 | 3453 | 1661044 | | lnk | errlnk | | | | ;error 41: in procedure call: |
|
416 | 3453+ | | | ;a) missing ( for param list, or | |
|
417 | 3453+ | | | ;b) missing , or ) after actual param | |
|
418 | 3453+ | 1002262 | | jmp | Error2 | | | | ;call error routine at 1202 |
|
419 | 3454 | | ; |
|
420 | 3454 | | .argmatch: | ; | |
|
421 | 3454 | 0031166577777 | | o00 | dicent | / | lod | -1 | ; | @3454
|
422 | 3455 | 0062234 | | and | Bit32 | | | | ;=0020000000000 |
|
423 | 3455+ | 1046501 | | jz | .argdone | | | | ;-> |
|
424 | 3456 | 0010646577777 | | o00 | stkp | / | lod | -1 | ; | @3456
|
425 | 3457 | 0406241 | | sto | W3233 | | | | ; |
|
426 | 3457+ | 0064356 | | and | TmpFlg | | | | ;=040000 |
|
427 | 3458 | | | jnz | | | | | ; |
|
427+1 | 3458 | 1046603 | | jz | .1 | | | | |
|
427+2 | 3458+ | 1006501 | | jmp | CallProc.argdone | | | | |
|
427+3 | 3459 | | .1: | ; | |
|
428 | 3459 | | | call | | | | | ; |
|
428+1 | 3459 | 7323731005037 | | lnk | GenLoad0.lnk | : | jmp | GenLoad0.ent | |
|
429 | 3460 | 0606241 | | lod | W3233 | | | | ; | @3460
|
430 | 3460+ | 0066253 | | and | TMMflg | | | | ;=00010000000000 |
|
431 | 3461 | 1046611 | | jz | .am1 | | | | ; |
|
432 | 3461+ | 0606241 | | lod | W3233 | | | | ; |
|
433 | 3462 | 0062215 | | and | realbit | | | | ;=00300000000000 | @3462
|
434 | 3462+ | 0404306 | | sto | W2246 | | | | ; |
|
435 | 3463 | 0603450 | | lod | GPs+3 | | | | ;=GPs+85 GP3 1 |
|
436 | 3463+ | | | pad | | | | | ; |
|
436+1 | 3463+ | 0000000 | | 00 | 0 | | | | |
|
437 | 3464 | | | call | | | | | ; | @3464
|
437+1 | 3464 | 7320121004033 | | lnk | gencode.lnk | : | jmp | gencode.ent | |
|
438 | 3465 | | .am1: | ; | |
|
439 | 3465 | | | call | | | | | ; |
|
439+1 | 3465 | 7323761005021 | | lnk | SaveTemp.lnk | : | jmp | SaveTemp.ent | |
|
440 | 3466 | 1006501 | | jmp | .argdone | | | | ; | @3466
|
441 | 3466+ | | ; |
|
442 | 3466+ | | _err43a: | ; | |
|
443 | 3466+ | 0602231 | | lod | K11 | | | | ; |
|
444 | 3467 | 1661044 | _err43: | lnk | errlnk | | | | ;error 43: expected array or strin param |
|
445 | 3467+ | 1001070 | | jmp | Error | | | | ;call error routine |
|
446 | 3468 | | ; |
|
447 | 3468 | | .argstr: | ; | |
|
448 | 3468 | | | call | | | | | ; |
|
448+1 | 3468 | 7322411004503 | | lnk | advance.lnk | : | jmp | advance.ent | |
|
449 | 3469 | 0600600 | | lod | token | | | | ; |
|
450 | 3469+ | 0126256 | | sub | K49 | | | | ;=49 (literal string start) |
|
451 | 3470 | 1046544 | | jz | .strarg | | | | ;compile string | @3470
|
452 | 3470+ | 0603427 | | lod | idptr | | | | ; |
|
453 | 3471 | 0062221 | | and | typbits | | | | ;=03700000000000 |
|
454 | 3471+ | 0126264 | | sub | TStr | | | | ;=00600000000000 string |
|
455 | 3472 | 1146571 | | jz | .strvar | | | | ;string variable | @3472
|
456 | 3472+ | 1106612 | | jmp | _err43a | | | | ;expected string or array |
|
457 | 3473 | | | pad | | | | | ; |
|
457+1 | 3473 | 0000000 | | 00 | 0 | | | | |
|
458 | 3473+ | | ; |
|
459 | 3473+ | | ; array or switch parameter |
|
460 | 3473+ | | .argnm: | ; | |
|
461 | 3473+ | 0603471 | | lod | GPs+20 | | | | ;= GP9F 00 plant jump around |
|
462 | 3474 | | | call | | | | | ; | @3474
|
462+1 | 3474 | 7320121004033 | | lnk | gencode.lnk | : | jmp | gencode.ent | |
|
463 | 3475 | | | call | | | | | ;align to fullword |
|
463+1 | 3475 | 7307255001654 | | lnk | putNop.lnk | : | jmp | putNop.ent | |
|
464 | 3476 | | | calln | , | | | | ;call push(ObjPC) | @3476
|
464+1 | 3476 | 7323731106720 | | lnk | push.lnk | : | jmp | CallProc.PushPC | |
|
465 | 3477 | | | call | | | | | ;compile variable address |
|
465+1 | 3477 | 7323731005015 | | lnk | GetAddrExprn.lnk | : | jmp | GetAddrExprn.ent | |
|
466 | 3478 | | | calln | , | | | | ;call push(Acc+Bit33) | @3478
|
466+1 | 3478 | 7323731106731 | | lnk | push.lnk | : | jmp | CallProc.Push33 | |
|
467 | 3479 | 0606240 | | lod | Pinfo | | | | ; |
|
468 | 3479+ | 0064324 | | and | T_Mask | | | | ;=00700000000000 |
|
469 | 3480 | 0126257 | | sub | Bit36 | | | | ;=00400000000000 Array Type | @3480
|
470 | 3480+ | | | jnn | | | | | ;array,switch,string,label-> |
|
470+1 | 3480+ | 1126631 | | jn | .1 | | | | |
|
470+2 | 3481 | 1006733 | | jmp | CallProc.G3 | | | | |
|
470+3 | 3481+ | | .1: | ; | |
|
471 | 3481+ | 0543427 | | cls | idptr | | | | ; | @3481+
|
472 | 3482 | | | call | | | | | ; | @3482
|
472+1 | 3482 | 7322411004503 | | lnk | advance.lnk | : | jmp | advance.ent | |
|
473 | 3483 | 0603427 | | lod | idptr | | | | ; |
|
474 | 3483+ | 1010560 | | jmp | .argnm1 | | | | ;-->> |
|
475 | 3484 | | =4464 | |
|
476 | 4464 | | .argnm1: | ; | |
|
477 | 4464 | 1026634 | | jn | .argnm2 | | | | ; | @4464
|
478 | 4464+ | 1006636 | | jmp | .argnm3 | | | | ; |
|
479 | 4465 | | =3484 | |
|
480 | 3484 | | .argnm2: | ; | |
|
481 | 3484 | 0066260 | | and | W3248 | | | | ;=03430000000000 | @3484
|
482 | 3484+ | 1046637 | | jz | .argnm4 | | | | ;-> |
|
483 | 3485 | 0122202 | | sub | arrbit | | | | ; |
|
484 | 3485+ | 1146700 | | jz | .argnm17 | | | | ; |
|
485 | 3486 | | .argnm3: | ; | |
|
486 | 3486 | 0602205 | | lod | K2a | | | | ;=2 | @3486
|
487 | 3486+ | 1006647 | | jmp | .argnm8 | | | | ; |
|
488 | 3487 | | ; |
|
489 | 3487 | | .argnm4: | ; | |
|
490 | 3487 | 0603427 | | lod | idptr | | | | ; |
|
491 | 3487+ | 0062215 | | and | realbit | | | | ;=00300000000000 |
|
492 | 3488 | 0102236 | | add | Bit33 | | | | ;=00040000000000 indicate cbn | @3488
|
493 | 3488+ | 0126240 | | sub | Pinfo | | | | ; |
|
494 | 3489 | | | jnz | | | | | ;mismatch |
|
494+1 | 3489 | 1046642 | | jz | .1 | | | | |
|
494+2 | 3489+ | 1006636 | | jmp | CallProc.argnm3 | | | | |
|
494+3 | 3490 | | .1: | ; | |
|
495 | 3490 | | | call | | | | | ; | @3490
|
495+1 | 3490 | 7322411004503 | | lnk | advance.lnk | : | jmp | advance.ent | |
|
496 | 3491 | 0040600 | | o02 | token | | | | ;token+1 |
|
497 | 3491+ | 0122201 | | sub | K42 | | | | ;=42->[,]+1 |
|
498 | 3492 | 1146725 | | jz | .comma | | | | ;comma, param complete | @3492
|
499 | 3492+ | 0122210 | | sub | K7a | | | | ;=49->[)]+1 |
|
500 | 3493 | 1146725 | | jz | .comma | | | | ;may be comma or close |
|
501 | 3493+ | 0603427 | | lod | idptr | | | | ; |
|
502 | 3494 | 0404303 | | sto | W2243 | | | | ; | @3494
|
503 | 3494+ | | .argnm5: | ; | |
|
504 | 3494+ | 1010756 | | jmp | .argnm6 | | | | ;-->> |
|
505 | 3495 | | =4590 | |
|
506 | 4590 | | .argnm6: | ; | |
|
507 | 4590 | 0404031 | | sto | IdInfo | | | | ; | @4590
|
508 | 4590+ | 0064367 | | and | Bit33a | | | | ;=0040000000000 |
|
509 | 4591 | 1050765 | | jz | .argnm7 | | | | ; |
|
510 | 4591+ | 0603514 | | lod | GPs+39 | | | | ; |
|
511 | 4592 | | | call | | | | | ; | @4592
|
511+1 | 4592 | 7320121004033 | | lnk | gencode.lnk | : | jmp | gencode.ent | |
|
512 | 4593 | 0603515 | | lod | GPs+40 | | | | ; |
|
513 | 4593+ | | | nop | | | | | ; |
|
513+1 | 4593+ | 1010762 | | jmp | .1 | | | | |
|
513+2 | 4594 | | .1: | ; | |
|
514 | 4594 | | | call | | | | | ; | @4594
|
514+1 | 4594 | 7320121004033 | | lnk | gencode.lnk | : | jmp | gencode.ent | |
|
515 | 4595 | 0604315 | | lod | procbit1 | | | | ; |
|
516 | 4595+ | 0464303 | | ans | W2243 | | | | ; |
|
517 | 4596 | 0604347 | | lod | K4a | | | | ;=4 | @4596
|
518 | 4596+ | 1006647 | | jmp | .argnm8 | | | | ; |
|
519 | 4597 | | ; |
|
520 | 4597 | | .argnm7: | ; | |
|
521 | 4597 | 0604341 | | lod | K3a | | | | ; | @4597
|
522 | 4597+ | 1006647 | | jmp | .argnm8 | | | | ;-->> |
|
523 | 4598 | | =3495 | |
|
524 | 3495 | | ; |
|
525 | 3495 | | .argnm8: | ; | |
|
526 | 3495 | 0404300 | | sto | W2240 | | | | ; |
|
527 | 3495+ | 0606240 | | lod | Pinfo | | | | ; |
|
528 | 3496 | 0062215 | | and | realbit | | | | ; | @3496
|
529 | 3496+ | 0122214 | | sub | intbit | | | | ; |
|
530 | 3497 | 1046673 | | jz | .argnm15 | | | | ; |
|
531 | 3497+ | 1026677 | | jn | .argnm16 | | | | ; |
|
532 | 3498 | 1006653 | | jmp | .argnm9 | | | | ;-->> | @3498
|
533 | 3498+ | | | pad | | | | | ; |
|
533+1 | 3498+ | 0000000 | | 00 | 0 | | | | |
|
534 | 3499 | | ; |
|
535 | 3499 | | .argnm9: | ; | |
|
536 | 3499 | | | call | | | | | ; |
|
536+1 | 3499 | 7323131004627 | | lnk | expression.lnk | : | jmp | expression.ent | |
|
537 | 3500 | 0010646577777 | | o00 | stkp | / | lod | -1 | ; | @3500
|
538 | 3501 | 0404306 | | sto | W2246 | | | | ; |
|
539 | 3501+ | 0122215 | | sub | realbit | | | | ; |
|
540 | 3502 | 1046660 | | jz | .argnm11 | | | | ; | @3502
|
541 | 3502+ | | .argnm10: | ; | |
|
542 | 3502+ | 0603450 | | lod | GPs+3 | | | | ;=GPs+85 -> GP3 1,GP0F 65,4096 |
|
543 | 3503 | | | call | | | | | ; |
|
543+1 | 3503 | 7320121004033 | | lnk | gencode.lnk | : | jmp | gencode.ent | |
|
544 | 3504 | | .argnm11: | ; | |
|
545 | 3504 | 0040000 | | o02 | 0 | | | | ; | @3504
|
546 | 3504+ | 0562151 | | o27 | stkp | | | | ; |
|
547 | 3505 | 0606261 | | lod | W3249 | | | | ;=<00 4 / 00 13> |
|
548 | 3505+ | 0344031 | | stc | IdInfo | | | | ; |
|
549 | 3506 | | | call | | | | | ; | @3506
|
549+1 | 3506 | 7320121004032 | | lnk | gencode1.lnk | : | jmp | gencode1.ent | |
|
550 | 3507 | 0606261 | | lod | W3249 | | | | ;=<00 4 / 00 13> |
|
551 | 3507+ | 1006665 | | jmp | .argnm13 | | | | ; |
|
552 | 3508 | | ; |
|
553 | 3508 | | .argnm12: | ; | |
|
554 | 3508 | | | pad | | | | | ; | @3508
|
554+1 | 3508 | 0000000 | | 00 | 0 | | | | |
|
555 | 3508+ | 0603427 | | lod | idptr | | | | ;get address of variable |
|
556 | 3509 | | .argnm13: | ; | |
|
557 | 3509 | | | call | | | | | ;gen code to load the variables address |
|
557+1 | 3509 | 7307175006413 | | lnk | LdVarAddr.lnk | : | jmp | LdVarAddr.ent | |
|
558 | 3510 | | .argnm14: | ; | |
|
559 | 3510 | 0602161 | | lod | wsptr | | | | ; | @3510
|
560 | 3510+ | 0122207 | | sub | K1c | | | | ;=1 |
|
561 | 3511 | | | call | | | | | ; |
|
561+1 | 3511 | 7320121106723 | | lnk | ExitThunk.lnk | : | jmp | ExitThunk.ent | |
|
562 | 3512 | 0603474 | | lod | GPs+23 | | | | ;=GP12F 00 patch jump around | @3512
|
563 | 3512+ | | | nop | | | | | ; .. |
|
563+1 | 3512+ | 1006671 | | jmp | .1 | | | | |
|
563+2 | 3513 | | .1: | ; | |
|
564 | 3513 | | | call | | | | | ; thunk. |
|
564+1 | 3513 | 7320121004033 | | lnk | gencode.lnk | : | jmp | gencode.ent | |
|
565 | 3514 | 1006501 | | jmp | .argdone | | | | ;finished | @3514
|
566 | 3514+ | | | pad | | | | | |
|
566+1 | 3514+ | 0000000 | | 00 | 0 | | | | |
|
567 | 3515 | | ; |
|
568 | 3515 | | .argnm15: | ; | |
|
569 | 3515 | | | call | | | | | ; |
|
569+1 | 3515 | 7323131004627 | | lnk | expression.lnk | : | jmp | expression.ent | |
|
570 | 3516 | 0010646577777 | | o00 | stkp | / | lod | -1 | ; | @3516
|
571 | 3517 | 0404306 | | sto | W2246 | | | | ; |
|
572 | 3517+ | 0122214 | | sub | intbit | | | | ; |
|
573 | 3518 | 1046660 | | jz | .argnm11 | | | | ; | @3518
|
574 | 3518+ | 1106656 | | jmp | .argnm10 | | | | ; |
|
575 | 3519 | | ; |
|
576 | 3519 | | .argnm16: | ; | |
|
577 | 3519 | | | call | | | | | ; |
|
577+1 | 3519 | 7326605005553 | | lnk | compbool.lnk | : | jmp | compbool.ent | |
|
578 | 3520 | 1006660 | | jmp | .argnm11 | | | | ; | @3520
|
579 | 3520+ | | ; |
|
580 | 3520+ | | .argnm17: | ; | |
|
581 | 3520+ | 0603427 | | lod | idptr | | | | ; |
|
582 | 3521 | 0064324 | | and | T_Mask | | | | ;=00700000000000 |
|
583 | 3521+ | 0102236 | | add | Bit33 | | | | ; |
|
584 | 3522 | 0126240 | | sub | Pinfo | | | | ; | @3522
|
585 | 3522+ | | | jnz | | | | | ; |
|
585+1 | 3522+ | 1146703 | | jz | .1 | | | | |
|
585+2 | 3523 | 1006636 | | jmp | CallProc.argnm3 | | | | |
|
585+3 | 3523+ | | .1: | ; | |
|
586 | 3523+ | 0606240 | | lod | Pinfo | | | | ; |
|
587 | 3524 | | | call | | | | | ; | @3524
|
587+1 | 3524 | 7323731005012 | | lnk | push.lnk | : | jmp | push.ent | |
|
588 | 3525 | | | call | | | | | ;call 2649 |
|
588+1 | 3525 | 7324375005131 | | lnk | Subscript.lnk | : | jmp | Subscript.ent | |
|
589 | 3526 | 0040600 | | o02 | token | | | | ; | @3526
|
590 | 3526+ | 0122201 | | sub | K42 | | | | ;=42 |
|
591 | 3527 | 1046711 | | jz | .argnm18 | | | | ; |
|
592 | 3527+ | 0122210 | | sub | K7a | | | | ; |
|
593 | 3528 | | | jnz | | | | | ; |
|
593+1 | 3528 | 1046711 | | jz | .1 | | | | |
|
593+2 | 3528+ | 1006713 | | jmp | CallProc.argnm19 | | | | |
|
593+3 | 3529 | | .1: | ; | |
|
594 | 3529 | | .argnm18: | ; | |
|
595 | 3529 | 0040000 | | o02 | 0 | | | | ; |
|
596 | 3529+ | 0562151 | | o27 | stkp | | | | ; |
|
597 | 3530 | 1006666 | | jmp | .argnm14 | | | | ; | @3530
|
598 | 3530+ | | | pad | | | | | ; |
|
598+1 | 3530+ | 0000000 | | 00 | 0 | | | | |
|
599 | 3531 | | ; |
|
600 | 3531 | | .argnm19: | ; | |
|
601 | 3531 | | | call | | | | | ; |
|
601+1 | 3531 | 7323761005021 | | lnk | SaveTemp.lnk | : | jmp | SaveTemp.ent | |
|
602 | 3532 | 0040000 | | o02 | 0 | | | | ; | @3532
|
603 | 3532+ | | | nop | | | | | ; |
|
603+1 | 3532+ | 1006715 | | jmp | .1 | | | | |
|
603+2 | 3533 | | .1: | ; | |
|
604 | 3533 | 2710646600000 | | o27 | stkp | / | lod | 0 | ; |
|
605 | 3534 | 0102224 | | add | Bit19 | | | | ;=00000001000000 | @3534
|
606 | 3534+ | 0404303 | | sto | W2243 | | | | ; |
|
607 | 3535 | 0064324 | | and | T_Mask | | | | ;=00700000000000 |
|
608 | 3535+ | 0406240 | | sto | Pinfo | | | | ; |
|
609 | 3536 | 1106646 | | jmp | .argnm5 | | | | ; | @3536
|
610 | 3536+ | | ; |
|
611 | 3536+ | | .PushPC: | ; | |
|
612 | 3536+ | 0602145 | | lod | ObjPC | | | | ; |
|
613 | 3537 | 1005012 | | jmp | push.ent | | | | ; |
|
614 | 3537+ | | ; |
|
615 | 3537+ | | | pad | | | | | ; |
|
615+1 | 3537+ | 0000000 | | 00 | 0 | | | | |
|
616 | 3538 | | ; |
|
617 | 3538 | | .G1: | ; | |
|
618 | 3538 | | | call | | | | | ;get label or exprn | @3538
|
618+1 | 3538 | 7334161007042 | | lnk | DesigExprn.lnk | : | jmp | DesigExprn.ent | |
|
619 | 3539 | 1006666 | | jmp | .argnm14 | | | | ; |
|
620 | 3539+ | | =3541+ | |
|
621 | 3541+ | | .comma: | ; | |
|
622 | 3541+ | 0603427 | | lod | idptr | | | | ; |
|
623 | 3542 | 0404031 | | sto | IdInfo | | | | ; | @3542
|
624 | 3542+ | 0062236 | | and | Bit33 | | | | ; |
|
625 | 3543 | 1046664 | | jz | .argnm12 | | | | ; |
|
626 | 3543+ | 0603514 | | lod | GPs+39 | | | | ;=GP1M 00, GP0 73,0, GP1F 40 |
|
627 | 3544 | | | call | | | | | ; | @3544
|
627+1 | 3544 | 7320121004033 | | lnk | gencode.lnk | : | jmp | gencode.ent | |
|
628 | 3545 | 1006666 | | jmp | .argnm14 | | | | ; |
|
629 | 3545+ | | ; |
|
630 | 3545+ | | =3547 | |
|
631 | 3547 | | .G3: | ; | |
|
632 | 3547 | 0031166577777 | | o00 | dicent | / | lod | -1 | ; |
|
633 | 3548 | 0404031 | | sto | IdInfo | | | | ; | @3548
|
634 | 3548+ | 0062236 | | and | Bit33 | | | | ; |
|
635 | 3549 | 1146741 | | jz | .G4 | | | | ;argument a procedure call-> |
|
636 | 3549+ | | | nop | | | | | ; |
|
636+1 | 3549+ | 1006736 | | jmp | .1 | | | | |
|
636+2 | 3550 | | .1: | ; | |
|
637 | 3550 | | | call | | | | | ; | @3550
|
637+1 | 3550 | 7307255001654 | | lnk | putNop.lnk | : | jmp | putNop.ent | |
|
638 | 3551 | 0603563 | | lod | GPs+78 | | | | ;=GP1 73, GP2F 6,40 unwind stack |
|
639 | 3551+ | | | pad | | | | | ; to change level to that of |
|
639+1 | 3551+ | 0000000 | | 00 | 0 | | | | |
|
640 | 3552 | | | call | | | | | ; calling procedure | @3552
|
640+1 | 3552 | 7320121004033 | | lnk | gencode.lnk | : | jmp | gencode.ent | |
|
641 | 3553 | 1106746 | | jmp | .G5 | | | | ;-> |
|
642 | 3553+ | | ; |
|
643 | 3553+ | | .G4: | ; | |
|
644 | 3553+ | 0602234 | | lod | Bit32 | | | | ;=00020000000000 |
|
645 | 3554 | 0031166057777 | | o00 | dicent | / | and | -1 | ; | @3554
|
646 | 3555 | 1146746 | | jz | .G5 | | | | ; |
|
647 | 3555+ | | | pad | | | | | ; |
|
647+1 | 3555+ | 0000000 | | 00 | 0 | | | | |
|
648 | 3556 | | | call | | | | | ; | @3556
|
648+1 | 3556 | 7307175006363 | | lnk | GenCall.lnk | : | jmp | GenCall.ent | |
|
649 | 3557 | | | call | | | | | ; |
|
649+1 | 3557 | 7320121006347 | | lnk | L3303.lnk | : | jmp | L3303.ent | |
|
650 | 3558 | | | nop | | | | | ; | @3558
|
650+1 | 3558 | 1106746 | | jmp | .1 | | | | |
|
650+2 | 3558+ | | .1: | ; | |
|
651 | 3558+ | | .G5: | ; | |
|
652 | 3558+ | 0604302 | | lod | W2242 | | | | ; |
|
653 | 3559 | 1046722 | | jz | .G1 | | | | ;-> |
|
654 | 3559+ | 0122207 | | sub | K1c | | | | ;=1 |
|
655 | 3560 | 1146751 | | jz | .G6 | | | | ; | @3560
|
656 | 3560+ | 0603566 | | lod | GPs+81 | | | | ;=GP2 53,30, GP7F 10,00 |
|
657 | 3561 | 1006752 | | jmp | .G7 | | | | ; |
|
658 | 3561+ | | ; |
|
659 | 3561+ | | .G6: | ; | |
|
660 | 3561+ | 0603527 | | lod | GPs+50 | | | | ;=GP2 26,30, GP7F 10,00 | @3561+
|
661 | 3562 | | .G7: | ; | |
|
662 | 3562 | | | call | | | | | ;generate unsave code | @3562
|
662+1 | 3562 | 7320121004033 | | lnk | gencode.lnk | : | jmp | gencode.ent | |
|
663 | 3563 | 1006722 | | jmp | .G1 | | | | ; |
|
664 | 3563+ | | | pad | | | | | ; |
|
664+1 | 3563+ | 0000000 | | 00 | 0 | | | | |
|
665 | 3564 | | ;------------------------------------------------------------------- |
|
666 | 3564 | | ; interface to gencode |
|
667 | 3564 | | ; generate code to return from Thunk |
|
668 | 3564 | | ; |
|
669 | 3564 | | =3539+ | |
|
670 | 3539+ | | ExitThunk.ent: | ; | |
|
671 | 3539+ | 0404031 | | sto | IdInfo | | | | ; |
|
672 | 3540 | 0402161 | | sto | wsptr | | | | ; | @3540
|
673 | 3540+ | 0603516 | | lod | GPs+41 | | | | ;=GP1M 00,GP0F 44,1 |
|
674 | 3541 | 1004033 | | jmp | gencode.ent | | | | ; |
|
675 | 3541+ | | ;-------------------------------------------------------------------- |
|
676 | 3541+ | | =3545+ | |
|
677 | 3545+ | | ; interface to push |
|
678 | 3545+ | | ; |
|
679 | 3545+ | | .Push33: | ; | |
|
680 | 3545+ | 0102236 | | add | Bit33 | | | | ; |
|
681 | 3546 | 1005012 | | jmp | push.ent | | | | ; | @3546
|
682 | 3546+ | | | pad | | | | | ; |
|
682+1 | 3546+ | 0000000 | | 00 | 0 | | | | |
|
683 | 3547 | | ;-------------------------------------------------------------------- |
|
684 | 3547 | | =3444 | |
|
685 | 3444 | | ; interface to push, mask value first |
|
686 | 3444 | | ; |
|
687 | 3444 | | MaskPush.ent: | ; | |
|
688 | 3444 | 0062244 | | and | M1188 | | | | ;=0001777017777 | @3444
|
689 | 3444+ | 1005012 | | jmp | push.ent | | | | ; |
|
690 | 3445 | | ;-------------------------------------------------------------------- |
|
691 | 3445 | | =3419 | |
|
692 | 3419 | | ;interface to getchar |
|
693 | 3419 | | getcharb.ent: | ; | |
|
694 | 3419 | 0600574 | | lod | currchar | | | | ; | @3419
|
695 | 3419+ | 1000605 | | jmp | getchara.ent | | | | ; |
|
696 | 3420 | | ;-------------------------------------------------------------------- |
|
697 | 3420 | | =3404 | |
|
698 | 3404 | | ; |
|
699 | 3404 | | ;interface to getchar - param list delimiter skipping |
|
700 | 3404 | | ; |
|
701 | 3404 | | SkipPLC.ent: | ; | |
|
702 | 3404 | | | call | | | | | ; | @3404
|
702+1 | 3404 | 7303015006533 | | lnk | getcharb.lnk | : | jmp | getcharb.ent | |
|
703 | 3405 | 4032535006520 | | jmp | .skipa | : | jmp | .skipp | ; |
|
704 | 3406 | 4032511006522 | | jmp | _err42 | : | jmp | _err42 | ; | @3406
|
705 | 3407 | 4032511006527 | | jmp | _err42 | : | jmp | .skipa | ; |
|
706 | 3408 | | ; |
|
707 | 3408 | | .skipp: | ; | |
|
708 | 3408 | 0740574 | | lzs | currchar | | | | ;get current character |
|
709 | 3408+ | 0100575 | | add | ipshift | | | | ;add shift |
|
710 | 3409 | 0121444 | | sub | K12 | | | | ;=12 [:] |
|
711 | 3409+ | 1046523 | | jz | .skipq | | | | ;OK, colon is allowed |
|
712 | 3410 | | _err42: | ; | |
|
713 | 3410 | 1661044 | | lnk | errlnk | | | | ;error 42: error in param delim | @3410
|
714 | 3410+ | 1001070 | | jmp | Error | | | | ;error handler |
|
715 | 3411 | | ; |
|
716 | 3411 | | .skipq: | ; | |
|
717 | 3411 | | | call | | | | | ;get next char, should be '(' |
|
717+1 | 3411 | 7305105001222 | | lnk | gettoken.lnk | : | jmp | gettoken.ent | |
|
718 | 3412 | 0600600 | | lod | token | | | | ; | @3412
|
719 | 3412+ | 0122204 | | sub | K47a | | | | ;=47, [(] |
|
720 | 3413 | 0006373040001 | | o00 | putcode.lnk | / | jz | 1 | ;return +1 |
|
721 | 3414 | 1006522 | | jmp | _err42 | | | | ; | @3414
|
722 | 3414+ | | | pad | | | | | |
|
722+1 | 3414+ | 0000000 | | 00 | 0 | | | | |
|
723 | 3415 | | ; |
|
724 | 3415 | | ; note: jmp getchar.ent would be just as effective and save 4 words! |
|
725 | 3415 | | .skipa: | ; | |
|
726 | 3415 | | | call | | | | | ;letter, skip | @3415
|
726+1 | 3415 | 7303015000604 | | lnk | getchar.lnk | : | jmp | getchar.ent | |
|
727 | 3416 | 4032535006520 | | jmp | .skipa | : | jmp | .skipp | ; | @3416
|
728 | 3417 | 4032511006522 | | jmp | _err42 | : | jmp | _err42 | ; |
|
729 | 3418 | 4032511006527 | | jmp | _err42 | : | jmp | .skipa | ; | @3418
|
730 | 3419 | | ;-------------------------------------------------------------------- |
|
731 | 3419 | | =3337 | |
|
732 | 3337 | | ;interface to gencode |
|
733 | 3337 | | ; |
|
734 | 3337 | | PrepCall.ent: | ; | |
|
735 | 3337 | | | call | | | | | ;load proc info address |
|
735+1 | 3337 | 7307175006413 | | lnk | LdVarAddr.lnk | : | jmp | LdVarAddr.ent | |
|
736 | 3338 | 0603532 | | lod | GPs+53 | | | | ;=GP7F 7,00 call Setup | @3338
|
737 | 3338+ | 1004033 | | jmp | gencode.ent | | | | ; generate call to prepare proc |
|
738 | 3339 | | ;-------------------------------------------------------------------- |
|
739 | 3339 | | =3339 | |
|
740 | 3339 | | ; |
|
741 | 3339 | | LdVarAddr.ent: | ; | |
|
742 | 3339 | 0401422 | | sto | GenAdr | | | | ;store value for below | @3339
|
743 | 3339+ | 0602200 | | lod | K8a | | | | ;=8 |
|
744 | 3340 | | | call | | | | | ; | @3340
|
744+1 | 3340 | 7306371001526 | | lnk | putOpcd.lnk | : | jmp | putOpcd.ent | |
|
745 | 3341 | 0602226 | | lod | K6 | | | | ;=6 generate address, in GenAdr |
|
746 | 3341+ | | | nop | | | | | ; |
|
746+1 | 3341+ | 1006416 | | jmp | .1 | | | | |
|
746+2 | 3342 | | .1: | ; | |
|
747 | 3342 | | | call | | | | | ; | @3342
|
747+1 | 3342 | 7307445001712 | | lnk | PutInst.lnk | : | jmp | PutInst.ent | |
|
748 | 3343 | 0606255 | | lod | W3245 | | | | ;=<00 0 : 30 4> inst ref, op=30 |
|
749 | 3343+ | 1001640 | | jmp | GenInst.ent | | | | ; |
|
750 | 3344 | | ;-------------------------------------------------------------------- |
|
751 | 3344 | | ; |
|
752 | 3344 | | =3315 | |
|
753 | 3315 | | ; compile code for invoke procedure (73 xx:40 yy) |
|
754 | 3315 | | ; |
|
755 | 3315 | | GenCall.ent: | ; | |
|
756 | 3315 | 0031166577777 | | o00 | dicent | / | lod | -1 | ; | @3315
|
757 | 3316 | 0062244 | | and | M1188 | | | | ; | @3316
|
758 | 3316+ | 0406233 | | sto | Link31 | | | | ; |
|
759 | 3317 | 0162165 | | bus | Link15b | | | | ; |
|
760 | 3317+ | 0102225 | | add | Bbit | | | | ;=<000/000> |
|
761 | 3318 | | | call | | | | | ; | @3318
|
761+1 | 3318 | 7307445001761 | | lnk | NopRef.lnk | : | jmp | NopRef.ent | |
|
762 | 3319 | 0606233 | | lod | Link31 | | | | ; |
|
763 | 3319+ | | | nop | | | | | ; |
|
763+1 | 3319+ | 1006370 | | jmp | .1 | | | | |
|
763+2 | 3320 | | .1: | ; | |
|
764 | 3320 | | | call | | | | | ; | @3320
|
764+1 | 3320 | 7307445001761 | | lnk | NopRef.lnk | : | jmp | NopRef.ent | |
|
765 | 3321 | 0606255 | | lod | W3245 | | | | ; |
|
766 | 3321+ | 1001640 | | jmp | GenInst.ent | | | | ; |
|
767 | 3322 | | ;-------------------------------------------------------------------- |
|
768 | 3322 | | =3301+ | |
|
769 | 3301+ | | ; interfaces to gencode |
|
770 | 3301+ | | ; |
|
771 | 3301+ | | L3301P.ent: | ; | |
|
772 | 3301+ | 0606261 | | lod | W3249 | | | | ;=<00 4 / 00 13> |
|
773 | 3302 | 0344031 | | stc | IdInfo | | | | ;store, set acc=0 | @3302
|
774 | 3302+ | 1004032 | | jmp | gencode1.ent | | | | ;generate store |
|
775 | 3303 | | ;-------------------------------------------------------------------- |
|
776 | 3303 | | L3303.ent: | ; | |
|
777 | 3303 | 0603537 | | lod | GPs+58 | | | | ;=<40 10 : 00 7> GP7F 10,00 | @3303
|
778 | 3303+ | 1004033 | | jmp | gencode.ent | | | | ; |
|
779 | 3304 | | ;-------------------------------------------------------------------- |
|