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