Mercurial > hg > Members > kono > os9 > sbc09
annotate TL1/TL1os9.asm @ 143:3abfb68fb043
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 10 Jan 2019 23:56:08 +0900 |
parents | 7368ad797016 |
children | 1112b0549142 |
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 ** | |
573 * PUTX & PUTB | |
574 ** | |
141 | 575 PUTABX equ PUTAB |
576 * PSHS D | |
577 * BSR PUTX | |
578 * PULS D | |
579 * BRA PUTAB | |
121 | 580 ** |
137
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
581 * 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
|
582 ** |
141 | 583 *PUTX equ RTS11 * no pointer load |
121 | 584 ** |
137
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
585 PUTOFS PSHS D,X |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
586 LDX <PC |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
587 STA ,X+ |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
588 CLRA |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
589 TST <GLL |
138
6f7276831219
TL/1 use x and y register
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
137
diff
changeset
|
590 BMI PUTOFSX |
6f7276831219
TL/1 use x and y register
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
137
diff
changeset
|
591 LDA #$20 |
137
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
592 PUTOFSX STA ,S |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
593 CMPB #32 |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
594 BGT *+6 |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
595 CMPB #-32 |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
596 BGE PUTOFS5 |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
597 LDA #$80 |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
598 ORA ,S |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
599 STA ,X+ |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
600 STB ,X+ |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
601 BRA PUTOFS8 |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
602 PUTOFS5 |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
603 ANDB #$1F |
138
6f7276831219
TL/1 use x and y register
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
137
diff
changeset
|
604 ORB ,S |
6f7276831219
TL/1 use x and y register
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
137
diff
changeset
|
605 STB ,X+ |
137
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
606 PUTOFS8 |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
607 STX <PC |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
608 PULS D,X,PC |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
609 |
121 | 610 *** |
611 * PUT ACC A&B | |
612 ** | |
125 | 613 PUTAB BSR PUTA |
121 | 614 TFR B,A |
615 ** | |
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 | |
1007 BMI *+6 | |
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 | |
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 | |
1027 LBSR PUTABX | |
121 | 1028 LDA SY |
1029 CMPA #$3C | |
1030 BEQ PFC2 | |
1031 PULS A | |
1032 STA LSIZE | |
1033 LDA #$3B | |
1034 LBSR CHECK | |
1035 PFC1 LDB #-1 | |
1036 STB ACC | |
1037 LDA #$86 | |
1038 LDB LSIZE | |
1039 LBSR PUTAB | |
1040 PULS A | |
1041 CMPA #$C0 | |
1042 BCC *+5 | |
1043 LBRA CALPF | |
1044 LDX #LIBR | |
1045 SUBA #$C0 | |
1046 PFC3 BEQ PFC4 | |
1047 LEAX 2,X | |
1048 DECA | |
1049 BRA PFC3 | |
1050 PFC4 LDA #$BD | |
1051 LBSR PUTA | |
1052 LDD ,X | |
1053 LBRA PUTAB | |
1054 ** | |
1055 OLP LBSR OLOAD | |
1056 LDB ACC | |
1057 BEQ RTS4 | |
132 | 1058 LDD #$3402 pshs a |
1059 LBSR PUTAB | |
121 | 1060 CLR ACC |
1061 RTS4 RTS | |
1062 ** FUNCTION RND | |
1063 TM6 CMPA #$70 | |
1064 BNE TM61 | |
1065 BSR SUBSC | |
1066 LBSR PUTHS | |
1067 FCB $03BD | |
1068 FDB RND | |
1069 RTS | |
1070 * FUNTION GET | |
1071 TM61 CMPA #$71 | |
1072 BNE TM62 | |
1073 BSR SUBSC | |
1074 LBSR PUTHS | |
122 | 1075 FDB $0297 |
1076 FCB INDN | |
1077 LBSR PUTHSL | |
1078 FCB $03BD | |
121 | 1079 FDB GETCH |
1080 RTS | |
1081 * FUNCTION READ | |
1082 TM62 CMPA #$72 | |
1083 BNE TM7 | |
1084 BSR SUBSC | |
1085 LBSR PUTHS | |
122 | 1086 FDB $0297 |
121 | 1087 FDB INDN |
122 | 1088 LBSR PUTHSL |
1089 FCB $038D | |
121 | 1090 FDB GETDA |
1091 RTS | |
1092 * FUNCTION NOTASL ET AL | |
1093 TM7 CMPA #$40 | |
1094 BCS TM8 | |
1095 CMPA #$49+1 | |
1096 BCC TM8 | |
1097 PSHS A | |
1098 BSR SUBSC | |
1099 PULS A | |
1100 LBRA PUTA | |
1101 * ARRAY | |
1102 TM8 CMPA #$5 | |
1103 BNE TM9 | |
1104 LDB VAL | |
1105 PSHS B | |
1106 LDB GL | |
1107 PSHS B | |
1108 BSR SUBSC1 | |
1109 PULS B | |
1110 STB GLL | |
1111 PULS B | |
1112 LDA LSW | |
1113 BEQ ARY1 | |
1114 ADDB OPER | |
1115 STB OPER | |
1116 LDA #$20 | |
1117 STA AMODE | |
1118 RTS | |
1119 ARY1 LDA #$8B | |
1120 LBSR PUTABX | |
1121 LBRA LDAAX | |
1122 ** | |
1123 DSUBSC LDA #$3C | |
1124 BSR SUBS1 | |
1125 LDA #$3B | |
1126 PSHS A | |
1127 BRA SUBS2 | |
1128 SUBSC LDA #$3E | |
1129 SUBS1 PSHS A | |
1130 LBSR WORD | |
1131 LDA #$37 | |
1132 LBSR CHECK | |
1133 SUBS2 LBSR EXPR | |
1134 PULS A | |
1135 LBRA CHECK | |
1136 SUBSC1 LBSR WORD | |
1137 LDA #$36 | |
1138 LBSR CHECK | |
1139 LBSR LEXPR | |
1140 LDB LSW | |
1141 BEQ SBS5 | |
1142 LDB AMODE | |
1143 BEQ SBS5 | |
1144 LBSR OLOAD | |
1145 SBS5 LDA #$3A | |
1146 LBRA CHECK | |
1147 * MEM FUNCTION | |
1148 TM9 CMPA #6 | |
1149 BNE TM10 | |
1150 BSR DSUBSC | |
1151 LBSR PUTHS | |
1152 FDB $0997 | |
1153 FCB WT2 | |
1154 FDB $3297 | |
125 | 1155 FCB WT1,$9E,WT1 |
121 | 1156 FDB $A600 |
1157 RTS | |
1158 ** FOR EXPANTION | |
1159 TM10 LBRA ERROR | |
1160 ** | |
1161 * ADDRESS DEPENDENT CODE | |
1162 * GENARATION | |
1163 ** | |
1164 * SET PRC—FUNC TABLE | |
1165 ** | |
1166 SETPFT PSHS A | |
1167 LDB #3 | |
1168 MUL | |
1169 ADDD PFTBEG | |
1170 STD XR | |
1171 PULS A,PC | |
1172 ** | |
1173 TWICE LBSR PUTSTR | |
1174 FCB $0D,$0A | |
1175 FCC "TWICE!",0 | |
1176 lbra exit | |
1177 ** | |
1178 * DEF PROC-FUNC | |
1179 ** | |
1180 DEFPF BSR SETPFT | |
1181 LDX XR | |
1182 TST ,X | |
1183 BNE TWICE | |
1184 COM ,X | |
1185 LDX 1,X | |
1186 STX YR | |
1187 LDX XR | |
1188 LEAX 1,X | |
1189 BSR PCST | |
1190 LDX YR | |
1191 DP1 BEQ RT10 | |
1192 LDX ,X | |
1193 STX ZR | |
1194 LDX YR | |
1195 BSR PCST | |
1196 LDX ZR | |
1197 STX YR | |
1198 BRA DP1 | |
1199 ** | |
1200 * CALL PORC-FUNC | |
1201 ** | |
1202 CALPF BSR SETPFT | |
1203 INCA | |
1204 CMPA PFMAX | |
1205 BCS *+4 | |
1206 STA PFMAX | |
1207 LDA #$BD | |
1208 BSR AOUT | |
1209 LDX XR | |
1210 LDD 1,X | |
1211 LDX PC | |
1212 BSR STAABX | |
1213 LDX XR | |
1214 TST ,X | |
1215 BNE PC2ADD | |
1216 LEAX 1,X | |
1217 BSR PCST | |
1218 BRA PC2ADD | |
1219 ** | |
1220 * PUL-DEF N TIMES | |
1221 ** | |
1222 PLDFN PSHS A | |
1223 BSR PULDEF | |
1224 DEC ,S | |
1225 BNE *-4 | |
1226 PULS A,PC | |
1227 ** | |
1228 * PULL AND DEFINE | |
1229 ** | |
1230 PULDEF BSR PULSTK | |
1231 PCST LDD PC | |
1232 STAABX STD ,X | |
1233 RT10 RTS | |
1234 ** | |
1235 JMPOUT LDA #$7E | |
1236 AOUT LDX PC | |
1237 STA ,X | |
1238 BRA INCPC1 | |
1239 ** | |
1240 PULSTK LDX SP | |
1241 LEAX 2,x | |
1242 STX SP | |
1243 LDD ,X | |
1244 LDX ,X | |
1245 RTS | |
1246 ** | |
1247 * PUL STACK & Jump | |
1248 ** | |
1249 PULJMP BSR JMPOUT | |
1250 BSR PULSTK | |
1251 PCST2 LDX PC | |
1252 BSR STAABX | |
1253 INCPC LEAX 1,X | |
1254 INCPC1 LEAX 1,X | |
1255 SETPC STX PC | |
1256 RTS | |
1257 ** | |
1258 * PUSH STACK & JUMP | |
1259 ** | |
1260 PSHJMP BSR JMPOUT | |
1261 BSR PSHDEF | |
1262 PC2ADD LDX PC | |
1263 BRA INCPC | |
1264 ** | |
1265 * PUSH STRCK & DEFINE | |
1266 ** | |
1267 PSHDEF LDX SP | |
1268 BSR PCST | |
1269 LEAX -2,X | |
1270 STX SP | |
1271 RTS | |
1272 ** | |
1273 OUTPC3 BSR AOUT | |
1274 LDD PC | |
1275 ADDD #3 | |
1276 BRA PCST2 | |
1277 ** | |
1278 * LDA R,X | |
1279 LDAAX LDA #$B7 | |
1280 BSR OUTPC3 | |
1281 LDA #$A6 | |
1282 LA1 BSR AOUT | |
1283 BRA INCPC1 | |
1284 ** | |
1285 * STA B,X | |
1286 STABX LDA #$F7 | |
1287 BSR OUTPC3 | |
1288 LDA #$A7 | |
1289 BRA LA1 | |
1290 ** | |
1291 * STACK TOP CHANGE | |
1292 ** | |
123 | 1293 STCHG LDD 2,S |
1294 LDX 4,S | |
1295 STD 4,S | |
1296 STX 2,S | |
121 | 1297 RTS |
1298 ** | |
122 | 1299 * PUTHSL output with address calculation |
1300 * only working on 3 byte 7E/BD (JMP/JSR) | |
1301 ** | |
1302 PUTHSL LDX ,S++ | |
1303 LDB ,X+ | |
1304 LDA ,X+ | |
1305 LBSR PUTA | |
1306 LDD ,X++ | |
124 | 1307 leay 0,pcr |
122 | 1308 leay d,y |
1309 exg d,y | |
1310 ldy pc | |
1311 std ,y++ | |
1312 sty pc | |
1313 JMP ,X | |
1314 ** | |
1315 ** | |
121 | 1316 * END OF LOAD |
1317 ** | |
1318 ENDL LDX PFTBEG | |
1319 LDA PFMAX | |
1320 EL1 BEQ EL | |
1321 TST ,X | |
1322 BEQ UDERR | |
1323 EL2 LEAX 3,X | |
1324 DECA | |
1325 BRA EL1 | |
1326 UDERR PSHS A | |
1327 STA ZR | |
1328 SUBA PFMAX | |
1329 NEGA | |
1330 PSHS A | |
1331 LBSR PUTSTR | |
1332 FDB $0D0A | |
1333 FCC "UNDEF",0 | |
1334 PULS A | |
1335 LBSR PUTCA | |
1336 PULS A | |
1337 LDX ZR | |
1338 BRA EL2 | |
1339 EL LDX PC | |
126
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1340 LBRA C |
121 | 1341 |
1342 ********************** | |
1343 * ADVANCE WORD | |
1344 ** | |
1345 WTABLE FCB 0 END MARK | |
1346 FCB $30,-'P' | |
1347 FCC "ROC" | |
1348 FCB $31,-'F' | |
1349 FCC "UNC" | |
124 | 1350 FCB $32,-'V' |
121 | 1351 FCC "AR" |
1352 FCB $33,-'A' | |
1353 FCC "RRAY" | |
1354 FCB $34,-'B' | |
1355 FCC "EGIN" | |
124 | 1356 FCB $35,-';' |
121 | 1357 FCB $36,-'[' |
1358 FCB $37,-'(' | |
1359 FCB $38,-'E' | |
1360 FCC "ND" | |
1361 FCB $39,-'=' | |
1362 FCB $3A,-']' | |
1363 FCB $3B,-')' | |
1364 FCB $3C,-',' | |
1365 FCB $3D,-':' | |
1366 FCB $50,-'S' | |
1367 FCC "TOP" | |
1368 FCB $51,-'R' | |
1369 FCC "ETURN" | |
1370 FCB $55,-'I' | |
1371 FCC "F" | |
1372 FCB $65,-'T' | |
1373 FCC "HEN" | |
1374 FCB $53,-'F' | |
1375 FCC "OR" | |
1376 FCB $61,-'T' | |
1377 FCC "O" | |
1378 FCB $52,-'R' | |
1379 FCC "EPEAT" | |
1380 FCB $60,-'U' | |
1381 FCC "NTIL" | |
1382 FCB $54,-'W' | |
1383 FCC "HILE" | |
1384 FCB $64,-'D' | |
1385 FCC "O" | |
1386 FCB $56,-'C' | |
1387 FCC "ASE" | |
1388 FCB $66,-'O' | |
1389 FCC "F" | |
1390 FCB $67,-'E' | |
1391 FCC "LSE" | |
1392 FCB $57,-'W' | |
1393 FCC "RITE" | |
1394 FCB $69,-'A' | |
1395 FCC "SCII" | |
1396 FCB $6A,-'S' | |
1397 FCC "PACE" | |
126
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1398 FCB $6B,-'C' |
121 | 1399 FCC "RLF" |
1400 FCB $6C,-'"' | |
1401 FCB $8B,-'+' | |
1402 FCB $80,-'-' | |
1403 FCB $8E,-'*' | |
1404 FCB $8F,-'/' | |
1405 FCB $82,-'S' | |
1406 FCC "BC" | |
1407 FCB $84,-'A' | |
1408 FCC "ND" | |
1409 FCB $88,-'E' | |
1410 FCC "OR" | |
1411 FCB $89,-'A' | |
1412 FCC "DC" | |
1413 FCB $8A,-'O' | |
1414 FCC "R" | |
1415 FCB $22,-'>' | |
1416 FCB $25,-'<' | |
1417 FCB $26,-'#' | |
1418 FCB $27,-'=' | |
1419 FCB $2D,-'L','T' | |
1420 FCB $2E,-'G','T' | |
1421 FCB $40,-'N','E','G' | |
1422 FCB $43,-'N','O','T' | |
1423 FCB,$43,-'C','O','M' | |
1424 FCB $44,-'L','S','R' | |
1425 FCB $46,-'R','O','R' | |
1426 FCB $47,-'A','S','R' | |
1427 FCB $48,-'A','S','L' | |
1428 FCB $49,-'R','O','L' | |
1429 FCB $06,-'M','E','M' | |
1430 FCB $A0,-'T' | |
1431 FCC "RUE" | |
1432 FCB $A1,-'F' | |
1433 FCC "ALSE" | |
1434 FCB $16,-'M' | |
1435 FCC "HIGH" | |
1436 FCB $17,-'M' | |
1437 FCC "OD" | |
1438 FCB $70,-'R','N','D' | |
1439 FCB $71,-'G','E','T' | |
1440 FCB $72,-'R' | |
1441 FCC "EAD" | |
1442 WTBLEND | |
126
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1443 |
121 | 1444 ****** |
126
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1445 * SUPORTING ROUTINES |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1446 * & I/0 CONTROL |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1447 ** |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1448 ** OBJECT START |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1449 ****** |
138
6f7276831219
TL/1 use x and y register
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
137
diff
changeset
|
1450 C leas OBJECT,u |
142 | 1451 VARPTR lda INDN |
126
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1452 lbsr close |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1453 clra os9 stdin |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1454 sta INDN |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1455 inca |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1456 sta OUTDN |
142 | 1457 LDX <PC |
1458 leay ,x | |
126
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1459 OBJMP JMP OBJECT,u |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1460 |
121 | 1461 ** |
127
321b7fffadab
TL/1 simple test worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
126
diff
changeset
|
1462 * PUSH LB & SET NEW LB |
121 | 1463 ** |
142 | 1464 *PSHLB pshs y |
1465 * leay ,x | |
1466 * leax a,x | |
1467 * sty ,x++ | |
1468 * puls y,pc | |
121 | 1469 ** |
1470 * PULL LB | |
1471 ** | |
136 | 1472 * |
142 | 1473 *PULLB LDX ,--X |
1474 * TSTA | |
1475 * RTS | |
121 | 1476 ** |
1477 * RND FUNCTION | |
1478 ** | |
1479 RND PSHS A | |
1480 LDA RNDL | |
1481 LDB #125 | |
1482 MUL | |
1483 ADDD #1 | |
1484 STA RNDL | |
1485 PSHS A | |
1486 LDA RNDH | |
1487 LDB #125 | |
1488 MUL | |
1489 ADDA ,S+ | |
1490 STA RNDH | |
1491 PULS B | |
1492 MUL | |
1493 INCA | |
1494 RTS | |
1495 ** | |
1496 * DVISITION SET MOD | |
1497 ** | |
1498 DIV STB WT1 | |
1499 BEQ ERDIV | |
1500 TFR A,B | |
1501 CLRA | |
1502 STA WT2 | |
1503 DV0 INC WT2 | |
1504 ASL WT1 | |
1505 BCC DV0 | |
1506 DV1 ROR WT1 | |
1507 CMPB WT1 | |
1508 BCS DV2 | |
1509 SUBB WT1 | |
1510 ORCC #1 | |
1511 BRA *+4 | |
1512 DV2 ANDCC #$FE CLR C | |
1513 ROLA | |
1514 DEC WT2 | |
1515 BNE DV1 | |
1516 STB MOD | |
1517 TSTA | |
1518 RTS | |
1519 ** | |
1520 ERDIV STB OUTDN | |
1521 LBSR CRLF | |
1522 LBSR PUTSTR | |
1523 FCC "ERR DIV 0",0 | |
127
321b7fffadab
TL/1 simple test worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
126
diff
changeset
|
1524 MONIT lbra exit |
121 | 1525 ** |
1526 MULT MUL | |
1527 STA MHIGH | |
1528 TFR B,A | |
1529 RTS | |
1530 ** | |
1531 * PUT A IN DECIMAL | |
1532 ** | |
1533 PUTDA CLRB | |
1534 PUTDR STB DREG | |
136 | 1535 PSHS X |
126
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1536 LEAX -2,S |
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1537 LEAS -6,S |
121 | 1538 CLR 1,X |
1539 LDB #3 | |
1540 P0 PSHS B | |
1541 LDB #10 | |
1542 BSR DIV | |
1543 ADDB #$30 | |
1544 STB ,X | |
1545 LEAX -1,X | |
1546 PULS B | |
1547 DECB | |
1548 BNE P0 | |
1549 COM 3,X | |
1550 LDA #'0' | |
1551 LDB #4 | |
1552 P1 LEAX 1,X | |
1553 DECB | |
1554 CMPA ,X | |
1555 BEQ P1 | |
1556 COM 4,S | |
1557 LDA DREG | |
1558 PSHS B | |
1559 SUBA ,S+ | |
1560 BCS PRX | |
1561 BSR SPACEA | |
126
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1562 PRX LDA ,X |
121 | 1563 BEQ P4 |
122 | 1564 LBSR PUTCA |
121 | 1565 LEAX 1,X |
1566 BRA PRX | |
126
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1567 P4 LEAS 6,S |
136 | 1568 CL1 PULS X,PC |
121 | 1569 ** |
1570 * GET IN A DECIMAL | |
1571 ** | |
1572 GETDA CLRA | |
1573 PSHS A | |
122 | 1574 LBSR GETCA |
121 | 1575 CMPA #RUB |
1576 BNE GD1 | |
1577 PULS A | |
1578 LDB #10 | |
1579 LBSR DIV | |
1580 BRA GETDA+1 | |
1581 GD1 SUBA #'0' | |
1582 BCS GD2 | |
1583 CMPA #10 | |
1584 BCC GD2 | |
1585 STA DBUF | |
1586 PULS A | |
1587 LDB #10 | |
1588 MUL | |
1589 ADDB DBUF | |
1590 TFR B,A | |
1591 BRA GETDA+1 | |
1592 GD2 PULS A,PC | |
1593 ** | |
1594 * SPACE A TIMES | |
1595 ** | |
1596 SPACEA BEQ CL1 | |
1597 PSHS A | |
1598 LDA #' ' | |
122 | 1599 LBSR PUTCA |
121 | 1600 PULS A |
1601 DECA | |
1602 BRA SPACEA | |
1603 ** | |
1604 * STR OUT | |
1605 ** | |
1606 PUTSTR PSHS X | |
1607 LDX 2,S | |
1608 STR1 LDA ,X+ | |
1609 BEQ STR2 | |
1610 LBSR PUTCA | |
1611 BRA STR1 | |
1612 STR2 STX 2,S | |
1613 PULS X,PC | |
1614 ** | |
1615 * CRLF | |
1616 ** | |
1617 CRLF LDA #$0D | |
1618 BSR PUTCA | |
1619 LDA #$0A | |
1620 BRA PUTCA | |
1621 ** | |
1622 * CRLF A TIMES | |
1623 ** | |
1624 CRLFA BEQ CL1 | |
1625 PSHS A | |
1626 BSR CRLF | |
1627 PULS A | |
1628 DECA | |
1629 BRA CRLFA | |
1630 | |
1631 | |
1632 start clr <stdin | |
1633 stx <parmptr save parameter pointer | |
1634 stu <work save parameter pointer | |
1635 lda #READ. read access mode | |
1636 os9 I$Open open file | |
1637 lbcs L0049 branch if error | |
1638 sta <INDN else save path to file | |
1639 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
|
1640 leax readbuff,u buffer |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1641 clr ,x buffer empty |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1642 stx <adr |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1643 lbra comp |
121 | 1644 |
1645 copytbl | |
1646 pshs y,x,u | |
1647 leau LIBR,y | |
1648 leax iotbl,pcr | |
1649 leay iotblend,pcr | |
1650 ldy #(iotblend-iotbl) | |
1651 l1 ldb #$7e * JMP | |
1652 stb ,u+ | |
1653 ldd ,x++ | |
1654 addb 1,s | |
1655 adca ,s | |
1656 std ,u++ | |
1657 cmpx 2,s | |
1658 ble l1 | |
1659 puls x,y,u | |
1660 | |
1661 Exit lbsr setecho | |
1662 * ldx <work | |
1663 * leax readbuff,x | |
1664 * ldb #1 | |
1665 * lbsr getline | |
1666 * lbsr getpoll | |
1667 * lda <stdin | |
1668 * os9 I$Close | |
1669 | |
1670 clrb | |
1671 os9 F$Exit | |
1672 * no return | |
1673 | |
1674 | |
1675 iotbl | |
1676 fdb getchar-iotbl ; 0 | |
1677 fdb putchar-iotbl ; 3 | |
1678 fdb getline-iotbl ; 6 | |
1679 fdb putline-iotbl ; 9 | |
1680 fdb putcr-iotbl ; $C | |
1681 fdb getpoll-iotbl ; $F | |
1682 fdb xopenin-iotbl ; $12 | |
1683 fdb xopenout-iotbl ; $15 | |
1684 fdb xabortin-iotbl ; $18 | |
1685 fdb xclosein-iotbl ; $1B | |
1686 fdb xcloseout-iotbl ; $1E | |
1687 fdb delay-iotbl ; $21 | |
1688 fdb noecho-iotbl ; $24 | |
1689 fdb setecho-iotbl ; $27 | |
1690 fdb exit-iotbl ; $2a | |
1691 iotblend | |
1692 | |
1693 err ldb #1 | |
1694 L0049 | |
1695 bra Exit | |
1696 | |
1697 | |
135
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1698 PUTCA tfr a,b |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1699 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
|
1700 PSHS X,Y |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1701 BRA OUTCH1 |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1702 |
121 | 1703 close |
1704 lda <INDN else get path | |
1705 os9 I$Close and close it | |
1706 bcs L0049 branch if error | |
1707 rts | |
1708 | |
1709 MEMIN | |
1710 PSHS A,B,X,Y | |
135
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1711 ldx <adr |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1712 lda ,x+ |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1713 bne GETCA1 |
121 | 1714 LDA INDN |
135
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1715 LEAX readbuff,u |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1716 LDY #bufsiz |
121 | 1717 OS9 I$Read |
1718 BCC GETCA0 | |
1719 lda #'/' | |
135
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1720 ldx <adr |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1721 bra GETCA1 |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1722 GETCA0 LEAX readbuff,u |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1723 tfr y,d |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1724 clr d,x eof |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1725 lda ,x+ |
7503617351c0
TL/1 buffered program read
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
132
diff
changeset
|
1726 GETCA1 stx <adr |
123 | 1727 sta ,s |
121 | 1728 PULS A,B,X,Y,PC |
1729 | |
1730 GETCA bsr getchar | |
1731 tfr b,a | |
1732 rts | |
1733 | |
1734 getchar * Input one character into B register. | |
1735 PSHS A,B,X,Y | |
1736 GETCH0 | |
1737 LDA INDN | |
123 | 1738 LEAX ,S |
121 | 1739 LDY #1 |
1740 OS9 I$Read | |
1741 BCS GETCH0 | |
1742 PULS A,B,X,Y,PC | |
1743 putcr * Output a newline. | |
1744 LDB #C$CR | |
1745 bsr putchar | |
1746 LDB #C$LF | |
1747 PSHS X,Y | |
1748 OUTCH1 PSHS A,B | |
1749 LEAX 1,S | |
1750 LDA OUTDN | |
1751 LDY #1 | |
1752 OS9 I$Write | |
1753 PULS A,B,X,Y,PC | |
1754 getpoll | |
1755 PSHS X,Y,D | |
1756 LDA #0 | |
1757 LDB #SS.Ready | |
1758 OS9 I$GetStt | |
1759 CMPB #$F6 Not Ready | |
1760 BNE RSENSE | |
1761 CLRB | |
1762 PULS X,Y,D,PC | |
1763 RSENSE | |
1764 ORCC #1 set carry to indicate ready | |
1765 RNSENSE | |
1766 PULS X,Y,D,PC | |
1767 | |
1768 getline * Input line at address in X, length in B. | |
1769 PSHS A,B,X,Y | |
1770 clr ,s | |
1771 GETLN0 | |
1772 ldy ,s | |
1773 lda INDN | |
1774 OS9 I$ReadLn | |
1775 BCS GETLN0 | |
1776 LEAY -1,Y | |
1777 GETLN1 STY ,S | |
1778 PULS A,B,X,Y,PC | |
1779 putline * Output string at address in X, length in B. | |
1780 PSHS A,B,X,Y | |
1781 CLRA | |
1782 TFR D,Y | |
1783 lda OUTDN | |
1784 OS9 I$WritLn | |
1785 PULS A,B,X,Y,PC | |
1786 xopenin | |
1787 xopenout | |
1788 xabortin | |
1789 xclosein | |
1790 xcloseout | |
1791 RTS | |
1792 | |
1793 setecho lda #1 | |
1794 bra sss | |
1795 noecho clra | |
1796 sss leas -128,s | |
1797 leax ,s | |
1798 pshs a | |
1799 clra | |
1800 ldb #SS.Opt | |
1801 OS9 I$GetStt | |
1802 bcs err2 | |
1803 LDA ,s | |
1804 STA PD.EKO-PD.OPT,X | |
1805 setopts | |
1806 ldb #SS.Opt | |
1807 clra | |
1808 OS9 I$SetStt | |
1809 err2 | |
1810 puls a | |
1811 leas 128,s | |
1812 rts | |
1813 | |
1814 | |
1815 delay PSHS D,X * address **$21** | |
1816 * On input the D register contains the number of timer | |
1817 * ticks to wait. Each timer tick is 20ms | |
1818 TFR D,X | |
1819 OS9 F$Sleep | |
1820 PULS D,X,PC | |
1821 | |
1822 | |
1823 emod | |
1824 eom equ * | |
1825 end | |
1826 |