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