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