Mercurial > hg > Members > kono > os9 > sbc09
annotate TL1/TL1os9.asm @ 135:7503617351c0
TL/1 buffered program read
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 07 Jan 2019 04:07:10 +0900 |
parents | 36000611014b |
children | 694412798333 |
rev | line source |
---|---|
121 | 1 *******TL/1************* |
2 nam tl1 | |
3 ttl TL1 compiler | |
4 | |
5 ifp1 | |
6 use defsfile | |
7 endc | |
8 | |
9 * Module header definitions | |
10 tylg set Prgrm+Objct | |
11 atrv set ReEnt+rev | |
12 rev set $00 | |
13 edition set 1 | |
14 | |
15 mod eom,name,tylg,atrv,start,size | |
16 | |
17 TXTTOP EQU $FB7E | |
18 | |
19 INDN RMB 1 | |
20 OUTDN RMB 1 | |
21 LB RMB 2 | |
22 GB RMB 2 | |
23 MHIGH RMB 1 | |
24 MOD RMB 1 | |
25 WT1 RMB 1 | |
26 WT2 RMB 1 | |
27 RNDH RMB 1 | |
28 RNDL RMB 1 | |
29 DREG RMB 1 | |
30 DBUF RMB 3 | |
31 XR RMB 2 | |
32 YR RMB 2 | |
33 ZR RMB 2 | |
34 PFTBEG RMB 2 | |
35 PC RMB 2 | |
36 SREG RMB 2 | |
37 SP RMB 2 | |
38 PFMAX RMB 2 | |
39 LSW RMB 1 | |
40 SY RMB 1 | |
41 CH RMB 1 | |
42 VAL RMB 1 | |
43 GL RMB 1 | |
44 OPER RMB 1 | |
45 GLL RMB 1 | |
46 INDEX RMB 1 | |
47 RMCODE RMB 1 | |
48 ACC RMB 1 | |
49 LSIZE RMB 1 | |
50 TCOUNT RMB 1 | |
51 TEND RMB 2 | |
52 WEND RMB 2 | |
127
321b7fffadab
TL/1 simple test worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
126
diff
changeset
|
53 AMODE RMB 1 0x20 main, 1 proc, 0 ? |
121 | 54 RSW RMB 1 |
55 GEND RMB 2 | |
56 SSW RMB 1 | |
57 | |
135
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
58 filepath rmb 2 |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
59 parmptr rmb 2 |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
60 stdin rmb 1 |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
61 adr rmb 2 |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
62 work rmb 2 |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
63 bufsiz equ $100-1 |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
64 |
126
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
65 ** |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
66 * LIBRARY ADDRESSS TABLE |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
67 ** |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
68 LIBR equ . |
121 | 69 ioentry rmb $80 |
135
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
70 readbuff rmb bufsiz+1 |
121 | 71 |
72 OBJSTART RMB 2 | |
73 | |
74 | |
75 * OBJECT PG AREA | |
76 | |
77 WTBLE RMB $500+$100 | |
126
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
78 MSTACK RMB $140 |
121 | 79 |
80 OBJECT RMB 2048 * NOP | |
122 | 81 RUB equ 8 |
121 | 82 |
83 size equ . | |
84 | |
85 name fcs /TL1/ | |
86 fcb edition | |
87 | |
88 ** | |
89 COMP CLRA | |
90 STA OUTDN | |
91 STA LSW | |
92 STA INDEX | |
93 STA AMODE | |
94 STA LSIZE | |
95 STA RSW | |
96 STA PFMAX | |
122 | 97 leax MSTACK,u |
121 | 98 STX SP |
99 LEAX 2,x | |
100 STX PFTBEG | |
101 CLRB | |
102 C1 STA ,X+ | |
103 DECB | |
104 BNE C1 | |
105 INCA | |
106 STA TCOUNT | |
107 LDA #' ' | |
108 STA CH | |
109 ** copy reserved word table | |
110 LEAX WTABLE,PCR | |
123 | 111 leay WTBLE,u |
121 | 112 ldb #WTBLEND-WTABLE |
113 tbl1 lda ,x+ | |
114 sta ,y+ | |
115 decb | |
116 bne tbl1 | |
117 sty TEND | |
118 LEAX OBJECT,u | |
119 STX PC | |
120 ** | |
121 LBSR CRLF | |
122 BSR REG0 | |
123 LBSR WORD | |
124 CMPA #$30 PROC? | |
125 BNE *+4 | |
126 BSR REGNAM | |
127 BSR REG0 | |
128 CMPA #$31 FUNC? | |
129 BNE *+4 | |
130 BSR REGNAM | |
131 CLR LSIZE | |
132 BSR REG0 | |
133 LBSR PROG | |
134 LBSR STPOUT | |
135 LDX TEND | |
136 STX GEND | |
137 PLOOP LDA SY | |
138 CMPA #$8F /END CODE | |
139 LBEQ ENDL | |
140 CMPA #$4 | |
141 BCC ERR4 | |
142 DECA | |
143 STA AMODE | |
144 LDA VAL | |
145 LBSR DEFPF | |
122 | 146 LBSR PUTHSL |
121 | 147 FDB $03BD |
148 FDB PSHLB | |
149 BSR REG0 | |
150 CLR LSIZE | |
151 LBSR WORD | |
127
321b7fffadab
TL/1 simple test worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
126
diff
changeset
|
152 CMPA #$37 ( |
121 | 153 BNE PL1 |
154 BSR REGNAM | |
127
321b7fffadab
TL/1 simple test worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
126
diff
changeset
|
155 LDA #$3B ) |
121 | 156 LBSR CHECK |
157 PL1 BSR PROG | |
127
321b7fffadab
TL/1 simple test worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
126
diff
changeset
|
158 * LDB AMODE |
321b7fffadab
TL/1 simple test worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
126
diff
changeset
|
159 * CMPB #1 |
321b7fffadab
TL/1 simple test worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
126
diff
changeset
|
160 * BNE *+5 |
121 | 161 LBSR RETP |
162 LDX GEND | |
163 STX TEND | |
164 LDB #5 | |
165 STB TCOUNT | |
166 BRA PLOOP | |
167 ** | |
168 * REGIST ZERO | |
169 ** | |
170 REG0 LDX TEND | |
171 CLR ,X+ | |
172 STX TEND | |
173 INC TCOUNT | |
174 RTS | |
175 ** | |
176 * REGIST NAME | |
177 ** | |
178 REGNAM COM RSW | |
179 LBSR WORD | |
180 LDB RSW | |
181 BEQ *+5 | |
182 ERR4 LBRA ERROR | |
183 LDX TEND | |
184 LDA LSIZE | |
185 STA ,X | |
186 INC LSIZE | |
187 LDX WEND | |
188 STX TEND | |
189 BSR WORD1 | |
127
321b7fffadab
TL/1 simple test worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
126
diff
changeset
|
190 CMPA #$36 [ |
121 | 191 BNE REG2 |
192 BSR WORD1 | |
193 BNE ERR4 | |
194 LDA VAL | |
195 ADDA LSIZE | |
196 BSR WORD1 | |
124 | 197 LDA #$3A ":" |
121 | 198 LBSR CHECK |
124 | 199 REG2 CMPA #$3C "," get next word |
121 | 200 BEQ REGNAM |
201 RTS | |
202 ** | |
203 * PROGRAM | |
204 ** | |
205 PROG CMPA #$32 VAR? | |
206 BNE *+4 | |
207 BSR REGNAM | |
208 BSR REG0 | |
209 CMPA #$33 ARRAY? | |
210 BNE *+4 | |
211 BSR REGNAM | |
212 LDB #-1 | |
213 STB INDEX | |
214 ** | |
215 * STATEMENT | |
216 ** | |
217 STAT BSR SSTAT | |
218 LDB SSW | |
219 BEQ RTS1 | |
220 LBRA ERROR | |
221 ** | |
222 * STATEMENTS LIST | |
223 ** | |
224 STLIST BSR SSTAT | |
225 LDB SSW | |
226 BEQ STLIST | |
227 RTS1 RTS | |
228 ** | |
229 * SINGLE STATEMENT | |
230 ** | |
231 SSTAT CLRA | |
232 STA ACC | |
233 STA SSW | |
234 LDA SY | |
235 ** | |
236 * MULTIPLE STATEMENTS | |
237 ** | |
127
321b7fffadab
TL/1 simple test worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
126
diff
changeset
|
238 SS1 CMPA #$34 BEGIN |
121 | 239 BCS SS2 |
127
321b7fffadab
TL/1 simple test worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
126
diff
changeset
|
240 CMPA #$38 END |
121 | 241 BCC SS2 |
242 ADDA #4 | |
243 PSHS A | |
244 BSR WORD1 | |
245 BSR STLIST | |
246 PULS A | |
247 CLR SSW | |
248 LBRA CHECK | |
249 ** | |
250 * STOP | |
251 ** | |
252 SS2 CMPA #$50 | |
253 BNE SS3 | |
254 BSR STPOUT | |
255 WORD1 LBRA WORD | |
256 ** | |
122 | 257 STPOUT LBSR PUTHSL |
121 | 258 FCB 3,$7E |
122 | 259 FDB exit |
121 | 260 RTS |
261 ** | |
262 * RETURN | |
263 ** | |
264 SS3 CMPA #$51 | |
265 BNE SS4 | |
266 LDB AMODE | |
267 LBEQ ERR4 | |
268 PSHS B | |
269 BSR WORD1 | |
270 PULS B | |
271 DECB | |
272 BEQ RETP | |
273 LBSR EXPR | |
122 | 274 RETP LBSR PUTHSL |
121 | 275 FDB $037E |
276 FDB PULLB | |
277 RTS | |
278 ** | |
279 * PROC CALL | |
280 ** | |
281 SS4 CMPA #2 | |
282 LBEQ PFCALL | |
283 CMPA #$E0 | |
284 BCS SS5 | |
285 LBRA PFCALL | |
286 ** | |
287 * ASSIGNMENT STATEMENT | |
288 ** | |
289 SS5 CMPA #7 | |
290 BCS ASSIGN | |
291 LBRA SS6 | |
292 ASSIGN LDB GL | |
293 PSHS B | |
294 LDB VAL | |
295 PSHS B | |
296 CMPA #5 | |
297 BNE ASS1 | |
298 LBSR SUBSC1 | |
299 LDB ,S | |
300 LDA LSW | |
301 BNE AS0 | |
302 LDA #$8B | |
303 LBSR PUTAB | |
304 LDA #1 | |
305 BRA AS2 | |
306 AS0 ADDB OPER | |
307 STB ,S | |
308 CLR LSW | |
309 BRA AS1 | |
310 ASS1 CMPA #6 | |
311 BNE ASS2 | |
312 LBSR DSUBSC | |
313 LDA #2 | |
314 BRA AS2 | |
315 ASS2 CMPA #4 | |
316 BEQ *+5 | |
317 LBRA ERROR | |
318 LBSR WORD | |
319 AS1 CLRA | |
320 AS2 PSHS A | |
321 LDA SY | |
322 CMPA #$3C | |
323 BNE *+9 | |
324 LBSR WORD | |
325 BSR ASSIGN | |
326 BRA AS3 | |
327 LDA #$3D | |
328 LBSR CHECK | |
329 LDA #$27 | |
330 LBSR CHECK | |
331 LBSR EXPR | |
332 AS3 PULS D | |
333 STB OPER 4-- | |
334 PULS B | |
335 STB GLL | |
336 TSTA | |
337 BNE AS4 | |
338 LBSR PUTX | |
339 LDA #$A7 | |
125 | 340 LDB OPER |
121 | 341 LBRA PUTAB |
342 AS4 DECA | |
343 BNE AS5 | |
344 LBSR PUTX | |
345 LDA #$33 | |
346 LBSR PUTA | |
347 LBRA STABX | |
348 AS5 LBSR PUTHS | |
349 FCB 10 | |
350 FDB $33D7 | |
351 FCB WT2 | |
352 FDB $33D7 | |
132 | 353 FCB WT1,$9E,WT2 |
121 | 354 FDB $A700 |
355 CLR INDEX | |
356 RTS | |
357 ** | |
358 ** NON-STATEMENT | |
359 ** | |
360 SSEND COM SSW | |
361 RTS | |
362 ** | |
363 SS6 CMPA #$58 | |
364 BCC SSEND | |
365 CMPA #$52 | |
366 BCS SSEND | |
367 SUBA #$51 | |
368 PSHS A | |
369 LBSR WORD | |
125 | 370 PULS B B keyword A next token |
121 | 371 ** |
372 * REPEAT UNTIL | |
373 ** | |
374 DECB | |
375 BNE SS7 | |
376 STB INDEX | |
377 BSR ASTOUT | |
378 LBSR STLIST | |
379 LDA #$60 | |
380 LBSR CHECK | |
381 LBSR EXPR | |
382 LBSR PUTHS | |
383 FCB 2 | |
384 FDB $2603 | |
385 CLR SSW | |
386 BRA MINOUT | |
387 ** | |
388 * FOR-TO | |
389 ** | |
390 SS7 DECB | |
391 BNE SS8 | |
125 | 392 CMPA #4 should be simple var |
121 | 393 BEQ *+5 |
394 LBRA ERROR | |
395 LDB VAL | |
396 PSHS B | |
397 LDB GL | |
398 PSHS B | |
399 LBSR ASSIGN | |
125 | 400 LDA #$61 to |
121 | 401 LBSR CHECK |
402 CLR ACC | |
403 LBSR EXPR | |
125 | 404 LDA #$64 do |
121 | 405 LBSR CHECK |
406 BSR ASTOUT | |
132 | 407 LDD #$3402 pshs a |
125 | 408 LBSR PUTAB |
121 | 409 CLR INDEX |
410 LBSR STAT | |
125 | 411 LDD #$3502 puls a |
412 LBSR PUTAB | |
121 | 413 PULS D |
414 STA GLL | |
415 STB OPER | |
416 LDA #$A1 | |
417 LBSR PUTABX | |
418 LBSR PUTHS | |
419 FCB 2 | |
420 FDB $2305 | |
421 LDA #$6C | |
422 LDB OPER | |
423 LBSR PUTAB | |
424 MINOUT LBRA PULJMP | |
425 ASTOUT LBRA PSHDEF | |
426 ** | |
427 * WHILE-DO | |
428 ** | |
429 SS8 DECB | |
430 BNE SS9 | |
431 STB INDEX | |
432 BSR ASTOUT | |
433 LBSR EXPR | |
434 LDA #$64 | |
435 LBSR CHECK | |
436 LBSR PUTHS | |
437 FCB 2 | |
438 FDB $2603 | |
439 BSR SLAOUT | |
125 | 440 LDB INDEX |
121 | 441 PSHS B |
442 LBSR STAT | |
443 PULS B | |
444 STB INDEX | |
445 BSR PEROUT | |
446 BSR MINOUT | |
447 PLUOUT LBRA PULDEF | |
448 ** | |
449 ** IF—THEN | |
450 ** | |
451 SS9 DECB | |
452 BNE SS10 | |
453 LBSR EXPR | |
454 LDA #$65 | |
455 LBSR CHECK | |
456 LBSR PUTHS | |
457 FCB 2 | |
458 FDB $2603 | |
459 BSR SLAOUT | |
460 LDB INDEX | |
461 PSHS B | |
462 LBSR STAT | |
463 PULS B | |
464 CMPB INDEX | |
465 BEQ *+4 | |
466 CLR INDEX | |
467 BRA PLUOUT | |
468 SLAOUT LBRA PSHJMP | |
469 PEROUT LBRA STCHG | |
470 *** | |
471 * CASE—OF | |
472 SS10 DECB | |
473 BNE SS11 | |
474 LBSR EXPR | |
475 LDA #$66 | |
476 LBSR CHECK | |
477 CLRB | |
478 S10A INCB | |
479 PSHS B | |
480 STB ACC | |
481 LBSR LEXPR | |
482 LDA #$81 | |
483 LBSR AOPER | |
484 LBSR PUTHS | |
485 FCB 2 | |
486 FDB $2703 | |
487 BSR SLAOUT | |
488 LDB INDEX | |
489 PSHS B | |
490 LBSR STAT | |
491 BSR SLAOUT | |
492 BSR PEROUT | |
493 BSR PLUOUT | |
494 PULS B | |
495 STB INDEX | |
496 PULS B | |
497 LDA SY | |
498 CMPA #$67 | |
499 BNE S10A | |
500 PSHS B | |
501 LBSR WORD | |
502 LBSR STAT | |
503 CLR INDEX | |
504 PULS A | |
505 LBRA PLDFN | |
506 ** | |
507 * WRITE STATEMENT | |
508 ** | |
509 SS11 LDA #$37 | |
510 LBSR CHECK | |
125 | 511 LBSR EXPR output channel number |
121 | 512 LBSR PUTHS |
513 FDB $0297 | |
514 FCB OUTDN | |
515 LDA #$3D | |
516 LBSR CHECK | |
517 WTLP CLR ACC | |
518 BSR WTERM | |
519 LDA SY | |
520 CMPA #$3C | |
521 BNE WTEN | |
522 LBSR WORD | |
523 BRA WTLP | |
125 | 524 WTEN LDA #$3B |
121 | 525 LBRA CHECK |
125 | 526 ** write command argument |
527 WTERM CMPA #$6C string | |
121 | 528 BNE WR1 |
122 | 529 LBSR PUTHSL |
121 | 530 FDB $03BD |
531 FDB PUTSTR | |
532 LDA CH | |
125 | 533 WR01 CMPA #'"' copy until '"' |
121 | 534 BEQ WR02 |
535 LBSR PUTA | |
536 LBSR GETCH | |
537 BRA WR01 | |
125 | 538 WR02 CLRA put 0 at end |
121 | 539 STA INDEX |
540 LBSR PUTA | |
541 LBSR GETCH | |
542 LBRA WORD | |
543 ** | |
544 WR1 CMPA #$6B | |
545 BNE WR3 | |
546 LBSR WORD | |
547 CMPA #$37 | |
548 BEQ WR2 | |
122 | 549 LBSR PUTHSL |
121 | 550 FDB $03BD |
126
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
551 FDB CRLF |
121 | 552 RTS |
553 ** | |
554 WR2 LBSR WEXPR | |
555 BSR WTEN | |
122 | 556 LBSR PUTHSL |
121 | 557 FDB $03BD |
558 FDB CRLFA | |
559 RTS | |
560 ** | |
561 WR3 CMPA #$6A | |
562 BNE WR4 | |
563 LBSR SUBSC | |
122 | 564 LBSR PUTHSL |
121 | 565 FDB $03BD |
566 FDB SPACEA | |
567 RTS | |
568 ** | |
569 WR4 CMPA #$A9 | |
570 BNE WR5 | |
571 LBSR SUBSC | |
122 | 572 LBSR PUTHSL |
121 | 573 FDB $03BD |
574 FDB PUTCA | |
575 RTS | |
576 ** | |
577 WR5 CMPA #$26 | |
578 BNE WR6 | |
579 LBSR DSUBSC | |
580 LBSR PUTPLB | |
122 | 581 LBSR PUTHSL |
121 | 582 FDB $03BD |
583 FDB PUTDA+1 | |
584 BRA WR66 | |
585 ** | |
586 WR6 LBSR EXPR | |
122 | 587 LBSR PUTHSL |
121 | 588 FDB $03BD |
589 FDB PUTDA | |
590 WR66 CLR INDEX | |
591 RTS11 RTS | |
592 ** | |
593 * PUTX & PUTB | |
594 ** | |
595 PUTABX PSHS D | |
596 BSR PUTX | |
597 PULS D | |
598 BRA PUTAB | |
599 ** | |
125 | 600 * PUT LB, OR GB BY INDEX |
121 | 601 ** |
602 PUTX LDB GLL | |
603 CMPB INDEX | |
604 BEQ RTS11 | |
605 STB INDEX | |
606 ADDB #LB+1 | |
125 | 607 LDA #$9E |
121 | 608 *** |
609 * PUT ACC A&B | |
610 ** | |
125 | 611 PUTAB BSR PUTA |
121 | 612 TFR B,A |
613 ** | |
614 * PUT ACCA RS AN OBJECT | |
615 ** | |
616 PUTA STX RNDH | |
617 LBSR AOUT | |
618 LDX RNDH | |
619 RTS | |
620 ** | |
621 * PUTHS STRING | |
622 ** | |
623 PUTHS LDX ,S++ | |
624 LDB ,X+ | |
625 PS1 LDA ,X+ | |
626 BSR PUTA | |
627 DECB | |
628 BNE PS1 | |
629 JMP ,X | |
630 ** | |
631 ** CHECK ACC | |
632 ** | |
633 CHECK CMPA SY | |
634 BEQ WORD | |
635 ** | |
636 * ERROR | |
637 ** | |
638 ERROR LBSR PUTSTR | |
639 FDB $0D0A | |
640 FCC "ERROR ",0 | |
641 LDX TEND | |
642 LEAX 1,X | |
643 NEG ,X | |
644 ER0 LDA ,X+ | |
645 LBSR PUTCA | |
646 CMPX WEND | |
647 BNE ER0 | |
648 lbra exit | |
649 ** | |
650 * WORD DECORDER | |
651 ** | |
652 WORD BSR WORDS | |
653 LDA SY | |
654 RTS | |
655 WORDS CLRB | |
656 STB SY | |
657 STB VAL | |
658 LDA CH | |
659 ** SKIP CONT ,SPACE.; | |
660 WD1 CMPA #$21 | |
661 BCS SKIP | |
662 CMPA #'.' | |
663 BEQ SKIP | |
664 CMPA #';' | |
665 BNE WD2 | |
666 SKIP BSR GETCH | |
667 BRA WD1 | |
668 ** | |
669 * COMMENT | |
670 ** | |
671 WD2 CMPA #'%' | |
672 BNE WD3 | |
673 BSR GETCH | |
674 CMPA #$20 | |
123 | 675 BCC *-4 |
121 | 676 BRA WD1 |
677 ** | |
678 * ASCC CONST | |
679 ** | |
680 WD3 CMPA #'\'' | |
681 BNE WD4 | |
682 BSR GETCH | |
683 STA VAL | |
684 BSR GETCH | |
685 GETCH PSHS X | |
686 LBSR MEMIN | |
687 STA CH | |
688 PULS X,PC | |
689 * HEX CONSTANT | |
690 WD4 CMPA #'$' | |
691 BNE WD5 | |
692 WD40 BSR GETCH | |
693 BSR TSTNA | |
694 BEQ WD41 | |
695 BCC RTS2 | |
696 CMPA #'F'+1 | |
697 BCC RTS2 | |
698 SUBA #7 | |
699 WD41 SUBA #'0' | |
700 LDB VAL | |
701 ASLB | |
702 ASLB | |
703 ASLB | |
704 ASLB | |
705 PSHS B | |
706 ADDA ,S+ | |
707 STA VAL | |
708 BRA WD40 | |
709 ** | |
710 * TEST ALPHA NUMERIC | |
711 TSTNA CMPA #'0' | |
712 BCS NAF | |
713 CMPA #'9'+1 | |
714 BCS NT | |
715 CMPA #'A' | |
716 BCS NAF | |
717 CMPA #'Z'+1 | |
718 BCS AT | |
719 NAF CLRB CLEAR C | |
720 AT LDB #-1 | |
721 RTS2 RTS | |
722 NT CLRB | |
723 RTS | |
724 ** DECIMAL CONSTANT | |
725 WD5 BSR TSTNA | |
726 BNE WD6 | |
727 WD50 SUBA #'0' | |
728 PSHS A | |
729 LDA VAL | |
730 LDB #10 | |
731 MUL | |
127
321b7fffadab
TL/1 simple test worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
126
diff
changeset
|
732 ADDB ,S+ |
321b7fffadab
TL/1 simple test worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
126
diff
changeset
|
733 STB VAL |
121 | 734 BSR GETCH |
735 BSR TSTNA | |
736 BEQ WD50 | |
737 RTS | |
738 * THE OTHER WORDS | |
739 WD6 LDX TEND | |
740 PSHS A | |
741 NEGA | |
742 LEAX 1,X | |
743 BSR STAONE | |
744 PULS A | |
745 BSR TSTNA | |
746 BCC TLOOK1 | |
747 WD61 LDA CH | |
748 BSR TSTNA | |
749 BCS *+4 | |
750 BNE TLOOK1 | |
751 BSR STAONE | |
752 BRA WD61 | |
753 STAONE STA ,X+ | |
754 STX WEND | |
755 BRA GETCH | |
756 TLOOK1 LDA RSW | |
757 BEQ TLOOK | |
758 COM RSW | |
759 RTS | |
760 ** | |
761 * WORD TABLE SEARCH | |
762 ** | |
123 | 763 TLOOK PSHS U |
764 LDA TCOUNT | |
121 | 765 STA SY |
766 LDX TEND | |
767 S01 LDU WEND | |
768 S02 LDA ,-U | |
769 CMPA ,-X | |
770 BEQ S06 | |
771 S03 TST ,X | |
772 BEQ S05 | |
773 BMI S04 | |
774 LEAX -1,X | |
775 BRA S03 | |
776 S04 LEAX -1,X | |
777 BRA S01 | |
778 S05 DEC SY | |
779 BNE S01 | |
780 LBRA ERROR | |
781 S06 TSTA | |
782 BPL S02 | |
783 LDB ,-X | |
784 STB VAL | |
785 LDA SY | |
786 CMPA #1 | |
787 BNE *+6 | |
788 TFR B,A | |
789 BRA S07 | |
790 CMPA #4 | |
791 BCS RTSS | |
792 LDB #1 | |
793 TST AMODE | |
794 BEQ *+6 | |
795 CMPA #6 | |
796 BCS *+3 | |
797 NEGB | |
798 STB GL | |
799 ANDA #$FD | |
800 S07 STA SY | |
123 | 801 RTSS PULS U,PC |
121 | 802 ** |
803 * ARITHMATIC EXPRESSION | |
804 ** | |
805 WEXPR LBSR WORD | |
806 EXPR BSR LEXPR | |
807 BSR OLOAD | |
808 RTE RTS | |
809 ** WORD * LEXPR | |
810 WLEXPR LBSR WORD | |
811 ** | |
812 * LOGICAL EXPRESSION | |
813 ** | |
814 LEXPR BSR REXPR | |
815 LE1 LDY SY | |
816 CMPA #$82 | |
817 BCS RTE | |
818 CMPA #$8A+1 | |
819 BCC RTE | |
820 PSHS A | |
821 LBSR WORD | |
822 BSR REXPR | |
823 LDB LSW | |
824 BNE LE2 | |
825 LBSR PUTHS | |
826 FDB $0397 | |
827 FCB WT1 | |
828 FCB $32 | |
829 PULS A | |
830 ADDA #$10 | |
831 LDB #WT1 | |
832 LBSR PUTAB | |
833 BRA LE1 | |
834 LE2 PULS A | |
835 BSR OCORD | |
836 BRA LE1 | |
837 ** | |
838 * RELATIONAL EXPRESS | |
839 ** | |
840 REXPR BSR AEXPR | |
841 RE1 LDA SY | |
842 CMPA #$21 | |
843 BCS RTE | |
844 CMPA #$30 | |
845 BCC RTE | |
846 PSHS A | |
847 LBSR WORD | |
848 ASR AEXPR | |
849 LDA #$80 | |
850 BSR AOPER | |
851 PULS A | |
852 LBSR PUTHS | |
853 FCB 6 | |
854 FCB $3,$4F,$20,$02,$86,$FF | |
855 BRA RE1 | |
856 ** ADDING OPERATFR | |
857 AOPER LDB LSW | |
858 BNE OCORD | |
859 PSHS A | |
860 CMPA #$80 | |
861 BEQ *+5 | |
862 BSR PUTPUL | |
863 FCB $8C | |
864 BSR PUTPLB | |
865 PULS A | |
866 SUBA #$70 | |
867 PUTA1 LBRA PUTA | |
868 ** OUTPUT SAVED L-CC | |
869 OLOAD LDA LSW | |
870 BEQ RTE | |
871 LDA ACC | |
132 | 872 BEQ OL1 |
873 LDD #$3402 pshs a | |
874 LBSR PUTAB | |
875 OL1 LDA #$86 | |
121 | 876 OCORD PSHS A |
877 CLRA | |
878 STA LSW | |
879 COMA | |
880 STA ACC | |
881 LDA AMODE | |
882 CMPA #$20 | |
883 BNE *+5 | |
884 LBSR PUTX | |
885 CLR LSW | |
886 PULS A | |
887 ADDA AMODE | |
888 LDB OPER | |
889 LBRA PUTAB | |
890 * PUT 'TAB:PULS A' | |
891 PUTPUL LBSR PUTHS | |
132 | 892 FCB 4 |
893 FCB $1f,$89,$35,2 tfr a,b ; puls a | |
121 | 894 RTE1 RTS |
895 * PUT 'PULS B' | |
132 | 896 PUTPLB LDA #$3504 puls b |
897 LBRA PUTAB | |
121 | 898 ** |
899 * ADDING EXPRESSION | |
900 ** | |
901 AEXPR BSR MEXPR | |
902 AE1 LDA SY | |
903 CMPA #$80 | |
904 BEQ AE2 | |
905 CMPA #$8B | |
906 BNE RTE1 | |
907 AE2 PSHS A | |
908 LBSR WORD | |
909 BSR MEXPR | |
910 PULS A | |
911 BSR AOPER | |
912 BRA AE1 | |
913 ** | |
914 * MUTIPLYING EXPRESSION | |
915 ** | |
916 MEXPR BSR TERM | |
917 ME1 LDA SY | |
918 CMPA #$8E | |
919 BEQ ME2 | |
920 CMPA #$8F | |
921 BNE RTE1 | |
922 ME2 PSHS A | |
923 LBSR WORD | |
924 BSR TERM | |
925 LDB LSW | |
926 BEQ ME3 | |
927 LDA #$C6 | |
928 BSR OCORD | |
929 FCB $8C | |
930 ME3 BSR PUTPUL | |
931 PULS A | |
932 CMPA #$8E | |
933 BHS ME4 | |
122 | 934 LBSR PUTHSL |
121 | 935 FCB 3 |
936 FCB $BD | |
937 FDB MULT | |
938 BRA ME1 | |
122 | 939 ME4 LBSR PUTHSL |
121 | 940 FCB 3 |
941 FCB $BD | |
942 FDB DIV | |
943 BRA ME1 | |
944 ** | |
945 * TERM | |
946 ** | |
947 TERM LDA SY | |
948 BNE TM1 | |
949 * SAVE L-COMMAND | |
950 SLOAD PSHS A | |
951 LBSR OLOAD | |
952 LDA VAL | |
953 STA OPER | |
954 LDA GL | |
955 STA GLL | |
956 PULS A | |
957 STA AMODE | |
958 COM LSW | |
959 LBRA WORD | |
124 | 960 * CONST TRUE & FALSE |
126
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
961 TM1 CMPA #$A0 |
124 | 962 BEQ TM01 |
121 | 963 CMPA #$A1 |
964 BNE TM2 | |
965 TM01 SUBA #$A1 | |
966 STA VAL | |
967 CLRA | |
968 BRA SLOAD | |
969 * SYSTEM VAR MHIGH & MOD | |
970 TM2 CMPA #$16 | |
126
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
971 BEQ *+6 |
121 | 972 CMPA #$17 |
973 BNE TM3 | |
974 STA VAL | |
975 LDA #$10 | |
976 BRA SLOAD | |
977 * SIMPLE VARIABLE | |
978 TM3 CMPA #4 | |
979 BNE TM4 | |
980 LDA #$20 | |
981 BRA SLOAD | |
982 * ( EXPTRSSION ) | |
983 TM4 CMPA #$35 | |
984 BCS TM5 | |
985 CMPA #$38 | |
986 BCC TM5 | |
987 PSHS A | |
988 LBSR WLEXPR | |
989 PULS A | |
990 ADDA #4 | |
991 LBRA CHECK | |
992 ** FUNCTION CALL | |
993 TM5 CMPA #3 | |
994 BMI *+6 | |
995 CMPA #$E0 | |
996 BCS TM6 | |
997 BSR OLP | |
998 PFCALL LDA VAL | |
999 PSHS A | |
1000 LBSR WORD | |
1001 CMPA #$37 | |
1002 BNE PFC1 | |
1003 LDA LSIZE | |
1004 PSHS A | |
1005 INC LSIZE | |
1006 PFC2 INC LSIZE | |
1007 LBSR WEXPR | |
1008 CLRB | |
1009 STB ACC | |
1010 DECB | |
1011 STB GLL | |
1012 LDA #$A7 | |
1013 LDB LSIZE | |
1014 LBSR PUTABX | |
1015 LDA SY | |
1016 CMPA #$3C | |
1017 BEQ PFC2 | |
1018 PULS A | |
1019 STA LSIZE | |
1020 LDA #$3B | |
1021 LBSR CHECK | |
1022 PFC1 LDB #-1 | |
1023 STB ACC | |
1024 STB INDEX | |
1025 LDA #$86 | |
1026 LDB LSIZE | |
1027 LBSR PUTAB | |
1028 PULS A | |
1029 CMPA #$C0 | |
1030 BCC *+5 | |
1031 LBRA CALPF | |
1032 LDX #LIBR | |
1033 SUBA #$C0 | |
1034 PFC3 BEQ PFC4 | |
1035 LEAX 2,X | |
1036 DECA | |
1037 BRA PFC3 | |
1038 PFC4 LDA #$BD | |
1039 LBSR PUTA | |
1040 LDD ,X | |
1041 LBRA PUTAB | |
1042 ** | |
1043 OLP LBSR OLOAD | |
1044 LDB ACC | |
1045 BEQ RTS4 | |
132 | 1046 LDD #$3402 pshs a |
1047 LBSR PUTAB | |
121 | 1048 CLR ACC |
1049 RTS4 RTS | |
1050 ** FUNCTION RND | |
1051 TM6 CMPA #$70 | |
1052 BNE TM61 | |
1053 BSR SUBSC | |
1054 LBSR PUTHS | |
1055 FCB $03BD | |
1056 FDB RND | |
1057 RTS | |
1058 * FUNTION GET | |
1059 TM61 CMPA #$71 | |
1060 BNE TM62 | |
1061 BSR SUBSC | |
1062 LBSR PUTHS | |
122 | 1063 FDB $0297 |
1064 FCB INDN | |
1065 LBSR PUTHSL | |
1066 FCB $03BD | |
121 | 1067 FDB GETCH |
1068 RTS | |
1069 * FUNCTION READ | |
1070 TM62 CMPA #$72 | |
1071 BNE TM7 | |
1072 BSR SUBSC | |
1073 LBSR PUTHS | |
122 | 1074 FDB $0297 |
121 | 1075 FDB INDN |
122 | 1076 LBSR PUTHSL |
1077 FCB $038D | |
121 | 1078 FDB GETDA |
1079 RTS | |
1080 * FUNCTION NOTASL ET AL | |
1081 TM7 CMPA #$40 | |
1082 BCS TM8 | |
1083 CMPA #$49+1 | |
1084 BCC TM8 | |
1085 PSHS A | |
1086 BSR SUBSC | |
1087 PULS A | |
1088 LBRA PUTA | |
1089 * ARRAY | |
1090 TM8 CMPA #$5 | |
1091 BNE TM9 | |
1092 LDB VAL | |
1093 PSHS B | |
1094 LDB GL | |
1095 PSHS B | |
1096 BSR SUBSC1 | |
1097 PULS B | |
1098 STB GLL | |
1099 PULS B | |
1100 LDA LSW | |
1101 BEQ ARY1 | |
1102 ADDB OPER | |
1103 STB OPER | |
1104 LDA #$20 | |
1105 STA AMODE | |
1106 RTS | |
1107 ARY1 LDA #$8B | |
1108 LBSR PUTABX | |
1109 LBRA LDAAX | |
1110 ** | |
1111 DSUBSC LDA #$3C | |
1112 BSR SUBS1 | |
1113 LDA #$3B | |
1114 PSHS A | |
1115 BRA SUBS2 | |
1116 SUBSC LDA #$3E | |
1117 SUBS1 PSHS A | |
1118 LBSR WORD | |
1119 LDA #$37 | |
1120 LBSR CHECK | |
1121 SUBS2 LBSR EXPR | |
1122 PULS A | |
1123 LBRA CHECK | |
1124 SUBSC1 LBSR WORD | |
1125 LDA #$36 | |
1126 LBSR CHECK | |
1127 LBSR LEXPR | |
1128 LDB LSW | |
1129 BEQ SBS5 | |
1130 LDB AMODE | |
1131 BEQ SBS5 | |
1132 LBSR OLOAD | |
1133 SBS5 LDA #$3A | |
1134 LBRA CHECK | |
1135 * MEM FUNCTION | |
1136 TM9 CMPA #6 | |
1137 BNE TM10 | |
1138 BSR DSUBSC | |
1139 LBSR PUTHS | |
1140 FDB $0997 | |
1141 FCB WT2 | |
1142 FDB $3297 | |
125 | 1143 FCB WT1,$9E,WT1 |
121 | 1144 FDB $A600 |
1145 CLR INDEX | |
1146 RTS | |
1147 ** FOR EXPANTION | |
1148 TM10 LBRA ERROR | |
1149 ** | |
1150 * ADDRESS DEPENDENT CODE | |
1151 * GENARATION | |
1152 ** | |
1153 * SET PRC—FUNC TABLE | |
1154 ** | |
1155 SETPFT PSHS A | |
1156 LDB #3 | |
1157 MUL | |
1158 ADDD PFTBEG | |
1159 STD XR | |
1160 PULS A,PC | |
1161 ** | |
1162 TWICE LBSR PUTSTR | |
1163 FCB $0D,$0A | |
1164 FCC "TWICE!",0 | |
1165 lbra exit | |
1166 ** | |
1167 * DEF PROC-FUNC | |
1168 ** | |
1169 DEFPF BSR SETPFT | |
1170 LDX XR | |
1171 TST ,X | |
1172 BNE TWICE | |
1173 COM ,X | |
1174 LDX 1,X | |
1175 STX YR | |
1176 LDX XR | |
1177 LEAX 1,X | |
1178 BSR PCST | |
1179 LDX YR | |
1180 DP1 BEQ RT10 | |
1181 LDX ,X | |
1182 STX ZR | |
1183 LDX YR | |
1184 BSR PCST | |
1185 LDX ZR | |
1186 STX YR | |
1187 BRA DP1 | |
1188 ** | |
1189 * CALL PORC-FUNC | |
1190 ** | |
1191 CALPF BSR SETPFT | |
1192 INCA | |
1193 CMPA PFMAX | |
1194 BCS *+4 | |
1195 STA PFMAX | |
1196 LDA #$BD | |
1197 BSR AOUT | |
1198 LDX XR | |
1199 LDD 1,X | |
1200 LDX PC | |
1201 BSR STAABX | |
1202 LDX XR | |
1203 TST ,X | |
1204 BNE PC2ADD | |
1205 LEAX 1,X | |
1206 BSR PCST | |
1207 BRA PC2ADD | |
1208 ** | |
1209 * PUL-DEF N TIMES | |
1210 ** | |
1211 PLDFN PSHS A | |
1212 BSR PULDEF | |
1213 DEC ,S | |
1214 BNE *-4 | |
1215 PULS A,PC | |
1216 ** | |
1217 * PULL AND DEFINE | |
1218 ** | |
1219 PULDEF BSR PULSTK | |
1220 PCST LDD PC | |
1221 STAABX STD ,X | |
1222 RT10 RTS | |
1223 ** | |
1224 JMPOUT LDA #$7E | |
1225 AOUT LDX PC | |
1226 STA ,X | |
1227 BRA INCPC1 | |
1228 ** | |
1229 PULSTK LDX SP | |
1230 LEAX 2,x | |
1231 STX SP | |
1232 LDD ,X | |
1233 LDX ,X | |
1234 RTS | |
1235 ** | |
1236 * PUL STACK & Jump | |
1237 ** | |
1238 PULJMP BSR JMPOUT | |
1239 BSR PULSTK | |
1240 PCST2 LDX PC | |
1241 BSR STAABX | |
1242 INCPC LEAX 1,X | |
1243 INCPC1 LEAX 1,X | |
1244 SETPC STX PC | |
1245 RTS | |
1246 ** | |
1247 * PUSH STACK & JUMP | |
1248 ** | |
1249 PSHJMP BSR JMPOUT | |
1250 BSR PSHDEF | |
1251 PC2ADD LDX PC | |
1252 BRA INCPC | |
1253 ** | |
1254 * PUSH STRCK & DEFINE | |
1255 ** | |
1256 PSHDEF LDX SP | |
1257 BSR PCST | |
1258 LEAX -2,X | |
1259 STX SP | |
1260 RTS | |
1261 ** | |
1262 OUTPC3 BSR AOUT | |
1263 LDD PC | |
1264 ADDD #3 | |
1265 BRA PCST2 | |
1266 ** | |
1267 * LDA R,X | |
1268 LDAAX LDA #$B7 | |
1269 BSR OUTPC3 | |
1270 LDA #$A6 | |
1271 LA1 BSR AOUT | |
1272 BRA INCPC1 | |
1273 ** | |
1274 * STA B,X | |
1275 STABX LDA #$F7 | |
1276 BSR OUTPC3 | |
1277 LDA #$A7 | |
1278 BRA LA1 | |
1279 ** | |
1280 * STACK TOP CHANGE | |
1281 ** | |
123 | 1282 STCHG LDD 2,S |
1283 LDX 4,S | |
1284 STD 4,S | |
1285 STX 2,S | |
121 | 1286 RTS |
1287 ** | |
122 | 1288 * PUTHSL output with address calculation |
1289 * only working on 3 byte 7E/BD (JMP/JSR) | |
1290 ** | |
1291 PUTHSL LDX ,S++ | |
1292 LDB ,X+ | |
1293 LDA ,X+ | |
1294 LBSR PUTA | |
1295 LDD ,X++ | |
124 | 1296 leay 0,pcr |
122 | 1297 leay d,y |
1298 exg d,y | |
1299 ldy pc | |
1300 std ,y++ | |
1301 sty pc | |
1302 JMP ,X | |
1303 ** | |
1304 ** | |
121 | 1305 * END OF LOAD |
1306 ** | |
1307 ENDL LDX PFTBEG | |
1308 LDA PFMAX | |
1309 EL1 BEQ EL | |
1310 TST ,X | |
1311 BEQ UDERR | |
1312 EL2 LEAX 3,X | |
1313 DECA | |
1314 BRA EL1 | |
1315 UDERR PSHS A | |
1316 STA ZR | |
1317 SUBA PFMAX | |
1318 NEGA | |
1319 PSHS A | |
1320 LBSR PUTSTR | |
1321 FDB $0D0A | |
1322 FCC "UNDEF",0 | |
1323 PULS A | |
1324 LBSR PUTCA | |
1325 PULS A | |
1326 LDX ZR | |
1327 BRA EL2 | |
1328 EL LDX PC | |
126
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1329 LBRA C |
121 | 1330 |
1331 ********************** | |
1332 * ADVANCE WORD | |
1333 ** | |
1334 WTABLE FCB 0 END MARK | |
1335 FCB $30,-'P' | |
1336 FCC "ROC" | |
1337 FCB $31,-'F' | |
1338 FCC "UNC" | |
124 | 1339 FCB $32,-'V' |
121 | 1340 FCC "AR" |
1341 FCB $33,-'A' | |
1342 FCC "RRAY" | |
1343 FCB $34,-'B' | |
1344 FCC "EGIN" | |
124 | 1345 FCB $35,-';' |
121 | 1346 FCB $36,-'[' |
1347 FCB $37,-'(' | |
1348 FCB $38,-'E' | |
1349 FCC "ND" | |
1350 FCB $39,-'=' | |
1351 FCB $3A,-']' | |
1352 FCB $3B,-')' | |
1353 FCB $3C,-',' | |
1354 FCB $3D,-':' | |
1355 FCB $50,-'S' | |
1356 FCC "TOP" | |
1357 FCB $51,-'R' | |
1358 FCC "ETURN" | |
1359 FCB $55,-'I' | |
1360 FCC "F" | |
1361 FCB $65,-'T' | |
1362 FCC "HEN" | |
1363 FCB $53,-'F' | |
1364 FCC "OR" | |
1365 FCB $61,-'T' | |
1366 FCC "O" | |
1367 FCB $52,-'R' | |
1368 FCC "EPEAT" | |
1369 FCB $60,-'U' | |
1370 FCC "NTIL" | |
1371 FCB $54,-'W' | |
1372 FCC "HILE" | |
1373 FCB $64,-'D' | |
1374 FCC "O" | |
1375 FCB $56,-'C' | |
1376 FCC "ASE" | |
1377 FCB $66,-'O' | |
1378 FCC "F" | |
1379 FCB $67,-'E' | |
1380 FCC "LSE" | |
1381 FCB $57,-'W' | |
1382 FCC "RITE" | |
1383 FCB $69,-'A' | |
1384 FCC "SCII" | |
1385 FCB $6A,-'S' | |
1386 FCC "PACE" | |
126
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1387 FCB $6B,-'C' |
121 | 1388 FCC "RLF" |
1389 FCB $6C,-'"' | |
1390 FCB $8B,-'+' | |
1391 FCB $80,-'-' | |
1392 FCB $8E,-'*' | |
1393 FCB $8F,-'/' | |
1394 FCB $82,-'S' | |
1395 FCC "BC" | |
1396 FCB $84,-'A' | |
1397 FCC "ND" | |
1398 FCB $88,-'E' | |
1399 FCC "OR" | |
1400 FCB $89,-'A' | |
1401 FCC "DC" | |
1402 FCB $8A,-'O' | |
1403 FCC "R" | |
1404 FCB $22,-'>' | |
1405 FCB $25,-'<' | |
1406 FCB $26,-'#' | |
1407 FCB $27,-'=' | |
1408 FCB $2D,-'L','T' | |
1409 FCB $2E,-'G','T' | |
1410 FCB $40,-'N','E','G' | |
1411 FCB $43,-'N','O','T' | |
1412 FCB,$43,-'C','O','M' | |
1413 FCB $44,-'L','S','R' | |
1414 FCB $46,-'R','O','R' | |
1415 FCB $47,-'A','S','R' | |
1416 FCB $48,-'A','S','L' | |
1417 FCB $49,-'R','O','L' | |
1418 FCB $06,-'M','E','M' | |
1419 FCB $A0,-'T' | |
1420 FCC "RUE" | |
1421 FCB $A1,-'F' | |
1422 FCC "ALSE" | |
1423 FCB $16,-'M' | |
1424 FCC "HIGH" | |
1425 FCB $17,-'M' | |
1426 FCC "OD" | |
1427 FCB $70,-'R','N','D' | |
1428 FCB $71,-'G','E','T' | |
1429 FCB $72,-'R' | |
1430 FCC "EAD" | |
1431 WTBLEND | |
126
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1432 |
121 | 1433 ****** |
126
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1434 * SUPORTING ROUTINES |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1435 * & I/0 CONTROL |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1436 ** |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1437 ** OBJECT START |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1438 ****** |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1439 C leas MSTACK,u |
127
321b7fffadab
TL/1 simple test worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
126
diff
changeset
|
1440 VARPTR LDX <PC |
126
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1441 STX GB |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1442 STX LB |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1443 lda INDN |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1444 lbsr close |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1445 clra os9 stdin |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1446 sta INDN |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1447 inca |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1448 sta OUTDN |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1449 OBJMP JMP OBJECT,u |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1450 |
121 | 1451 ** |
127
321b7fffadab
TL/1 simple test worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
126
diff
changeset
|
1452 * PUSH LB & SET NEW LB |
121 | 1453 ** |
127
321b7fffadab
TL/1 simple test worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
126
diff
changeset
|
1454 PSHLB LDX LB |
321b7fffadab
TL/1 simple test worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
126
diff
changeset
|
1455 leax a,x |
121 | 1456 LDD LB |
1457 STD ,X++ | |
1458 STX LB | |
1459 RTS | |
1460 ** | |
1461 * PULL LB | |
1462 ** | |
1463 PULLB LDX LB | |
1464 LDX ,--X | |
1465 STX LB | |
1466 TSTA | |
1467 RTS | |
1468 ** | |
1469 * RND FUNCTION | |
1470 ** | |
1471 RND PSHS A | |
1472 LDA RNDL | |
1473 LDB #125 | |
1474 MUL | |
1475 ADDD #1 | |
1476 STA RNDL | |
1477 PSHS A | |
1478 LDA RNDH | |
1479 LDB #125 | |
1480 MUL | |
1481 ADDA ,S+ | |
1482 STA RNDH | |
1483 PULS B | |
1484 MUL | |
1485 INCA | |
1486 RTS | |
1487 ** | |
1488 * DVISITION SET MOD | |
1489 ** | |
1490 DIV STB WT1 | |
1491 BEQ ERDIV | |
1492 TFR A,B | |
1493 CLRA | |
1494 STA WT2 | |
1495 DV0 INC WT2 | |
1496 ASL WT1 | |
1497 BCC DV0 | |
1498 DV1 ROR WT1 | |
1499 CMPB WT1 | |
1500 BCS DV2 | |
1501 SUBB WT1 | |
1502 ORCC #1 | |
1503 BRA *+4 | |
1504 DV2 ANDCC #$FE CLR C | |
1505 ROLA | |
1506 DEC WT2 | |
1507 BNE DV1 | |
1508 STB MOD | |
1509 TSTA | |
1510 RTS | |
1511 ** | |
1512 ERDIV STB OUTDN | |
1513 LBSR CRLF | |
1514 LBSR PUTSTR | |
1515 FCC "ERR DIV 0",0 | |
127
321b7fffadab
TL/1 simple test worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
126
diff
changeset
|
1516 MONIT lbra exit |
121 | 1517 ** |
1518 MULT MUL | |
1519 STA MHIGH | |
1520 TFR B,A | |
1521 RTS | |
1522 ** | |
1523 * PUT A IN DECIMAL | |
1524 ** | |
1525 PUTDA CLRB | |
1526 PUTDR STB DREG | |
126
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1527 LEAX -2,S |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1528 LEAS -6,S |
121 | 1529 CLR 1,X |
1530 LDB #3 | |
1531 P0 PSHS B | |
1532 LDB #10 | |
1533 BSR DIV | |
1534 ADDB #$30 | |
1535 STB ,X | |
1536 LEAX -1,X | |
1537 PULS B | |
1538 DECB | |
1539 BNE P0 | |
1540 COM 3,X | |
1541 LDA #'0' | |
1542 LDB #4 | |
1543 P1 LEAX 1,X | |
1544 DECB | |
1545 CMPA ,X | |
1546 BEQ P1 | |
1547 COM 4,S | |
1548 LDA DREG | |
1549 PSHS B | |
1550 SUBA ,S+ | |
1551 BCS PRX | |
1552 BSR SPACEA | |
126
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1553 PRX LDA ,X |
121 | 1554 BEQ P4 |
122 | 1555 LBSR PUTCA |
121 | 1556 LEAX 1,X |
1557 BRA PRX | |
126
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1558 P4 LEAS 6,S |
121 | 1559 CL1 RTS |
1560 ** | |
1561 * GET IN A DECIMAL | |
1562 ** | |
1563 GETDA CLRA | |
1564 PSHS A | |
122 | 1565 LBSR GETCA |
121 | 1566 CMPA #RUB |
1567 BNE GD1 | |
1568 PULS A | |
1569 LDB #10 | |
1570 LBSR DIV | |
1571 BRA GETDA+1 | |
1572 GD1 SUBA #'0' | |
1573 BCS GD2 | |
1574 CMPA #10 | |
1575 BCC GD2 | |
1576 STA DBUF | |
1577 PULS A | |
1578 LDB #10 | |
1579 MUL | |
1580 ADDB DBUF | |
1581 TFR B,A | |
1582 BRA GETDA+1 | |
1583 GD2 PULS A,PC | |
1584 ** | |
1585 * SPACE A TIMES | |
1586 ** | |
1587 SPACEA BEQ CL1 | |
1588 PSHS A | |
1589 LDA #' ' | |
122 | 1590 LBSR PUTCA |
121 | 1591 PULS A |
1592 DECA | |
1593 BRA SPACEA | |
1594 ** | |
1595 * STR OUT | |
1596 ** | |
1597 PUTSTR PSHS X | |
1598 LDX 2,S | |
1599 STR1 LDA ,X+ | |
1600 BEQ STR2 | |
1601 LBSR PUTCA | |
1602 BRA STR1 | |
1603 STR2 STX 2,S | |
1604 PULS X,PC | |
1605 ** | |
1606 * CRLF | |
1607 ** | |
1608 CRLF LDA #$0D | |
1609 BSR PUTCA | |
1610 LDA #$0A | |
1611 BRA PUTCA | |
1612 ** | |
1613 * CRLF A TIMES | |
1614 ** | |
1615 CRLFA BEQ CL1 | |
1616 PSHS A | |
1617 BSR CRLF | |
1618 PULS A | |
1619 DECA | |
1620 BRA CRLFA | |
1621 | |
1622 | |
1623 start clr <stdin | |
1624 stx <parmptr save parameter pointer | |
1625 stu <work save parameter pointer | |
1626 lda #READ. read access mode | |
1627 os9 I$Open open file | |
1628 lbcs L0049 branch if error | |
1629 sta <INDN else save path to file | |
1630 stx <parmptr and updated parm pointer | |
135
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1631 leax readbuff,u buffer |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1632 clr ,x buffer empty |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1633 stx <adr |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1634 lbra comp |
121 | 1635 |
1636 copytbl | |
1637 pshs y,x,u | |
1638 leau LIBR,y | |
1639 leax iotbl,pcr | |
1640 leay iotblend,pcr | |
1641 ldy #(iotblend-iotbl) | |
1642 l1 ldb #$7e * JMP | |
1643 stb ,u+ | |
1644 ldd ,x++ | |
1645 addb 1,s | |
1646 adca ,s | |
1647 std ,u++ | |
1648 cmpx 2,s | |
1649 ble l1 | |
1650 puls x,y,u | |
1651 | |
1652 Exit lbsr setecho | |
1653 * ldx <work | |
1654 * leax readbuff,x | |
1655 * ldb #1 | |
1656 * lbsr getline | |
1657 * lbsr getpoll | |
1658 * lda <stdin | |
1659 * os9 I$Close | |
1660 | |
1661 clrb | |
1662 os9 F$Exit | |
1663 * no return | |
1664 | |
1665 | |
1666 iotbl | |
1667 fdb getchar-iotbl ; 0 | |
1668 fdb putchar-iotbl ; 3 | |
1669 fdb getline-iotbl ; 6 | |
1670 fdb putline-iotbl ; 9 | |
1671 fdb putcr-iotbl ; $C | |
1672 fdb getpoll-iotbl ; $F | |
1673 fdb xopenin-iotbl ; $12 | |
1674 fdb xopenout-iotbl ; $15 | |
1675 fdb xabortin-iotbl ; $18 | |
1676 fdb xclosein-iotbl ; $1B | |
1677 fdb xcloseout-iotbl ; $1E | |
1678 fdb delay-iotbl ; $21 | |
1679 fdb noecho-iotbl ; $24 | |
1680 fdb setecho-iotbl ; $27 | |
1681 fdb exit-iotbl ; $2a | |
1682 iotblend | |
1683 | |
1684 err ldb #1 | |
1685 L0049 | |
1686 bra Exit | |
1687 | |
1688 | |
135
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1689 PUTCA tfr a,b |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1690 putchar * Output one character in B register. |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1691 PSHS X,Y |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1692 BRA OUTCH1 |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1693 |
121 | 1694 close |
1695 lda <INDN else get path | |
1696 os9 I$Close and close it | |
1697 bcs L0049 branch if error | |
1698 rts | |
1699 | |
1700 MEMIN | |
1701 PSHS A,B,X,Y | |
135
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1702 ldx <adr |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1703 lda ,x+ |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1704 bne GETCA1 |
121 | 1705 LDA INDN |
135
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1706 LEAX readbuff,u |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1707 LDY #bufsiz |
121 | 1708 OS9 I$Read |
1709 BCC GETCA0 | |
1710 lda #'/' | |
135
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1711 ldx <adr |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1712 bra GETCA1 |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1713 GETCA0 LEAX readbuff,u |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1714 tfr y,d |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1715 clr d,x eof |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1716 lda ,x+ |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1717 GETCA1 stx <adr |
123 | 1718 sta ,s |
121 | 1719 PULS A,B,X,Y,PC |
1720 | |
1721 GETCA bsr getchar | |
1722 tfr b,a | |
1723 rts | |
1724 | |
1725 getchar * Input one character into B register. | |
1726 PSHS A,B,X,Y | |
1727 GETCH0 | |
1728 LDA INDN | |
123 | 1729 LEAX ,S |
121 | 1730 LDY #1 |
1731 OS9 I$Read | |
1732 BCS GETCH0 | |
1733 PULS A,B,X,Y,PC | |
1734 putcr * Output a newline. | |
1735 LDB #C$CR | |
1736 bsr putchar | |
1737 LDB #C$LF | |
1738 PSHS X,Y | |
1739 OUTCH1 PSHS A,B | |
1740 LEAX 1,S | |
1741 LDA OUTDN | |
1742 LDY #1 | |
1743 OS9 I$Write | |
1744 PULS A,B,X,Y,PC | |
1745 getpoll | |
1746 PSHS X,Y,D | |
1747 LDA #0 | |
1748 LDB #SS.Ready | |
1749 OS9 I$GetStt | |
1750 CMPB #$F6 Not Ready | |
1751 BNE RSENSE | |
1752 CLRB | |
1753 PULS X,Y,D,PC | |
1754 RSENSE | |
1755 ORCC #1 set carry to indicate ready | |
1756 RNSENSE | |
1757 PULS X,Y,D,PC | |
1758 | |
1759 getline * Input line at address in X, length in B. | |
1760 PSHS A,B,X,Y | |
1761 clr ,s | |
1762 GETLN0 | |
1763 ldy ,s | |
1764 lda INDN | |
1765 OS9 I$ReadLn | |
1766 BCS GETLN0 | |
1767 LEAY -1,Y | |
1768 GETLN1 STY ,S | |
1769 PULS A,B,X,Y,PC | |
1770 putline * Output string at address in X, length in B. | |
1771 PSHS A,B,X,Y | |
1772 CLRA | |
1773 TFR D,Y | |
1774 lda OUTDN | |
1775 OS9 I$WritLn | |
1776 PULS A,B,X,Y,PC | |
1777 xopenin | |
1778 xopenout | |
1779 xabortin | |
1780 xclosein | |
1781 xcloseout | |
1782 RTS | |
1783 | |
1784 setecho lda #1 | |
1785 bra sss | |
1786 noecho clra | |
1787 sss leas -128,s | |
1788 leax ,s | |
1789 pshs a | |
1790 clra | |
1791 ldb #SS.Opt | |
1792 OS9 I$GetStt | |
1793 bcs err2 | |
1794 LDA ,s | |
1795 STA PD.EKO-PD.OPT,X | |
1796 setopts | |
1797 ldb #SS.Opt | |
1798 clra | |
1799 OS9 I$SetStt | |
1800 err2 | |
1801 puls a | |
1802 leas 128,s | |
1803 rts | |
1804 | |
1805 | |
1806 delay PSHS D,X * address **$21** | |
1807 * On input the D register contains the number of timer | |
1808 * ticks to wait. Each timer tick is 20ms | |
1809 TFR D,X | |
1810 OS9 F$Sleep | |
1811 PULS D,X,PC | |
1812 | |
1813 | |
1814 emod | |
1815 eom equ * | |
1816 end | |
1817 |