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