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