Mercurial > hg > Members > kono > os9 > sbc09
annotate TL1/TL1os9.asm @ 176:6ef317714ae8
mopen in TL/1
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 15 Apr 2019 00:25:58 +0900 |
parents | c83545730d6c |
children | 3770e86114aa |
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 ** | |
328 SS4 CMPA #2 | |
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 ** | |
404 SSEND COM SSW | |
405 RTS | |
406 ** | |
407 SS6 CMPA #$58 | |
408 BCC SSEND | |
409 CMPA #$52 | |
410 BCS SSEND | |
411 SUBA #$51 | |
412 PSHS A | |
413 LBSR WORD | |
125 | 414 PULS B B keyword A next token |
121 | 415 ** |
416 * REPEAT UNTIL | |
417 ** | |
418 DECB | |
419 BNE SS7 | |
420 BSR ASTOUT | |
421 LBSR STLIST | |
422 LDA #$60 | |
423 LBSR CHECK | |
424 LBSR EXPR | |
425 LBSR PUTHS | |
426 FCB 2 | |
427 FDB $2603 | |
428 CLR SSW | |
429 BRA MINOUT | |
430 ** | |
431 * FOR-TO | |
432 ** | |
433 SS7 DECB | |
434 BNE SS8 | |
125 | 435 CMPA #4 should be simple var |
121 | 436 BEQ *+5 |
437 LBRA ERROR | |
438 LDB VAL | |
439 PSHS B | |
440 LDB GL | |
441 PSHS B | |
442 LBSR ASSIGN | |
125 | 443 LDA #$61 to |
121 | 444 LBSR CHECK |
445 CLR ACC | |
446 LBSR EXPR | |
125 | 447 LDA #$64 do |
121 | 448 LBSR CHECK |
170
d4e2f1179baf
remove psh on TL1 for-statement
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
169
diff
changeset
|
449 INC LSIZE |
d4e2f1179baf
remove psh on TL1 for-statement
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
169
diff
changeset
|
450 LDA #$A7 sta |
d4e2f1179baf
remove psh on TL1 for-statement
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
169
diff
changeset
|
451 LDB LSIZE |
125 | 452 LBSR PUTAB |
170
d4e2f1179baf
remove psh on TL1 for-statement
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
169
diff
changeset
|
453 pshs b |
d4e2f1179baf
remove psh on TL1 for-statement
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
169
diff
changeset
|
454 BSR ASTOUT |
121 | 455 LBSR STAT |
170
d4e2f1179baf
remove psh on TL1 for-statement
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
169
diff
changeset
|
456 puls b |
d4e2f1179baf
remove psh on TL1 for-statement
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
169
diff
changeset
|
457 lda #$A6 lda |
125 | 458 LBSR PUTAB |
121 | 459 PULS D |
460 STA GLL | |
461 STB OPER | |
462 LDA #$A1 | |
463 LBSR PUTABX | |
464 LBSR PUTHS | |
465 FCB 2 | |
466 FDB $2305 | |
467 LDA #$6C | |
468 LDB OPER | |
469 LBSR PUTAB | |
470 MINOUT LBRA PULJMP | |
471 ASTOUT LBRA PSHDEF | |
472 ** | |
473 * WHILE-DO | |
474 ** | |
475 SS8 DECB | |
476 BNE SS9 | |
477 BSR ASTOUT | |
478 LBSR EXPR | |
479 LDA #$64 | |
480 LBSR CHECK | |
481 LBSR PUTHS | |
482 FCB 2 | |
483 FDB $2603 | |
484 BSR SLAOUT | |
485 LBSR STAT | |
486 BSR PEROUT | |
487 BSR MINOUT | |
488 PLUOUT LBRA PULDEF | |
489 ** | |
490 ** IF—THEN | |
491 ** | |
492 SS9 DECB | |
493 BNE SS10 | |
494 LBSR EXPR | |
495 LDA #$65 | |
496 LBSR CHECK | |
497 LBSR PUTHS | |
498 FCB 2 | |
499 FDB $2603 | |
500 BSR SLAOUT | |
501 LBSR STAT | |
502 BRA PLUOUT | |
503 SLAOUT LBRA PSHJMP | |
504 PEROUT LBRA STCHG | |
505 *** | |
506 * CASE—OF | |
507 SS10 DECB | |
508 BNE SS11 | |
509 LBSR EXPR | |
510 LDA #$66 | |
511 LBSR CHECK | |
512 CLRB | |
513 S10A INCB | |
514 PSHS B | |
515 STB ACC | |
516 LBSR LEXPR | |
517 LDA #$81 | |
518 LBSR AOPER | |
519 LBSR PUTHS | |
520 FCB 2 | |
521 FDB $2703 | |
522 BSR SLAOUT | |
523 LBSR STAT | |
524 BSR SLAOUT | |
525 BSR PEROUT | |
526 BSR PLUOUT | |
527 PULS B | |
528 LDA SY | |
529 CMPA #$67 | |
530 BNE S10A | |
531 PSHS B | |
532 LBSR WORD | |
533 LBSR STAT | |
534 PULS A | |
535 LBRA PLDFN | |
536 ** | |
537 * WRITE STATEMENT | |
538 ** | |
539 SS11 LDA #$37 | |
540 LBSR CHECK | |
125 | 541 LBSR EXPR output channel number |
121 | 542 LBSR PUTHS |
543 FDB $0297 | |
544 FCB OUTDN | |
545 LDA #$3D | |
546 LBSR CHECK | |
547 WTLP CLR ACC | |
548 BSR WTERM | |
549 LDA SY | |
550 CMPA #$3C | |
551 BNE WTEN | |
552 LBSR WORD | |
553 BRA WTLP | |
125 | 554 WTEN LDA #$3B |
121 | 555 LBRA CHECK |
125 | 556 ** write command argument |
557 WTERM CMPA #$6C string | |
121 | 558 BNE WR1 |
122 | 559 LBSR PUTHSL |
162 | 560 FDB $0317 |
121 | 561 FDB PUTSTR |
562 LDA CH | |
125 | 563 WR01 CMPA #'"' copy until '"' |
121 | 564 BEQ WR02 |
565 LBSR PUTA | |
566 LBSR GETCH | |
567 BRA WR01 | |
125 | 568 WR02 CLRA put 0 at end |
121 | 569 LBSR PUTA |
570 LBSR GETCH | |
571 LBRA WORD | |
572 ** | |
573 WR1 CMPA #$6B | |
574 BNE WR3 | |
575 LBSR WORD | |
576 CMPA #$37 | |
577 BEQ WR2 | |
122 | 578 LBSR PUTHSL |
162 | 579 FDB $0317 |
126
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
580 FDB CRLF |
121 | 581 RTS |
582 ** | |
583 WR2 LBSR WEXPR | |
584 BSR WTEN | |
122 | 585 LBSR PUTHSL |
162 | 586 FDB $0317 |
121 | 587 FDB CRLFA |
588 RTS | |
589 ** | |
590 WR3 CMPA #$6A | |
591 BNE WR4 | |
592 LBSR SUBSC | |
122 | 593 LBSR PUTHSL |
162 | 594 FDB $0317 |
121 | 595 FDB SPACEA |
596 RTS | |
597 ** | |
176 | 598 WR4 CMPA #$69 |
121 | 599 BNE WR5 |
600 LBSR SUBSC | |
122 | 601 LBSR PUTHSL |
162 | 602 FDB $0317 |
121 | 603 FDB PUTCA |
604 RTS | |
605 ** | |
606 WR5 CMPA #$26 | |
607 BNE WR6 | |
608 LBSR DSUBSC | |
609 LBSR PUTPLB | |
122 | 610 LBSR PUTHSL |
162 | 611 FDB $0317 |
121 | 612 FDB PUTDA+1 |
613 BRA WR66 | |
614 ** | |
615 WR6 LBSR EXPR | |
122 | 616 LBSR PUTHSL |
162 | 617 FDB $0317 |
121 | 618 FDB PUTDA |
137
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
619 WR66 |
121 | 620 RTS11 RTS |
621 ** | |
137
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
622 * 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
|
623 ** |
141 | 624 *PUTX equ RTS11 * no pointer load |
121 | 625 ** |
137
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
626 PUTOFS PSHS D,X |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
627 LDX <PC |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
628 STA ,X+ |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
629 CLRA |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
630 TST <GLL |
138
6f7276831219
TL/1 use x and y register
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
137
diff
changeset
|
631 BMI PUTOFSX |
6f7276831219
TL/1 use x and y register
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
137
diff
changeset
|
632 LDA #$20 |
137
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
633 PUTOFSX STA ,S |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
634 CMPB #32 |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
635 BGT *+6 |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
636 CMPB #-32 |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
637 BGE PUTOFS5 |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
638 LDA #$80 |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
639 ORA ,S |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
640 STA ,X+ |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
641 STB ,X+ |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
642 BRA PUTOFS8 |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
643 PUTOFS5 |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
644 ANDB #$1F |
138
6f7276831219
TL/1 use x and y register
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
137
diff
changeset
|
645 ORB ,S |
6f7276831219
TL/1 use x and y register
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
137
diff
changeset
|
646 STB ,X+ |
137
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
647 PUTOFS8 |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
648 STX <PC |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
649 PULS D,X,PC |
1078f3e31d9c
index version TL/1 first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
136
diff
changeset
|
650 |
121 | 651 *** |
652 * PUT ACC A&B | |
653 ** | |
125 | 654 PUTAB BSR PUTA |
121 | 655 TFR B,A |
656 ** | |
144
1112b0549142
TL/1 example t3 worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
143
diff
changeset
|
657 * PUTX & PUTB |
1112b0549142
TL/1 example t3 worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
143
diff
changeset
|
658 ** |
1112b0549142
TL/1 example t3 worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
143
diff
changeset
|
659 PUTABX equ PUTAB |
1112b0549142
TL/1 example t3 worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
143
diff
changeset
|
660 * PSHS D |
1112b0549142
TL/1 example t3 worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
143
diff
changeset
|
661 * BSR PUTX |
1112b0549142
TL/1 example t3 worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
143
diff
changeset
|
662 * PULS D |
1112b0549142
TL/1 example t3 worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
143
diff
changeset
|
663 * BRA PUTAB |
1112b0549142
TL/1 example t3 worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
143
diff
changeset
|
664 ** |
121 | 665 * PUT ACCA RS AN OBJECT |
666 ** | |
136 | 667 PUTA PSHS X |
121 | 668 LBSR AOUT |
136 | 669 PULS X,PC |
121 | 670 ** |
671 * PUTHS STRING | |
672 ** | |
673 PUTHS LDX ,S++ | |
674 LDB ,X+ | |
675 PS1 LDA ,X+ | |
676 BSR PUTA | |
677 DECB | |
678 BNE PS1 | |
679 JMP ,X | |
680 ** | |
681 ** CHECK ACC | |
682 ** | |
683 CHECK CMPA SY | |
684 BEQ WORD | |
685 ** | |
686 * ERROR | |
687 ** | |
688 ERROR LBSR PUTSTR | |
689 FDB $0D0A | |
690 FCC "ERROR ",0 | |
691 LDX TEND | |
692 LEAX 1,X | |
693 NEG ,X | |
694 ER0 LDA ,X+ | |
695 LBSR PUTCA | |
696 CMPX WEND | |
697 BNE ER0 | |
698 lbra exit | |
699 ** | |
700 * WORD DECORDER | |
701 ** | |
702 WORD BSR WORDS | |
703 LDA SY | |
704 RTS | |
705 WORDS CLRB | |
706 STB SY | |
707 STB VAL | |
708 LDA CH | |
709 ** SKIP CONT ,SPACE.; | |
710 WD1 CMPA #$21 | |
711 BCS SKIP | |
712 CMPA #'.' | |
713 BEQ SKIP | |
714 CMPA #';' | |
715 BNE WD2 | |
716 SKIP BSR GETCH | |
717 BRA WD1 | |
718 ** | |
719 * COMMENT | |
720 ** | |
721 WD2 CMPA #'%' | |
722 BNE WD3 | |
723 BSR GETCH | |
724 CMPA #$20 | |
123 | 725 BCC *-4 |
121 | 726 BRA WD1 |
727 ** | |
728 * ASCC CONST | |
729 ** | |
730 WD3 CMPA #'\'' | |
731 BNE WD4 | |
732 BSR GETCH | |
733 STA VAL | |
734 BSR GETCH | |
735 GETCH PSHS X | |
736 LBSR MEMIN | |
737 STA CH | |
738 PULS X,PC | |
739 * HEX CONSTANT | |
740 WD4 CMPA #'$' | |
741 BNE WD5 | |
742 WD40 BSR GETCH | |
743 BSR TSTNA | |
744 BEQ WD41 | |
745 BCC RTS2 | |
746 CMPA #'F'+1 | |
747 BCC RTS2 | |
748 SUBA #7 | |
749 WD41 SUBA #'0' | |
750 LDB VAL | |
751 ASLB | |
752 ASLB | |
753 ASLB | |
754 ASLB | |
755 PSHS B | |
756 ADDA ,S+ | |
757 STA VAL | |
758 BRA WD40 | |
759 ** | |
138
6f7276831219
TL/1 use x and y register
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
137
diff
changeset
|
760 * 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
|
761 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
|
762 BCS NAF Z=0 C=1 Not Number/Alpha |
121 | 763 CMPA #'9'+1 |
764 BCS NT | |
765 CMPA #'A' | |
766 BCS NAF | |
767 CMPA #'Z'+1 | |
768 BCS AT | |
769 NAF CLRB CLEAR C | |
770 AT LDB #-1 | |
771 RTS2 RTS | |
772 NT CLRB | |
773 RTS | |
774 ** DECIMAL CONSTANT | |
775 WD5 BSR TSTNA | |
776 BNE WD6 | |
777 WD50 SUBA #'0' | |
778 PSHS A | |
779 LDA VAL | |
780 LDB #10 | |
781 MUL | |
127
321b7fffadab
TL/1 simple test worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
126
diff
changeset
|
782 ADDB ,S+ |
321b7fffadab
TL/1 simple test worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
126
diff
changeset
|
783 STB VAL |
121 | 784 BSR GETCH |
785 BSR TSTNA | |
786 BEQ WD50 | |
787 RTS | |
788 * THE OTHER WORDS | |
789 WD6 LDX TEND | |
790 PSHS A | |
791 NEGA | |
792 LEAX 1,X | |
793 BSR STAONE | |
794 PULS A | |
138
6f7276831219
TL/1 use x and y register
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
137
diff
changeset
|
795 BSR TSTNA first word must alpha |
121 | 796 BCC TLOOK1 |
797 WD61 LDA CH | |
138
6f7276831219
TL/1 use x and y register
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
137
diff
changeset
|
798 BSR TSTNA alpha numeric? |
121 | 799 BCS *+4 |
800 BNE TLOOK1 | |
801 BSR STAONE | |
802 BRA WD61 | |
138
6f7276831219
TL/1 use x and y register
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
137
diff
changeset
|
803 STAONE STA ,X+ store to the table |
121 | 804 STX WEND |
805 BRA GETCH | |
138
6f7276831219
TL/1 use x and y register
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
137
diff
changeset
|
806 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
|
807 BEQ TLOOK let's search |
121 | 808 COM RSW |
809 RTS | |
810 ** | |
811 * WORD TABLE SEARCH | |
138
6f7276831219
TL/1 use x and y register
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
137
diff
changeset
|
812 * |
6f7276831219
TL/1 use x and y register
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
137
diff
changeset
|
813 * 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
|
814 * 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
|
815 * 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
|
816 * 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
|
817 * GL 1 local 0xff global |
121 | 818 ** |
123 | 819 TLOOK PSHS U |
820 LDA TCOUNT | |
121 | 821 STA SY |
822 LDX TEND | |
823 S01 LDU WEND | |
824 S02 LDA ,-U | |
825 CMPA ,-X | |
826 BEQ S06 | |
827 S03 TST ,X | |
828 BEQ S05 | |
829 BMI S04 | |
830 LEAX -1,X | |
831 BRA S03 | |
832 S04 LEAX -1,X | |
833 BRA S01 | |
834 S05 DEC SY | |
835 BNE S01 | |
836 LBRA ERROR | |
837 S06 TSTA | |
838 BPL S02 | |
839 LDB ,-X | |
840 STB VAL | |
841 LDA SY | |
842 CMPA #1 | |
843 BNE *+6 | |
844 TFR B,A | |
845 BRA S07 | |
138
6f7276831219
TL/1 use x and y register
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
137
diff
changeset
|
846 LDB #1 |
121 | 847 CMPA #4 |
848 BCS RTSS | |
138
6f7276831219
TL/1 use x and y register
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
137
diff
changeset
|
849 TST PMODE |
121 | 850 BEQ *+6 |
851 CMPA #6 | |
852 BCS *+3 | |
853 NEGB | |
854 STB GL | |
855 ANDA #$FD | |
856 S07 STA SY | |
123 | 857 RTSS PULS U,PC |
121 | 858 ** |
859 * ARITHMATIC EXPRESSION | |
860 ** | |
861 WEXPR LBSR WORD | |
862 EXPR BSR LEXPR | |
863 BSR OLOAD | |
864 RTE RTS | |
865 ** WORD * LEXPR | |
866 WLEXPR LBSR WORD | |
867 ** | |
868 * LOGICAL EXPRESSION | |
869 ** | |
870 LEXPR BSR REXPR | |
871 LE1 LDY SY | |
872 CMPA #$82 | |
873 BCS RTE | |
874 CMPA #$8A+1 | |
875 BCC RTE | |
876 PSHS A | |
877 LBSR WORD | |
878 BSR REXPR | |
879 LDB LSW | |
880 BNE LE2 | |
881 LBSR PUTHS | |
882 FDB $0397 | |
883 FCB WT1 | |
884 FCB $32 | |
885 PULS A | |
886 ADDA #$10 | |
887 LDB #WT1 | |
888 LBSR PUTAB | |
889 BRA LE1 | |
890 LE2 PULS A | |
891 BSR OCORD | |
892 BRA LE1 | |
893 ** | |
894 * RELATIONAL EXPRESS | |
895 ** | |
139 | 896 REXPR LBSR AEXPR |
121 | 897 RE1 LDA SY |
898 CMPA #$21 | |
899 BCS RTE | |
900 CMPA #$30 | |
901 BCC RTE | |
902 PSHS A | |
903 LBSR WORD | |
904 ASR AEXPR | |
905 LDA #$80 | |
906 BSR AOPER | |
907 PULS A | |
908 LBSR PUTHS | |
909 FCB 6 | |
910 FCB $3,$4F,$20,$02,$86,$FF | |
911 BRA RE1 | |
912 ** ADDING OPERATFR | |
913 AOPER LDB LSW | |
914 BNE OCORD | |
915 PSHS A | |
916 CMPA #$80 | |
917 BEQ *+5 | |
918 BSR PUTPUL | |
919 FCB $8C | |
920 BSR PUTPLB | |
921 PULS A | |
922 SUBA #$70 | |
923 PUTA1 LBRA PUTA | |
924 ** OUTPUT SAVED L-CC | |
925 OLOAD LDA LSW | |
926 BEQ RTE | |
927 LDA ACC | |
132 | 928 BEQ OL1 |
929 LDD #$3402 pshs a | |
930 LBSR PUTAB | |
931 OL1 LDA #$86 | |
121 | 932 OCORD PSHS A |
933 CLRA | |
934 STA LSW | |
935 COMA | |
936 STA ACC | |
142 | 937 * LDA AMODE amode is sometime wrong? |
938 * CMPA #$20 | |
939 * BNE *+5 | |
141 | 940 * LBSR PUTX |
121 | 941 CLR LSW |
942 PULS A | |
943 ADDA AMODE | |
140 | 944 CMPA #$A6 |
945 BEQ OCOFS | |
946 CMPA #$E6 | |
947 BEQ OCOFS | |
141 | 948 LDB OPER imm case |
140 | 949 LBRA PUTAB |
141 | 950 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
|
951 LBRA PUTOFS |
121 | 952 * PUT 'TAB:PULS A' |
953 PUTPUL LBSR PUTHS | |
132 | 954 FCB 4 |
955 FCB $1f,$89,$35,2 tfr a,b ; puls a | |
121 | 956 RTE1 RTS |
957 * PUT 'PULS B' | |
132 | 958 PUTPLB LDA #$3504 puls b |
959 LBRA PUTAB | |
121 | 960 ** |
961 * ADDING EXPRESSION | |
962 ** | |
963 AEXPR BSR MEXPR | |
964 AE1 LDA SY | |
965 CMPA #$80 | |
966 BEQ AE2 | |
967 CMPA #$8B | |
968 BNE RTE1 | |
969 AE2 PSHS A | |
970 LBSR WORD | |
971 BSR MEXPR | |
972 PULS A | |
139 | 973 LBSR AOPER |
121 | 974 BRA AE1 |
975 ** | |
976 * MUTIPLYING EXPRESSION | |
977 ** | |
978 MEXPR BSR TERM | |
979 ME1 LDA SY | |
980 CMPA #$8E | |
981 BEQ ME2 | |
982 CMPA #$8F | |
983 BNE RTE1 | |
984 ME2 PSHS A | |
985 LBSR WORD | |
986 BSR TERM | |
987 LDB LSW | |
988 BEQ ME3 | |
989 LDA #$C6 | |
990 BSR OCORD | |
991 FCB $8C | |
992 ME3 BSR PUTPUL | |
993 PULS A | |
994 CMPA #$8E | |
995 BHS ME4 | |
122 | 996 LBSR PUTHSL |
121 | 997 FCB 3 |
162 | 998 FCB $17 |
121 | 999 FDB MULT |
1000 BRA ME1 | |
122 | 1001 ME4 LBSR PUTHSL |
121 | 1002 FCB 3 |
162 | 1003 FCB $17 |
121 | 1004 FDB DIV |
1005 BRA ME1 | |
1006 ** | |
1007 * TERM | |
1008 ** | |
1009 TERM LDA SY | |
1010 BNE TM1 | |
1011 * SAVE L-COMMAND | |
1012 SLOAD PSHS A | |
1013 LBSR OLOAD | |
1014 LDA VAL | |
1015 STA OPER | |
1016 LDA GL | |
1017 STA GLL | |
1018 PULS A | |
1019 STA AMODE | |
1020 COM LSW | |
1021 LBRA WORD | |
124 | 1022 * CONST TRUE & FALSE |
126
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1023 TM1 CMPA #$A0 |
124 | 1024 BEQ TM01 |
121 | 1025 CMPA #$A1 |
1026 BNE TM2 | |
1027 TM01 SUBA #$A1 | |
1028 STA VAL | |
1029 CLRA | |
1030 BRA SLOAD | |
1031 * SYSTEM VAR MHIGH & MOD | |
1032 TM2 CMPA #$16 | |
126
f43ca5d22920
fix dicimal print routine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
125
diff
changeset
|
1033 BEQ *+6 |
121 | 1034 CMPA #$17 |
1035 BNE TM3 | |
1036 STA VAL | |
1037 LDA #$10 | |
1038 BRA SLOAD | |
1039 * SIMPLE VARIABLE | |
1040 TM3 CMPA #4 | |
1041 BNE TM4 | |
1042 LDA #$20 | |
1043 BRA SLOAD | |
1044 * ( EXPTRSSION ) | |
1045 TM4 CMPA #$35 | |
1046 BCS TM5 | |
1047 CMPA #$38 | |
1048 BCC TM5 | |
1049 PSHS A | |
1050 LBSR WLEXPR | |
1051 PULS A | |
1052 ADDA #4 | |
1053 LBRA CHECK | |
1054 ** FUNCTION CALL | |
1055 TM5 CMPA #3 | |
144
1112b0549142
TL/1 example t3 worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
143
diff
changeset
|
1056 BEQ *+6 |
121 | 1057 CMPA #$E0 |
1058 BCS TM6 | |
1059 BSR OLP | |
1060 PFCALL LDA VAL | |
1061 PSHS A | |
1062 LBSR WORD | |
1063 CMPA #$37 | |
1064 BNE PFC1 | |
1065 LDA LSIZE | |
1066 PSHS A | |
144
1112b0549142
TL/1 example t3 worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
143
diff
changeset
|
1067 * INC LSIZE |
142 | 1068 PFC2 INC LSIZE |
143 | 1069 LBSR WEXPR |
121 | 1070 CLRB |
1071 STB ACC | |
1072 DECB | |
1073 STB GLL | |
143 | 1074 LDA #$A7 |
1075 LDB LSIZE | |
144
1112b0549142
TL/1 example t3 worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
143
diff
changeset
|
1076 DECB |
143 | 1077 LBSR PUTABX |
121 | 1078 LDA SY |
1079 CMPA #$3C | |
1080 BEQ PFC2 | |
1081 PULS A | |
1082 STA LSIZE | |
1083 LDA #$3B | |
1084 LBSR CHECK | |
1085 PFC1 LDB #-1 | |
1086 STB ACC | |
1087 LDA #$86 | |
1088 LDB LSIZE | |
1089 LBSR PUTAB | |
1090 PULS A | |
1091 CMPA #$C0 | |
1092 BCC *+5 | |
1093 LBRA CALPF | |
1094 LDX #LIBR | |
1095 SUBA #$C0 | |
1096 PFC3 BEQ PFC4 | |
1097 LEAX 2,X | |
1098 DECA | |
1099 BRA PFC3 | |
162 | 1100 PFC4 LDA #$17 |
121 | 1101 LBSR PUTA |
1102 LDD ,X | |
1103 LBRA PUTAB | |
1104 ** | |
1105 OLP LBSR OLOAD | |
1106 LDB ACC | |
1107 BEQ RTS4 | |
132 | 1108 LDD #$3402 pshs a |
1109 LBSR PUTAB | |
121 | 1110 CLR ACC |
1111 RTS4 RTS | |
1112 ** FUNCTION RND | |
1113 TM6 CMPA #$70 | |
1114 BNE TM61 | |
175 | 1115 LBSR SUBSC |
155 | 1116 LBSR PUTHSL |
176 | 1117 FDB $0317 |
121 | 1118 FDB RND |
1119 RTS | |
1120 * FUNTION GET | |
1121 TM61 CMPA #$71 | |
1122 BNE TM62 | |
175 | 1123 LBSR SUBSC |
121 | 1124 LBSR PUTHS |
122 | 1125 FDB $0297 |
1126 FCB INDN | |
1127 LBSR PUTHSL | |
176 | 1128 FDB $0317 |
155 | 1129 FDB getchar |
121 | 1130 RTS |
175 | 1131 * FUNCTION READ etc |
121 | 1132 TM62 CMPA #$72 |
175 | 1133 BNE TM63 |
1134 LBSR SUBSC | |
121 | 1135 LBSR PUTHS |
122 | 1136 FDB $0297 |
121 | 1137 FDB INDN |
122 | 1138 LBSR PUTHSL |
176 | 1139 FDB $0317 |
121 | 1140 FDB GETDA |
1141 RTS | |
175 | 1142 TM63 CMPA #$A2 seek |
1143 BNE TM64 | |
176 | 1144 LBSR DSUBSA |
1145 tstb | |
1146 beq tmm0 | |
1147 bsr aradr | |
1148 tmm0 LBSR PUTHSL | |
1149 FDB $0317 | |
175 | 1150 FDB NONE |
1151 RTS | |
1152 TM64 CMPA #$A3 seekr | |
1153 BNE TM65 | |
176 | 1154 LBSR DSUBSC |
175 | 1155 LBSR PUTHSL |
176 | 1156 FDB $0317 |
175 | 1157 FDB NONE |
1158 RTS | |
1159 TM65 CMPA #$A4 position | |
1160 BNE TM66 | |
176 | 1161 LBSR DSUBSA |
1162 tstb | |
1163 beq tmm1 | |
1164 bsr aradr | |
1165 tmm1 LBSR PUTHSL | |
1166 FDB $0317 | |
175 | 1167 FDB NONE |
1168 RTS | |
1169 TM66 CMPA #$A5 open | |
1170 BNE TM67 | |
176 | 1171 LBSR DSUBSC |
175 | 1172 LBSR PUTHSL |
176 | 1173 FDB $0317 |
175 | 1174 FDB NONE |
1175 RTS | |
1176 TM67 CMPA #$A6 openm | |
1177 BNE TM7 | |
176 | 1178 LBSR DSUBSA |
1179 tstb | |
1180 beq tmm2 | |
1181 bsr aradr | |
1182 tmm2 LBSR PUTHSL | |
1183 FDB $0317 | |
175 | 1184 FDB NONE |
1185 RTS | |
176 | 1186 * ; pshs u; leau ?,[xy] ; tfr u,d ; puls u |
1187 aradr LBSR PUTHS | |
1188 FCB 2,$34,$40 | |
1189 ldb VAL | |
1190 lda #$33 leau | |
1191 tst GL | |
1192 beq aradr1 | |
1193 addb #$20 | |
1194 aradr1 LBSR PUTAB | |
1195 LBSR PUTHS | |
1196 FCB 4,$1f,$30,$35,$40 | |
1197 RTS | |
175 | 1198 |
176 | 1199 * FUNCTION NOT ASL ET AL |
121 | 1200 TM7 CMPA #$40 |
1201 BCS TM8 | |
1202 CMPA #$49+1 | |
1203 BCC TM8 | |
1204 PSHS A | |
1205 BSR SUBSC | |
1206 PULS A | |
1207 LBRA PUTA | |
1208 * ARRAY | |
1209 TM8 CMPA #$5 | |
1210 BNE TM9 | |
1211 LDB VAL | |
1212 PSHS B | |
1213 LDB GL | |
1214 PSHS B | |
1215 BSR SUBSC1 | |
1216 PULS B | |
1217 STB GLL | |
1218 PULS B | |
1219 LDA LSW | |
1220 BEQ ARY1 | |
1221 ADDB OPER | |
1222 STB OPER | |
1223 LDA #$20 | |
1224 STA AMODE | |
1225 RTS | |
1226 ARY1 LDA #$8B | |
1227 LBSR PUTABX | |
1228 LBRA LDAAX | |
176 | 1229 |
1230 ** f(x,y) y can be an array | |
1231 DSUBSA LDA #$3C ',' | |
1232 BSR SUBS1 | |
1233 LDA #$3B ')' | |
1234 PSHS A | |
1235 LBSR WORD | |
1236 clrb | |
1237 CMPA #$5 | |
1238 BNE SUBS2 | |
1239 incb b==1 array | |
1240 RTS | |
1241 | |
1242 ** f(x,y) | |
175 | 1243 DSUBSC LDA #$3C ',' |
121 | 1244 BSR SUBS1 |
175 | 1245 LDA #$3B ')' |
121 | 1246 PSHS A |
1247 BRA SUBS2 | |
176 | 1248 SUBSC LDA #$3B ')' |
121 | 1249 SUBS1 PSHS A |
1250 LBSR WORD | |
175 | 1251 LDA #$37 '(' |
121 | 1252 LBSR CHECK |
1253 SUBS2 LBSR EXPR | |
1254 PULS A | |
1255 LBRA CHECK | |
1256 SUBSC1 LBSR WORD | |
175 | 1257 LDA #$36 '[' |
121 | 1258 LBSR CHECK |
1259 LBSR LEXPR | |
1260 LDB LSW | |
1261 BEQ SBS5 | |
1262 LDB AMODE | |
1263 BEQ SBS5 | |
1264 LBSR OLOAD | |
175 | 1265 SBS5 LDA #$3A ']' |
121 | 1266 LBRA CHECK |
1267 * MEM FUNCTION | |
1268 TM9 CMPA #6 | |
1269 BNE TM10 | |
176 | 1270 LBSR PUTHS ; leas -1,s |
1271 FCB 2,$32,$7F | |
121 | 1272 BSR DSUBSC |
176 | 1273 LBSR PUTHS ; sta 1,s; lda [,s++] |
1274 FDB $04,$a7,$61,$a8,$f1 | |
121 | 1275 RTS |
1276 ** FOR EXPANTION | |
1277 TM10 LBRA ERROR | |
1278 ** | |
1279 * ADDRESS DEPENDENT CODE | |
1280 * GENARATION | |
1281 ** | |
1282 * SET PRC—FUNC TABLE | |
1283 ** | |
1284 SETPFT PSHS A | |
1285 LDB #3 | |
1286 MUL | |
1287 ADDD PFTBEG | |
1288 STD XR | |
1289 PULS A,PC | |
1290 ** | |
1291 TWICE LBSR PUTSTR | |
1292 FCB $0D,$0A | |
1293 FCC "TWICE!",0 | |
1294 lbra exit | |
1295 ** | |
1296 * DEF PROC-FUNC | |
1297 ** | |
1298 DEFPF BSR SETPFT | |
1299 LDX XR | |
1300 TST ,X | |
1301 BNE TWICE | |
1302 COM ,X | |
1303 LDX 1,X | |
1304 STX YR | |
1305 LDX XR | |
1306 LEAX 1,X | |
162 | 1307 BSR RPCST |
121 | 1308 LDX YR |
1309 DP1 BEQ RT10 | |
1310 LDX ,X | |
1311 STX ZR | |
1312 LDX YR | |
162 | 1313 BSR RPCST |
121 | 1314 LDX ZR |
1315 STX YR | |
1316 BRA DP1 | |
162 | 1317 RPCST LDD PC |
1318 pshs x | |
1319 subd ,s++ | |
1320 subd #2 | |
1321 STD ,X | |
1322 RTS | |
121 | 1323 ** |
1324 * CALL PORC-FUNC | |
1325 ** | |
1326 CALPF BSR SETPFT | |
1327 INCA | |
1328 CMPA PFMAX | |
1329 BCS *+4 | |
1330 STA PFMAX | |
162 | 1331 LDA #$17 |
121 | 1332 BSR AOUT |
1333 LDX XR | |
1334 LDD 1,X | |
1335 LDX PC | |
1336 BSR STAABX | |
1337 LDX XR | |
1338 TST ,X | |
1339 BNE PC2ADD | |
1340 LEAX 1,X | |
1341 BSR PCST | |
1342 BRA PC2ADD | |
1343 ** | |
1344 * PUL-DEF N TIMES | |
1345 ** | |
1346 PLDFN PSHS A | |
1347 BSR PULDEF | |
1348 DEC ,S | |
1349 BNE *-4 | |
1350 PULS A,PC | |
1351 ** | |
1352 * PULL AND DEFINE | |
1353 ** | |
1354 PULDEF BSR PULSTK | |
1355 PCST LDD PC | |
1356 STAABX STD ,X | |
1357 RT10 RTS | |
1358 ** | |
162 | 1359 JMPOUT LDA #$16 |
121 | 1360 AOUT LDX PC |
1361 STA ,X | |
1362 BRA INCPC1 | |
1363 ** | |
1364 PULSTK LDX SP | |
1365 LEAX 2,x | |
1366 STX SP | |
1367 LDD ,X | |
1368 LDX ,X | |
1369 RTS | |
1370 ** | |
1371 * PUL STACK & Jump | |
1372 ** | |
1373 PULJMP BSR JMPOUT | |
1374 BSR PULSTK | |
1375 PCST2 LDX PC | |
162 | 1376 pshs x |
1377 subd ,s++ | |
163 | 1378 subd #2 |
162 | 1379 std ,x |
121 | 1380 INCPC LEAX 1,X |
1381 INCPC1 LEAX 1,X | |
1382 SETPC STX PC | |
1383 RTS | |
1384 ** | |
1385 * PUSH STACK & JUMP | |
1386 ** | |
1387 PSHJMP BSR JMPOUT | |
1388 BSR PSHDEF | |
1389 PC2ADD LDX PC | |
1390 BRA INCPC | |
1391 ** | |
1392 * PUSH STRCK & DEFINE | |
1393 ** | |
1394 PSHDEF LDX SP | |
1395 BSR PCST | |
1396 LEAX -2,X | |
1397 STX SP | |
1398 RTS | |
1399 ** | |
1400 OUTPC3 BSR AOUT | |
1401 LDD PC | |
6ebaa9693310
os9 version TL/1
Shinji KONO <kono@ie.u-ryu |