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