|
| | 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 | | ;-------------------------------------------------------------------- |
|