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