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