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