Mercurial > hg > Members > kono > os9 > sbc09
annotate os9/mc09/crtos9.asm @ 133:2562c18c904e
malloc for mc2 wrong...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 06 Jan 2019 22:38:04 +0900 |
parents | 36000611014b |
children |
rev | line source |
---|---|
99 | 1 |
109 | 2 * * micro-C driver under FLEX * * 12-Dec-81 M.Ohta,H.Tezuka |
111
c4e909f21b25
micro c,j self compiled on os9 level2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
109
diff
changeset
|
3 * 12-Dec-2018 for OS-9 S.Kono * |
99 | 4 |
101 | 5 * |
6 * micro-C user program | |
7 * | |
103
844305752064
no compile errors on mc09
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
102
diff
changeset
|
8 _tylg set Prgrm+Objct |
844305752064
no compile errors on mc09
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
102
diff
changeset
|
9 _atrv set ReEnt+rev |
844305752064
no compile errors on mc09
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
102
diff
changeset
|
10 _rev set $00 |
844305752064
no compile errors on mc09
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
102
diff
changeset
|
11 _edition set 5 |
844305752064
no compile errors on mc09
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
102
diff
changeset
|
12 ifp1 |
844305752064
no compile errors on mc09
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
102
diff
changeset
|
13 use defsfile |
844305752064
no compile errors on mc09
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
102
diff
changeset
|
14 endc |
844305752064
no compile errors on mc09
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
102
diff
changeset
|
15 |
844305752064
no compile errors on mc09
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
102
diff
changeset
|
16 |
101 | 17 * OPT LIST |
18 INCLUDE "c.out" include compilers output | |
19 * OPT NOL | |
99 | 20 |
101 | 21 * x arguments pointer |
22 * u global variable area | |
23 _start | |
24 _00000 | |
25 LEAS -256,S ALLOCATE WORK AREA | |
104 | 26 leay _name,pcr |
27 pshs x,y POINT TO CONTENT OF ARGUMENT VECTOR | |
101 | 28 leay ,u |
29 PSHS Y | |
105 | 30 |
31 * allocate memory and change stack | |
32 * try to allocate maximum memory if not specified | |
33 ifndef __MEMSIZ | |
34 LDD #(1024*48) | |
35 else | |
36 LDD #__MEMSIZ | |
37 endif | |
38 pshs d | |
39 __0C004 | |
40 os9 F$Mem | |
41 bcc __0C005 | |
42 ldd ,s | |
43 subd #$1000 | |
132 | 44 lblo exit can't get any memroy |
105 | 45 std ,s |
46 bra __0C004 | |
47 __0C005 | |
48 * y is heap upper bound | |
111
c4e909f21b25
micro c,j self compiled on os9 level2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
109
diff
changeset
|
49 * copy arg string |
c4e909f21b25
micro c,j self compiled on os9 level2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
109
diff
changeset
|
50 ldx 4,s |
c4e909f21b25
micro c,j self compiled on os9 level2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
109
diff
changeset
|
51 __0C007 tst ,x+ |
c4e909f21b25
micro c,j self compiled on os9 level2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
109
diff
changeset
|
52 bne __0C007 |
c4e909f21b25
micro c,j self compiled on os9 level2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
109
diff
changeset
|
53 clr ,-y |
c4e909f21b25
micro c,j self compiled on os9 level2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
109
diff
changeset
|
54 __0C008 lda ,-x |
c4e909f21b25
micro c,j self compiled on os9 level2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
109
diff
changeset
|
55 sta ,-y |
c4e909f21b25
micro c,j self compiled on os9 level2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
109
diff
changeset
|
56 cmpx 4,s |
c4e909f21b25
micro c,j self compiled on os9 level2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
109
diff
changeset
|
57 bne __0C008 |
c4e909f21b25
micro c,j self compiled on os9 level2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
109
diff
changeset
|
58 sty 4,s |
c4e909f21b25
micro c,j self compiled on os9 level2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
109
diff
changeset
|
59 leax ,y |
105 | 60 * copy saved arg into new stack |
61 * and change the stack | |
62 ldy 2,s | |
63 ldd 4,s | |
64 std ,--x | |
65 ldd 6,s | |
66 std ,--x | |
67 leas ,x | |
102 | 68 * clear globals on Y |
105 | 69 LDD #_GLOBALS |
70 _0C002 CLR D,Y | |
71 subd #1 | |
72 BNE _0C002 | |
73 _0C003 | |
109 | 74 tfr y,d |
75 addd #_GLOBALS | |
76 std heapp,y | |
99 | 77 LBSR _INITIALIZE call initializer |
78 LBSR _main | |
132 | 79 * exit clrb |
101 | 80 os9 F$Exit |
99 | 81 |
82 | |
83 * | |
84 * run time support | |
85 * | |
86 | |
87 * | |
88 _00001 PSHS D,X,Y multiply | |
89 | |
90 LDA ,S | |
91 LDB 3,S | |
92 MUL | |
93 STB 4,S | |
94 | |
95 LDD 1,S | |
96 MUL | |
97 STB 5,S | |
98 | |
99 LDA 1,S | |
100 LDB 3,S | |
101 MUL | |
102 ADDA 4,S | |
103 ADDA 5,S | |
104 | |
105 LEAS 6,S | |
105 | 106 initheap |
99 | 107 RTS |
108 * | |
109 _00002 CLR ,-S signed divide | |
110 | |
111 CMPX #0 | |
112 BPL _02000 | |
113 | |
114 COM ,S | |
115 | |
116 EXG D,X | |
117 LBSR _00020 | |
118 EXG D,X | |
119 | |
120 _02000 TSTA | |
121 BPL _02001 | |
122 | |
123 COM ,S | |
124 | |
125 LBSR _00020 | |
126 | |
127 _02001 LBSR _00010 | |
128 TFR X,D | |
129 TST ,S+ | |
130 BPL _02002 | |
131 | |
132 LBSR _00020 | |
133 | |
134 _02002 RTS | |
135 * | |
136 _00003 LBSR _00010 unsigned divide | |
137 TFR X,D | |
138 RTS | |
139 * | |
140 _00004 CLR ,-S signed modulous | |
141 | |
142 CMPX #0 | |
143 BPL _04000 | |
144 | |
145 EXG D,X | |
146 BSR _00020 | |
147 EXG D,X | |
148 | |
149 _04000 TSTA | |
150 BPL _04001 | |
151 | |
152 COM ,S | |
153 BSR _00020 | |
154 | |
155 _04001 BSR _00010 | |
156 | |
157 TST ,S+ | |
158 BPL _04002 | |
159 | |
160 BSR _00020 | |
161 | |
162 _04002 RTS | |
163 * | |
164 _00005 BSR _00010 unsigned modulous | |
165 | |
166 RTS | |
167 * | |
168 _00006 CMPX #0 signed left shift | |
169 BMI _06001 | |
170 | |
171 _06000 BEQ _06009 | |
172 LSLB | |
173 ROLA | |
174 LEAX -1,X | |
175 BRA _06000 | |
176 | |
177 _06001 BEQ _06009 | |
178 ASRA | |
179 RORB | |
180 LEAX 1,X | |
181 BRA _06001 | |
182 | |
183 _06009 RTS | |
184 * | |
185 _00007 CMPX #0 unsined left shift | |
186 BMI _07001 | |
187 | |
188 _07000 BEQ _07009 | |
189 LSLB | |
190 ROLA | |
191 LEAX -1,X | |
192 BRA _07000 | |
193 | |
194 _07001 BEQ _07009 | |
195 LSRA | |
196 RORB | |
197 LEAX 1,X | |
198 BRA _07001 | |
199 | |
200 _07009 RTS | |
201 * | |
202 _00008 CMPX #0 sined right shift | |
203 BMI _08001 | |
204 | |
205 _08000 BEQ _08009 | |
206 ASRA | |
207 RORB | |
208 LEAX -1,X | |
209 BRA _08000 | |
210 | |
211 _08001 BEQ _08009 | |
212 LSLB | |
213 ROLA | |
214 LEAX 1,X | |
215 BRA _08001 | |
216 | |
217 _08009 RTS | |
218 * | |
219 _00009 CMPX #0 unsined right shift | |
220 BMI _09001 | |
221 | |
222 _09000 BEQ _09009 | |
223 LSRA | |
224 RORB | |
225 LEAX -1,X | |
226 BRA _09000 | |
227 | |
228 _09001 BEQ _09009 | |
229 LSLB | |
230 ROLA | |
231 LEAX 1,X | |
232 BRA _09001 | |
233 | |
234 _09009 RTS | |
235 * | |
236 _00020 NEGA negate D reg | |
237 NEGB | |
238 SBCA #0 | |
239 RTS | |
240 * | |
241 _00010 PSHS D,X divide subroutine | |
242 | |
243 CLRA | |
244 CLRB | |
245 | |
246 LDX #17 | |
247 | |
248 _00011 SUBD 2,S | |
249 BCC _00012 | |
250 | |
251 ADDD 2,S | |
252 | |
253 _00012 ROL 1,S | |
254 ROL ,S | |
255 ROLB | |
256 ROLA | |
257 | |
258 LEAX -1,X | |
259 BNE _00011 | |
260 | |
261 RORA | |
262 RORB | |
263 | |
264 COM 1,S | |
265 COM ,S | |
266 PULS X | |
267 | |
268 LEAS 2,S | |
269 RTS | |
270 * | |
271 * | |
272 * | |
273 * | |
104 | 274 emod |
101 | 275 _eom |