99
|
1
|
|
2 *
|
|
3 * micro-C driver under FLEX
|
|
4 *
|
|
5 * 12-Dec-81 M.Ohta,H.Tezuka
|
|
6 *
|
|
7
|
|
8 ORG $100
|
|
9
|
|
10 _00000
|
|
11 LDX $CC2B LOAD MEM END
|
|
12 LEAS 1,X
|
|
13
|
|
14 JSR $CD24 CR/LF
|
|
15
|
|
16 LEAS -256,S ALLOCATE WORK AREA
|
|
17 LEAU 128,S POINT TO CONTENT OF ARGUMENT VECTOR
|
|
18
|
|
19 STU ,S
|
|
20 BSR _0C004 GET ARGV[0]
|
|
21 CLRA ARGC*2
|
|
22 _0C000 ADDA #2 INCREMENT ARGC
|
|
23 STU A,S
|
|
24 PSHS A
|
|
25 BSR _0C009 GET NEXT ARGV
|
|
26 PULS A
|
|
27 CMPU #-1
|
|
28 BNE _0C000
|
|
29 STU A,S
|
|
30
|
|
31 LEAU 128,S
|
|
32 TFR A,B
|
|
33 _0C001 LDX A,S
|
|
34 PSHU X
|
|
35 SUBA #2
|
|
36 BNE _0C001
|
|
37 LDX ,S
|
|
38 PSHU X
|
|
39 LEAS ,U
|
|
40 LSRB
|
|
41 CLRA
|
|
42 PSHS D,U push argc,argv
|
|
43 LEAY _99999,PCR clear globals
|
|
44 LDX #_GLOBALS
|
|
45 _0C002 BEQ _0C003
|
|
46 CLR ,Y+
|
|
47 LEAX -1,X
|
|
48 BRA _0C002
|
|
49
|
|
50 _0C003 LEAY _99999,PCR
|
|
51 LBSR _INITIALIZE call initializer
|
|
52 LBSR _main
|
|
53 exit JSR $D403 FMS close
|
|
54 JMP $CD03 WARMS
|
|
55
|
|
56 _0C004 LDX $CC14
|
|
57 _0C005 CMPX #$C080
|
|
58 BEQ _0C007
|
|
59 LDB ,-X
|
|
60 CMPB #$0D
|
|
61 BEQ _0C006
|
|
62 CMPB $CC02
|
|
63 BNE _0C005
|
|
64 _0C006 LEAX 1,X
|
|
65 _0C007 LDB ,X+
|
|
66 CMPB #'
|
|
67 BEQ _0C008
|
|
68 STB ,U+
|
|
69 CMPX #$CC02
|
|
70 BLO _0C007
|
|
71 _0C008 CLR ,U+
|
|
72 RTS
|
|
73
|
|
74 _0C009 JSR $CD27
|
|
75 CMPA #'
|
|
76 BEQ _0C009
|
|
77 CMPA #$0D
|
|
78 BEQ _0C013
|
|
79 CMPA $CC02
|
|
80 BEQ _0C013
|
|
81 _0C010 CMPA #'"
|
|
82 BEQ _0C014
|
|
83 CMPA #''
|
|
84 BEQ _0C014
|
|
85 CMPA #'
|
|
86 BEQ _0C012
|
|
87 CMPA #$0D
|
|
88 BEQ _0C012
|
|
89 CMPA $CC02
|
|
90 BEQ _0C012
|
|
91 STA ,U+
|
|
92 _0C011 JSR $CD27
|
|
93 BRA _0C010
|
|
94
|
|
95 _0C012 CLR ,U+
|
|
96 RTS
|
|
97
|
|
98 _0C013 LDU #-1
|
|
99 RTS
|
|
100
|
|
101 _0C014 PSHS A
|
|
102 LDX $CC14
|
|
103 _0C015
|
|
104 LDA ,X+
|
|
105 CMPA #$0D
|
|
106 BEQ _0C016
|
|
107 CMPA ,S
|
|
108 BEQ _0C017
|
|
109 STA ,U+
|
|
110 BRA _0C015
|
|
111
|
|
112 _0C016 LEAX -1,X
|
|
113 _0C017 STX $CC14
|
|
114 PULS A
|
|
115 BRA _0C011
|
|
116
|
|
117 *
|
|
118 * run time support
|
|
119 *
|
|
120
|
|
121 FMS LDX 2,S
|
|
122 LDA 5,S
|
|
123 STA ,X
|
|
124 LDA 7,S
|
|
125 TST 59,X
|
|
126 BMI _FMS1
|
|
127 CMPA #$0A
|
|
128 BNE _FMS0
|
|
129 LDA #$0D
|
|
130 _FMS0 CMPA #$09
|
|
131 BNE _FMS1
|
|
132 LDA #$20
|
|
133 _FMS1 JSR $D406
|
|
134 BNE _FMSERR
|
|
135 TFR A,B
|
|
136 TST 59,X
|
|
137 BMI _FMS9
|
|
138 CMPB #$0D
|
|
139 BNE _FMS8
|
|
140 LDB #$0A
|
|
141 _FMS8 CMPB #$09
|
|
142 BNE _FMS9
|
|
143 LDB #$20
|
|
144 _FMS9 CLRA
|
|
145 RTS
|
|
146
|
|
147 _FMSERR LDD #-1
|
|
148 RTS
|
|
149
|
|
150 GETCH PSHS X,Y,U
|
|
151 JSR $CD15 get character
|
|
152 TFR A,B
|
|
153 ANDB #$7F
|
|
154 CMPB #26 control-Z ?
|
|
155 BNE _0G001
|
|
156 LDD #-1
|
|
157 PULS X,Y,U,PC
|
|
158
|
|
159 _0G001 CMPB #$0D
|
|
160 BNE _0G002
|
|
161 LDB #$0A
|
|
162 _0G002 CLRA
|
|
163 PULS X,Y,U,PC
|
|
164 *
|
|
165 PUTCH LDD 2,S
|
|
166 PSHS D,X,Y,U
|
|
167 TFR B,A
|
|
168 CMPA #$09
|
|
169 BNE _0P001
|
|
170 LDA #$20
|
|
171 _0P001 CMPA #$0A
|
|
172 BNE _0P002
|
|
173 JSR $CD24 put CR/LF
|
|
174 PULS D,X,Y,U,PC
|
|
175
|
|
176 _0P002 JSR $CD18 put character
|
|
177 PULS D,X,Y,U,PC
|
|
178 *
|
|
179 PUTCH2 LDD 2,S
|
|
180 PSHS D
|
|
181 LDA $CC22
|
|
182 PSHS A
|
|
183 LDA #$FF
|
|
184 STA $CC22
|
|
185 LDD 1,S
|
|
186 PSHS D
|
|
187 BSR PUTCH
|
|
188 LEAS 2,S
|
|
189 PULS A
|
|
190 STA $CC22
|
|
191 PULS D,PC
|
|
192 *
|
|
193 _00001 PSHS D,X,Y multiply
|
|
194
|
|
195 LDA ,S
|
|
196 LDB 3,S
|
|
197 MUL
|
|
198 STB 4,S
|
|
199
|
|
200 LDD 1,S
|
|
201 MUL
|
|
202 STB 5,S
|
|
203
|
|
204 LDA 1,S
|
|
205 LDB 3,S
|
|
206 MUL
|
|
207 ADDA 4,S
|
|
208 ADDA 5,S
|
|
209
|
|
210 LEAS 6,S
|
|
211 RTS
|
|
212 *
|
|
213 _00002 CLR ,-S signed divide
|
|
214
|
|
215 CMPX #0
|
|
216 BPL _02000
|
|
217
|
|
218 COM ,S
|
|
219
|
|
220 EXG D,X
|
|
221 LBSR _00020
|
|
222 EXG D,X
|
|
223
|
|
224 _02000 TSTA
|
|
225 BPL _02001
|
|
226
|
|
227 COM ,S
|
|
228
|
|
229 LBSR _00020
|
|
230
|
|
231 _02001 LBSR _00010
|
|
232 TFR X,D
|
|
233 TST ,S+
|
|
234 BPL _02002
|
|
235
|
|
236 LBSR _00020
|
|
237
|
|
238 _02002 RTS
|
|
239 *
|
|
240 _00003 LBSR _00010 unsigned divide
|
|
241 TFR X,D
|
|
242 RTS
|
|
243 *
|
|
244 _00004 CLR ,-S signed modulous
|
|
245
|
|
246 CMPX #0
|
|
247 BPL _04000
|
|
248
|
|
249 EXG D,X
|
|
250 BSR _00020
|
|
251 EXG D,X
|
|
252
|
|
253 _04000 TSTA
|
|
254 BPL _04001
|
|
255
|
|
256 COM ,S
|
|
257 BSR _00020
|
|
258
|
|
259 _04001 BSR _00010
|
|
260
|
|
261 TST ,S+
|
|
262 BPL _04002
|
|
263
|
|
264 BSR _00020
|
|
265
|
|
266 _04002 RTS
|
|
267 *
|
|
268 _00005 BSR _00010 unsigned modulous
|
|
269
|
|
270 RTS
|
|
271 *
|
|
272 _00006 CMPX #0 signed left shift
|
|
273 BMI _06001
|
|
274
|
|
275 _06000 BEQ _06009
|
|
276 LSLB
|
|
277 ROLA
|
|
278 LEAX -1,X
|
|
279 BRA _06000
|
|
280
|
|
281 _06001 BEQ _06009
|
|
282 ASRA
|
|
283 RORB
|
|
284 LEAX 1,X
|
|
285 BRA _06001
|
|
286
|
|
287 _06009 RTS
|
|
288 *
|
|
289 _00007 CMPX #0 unsined left shift
|
|
290 BMI _07001
|
|
291
|
|
292 _07000 BEQ _07009
|
|
293 LSLB
|
|
294 ROLA
|
|
295 LEAX -1,X
|
|
296 BRA _07000
|
|
297
|
|
298 _07001 BEQ _07009
|
|
299 LSRA
|
|
300 RORB
|
|
301 LEAX 1,X
|
|
302 BRA _07001
|
|
303
|
|
304 _07009 RTS
|
|
305 *
|
|
306 _00008 CMPX #0 sined right shift
|
|
307 BMI _08001
|
|
308
|
|
309 _08000 BEQ _08009
|
|
310 ASRA
|
|
311 RORB
|
|
312 LEAX -1,X
|
|
313 BRA _08000
|
|
314
|
|
315 _08001 BEQ _08009
|
|
316 LSLB
|
|
317 ROLA
|
|
318 LEAX 1,X
|
|
319 BRA _08001
|
|
320
|
|
321 _08009 RTS
|
|
322 *
|
|
323 _00009 CMPX #0 unsined right shift
|
|
324 BMI _09001
|
|
325
|
|
326 _09000 BEQ _09009
|
|
327 LSRA
|
|
328 RORB
|
|
329 LEAX -1,X
|
|
330 BRA _09000
|
|
331
|
|
332 _09001 BEQ _09009
|
|
333 LSLB
|
|
334 ROLA
|
|
335 LEAX 1,X
|
|
336 BRA _09001
|
|
337
|
|
338 _09009 RTS
|
|
339 *
|
|
340 _00020 NEGA negate D reg
|
|
341 NEGB
|
|
342 SBCA #0
|
|
343 RTS
|
|
344 *
|
|
345 _00010 PSHS D,X divide subroutine
|
|
346
|
|
347 CLRA
|
|
348 CLRB
|
|
349
|
|
350 LDX #17
|
|
351
|
|
352 _00011 SUBD 2,S
|
|
353 BCC _00012
|
|
354
|
|
355 ADDD 2,S
|
|
356
|
|
357 _00012 ROL 1,S
|
|
358 ROL ,S
|
|
359 ROLB
|
|
360 ROLA
|
|
361
|
|
362 LEAX -1,X
|
|
363 BNE _00011
|
|
364
|
|
365 RORA
|
|
366 RORB
|
|
367
|
|
368 COM 1,S
|
|
369 COM ,S
|
|
370 PULS X
|
|
371
|
|
372 LEAS 2,S
|
|
373 RTS
|
|
374 *
|
|
375 * micro-C user program
|
|
376 *
|
|
377 * OPT LIST
|
100
|
378 INCLUDE "c.out" include compilers output
|
99
|
379 * OPT NOL
|
|
380 *
|
|
381 *
|
|
382 *
|
|
383 _99999 EQU * global vars allocated here
|
|
384 *
|
|
385 END _00000
|
|
386
|