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