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
|
|
127 leay WTBLE,PCR
|
|
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
|
|
691 BCC *--4
|
|
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 **
|
|
779 TLOOK LDA TCOUNT
|
|
780 STA SY
|
|
781 LDX TEND
|
|
782 S01 LDU WEND
|
|
783 S02 LDA ,-U
|
|
784 CMPA ,-X
|
|
785 BEQ S06
|
|
786 S03 TST ,X
|
|
787 BEQ S05
|
|
788 BMI S04
|
|
789 LEAX -1,X
|
|
790 BRA S03
|
|
791 S04 LEAX -1,X
|
|
792 BRA S01
|
|
793 S05 DEC SY
|
|
794 BNE S01
|
|
795 LBRA ERROR
|
|
796 S06 TSTA
|
|
797 BPL S02
|
|
798 LDB ,-X
|
|
799 STB VAL
|
|
800 LDA SY
|
|
801 CMPA #1
|
|
802 BNE *+6
|
|
803 TFR B,A
|
|
804 BRA S07
|
|
805 CMPA #4
|
|
806 BCS RTSS
|
|
807 LDB #1
|
|
808 TST AMODE
|
|
809 BEQ *+6
|
|
810 CMPA #6
|
|
811 BCS *+3
|
|
812 NEGB
|
|
813 STB GL
|
|
814 ANDA #$FD
|
|
815 S07 STA SY
|
|
816 RTSS RTS
|
|
817 **
|
|
818 * ARITHMATIC EXPRESSION
|
|
819 **
|
|
820 WEXPR LBSR WORD
|
|
821 EXPR BSR LEXPR
|
|
822 BSR OLOAD
|
|
823 RTE RTS
|
|
824 ** WORD * LEXPR
|
|
825 WLEXPR LBSR WORD
|
|
826 **
|
|
827 * LOGICAL EXPRESSION
|
|
828 **
|
|
829 LEXPR BSR REXPR
|
|
830 LE1 LDY SY
|
|
831 CMPA #$82
|
|
832 BCS RTE
|
|
833 CMPA #$8A+1
|
|
834 BCC RTE
|
|
835 PSHS A
|
|
836 LBSR WORD
|
|
837 BSR REXPR
|
|
838 LDB LSW
|
|
839 BNE LE2
|
|
840 LBSR PUTHS
|
|
841 FDB $0397
|
|
842 FCB WT1
|
|
843 FCB $32
|
|
844 PULS A
|
|
845 ADDA #$10
|
|
846 LDB #WT1
|
|
847 LBSR PUTAB
|
|
848 BRA LE1
|
|
849 LE2 PULS A
|
|
850 BSR OCORD
|
|
851 BRA LE1
|
|
852 **
|
|
853 * RELATIONAL EXPRESS
|
|
854 **
|
|
855 REXPR BSR AEXPR
|
|
856 RE1 LDA SY
|
|
857 CMPA #$21
|
|
858 BCS RTE
|
|
859 CMPA #$30
|
|
860 BCC RTE
|
|
861 PSHS A
|
|
862 LBSR WORD
|
|
863 ASR AEXPR
|
|
864 LDA #$80
|
|
865 BSR AOPER
|
|
866 PULS A
|
|
867 LBSR PUTHS
|
|
868 FCB 6
|
|
869 FCB $3,$4F,$20,$02,$86,$FF
|
|
870 BRA RE1
|
|
871 ** ADDING OPERATFR
|
|
872 AOPER LDB LSW
|
|
873 BNE OCORD
|
|
874 PSHS A
|
|
875 CMPA #$80
|
|
876 BEQ *+5
|
|
877 BSR PUTPUL
|
|
878 FCB $8C
|
|
879 BSR PUTPLB
|
|
880 PULS A
|
|
881 SUBA #$70
|
|
882 PUTA1 LBRA PUTA
|
|
883 ** OUTPUT SAVED L-CC
|
|
884 OLOAD LDA LSW
|
|
885 BEQ RTE
|
|
886 LDA ACC
|
|
887 BEQ *+6
|
|
888 LDA #$36
|
|
889 BSR PUTA1
|
|
890 LDA #$86
|
|
891 OCORD PSHS A
|
|
892 CLRA
|
|
893 STA LSW
|
|
894 COMA
|
|
895 STA ACC
|
|
896 LDA AMODE
|
|
897 CMPA #$20
|
|
898 BNE *+5
|
|
899 LBSR PUTX
|
|
900 CLR LSW
|
|
901 PULS A
|
|
902 ADDA AMODE
|
|
903 LDB OPER
|
|
904 LBRA PUTAB
|
|
905 * PUT 'TAB:PULS A'
|
|
906 PUTPUL LBSR PUTHS
|
|
907 FCB 2
|
|
908 FDB $1632
|
|
909 RTE1 RTS
|
|
910 * PUT 'PULS B'
|
|
911 PUTPLB LDA #$33
|
|
912 BRA PUTA1
|
|
913 **
|
|
914 * ADDING EXPRESSION
|
|
915 **
|
|
916 AEXPR BSR MEXPR
|
|
917 AE1 LDA SY
|
|
918 CMPA #$80
|
|
919 BEQ AE2
|
|
920 CMPA #$8B
|
|
921 BNE RTE1
|
|
922 AE2 PSHS A
|
|
923 LBSR WORD
|
|
924 BSR MEXPR
|
|
925 PULS A
|
|
926 BSR AOPER
|
|
927 BRA AE1
|
|
928 **
|
|
929 * MUTIPLYING EXPRESSION
|
|
930 **
|
|
931 MEXPR BSR TERM
|
|
932 ME1 LDA SY
|
|
933 CMPA #$8E
|
|
934 BEQ ME2
|
|
935 CMPA #$8F
|
|
936 BNE RTE1
|
|
937 ME2 PSHS A
|
|
938 LBSR WORD
|
|
939 BSR TERM
|
|
940 LDB LSW
|
|
941 BEQ ME3
|
|
942 LDA #$C6
|
|
943 BSR OCORD
|
|
944 FCB $8C
|
|
945 ME3 BSR PUTPUL
|
|
946 PULS A
|
|
947 CMPA #$8E
|
|
948 BHS ME4
|
122
|
949 LBSR PUTHSL
|
121
|
950 FCB 3
|
|
951 FCB $BD
|
|
952 FDB MULT
|
|
953 BRA ME1
|
122
|
954 ME4 LBSR PUTHSL
|
121
|
955 FCB 3
|
|
956 FCB $BD
|
|
957 FDB DIV
|
|
958 BRA ME1
|
|
959 **
|
|
960 * TERM
|
|
961 **
|
|
962 TERM LDA SY
|
|
963 BNE TM1
|
|
964 * SAVE L-COMMAND
|
|
965 SLOAD PSHS A
|
|
966 LBSR OLOAD
|
|
967 LDA VAL
|
|
968 STA OPER
|
|
969 LDA GL
|
|
970 STA GLL
|
|
971 PULS A
|
|
972 STA AMODE
|
|
973 COM LSW
|
|
974 LBRA WORD
|
|
975 * CONSTfTRUE & FALSE
|
|
976 TM1
|
|
977 BEQ TM01
|
|
978 CMPA #$A1
|
|
979 BNE TM2
|
|
980 TM01 SUBA #$A1
|
|
981 STA VAL
|
|
982 CLRA
|
|
983 BRA SLOAD
|
|
984 * SYSTEM VAR MHIGH & MOD
|
|
985 TM2 CMPA #$16
|
|
986 BRA *+6
|
|
987 CMPA #$17
|
|
988 BNE TM3
|
|
989 STA VAL
|
|
990 LDA #$10
|
|
991 BRA SLOAD
|
|
992 * SIMPLE VARIABLE
|
|
993 TM3 CMPA #4
|
|
994 BNE TM4
|
|
995 LDA #$20
|
|
996 BRA SLOAD
|
|
997 * ( EXPTRSSION )
|
|
998 TM4 CMPA #$35
|
|
999 BCS TM5
|
|
1000 CMPA #$38
|
|
1001 BCC TM5
|
|
1002 PSHS A
|
|
1003 LBSR WLEXPR
|
|
1004 PULS A
|
|
1005 ADDA #4
|
|
1006 LBRA CHECK
|
|
1007 ** FUNCTION CALL
|
|
1008 TM5 CMPA #3
|
|
1009 BMI *+6
|
|
1010 CMPA #$E0
|
|
1011 BCS TM6
|
|
1012 BSR OLP
|
|
1013 PFCALL LDA VAL
|
|
1014 PSHS A
|
|
1015 LBSR WORD
|
|
1016 CMPA #$37
|
|
1017 BNE PFC1
|
|
1018 LDA LSIZE
|
|
1019 PSHS A
|
|
1020 INC LSIZE
|
|
1021 PFC2 INC LSIZE
|
|
1022 LBSR WEXPR
|
|
1023 CLRB
|
|
1024 STB ACC
|
|
1025 DECB
|
|
1026 STB GLL
|
|
1027 LDA #$A7
|
|
1028 LDB LSIZE
|
|
1029 LBSR PUTABX
|
|
1030 LDA SY
|
|
1031 CMPA #$3C
|
|
1032 BEQ PFC2
|
|
1033 PULS A
|
|
1034 STA LSIZE
|
|
1035 LDA #$3B
|
|
1036 LBSR CHECK
|
|
1037 PFC1 LDB #-1
|
|
1038 STB ACC
|
|
1039 STB INDEX
|
|
1040 LDA #$86
|
|
1041 LDB LSIZE
|
|
1042 LBSR PUTAB
|
|
1043 PULS A
|
|
1044 CMPA #$C0
|
|
1045 BCC *+5
|
|
1046 LBRA CALPF
|
|
1047 LDX #LIBR
|
|
1048 SUBA #$C0
|
|
1049 PFC3 BEQ PFC4
|
|
1050 LEAX 2,X
|
|
1051 DECA
|
|
1052 BRA PFC3
|
|
1053 PFC4 LDA #$BD
|
|
1054 LBSR PUTA
|
|
1055 LDD ,X
|
|
1056 LBRA PUTAB
|
|
1057 **
|
|
1058 OLP LBSR OLOAD
|
|
1059 LDB ACC
|
|
1060 BEQ RTS4
|
|
1061 LDA #$36
|
|
1062 LBSR PUTA
|
|
1063 CLR ACC
|
|
1064 RTS4 RTS
|
|
1065 ** FUNCTION RND
|
|
1066 TM6 CMPA #$70
|
|
1067 BNE TM61
|
|
1068 BSR SUBSC
|
|
1069 LBSR PUTHS
|
|
1070 FCB $03BD
|
|
1071 FDB RND
|
|
1072 RTS
|
|
1073 * FUNTION GET
|
|
1074 TM61 CMPA #$71
|
|
1075 BNE TM62
|
|
1076 BSR SUBSC
|
|
1077 LBSR PUTHS
|
122
|
1078 FDB $0297
|
|
1079 FCB INDN
|
|
1080 LBSR PUTHSL
|
|
1081 FCB $03BD
|
121
|
1082 FDB GETCH
|
|
1083 RTS
|
|
1084 * FUNCTION READ
|
|
1085 TM62 CMPA #$72
|
|
1086 BNE TM7
|
|
1087 BSR SUBSC
|
|
1088 LBSR PUTHS
|
122
|
1089 FDB $0297
|
121
|
1090 FDB INDN
|
122
|
1091 LBSR PUTHSL
|
|
1092 FCB $038D
|
121
|
1093 FDB GETDA
|
|
1094 RTS
|
|
1095 * FUNCTION NOTASL ET AL
|
|
1096 TM7 CMPA #$40
|
|
1097 BCS TM8
|
|
1098 CMPA #$49+1
|
|
1099 BCC TM8
|
|
1100 PSHS A
|
|
1101 BSR SUBSC
|
|
1102 PULS A
|
|
1103 LBRA PUTA
|
|
1104 * ARRAY
|
|
1105 TM8 CMPA #$5
|
|
1106 BNE TM9
|
|
1107 LDB VAL
|
|
1108 PSHS B
|
|
1109 LDB GL
|
|
1110 PSHS B
|
|
1111 BSR SUBSC1
|
|
1112 PULS B
|
|
1113 STB GLL
|
|
1114 PULS B
|
|
1115 LDA LSW
|
|
1116 BEQ ARY1
|
|
1117 ADDB OPER
|
|
1118 STB OPER
|
|
1119 LDA #$20
|
|
1120 STA AMODE
|
|
1121 RTS
|
|
1122 ARY1 LDA #$8B
|
|
1123 LBSR PUTABX
|
|
1124 LBRA LDAAX
|
|
1125 **
|
|
1126 DSUBSC LDA #$3C
|
|
1127 BSR SUBS1
|
|
1128 LDA #$3B
|
|
1129 PSHS A
|
|
1130 BRA SUBS2
|
|
1131 SUBSC LDA #$3E
|
|
1132 SUBS1 PSHS A
|
|
1133 LBSR WORD
|
|
1134 LDA #$37
|
|
1135 LBSR CHECK
|
|
1136 SUBS2 LBSR EXPR
|
|
1137 PULS A
|
|
1138 LBRA CHECK
|
|
1139 SUBSC1 LBSR WORD
|
|
1140 LDA #$36
|
|
1141 LBSR CHECK
|
|
1142 LBSR LEXPR
|
|
1143 LDB LSW
|
|
1144 BEQ SBS5
|
|
1145 LDB AMODE
|
|
1146 BEQ SBS5
|
|
1147 LBSR OLOAD
|
|
1148 SBS5 LDA #$3A
|
|
1149 LBRA CHECK
|
|
1150 * MEM FUNCTION
|
|
1151 TM9 CMPA #6
|
|
1152 BNE TM10
|
|
1153 BSR DSUBSC
|
|
1154 LBSR PUTHS
|
|
1155 FDB $0997
|
|
1156 FCB WT2
|
|
1157 FDB $3297
|
|
1158 FCB WT1,$DE,WT1
|
|
1159 FDB $A600
|
|
1160 CLR INDEX
|
|
1161 RTS
|
|
1162 ** FOR EXPANTION
|
|
1163 TM10 LBRA ERROR
|
|
1164 **
|
|
1165 * ADDRESS DEPENDENT CODE
|
|
1166 * GENARATION
|
|
1167 **
|
|
1168 * SET PRC—FUNC TABLE
|
|
1169 **
|
|
1170 SETPFT PSHS A
|
|
1171 LDB #3
|
|
1172 MUL
|
|
1173 ADDD PFTBEG
|
|
1174 STD XR
|
|
1175 PULS A,PC
|
|
1176 **
|
|
1177 TWICE LBSR PUTSTR
|
|
1178 FCB $0D,$0A
|
|
1179 FCC "TWICE!",0
|
|
1180 lbra exit
|
|
1181 **
|
|
1182 * DEF PROC-FUNC
|
|
1183 **
|
|
1184 DEFPF BSR SETPFT
|
|
1185 LDX XR
|
|
1186 TST ,X
|
|
1187 BNE TWICE
|
|
1188 COM ,X
|
|
1189 LDX 1,X
|
|
1190 STX YR
|
|
1191 LDX XR
|
|
1192 LEAX 1,X
|
|
1193 BSR PCST
|
|
1194 LDX YR
|
|
1195 DP1 BEQ RT10
|
|
1196 LDX ,X
|
|
1197 STX ZR
|
|
1198 LDX YR
|
|
1199 BSR PCST
|
|
1200 LDX ZR
|
|
1201 STX YR
|
|
1202 BRA DP1
|
|
1203 **
|
|
1204 * CALL PORC-FUNC
|
|
1205 **
|
|
1206 CALPF BSR SETPFT
|
|
1207 INCA
|
|
1208 CMPA PFMAX
|
|
1209 BCS *+4
|
|
1210 STA PFMAX
|
|
1211 LDA #$BD
|
|
1212 BSR AOUT
|
|
1213 LDX XR
|
|
1214 LDD 1,X
|
|
1215 LDX PC
|
|
1216 BSR STAABX
|
|
1217 LDX XR
|
|
1218 TST ,X
|
|
1219 BNE PC2ADD
|
|
1220 LEAX 1,X
|
|
1221 BSR PCST
|
|
1222 BRA PC2ADD
|
|
1223 **
|
|
1224 * PUL-DEF N TIMES
|
|
1225 **
|
|
1226 PLDFN PSHS A
|
|
1227 BSR PULDEF
|
|
1228 DEC ,S
|
|
1229 BNE *-4
|
|
1230 PULS A,PC
|
|
1231 **
|
|
1232 * PULL AND DEFINE
|
|
1233 **
|
|
1234 PULDEF BSR PULSTK
|
|
1235 PCST LDD PC
|
|
1236 STAABX STD ,X
|
|
1237 RT10 RTS
|
|
1238 **
|
|
1239 JMPOUT LDA #$7E
|
|
1240 AOUT LDX PC
|
|
1241 STA ,X
|
|
1242 BRA INCPC1
|
|
1243 **
|
|
1244 PULSTK LDX SP
|
|
1245 LEAX 2,x
|
|
1246 STX SP
|
|
1247 LDD ,X
|
|
1248 LDX ,X
|
|
1249 RTS
|
|
1250 **
|
|
1251 * PUL STACK & Jump
|
|
1252 **
|
|
1253 PULJMP BSR JMPOUT
|
|
1254 BSR PULSTK
|
|
1255 PCST2 LDX PC
|
|
1256 BSR STAABX
|
|
1257 INCPC LEAX 1,X
|
|
1258 INCPC1 LEAX 1,X
|
|
1259 SETPC STX PC
|
|
1260 RTS
|
|
1261 **
|
|
1262 * PUSH STACK & JUMP
|
|
1263 **
|
|
1264 PSHJMP BSR JMPOUT
|
|
1265 BSR PSHDEF
|
|
1266 PC2ADD LDX PC
|
|
1267 BRA INCPC
|
|
1268 **
|
|
1269 * PUSH STRCK & DEFINE
|
|
1270 **
|
|
1271 PSHDEF LDX SP
|
|
1272 BSR PCST
|
|
1273 LEAX -2,X
|
|
1274 STX SP
|
|
1275 RTS
|
|
1276 **
|
|
1277 OUTPC3 BSR AOUT
|
|
1278 LDD PC
|
|
1279 ADDD #3
|
|
1280 BRA PCST2
|
|
1281 **
|
|
1282 * LDA R,X
|
|
1283 LDAAX LDA #$B7
|
|
1284 BSR OUTPC3
|
|
1285 LDA #$A6
|
|
1286 LA1 BSR AOUT
|
|
1287 BRA INCPC1
|
|
1288 **
|
|
1289 * STA B,X
|
|
1290 STABX LDA #$F7
|
|
1291 BSR OUTPC3
|
|
1292 LDA #$A7
|
|
1293 BRA LA1
|
|
1294 **
|
|
1295 * STACK TOP CHANGE
|
|
1296 **
|
|
1297 STCHG LDU SP
|
|
1298 LEAU 2,U
|
|
1299 PULU D,X
|
|
1300 EXG D,X
|
|
1301 PSHU D,X
|
|
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
|
|
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
|
|
1704 LEAX 1,S
|
|
1705 LDY #1
|
|
1706 OS9 I$Read
|
|
1707 EXG a,b
|
|
1708 BCC GETCA0
|
|
1709 lda #'/'
|
|
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
|
|
1721 LEAX 1,S
|
|
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
|