source: vital-to8-sdk/mc09/src/c.txt

Last change on this file was 1, checked in by svn, 5 years ago

Import initial

File size: 3.9 KB
Line 
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
53exit    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
121FMS     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       
150GETCH   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*
165PUTCH   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*
179PUTCH2  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
378        LIB     c.out           include compilers output
379*       OPT     NOL
380*
381*
382*
383_99999  EQU     *               global vars allocated here
384*
385        END     _00000
386
Note: See TracBrowser for help on using the repository browser.