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