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