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