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