57
|
1 ;NAM TB01V137
|
|
2 * WRITTEN 20-OCT-77 BY JOHN BYRNS
|
|
3 * REVISED 30-DEC-77
|
|
4 * REVISED 18-JAN-78
|
|
5 * REVISED 10-APR-78
|
|
6 * REVISED 08-MAY-79 TO ELIMINATE USE OF SP
|
|
7 * REVISED 24-JAN-80 TO USE 6801 ON CHIP RAM
|
|
8 * REVISED 26-JAN-80 FOR NEW 6801 INSTRUCTIONS
|
|
9 * REVISED 24-JUL-81 FOR WHISTON BOARD
|
|
10 * REVISED 24-SEP-81 INCLUDE USER FUNCTION
|
|
11 * REVISED 08-APR-82 MAKE STANDALONE INCLUDE HEX CONSTANTS AND MEM FUNCTION
|
|
12 * REVISED 21-NOV-84 FOR 6809
|
|
13 * REVISED FEB 94 ADAPTED TO SIMULATOR AND BUGFIXES BY L.C. BENSCHOP.
|
|
14 *
|
|
15 EOL EQU $04
|
|
16 ETX EQU $03
|
|
17 SPACE EQU $20
|
|
18 CR EQU $0D
|
|
19 LF EQU $0A
|
|
20 BS EQU $08
|
|
21 CAN EQU $18
|
|
22 BELL EQU $07
|
|
23 FILL EQU $00
|
|
24 DEL EQU $7F
|
|
25 BSIZE EQU 73
|
|
26 STKCUS EQU 48
|
|
27 *
|
|
28 ACIA EQU $E000
|
|
29 RMCR EQU ACIA
|
|
30 TRCS EQU ACIA
|
|
31 RECEV EQU ACIA+1
|
|
32 TRANS EQU ACIA+1
|
|
33 CNTL1 EQU $03
|
|
34 CNTL2 EQU $15
|
|
35 RDRF EQU $01
|
|
36 ORFE EQU $20
|
|
37 TDRE EQU $02
|
|
38 * EDIT THE FOLLOWING EQUATES TO REFLECT THE
|
|
39 * DESIRED ROM AND RAM LAYOUT
|
|
40 LORAM EQU $0080 ADDRESS OF DIRECT PAGE SCRATCH RAM
|
|
41 BUFFER EQU $4000 ADDRESS OF MAIN RAM
|
|
42 RAMSIZ EQU $2000 SIZE OF MAIN RAM
|
|
43 ROMADR EQU $400 ADDRESS OF TINY BASIC ROM
|
|
44 *
|
|
45 RAMBEG EQU BUFFER+BSIZE
|
|
46 RAMEND EQU BUFFER+RAMSIZ
|
|
47 *
|
|
48 RAMPAT EQU $AA0F
|
|
49 ROMPAT EQU $F055
|
|
50 *
|
|
51 ORG LORAM
|
|
52 USRBAS RMB 2
|
|
53 USRTOP RMB 2
|
|
54 STKLIM RMB 2
|
|
55 STKTOP RMB 2
|
|
56 CURSOR RMB 2
|
|
57 SAVESP RMB 2
|
|
58 LINENB RMB 2
|
|
59 SCRTCH RMB 2
|
|
60 CHAR RMB 2
|
|
61 ZONE RMB 1
|
|
62 MODE RMB 1
|
|
63 RESRVD RMB 1
|
|
64 LOEND EQU *
|
|
65 *
|
|
66 ORG ROMADR
|
|
67 BASIC JMP SETUP
|
|
68 WARMS LDS STKTOP
|
|
69 JSR INTEEE
|
|
70 BRA WMS05
|
|
71 SETUP LDS #RAMEND-52
|
|
72 SET03 STS STKTOP
|
|
73 JSR INTEEE
|
|
74 CLEAR LDD #RAMBEG
|
|
75 STD USRBAS
|
|
76 STD USRTOP
|
|
77 CLR02 STD STKLIM
|
|
78 WMS05 JSR CRLF
|
|
79 LDX #VSTR
|
|
80 JSR PUTSTR
|
|
81 CMDB LDS STKTOP
|
|
82 CLR MODE
|
|
83 JSR CRLF
|
|
84 LDX USRBAS
|
|
85 STX CURSOR
|
|
86 CMDE LDX #0000
|
|
87 STX LINENB
|
|
88 TST MODE
|
|
89 BNE CMD01
|
|
90 LDA #':
|
|
91 JSR PUTCHR
|
|
92 CMD01 JSR GETLIN
|
|
93 JSR TSTNBR
|
|
94 BCC CMD02
|
|
95 BVS CMD05
|
|
96 JSR SKIPSP
|
|
97 CMPA #EOL
|
|
98 BEQ CMDE
|
|
99 JSR MSLINE
|
|
100 BRA CMDB
|
|
101 CMD02 PSHS X
|
|
102 LDX USRTOP
|
|
103 CMPX STKLIM
|
|
104 PULS X
|
|
105 BEQ CMD03
|
|
106 JMP ERRORR
|
|
107 CMD03 ADDD #0
|
|
108 BEQ CMD05
|
|
109 CMD04 PSHS D
|
|
110 SUBD #9999
|
|
111 PULS D
|
|
112 BHI CMD05
|
|
113 BSR EDITOR
|
|
114 BRA CMDE
|
|
115 CMD05 JMP ERRORS
|
|
116 VSTR FCC /TINY V1.37/
|
|
117 FCB EOL
|
|
118 ******************************
|
|
119 ******************************
|
|
120 EDITOR PSHS D
|
|
121 JSR SKIPSP
|
|
122 STX SCRTCH
|
|
123 LDA 0,S
|
|
124 LDX CURSOR
|
|
125 CMPX USRTOP
|
|
126 BEQ ED00
|
|
127 CMPD 0,X
|
|
128 BCC ED01
|
|
129 ED00 LDX USRBAS
|
|
130 ED01 JSR FNDLIN
|
|
131 STX CURSOR
|
|
132 BCS ED04
|
|
133 STX SAVESP
|
|
134 LEAX 2,X
|
|
135 ED02 LDA ,X+
|
|
136 CMPA #EOL
|
|
137 BNE ED02
|
|
138 ED03 CMPX USRTOP
|
|
139 BEQ ED35
|
|
140 LDA ,X+
|
|
141 STX CHAR
|
|
142 LDX SAVESP
|
|
143 STA ,X+
|
|
144 STX SAVESP
|
|
145 LDX CHAR
|
|
146 BRA ED03
|
|
147 ED35 LDX SAVESP
|
|
148 STX USRTOP
|
|
149 STX STKLIM
|
|
150 ED04 LDX SCRTCH
|
|
151 LDB #-1
|
|
152 ED05 INCB
|
|
153 LDA ,X+
|
|
154 CMPA #EOL
|
|
155 BNE ED05
|
|
156 TSTB
|
|
157 BNE ED55
|
|
158 LEAS 2,S
|
|
159 RTS
|
|
160 ED55 LEAX -1,X
|
|
161 ADDB #4
|
|
162 ED06 LEAX -1,X
|
|
163 DECB
|
|
164 LDA 0,X
|
|
165 CMPA #SPACE
|
|
166 BEQ ED06
|
|
167 LDA #EOL
|
|
168 STA 1,X
|
|
169 CLRA
|
|
170 LDX USRTOP
|
|
171 STX CHAR
|
|
172 ADDD USRTOP
|
|
173 STD USRTOP
|
|
174 STD STKLIM
|
|
175 JSR TSTSTK
|
|
176 BCC ED07
|
|
177 STX USRTOP
|
|
178 STX STKLIM
|
|
179 JMP ERRORF
|
|
180 ED07 LDX USRTOP
|
|
181 ED08 STX SAVESP
|
|
182 LDX CHAR
|
|
183 CMPX CURSOR
|
|
184 BEQ ED09
|
|
185 LDA ,-X
|
|
186 STX CHAR
|
|
187 LDX SAVESP
|
|
188 STA ,-X
|
|
189 BRA ED08
|
|
190 ED09 PULS D
|
|
191 LDX CURSOR
|
|
192 STD ,X++
|
|
193 STX CHAR
|
|
194 ED10 LDX SCRTCH
|
|
195 LDA ,X+
|
|
196 STX SCRTCH
|
|
197 LDX CHAR
|
|
198 STA ,X+
|
|
199 STX CHAR
|
|
200 CMPA #EOL
|
|
201 BNE ED10
|
|
202 RTS
|
|
203 ******************************
|
|
204 ******************************
|
|
205 PUTS01 JSR PUTCHR
|
|
206 LEAX 1,X
|
|
207 PUTSTR LDA 0,X
|
|
208 CMPA #EOL
|
|
209 BNE PUTS01
|
|
210 RTS
|
|
211 ******************************
|
|
212 ******************************
|
|
213 CRLF LDX #CRLFST
|
|
214 BSR PUTSTR
|
|
215 CLR ZONE
|
|
216 RTS
|
|
217 CRLFST FCB CR,LF,DEL,FILL,FILL,FILL,EOL
|
|
218 ******************************
|
|
219 ******************************
|
|
220 ERRORF BSR ER01
|
|
221 FCC /SORRY/
|
|
222 FCB EOL
|
|
223 ERRORS BSR ER01
|
|
224 FCC /WHAT ?/
|
|
225 FCB EOL
|
|
226 ERRORR BSR ER01
|
|
227 FCC /HOW ?/
|
|
228 FCB EOL
|
|
229 BREAK BSR ER01
|
|
230 FCC /BREAK/
|
|
231 FCB EOL
|
|
232 END BSR ER01
|
|
233 FCC /STOP/
|
|
234 FCB EOL
|
|
235 ER01 BSR CRLF
|
|
236 LDA #BELL
|
|
237 JSR PUTCHR
|
|
238 LDD LINENB
|
|
239 JSR PRNT4
|
|
240 LDA #SPACE
|
|
241 JSR PUTCHR
|
|
242 PULS X
|
|
243 BSR PUTSTR
|
|
244 BSR CRLF
|
|
245 JMP CMDB
|
|
246 ******************************
|
|
247 ******************************
|
|
248 GL00 BSR CRLF
|
|
249 GETLIN LDX #BUFFER
|
|
250 GL03 JSR GETCHR
|
|
251 CMPA #SPACE
|
|
252 BCS GL05
|
|
253 CMPA #$7F
|
|
254 BEQ GL03
|
|
255 CMPX #BUFFER+BSIZE-1
|
|
256 BNE GL04
|
|
257 LDA #BELL
|
|
258 BRA GL02
|
|
259 GL04 STA ,X+
|
|
260 GL02 JSR PUTCHR
|
|
261 BRA GL03
|
|
262 GL05 CMPA #BS
|
|
263 BEQ GL07
|
|
264 CMPA #CAN
|
|
265 BEQ GL00
|
|
266 CMPA #LF
|
|
267 BEQ GL09
|
|
268 CMPA #CR
|
|
269 BNE GL03
|
|
270 TST MODE
|
|
271 BEQ GL06
|
|
272 JSR PUTCHR
|
|
273 BRA GL08
|
|
274 GL06 PSHS X
|
|
275 JSR CRLF
|
|
276 PULS X
|
|
277 GL08 LDA #EOL
|
|
278 STA 0,X
|
|
279 LDX #BUFFER
|
|
280 RTS
|
|
281 GL07 CMPX #BUFFER
|
|
282 BEQ GL03
|
|
283 LEAX -1,X
|
|
284 LDA #BS
|
|
285 JSR PUTCHR
|
|
286 LDA #SPACE
|
|
287 JSR PUTCHR
|
|
288 LDA #BS
|
|
289 BRA GL02
|
|
290 GL09 ORCC #$01
|
|
291 ROR MODE
|
|
292 BRA GL02
|
|
293 ******************************
|
|
294 ******************************
|
|
295 REM00 LEAX 1,X
|
|
296 REM BSR SKIPSP
|
|
297 CMPA #EOL
|
|
298 BNE REM00
|
|
299 ENDSMT JSR TSTEOL
|
|
300 ENDS02 LDA LINENB
|
|
301 ORA LINENB+1
|
|
302 BEQ REM09
|
|
303 REM05 CMPX USRTOP
|
|
304 BNE NXTLIN
|
|
305 JMP ERRORR
|
|
306 NXTLIN LDD ,X++
|
|
307 STD LINENB
|
|
308 MSLINE JSR TSTBRK
|
|
309 BSR IFAN
|
|
310 BCS IMPLET
|
|
311 PSHS D
|
|
312 REM09 RTS
|
|
313 IMPLET JMP LET
|
|
314 ******************************
|
|
315 ******************************
|
|
316 IFAN BSR SKIPSP
|
|
317 STX CURSOR
|
|
318 LDX #VERBT
|
|
319 FAN00 LDA ,X+
|
|
320 CMPA #EOL
|
|
321 BNE FAN04
|
|
322 LDX CURSOR
|
|
323 ORCC #$01
|
|
324 RTS
|
|
325 FAN04 STX CHAR
|
|
326 LDX CURSOR
|
|
327 STX SCRTCH
|
|
328 FAN05 LDX SCRTCH
|
|
329 CMPA 0,X
|
|
330 BNE FAN07
|
|
331 LEAX 1,X
|
|
332 STX SCRTCH
|
|
333 LDX CHAR
|
|
334 LDA ,X+
|
|
335 STX CHAR
|
|
336 CMPA #EOL
|
|
337 BNE FAN05
|
|
338 LDD 0,X
|
|
339 LDX SCRTCH
|
|
340 ANDCC #$FE
|
|
341 RTS
|
|
342 FAN07 LDX CHAR
|
|
343 FAN08 LDA ,X+
|
|
344 CMPA #EOL
|
|
345 BNE FAN08
|
|
346 LEAX 2,X
|
|
347 BRA FAN00
|
|
348 ******************************
|
|
349 ******************************
|
|
350 NXTNSP LEAX 1,X
|
|
351 SKIPSP LDA 0,X
|
|
352 CMPA #SPACE
|
|
353 BEQ NXTNSP
|
|
354 RTS
|
|
355 ******************************
|
|
356 ******************************
|
|
357 TSTHEX BSR TSTDIG
|
|
358 BCC TST05
|
|
359 CMPA #'A
|
|
360 BCS TST03
|
|
361 CMPA #'F
|
|
362 BHI TST03
|
|
363 SUBA #'A-10
|
|
364 ANDCC #$FE
|
|
365 RTS
|
|
366 ******************************
|
|
367 ******************************
|
|
368 TSTLTR CMPA #'A
|
|
369 BCS TST03
|
|
370 CMPA #'Z
|
|
371 BLS TST05
|
|
372 TST03 ORCC #$01
|
|
373 RTS
|
|
374 ******************************
|
|
375 ******************************
|
|
376 TSTDIG CMPA #'0
|
|
377 BCS TST03
|
|
378 CMPA #'9
|
|
379 BHI TST03
|
|
380 SUBA #'0
|
|
381 TST05 ANDCC #$FE
|
|
382 RTS
|
|
383 ******************************
|
|
384 ******************************
|
|
385 TSTVAR BSR SKIPSP
|
|
386 BSR TSTLTR
|
|
387 BCS TSTV03
|
|
388 TFR A,B
|
|
389 LDA 1,X
|
|
390 BSR TSTLTR
|
|
391 BCC TST03
|
|
392 LEAX 1,X
|
|
393 SUBB #'A
|
|
394 ASLB
|
|
395 CLRA
|
|
396 ADDD STKTOP
|
|
397 TSTV02 ANDCC #$FE
|
|
398 TSTV03 RTS
|
|
399 ******************************
|
|
400 ******************************
|
|
401 USER JSR ARGONE
|
|
402 PSHS D
|
|
403 JSR SKIPSP
|
|
404 CMPA #',
|
|
405 BEQ USER03
|
|
406 CMPA #')
|
|
407 ORCC #$01
|
|
408 BEQ USER05
|
|
409 USER02 JMP ERRORS
|
|
410 USER03 LEAX 1,X
|
|
411 JSR EXPR
|
|
412 PSHS A
|
|
413 JSR SKIPSP
|
|
414 CMPA #')
|
|
415 PULS A
|
|
416 BNE USER02
|
|
417 ANDCC #$FE
|
|
418 USER05 LEAX 1,X
|
|
419 STX CURSOR
|
|
420 JSR [,S++]
|
|
421 LDX CURSOR
|
|
422 ANDCC #$FE
|
|
423 RTS
|
|
424 ******************************
|
|
425 ******************************
|
|
426 TSTSNB JSR SKIPSP
|
|
427 CMPA #'-
|
|
428 BNE TSTNBR
|
|
429 LEAX 1,X
|
|
430 BSR TSTNBR
|
|
431 BCS TSN02
|
|
432 NEGA
|
|
433 NEGB
|
|
434 SBCA #0
|
|
435 ANDCC #$FC
|
|
436 TSN02 RTS
|
|
437 ******************************
|
|
438 ******************************
|
|
439 TSTNBR JSR SKIPSP
|
|
440 JSR TSTDIG
|
|
441 BCC TSTN02
|
|
442 CMPA #'$
|
|
443 ORCC #$01
|
|
444 BNE TSTN09
|
|
445 TSTN20 LEAX 1,X
|
|
446 CLR ,-S
|
|
447 CLR ,-S
|
|
448 TSTN23 LDA 0,X
|
|
449 JSR TSTHEX
|
|
450 BCS TSTN07
|
|
451 LEAX 1,X
|
|
452 PSHS X
|
|
453 PSHS A
|
|
454 LDD 3,S
|
|
455 BITA #$F0
|
|
456 BNE TSTN11
|
|
457 ASLB
|
|
458 ROLA
|
|
459 ASLB
|
|
460 ROLA
|
|
461 ASLB
|
|
462 ROLA
|
|
463 ASLB
|
|
464 ROLA
|
|
465 ADDB ,S+
|
|
466 STD 2,S
|
|
467 PULS X
|
|
468 BRA TSTN23
|
|
469 TSTN02 LEAX 1,X
|
|
470 PSHS A
|
|
471 CLR ,-S
|
|
472 TSTN03 LDA 0,X
|
|
473 JSR TSTDIG
|
|
474 BCS TSTN07
|
|
475 LEAX 1,X
|
|
476 PSHS X
|
|
477 PSHS A
|
|
478 LDD 3,S
|
|
479 ASLB
|
|
480 ROLA
|
|
481 BVS TSTN11
|
|
482 ASLB
|
|
483 ROLA
|
|
484 BVS TSTN11
|
|
485 ADDD 3,S
|
|
486 BVS TSTN11
|
|
487 ASLB
|
|
488 ROLA
|
|
489 BVS TSTN11
|
|
490 ADDB 0,S
|
|
491 ADCA #0
|
|
492 BVS TSTN11
|
|
493 STD 3,S
|
|
494 LEAS 1,S
|
|
495 PULS X
|
|
496 BRA TSTN03
|
|
497 TSTN07 PULS D
|
|
498 ANDCC #$FE
|
|
499 TSTN09 ANDCC #$FD
|
|
500 RTS
|
|
501 TSTN11 LDX 1,S
|
|
502 LEAS 5,S
|
|
503 ORCC #$03
|
|
504 RTS
|
|
505 ******************************
|
|
506 ******************************
|
|
507 TSTSTK STS SAVESP
|
|
508 LDD SAVESP
|
|
509 SUBD #STKCUS
|
|
510 SUBD STKLIM
|
|
511 RTS
|
|
512 ******************************
|
|
513 ******************************
|
|
514 PEEK JSR PAREXP
|
|
515 PSHS D
|
|
516 PSHS X
|
|
517 LDB [2,S]
|
|
518 PULS X
|
|
519 LEAS 2,S
|
|
520 CLRA
|
|
521 RTS
|
|
522 ******************************
|
|
523 ******************************
|
|
524 POKE JSR PAREXP
|
|
525 PSHS D
|
|
526 JSR SKIPSP
|
|
527 CMPA #'=
|
|
528 BEQ POKE05
|
|
529 JMP ERRORS
|
|
530 POKE05 LEAX 1,X
|
|
531 JSR EXPR
|
|
532 JSR TSTEOL
|
|
533 PSHS X
|
|
534 STB [2,S]
|
|
535 PULS X
|
|
536 LEAS 2,S
|
|
537 JMP ENDS02
|
|
538 ******************************
|
|
539 ******************************
|
|
540 TSTFUN JSR SKIPSP
|
|
541 STX CURSOR
|
|
542 LDX #FUNT
|
|
543 JSR FAN00
|
|
544 BCS TSTF05
|
|
545 PSHS D
|
|
546 TSTF05 RTS
|
|
547 ******************************
|
|
548 ******************************
|
|
549 FUNT FCC /USR/
|
|
550 FCB EOL
|
|
551 FDB USER
|
|
552 FCC /PEEK/
|
|
553 FCB EOL
|
|
554 FDB PEEK
|
|
555 FCC /MEM/
|
|
556 FCB EOL
|
|
557 FDB TSTSTK
|
|
558 FCB EOL
|
|
559 ******************************
|
|
560 ******************************
|
|
561 FLINE LDX USRBAS
|
|
562 FNDLIN CMPX USRTOP
|
|
563 BNE FND03
|
|
564 ORCC #$03
|
|
565 RTS
|
|
566 FND03 CMPD 0,X
|
|
567 BNE FND05
|
|
568 ANDCC #$FC
|
|
569 RTS
|
|
570 FND05 BCC FND07
|
|
571 ORCC #$01
|
|
572 ANDCC #$FD
|
|
573 RTS
|
|
574 FND07 PSHS A
|
|
575 LDA #EOL
|
|
576 LEAX 1,X
|
|
577 FND09 LEAX 1,X
|
|
578 CMPA 0,X
|
|
579 BNE FND09
|
|
580 PULS A
|
|
581 LEAX 1,X
|
|
582 BRA FNDLIN
|
|
583 ******************************
|
|
584 ******************************
|
|
585 RELEXP BSR EXPR
|
|
586 PSHS D
|
|
587 CLRB
|
|
588 JSR SKIPSP
|
|
589 CMPA #'=
|
|
590 BEQ REL06
|
|
591 CMPA #'<
|
|
592 BNE REL03
|
|
593 LEAX 1,X
|
|
594 INCB
|
|
595 JSR SKIPSP
|
|
596 CMPA #'>
|
|
597 BNE REL05
|
|
598 LEAX 1,X
|
|
599 ADDB #4
|
|
600 BRA REL07
|
|
601 REL03 CMPA #'>
|
|
602 BNE EXPR06
|
|
603 LEAX 1,X
|
|
604 ADDB #4
|
|
605 JSR SKIPSP
|
|
606 REL05 CMPA #'=
|
|
607 BNE REL07
|
|
608 REL06 LEAX 1,X
|
|
609 ADDB #2
|
|
610 REL07 PSHS B
|
|
611 BSR EXPR
|
|
612 PSHS X
|
|
613 SUBD 3,S
|
|
614 TFR CC,A
|
|
615 LSRA
|
|
616 TFR A,B
|
|
617 ASLA
|
|
618 ASLA
|
|
619 PSHS B
|
|
620 ADDA ,S+
|
|
621 ANDA #$06
|
|
622 BNE REL08
|
|
623 INCA
|
|
624 REL08 CLRB
|
|
625 ANDA 2,S
|
|
626 BEQ REL09
|
|
627 COMB
|
|
628 REL09 CLRA
|
|
629 PULS X
|
|
630 LEAS 3,S
|
|
631 RTS
|
|
632 ******************************
|
|
633 ******************************
|
|
634 EXPR CLR ,-S
|
|
635 CLR ,-S
|
|
636 JSR SKIPSP
|
|
637 CMPA #'-
|
|
638 BEQ EXPR05
|
|
639 CMPA #'+
|
|
640 BNE EXPR03
|
|
641 EXPR02 LEAX 1,X
|
|
642 EXPR03 BSR TERM
|
|
643 EXPR04 ADDD 0,S
|
|
644 STD 0,S
|
|
645 JSR SKIPSP
|
|
646 CMPA #'+
|
|
647 BEQ EXPR02
|
|
648 CMPA #'-
|
|
649 BNE EXPR06
|
|
650 EXPR05 LEAX 1,X
|
|
651 BSR TERM
|
|
652 NEGA
|
|
653 NEGB
|
|
654 SBCA #0
|
|
655 BRA EXPR04
|
|
656 EXPR06 PULS D
|
|
657 RTS
|
|
658 ******************************
|
|
659 ******************************
|
|
660 TERM JSR FACT
|
|
661 PSHS D
|
|
662 TERM03 JSR SKIPSP
|
|
663 CMPA #'*
|
|
664 BEQ TERM07
|
|
665 CMPA #'/
|
|
666 BEQ TERM05
|
|
667 PULS D
|
|
668 RTS
|
|
669 TERM05 LEAX 1,X
|
|
670 BSR FACT
|
|
671 PSHS X
|
|
672 LEAX 2,S
|
|
673 PSHS D
|
|
674 EORA 0,X
|
|
675 JSR ABSX
|
|
676 LEAX 0,S
|
|
677 JSR ABSX
|
|
678 PSHS A
|
|
679 LDA #17
|
|
680 PSHS A
|
|
681 CLRA
|
|
682 CLRB
|
|
683 DIV05 SUBD 2,S
|
|
684 BCC DIV07
|
|
685 ADDD 2,S
|
|
686 ANDCC #$FE
|
|
687 BRA DIV09
|
|
688 DIV07 ORCC #$01
|
|
689 DIV09 ROL 7,S
|
|
690 ROL 6,S
|
|
691 ROLB
|
|
692 ROLA
|
|
693 DEC 0,S
|
|
694 BNE DIV05
|
|
695 LDA 1,S
|
|
696 LEAS 4,S
|
|
697 TSTA
|
|
698 BPL TERM06
|
|
699 LEAX 2,S
|
|
700 BSR NEGX
|
|
701 TERM06 PULS X
|
|
702 BRA TERM03
|
|
703 TERM07 LEAX 1,X
|
|
704 BSR FACT
|
|
705 MULT PSHS B
|
|
706 LDB 2,S
|
|
707 MUL
|
|
708 LDA 1,S
|
|
709 STB 1,S
|
|
710 LDB 0,S
|
|
711 MUL
|
|
712 LDA 2,S
|
|
713 STB 2,S
|
|
714 PULS B
|
|
715 MUL
|
|
716 ADDA 0,S
|
|
717 ADDA 1,S
|
|
718 STD 0,S
|
|
719 BRA TERM03
|
|
720 ******************************
|
|
721 ******************************
|
|
722 FACT JSR TSTVAR
|
|
723 BCS FACT03
|
|
724 PSHS X
|
|
725 TFR D,X
|
|
726 LDD 0,X
|
|
727 PULS X
|
|
728 FACT02 RTS
|
|
729 FACT03 JSR TSTNBR
|
|
730 BCC FACT02
|
|
731 JSR TSTFUN
|
|
732 BCC FACT02
|
|
733 PAREXP BSR ARGONE
|
|
734 PSHS A
|
|
735 JSR SKIPSP
|
|
736 CMPA #')
|
|
737 PULS A
|
|
738 BNE FACT05
|
|
739 LEAX 1,X
|
|
740 RTS
|
|
741 FACT05 JMP ERRORS
|
|
742 ******************************
|
|
743 ******************************
|
|
744 ARGONE JSR TSTSTK
|
|
745 BCC FACT04
|
|
746 JMP ERRORF
|
|
747 FACT04 JSR SKIPSP
|
|
748 CMPA #'(
|
|
749 BNE FACT05
|
|
750 LEAX 1,X
|
|
751 JMP EXPR
|
|
752 ******************************
|
|
753 ******************************
|
|
754 ABSX TST 0,X
|
|
755 BPL NEG05
|
|
756 NEGX NEG 0,X
|
|
757 NEG 1,X
|
|
758 BCC NEG05
|
|
759 DEC 0,X
|
|
760 NEG05 RTS
|
|
761 ******************************
|
|
762 ******************************
|
|
763 TSTEOL PSHS A
|
|
764 JSR SKIPSP
|
|
765 CMPA #EOL
|
|
766 BEQ TEOL03
|
|
767 JMP ERRORS
|
|
768 TEOL03 LEAX 1,X
|
|
769 PULS A
|
|
770 RTS
|
|
771 ******************************
|
|
772 ******************************
|
|
773 LET JSR TSTVAR
|
|
774 BCC LET03
|
|
775 JMP ERRORS
|
|
776 LET03 PSHS D
|
|
777 JSR SKIPSP
|
|
778 CMPA #'=
|
|
779 BEQ LET05
|
|
780 JMP ERRORS
|
|
781 LET05 LEAX 1,X
|
|
782 JSR EXPR
|
|
783 BSR TSTEOL
|
|
784 STX CURSOR
|
|
785 PULS X
|
|
786 STD 0,X
|
|
787 LDX CURSOR
|
|
788 JMP ENDS02
|
|
789 ******************************
|
|
790 ******************************
|
|
791 IF JSR RELEXP
|
|
792 TSTB
|
|
793 BEQ IF03
|
|
794 JMP MSLINE
|
|
795 IF03 JMP REM
|
|
796 ******************************
|
|
797 ******************************
|
|
798 GOTO JSR EXPR
|
|
799 BSR TSTEOL
|
|
800 JSR FLINE
|
|
801 BCS GOSB04
|
|
802 JMP NXTLIN
|
|
803 ******************************
|
|
804 ******************************
|
|
805 GOSUB JSR EXPR
|
|
806 BSR TSTEOL
|
|
807 STX CURSOR
|
|
808 JSR FLINE
|
|
809 BCC GOSB03
|
|
810 GOSB04 JMP ERRORR
|
|
811 GOSB03 JSR TSTSTK
|
|
812 BCC GOSB05
|
|
813 JMP ERRORF
|
|
814 GOSB05 LDD CURSOR
|
|
815 PSHS D
|
|
816 LDD LINENB
|
|
817 PSHS D
|
|
818 JSR NXTLIN
|
|
819 PULS D
|
|
820 STD LINENB
|
|
821 PULS X
|
|
822 JMP ENDS02
|
|
823 ******************************
|
|
824 ******************************
|
|
825 RETURN EQU TSTEOL
|
|
826 ******************************
|
|
827 ******************************
|
|
828 PRINT JSR SKIPSP
|
|
829 PR01 CMPA #',
|
|
830 BEQ PR05
|
|
831 CMPA #';
|
|
832 BEQ PR07
|
|
833 CMPA #EOL
|
|
834 BEQ PR04
|
|
835 CMPA #'"
|
|
836 BNE PR02
|
|
837 LEAX 1,X
|
|
838 BSR PRNTQS
|
|
839 BRA PR03
|
|
840 PR02 JSR EXPR
|
|
841 PSHS X
|
|
842 BSR PRNTN
|
|
843 PULS X
|
|
844 PR03 JSR SKIPSP
|
|
845 CMPA #',
|
|
846 BEQ PR05
|
|
847 CMPA #';
|
|
848 BEQ PR07
|
|
849 CMPA #EOL
|
|
850 BEQ PR04
|
|
851 JMP ERRORS
|
|
852 PR04 PSHS X
|
|
853 JSR CRLF
|
|
854 PULS X
|
|
855 BRA PR08
|
|
856 PR05 LDB #$7
|
|
857 PR06 LDA #SPACE
|
|
858 JSR PUTCHR
|
|
859 BITB ZONE
|
|
860 BNE PR06
|
|
861 PR07 LEAX 1,X
|
|
862 JSR SKIPSP
|
|
863 CMPA #EOL
|
|
864 BNE PR01
|
|
865 PR08 LEAX 1,X
|
|
866 JMP ENDS02
|
|
867 *
|
|
868 *
|
|
869 PRQ01 JSR PUTCHR
|
|
870 PRNTQS LDA ,X+
|
|
871 CMPA #EOL
|
|
872 BNE PRQ03
|
|
873 JMP ERRORS
|
|
874 PRQ03 CMPA #'"
|
|
875 BNE PRQ01
|
|
876 RTS
|
|
877 *
|
|
878 PRNTN TSTA
|
|
879 BPL PRN03
|
|
880 NEGA
|
|
881 NEGB
|
|
882 SBCA #0
|
|
883 PSHS A
|
|
884 LDA #'-
|
|
885 JSR PUTCHR
|
|
886 PULS A
|
|
887 PRN03 LDX #PRNPT-2
|
|
888 PRN05 LEAX 2,X
|
|
889 CMPD 0,X
|
|
890 BCC PRN07
|
|
891 CMPX #PRNPTO
|
|
892 BNE PRN05
|
|
893 PRN07 CLR CHAR
|
|
894 PRN09 CMPD 0,X
|
|
895 BCS PRN11
|
|
896 SUBD 0,X
|
|
897 INC CHAR
|
|
898 BRA PRN09
|
|
899 PRN11 PSHS A
|
|
900 LDA #'0
|
|
901 ADDA CHAR
|
|
902 JSR PUTCHR
|
|
903 PULS A
|
|
904 CMPX #PRNPTO
|
|
905 BEQ PRN13
|
|
906 LEAX 2,X
|
|
907 BRA PRN07
|
|
908 PRN13 RTS
|
|
909 PRNPT FDB 10000
|
|
910 FDB 1000
|
|
911 FDB 100
|
|
912 FDB 10
|
|
913 PRNPTO FDB 1
|
|
914 *
|
|
915 PRNT4 LDX #PRNPT+2
|
|
916 BRA PRN07
|
|
917 ******************************
|
|
918 ******************************
|
|
919 INPUT JSR TSTVAR
|
|
920 BCS IN11
|
|
921 PSHS D
|
|
922 STX CURSOR
|
|
923 IN03 LDA #'?
|
|
924 JSR PUTCHR
|
|
925 JSR GETLIN
|
|
926 IN05 JSR SKIPSP
|
|
927 CMPA #EOL
|
|
928 BEQ IN03
|
|
929 JSR TSTSNB
|
|
930 BCC IN07
|
|
931 LDX #RMESS
|
|
932 JSR PUTSTR
|
|
933 JSR CRLF
|
|
934 BRA IN03
|
|
935 IN07 STX SCRTCH
|
|
936 PULS X
|
|
937 STD 0,X
|
|
938 LDX CURSOR
|
|
939 JSR SKIPSP
|
|
940 CMPA #',
|
|
941 BEQ IN09
|
|
942 JMP ENDSMT
|
|
943 IN09 LEAX 1,X
|
|
944 JSR TSTVAR
|
|
945 BCC IN13
|
|
946 IN11 JMP ERRORS
|
|
947 IN13 PSHS D
|
|
948 PSHS X
|
|
949 LDX SCRTCH
|
|
950 JSR SKIPSP
|
|
951 CMPA #',
|
|
952 BNE IN05
|
|
953 LEAX 1,X
|
|
954 BRA IN05
|
|
955 RMESS FCC /RE-ENTER/
|
|
956 FCB EOL
|
|
957 ******************************
|
|
958 ******************************
|
|
959 RUN LDX STKTOP
|
|
960 LDA #52
|
|
961 RUN01 CLR ,X+
|
|
962 DECA
|
|
963 BNE RUN01
|
|
964 LDX USRBAS
|
|
965 JMP REM05
|
|
966 ******************************
|
|
967 ******************************
|
|
968 LIST JSR TSTNBR
|
|
969 BCC LIST03
|
|
970 CLRA
|
|
971 CLRB
|
|
972 STD CURSOR
|
|
973 LDA #$7F
|
|
974 BRA LIST07
|
|
975 LIST03 STD CURSOR
|
|
976 JSR SKIPSP
|
|
977 CMPA #',
|
|
978 BEQ LIST05
|
|
979 LDA CURSOR
|
|
980 BRA LIST07
|
|
981 LIST05 LEAX 1,X
|
|
982 JSR TSTNBR
|
|
983 BCC LIST07
|
|
984 JMP ERRORS
|
|
985 LIST07 JSR TSTEOL
|
|
986 PSHS D
|
|
987 LDD CURSOR
|
|
988 STX CURSOR
|
|
989 JSR FLINE
|
|
990 LIST09 CMPX USRTOP
|
|
991 BEQ LIST10
|
|
992 PULS D
|
|
993 CMPD 0,X
|
|
994 BCS LIST11
|
|
995 PSHS D
|
|
996 LDD ,X++
|
|
997 PSHS X
|
|
998 JSR PRNT4
|
|
999 PULS X
|
|
1000 LDA #SPACE
|
|
1001 JSR PUTCHR
|
|
1002 JSR PUTSTR
|
|
1003 LEAX 1,X
|
|
1004 PSHS X
|
|
1005 JSR CRLF
|
|
1006 PULS X
|
|
1007 JSR TSTBRK
|
|
1008 BRA LIST09
|
|
1009 LIST10 LEAS 2,S
|
|
1010 LDA #ETX
|
|
1011 JSR PUTCHR
|
|
1012 LIST11 LDX CURSOR
|
|
1013 JMP ENDS02
|
|
1014 ******************************
|
|
1015 ******************************
|
|
1016 VERBT FCC /LET/
|
|
1017 FCB EOL
|
|
1018 FDB LET
|
|
1019 FCC /IF/
|
|
1020 FCB EOL
|
|
1021 FDB IF
|
|
1022 FCC /GOTO/
|
|
1023 FCB EOL
|
|
1024 FDB GOTO
|
|
1025 FCC /GOSUB/
|
|
1026 FCB EOL
|
|
1027 FDB GOSUB
|
|
1028 FCC /RETURN/
|
|
1029 FCB EOL
|
|
1030 FDB RETURN
|
|
1031 FCC /POKE/
|
|
1032 FCB EOL
|
|
1033 FDB POKE
|
|
1034 FCC /PRINT/
|
|
1035 FCB EOL
|
|
1036 FDB PRINT
|
|
1037 FCC /INPUT/
|
|
1038 FCB EOL
|
|
1039 FDB INPUT
|
|
1040 FCC /REM/
|
|
1041 FCB EOL
|
|
1042 FDB REM
|
|
1043 FCC /STOP/
|
|
1044 FCB EOL
|
|
1045 FDB END
|
|
1046 FCC /END/
|
|
1047 FCB EOL
|
|
1048 FDB END
|
|
1049 FCC /RUN/
|
|
1050 FCB EOL
|
|
1051 FDB RUN
|
|
1052 FCC /LIST/
|
|
1053 FCB EOL
|
|
1054 FDB LIST
|
|
1055 FCC /NEW/
|
|
1056 FCB EOL
|
|
1057 FDB CLEAR
|
|
1058 FCC /?/
|
|
1059 FCB EOL
|
|
1060 FDB PRINT
|
|
1061 FCB EOL
|
|
1062 ******************************
|
|
1063 ******************************
|
|
1064 TSTBRK bsr BRKEEE
|
|
1065 beq GETC05
|
|
1066 GETCHR bsr INEEE
|
|
1067 CMPA #ETX
|
|
1068 BNE GETC05
|
|
1069 JMP BREAK
|
|
1070 GETC05 RTS
|
|
1071 PUTCHR INC ZONE
|
|
1072 JMP OUTEEE
|
|
1073 ******************************
|
|
1074 ******************************
|
|
1075 INEEE BSR BRKEEE
|
|
1076 BEQ INEEE
|
|
1077 LDA RECEV
|
|
1078 ANDA #$7F
|
|
1079 RTS
|
|
1080 OUTEEE PSHS A
|
|
1081 OUT01 LDA TRCS
|
|
1082 BITA #TDRE
|
|
1083 BEQ OUT01
|
|
1084 PULS A
|
|
1085 STA TRANS
|
|
1086 RTS
|
|
1087 BRKEEE PSHS A
|
|
1088 BRK03 LDA TRCS
|
|
1089 BITA #ORFE
|
|
1090 BEQ BRK05
|
|
1091 LDA RECEV
|
|
1092 BRA BRK03
|
|
1093 BRK05 BITA #RDRF
|
|
1094 PULS A
|
|
1095 RTS
|
|
1096 *
|
|
1097 LDA #CNTL1
|
|
1098 STA RMCR
|
|
1099 LDA #CNTL2
|
|
1100 STA TRCS
|
|
1101 INTEEE EQU *
|
|
1102 RTS
|
|
1103
|
|
1104
|
|
1105
|
|
1106 ******************************
|
|
1107 ******************************
|
|
1108 END
|