OSDN Git Service

line endings will now work for diff, etc.
[bif-6809/bif-6809.git] / cross_v / BIF4.ASM
1 00010 * Include file for BIF
2 00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)
3 00030 *
4 01000   FCC 'M*'
5 01010   FCB 2
6 01020   FCB MFORE
7 01030   FDB DO-CFAOFF
8 01040   FDB BIF+2
9 01050   FDB 0
10 01060   FDB MSLASH-CFAOFF
11 01070 MSTAR     LDD ,U  see fig-FORTH model
12 01080   EORA 2,U n bit
13 01090   PSHS D
14 01100   DOCOL
15 01110   FDB ABS
16 01120   FDB SWAP
17 01130   FDB ABS
18 01140   FDB USTAR
19 01150   FDB XMACH
20 01160   LDD ,S++
21 01170   LBMI DMINUS
22 01180   NEXT
23 01190 *
24 01200   FCC 'M/'
25 01210   FCB 2
26 01220   FCB MFORE
27 01230   FDB MSTAR-CFAOFF
28 01240   FDB BIF+2
29 01250   FDB 0
30 01260   FDB 0
31 01270 MSLASH    DOCOL   see fig-FORTH model
32 01280   FDB OVER
33 01290   FDB TOR signs: dividend
34 01300   FDB TOR & divisor
35 01310   FDB DABS
36 01320   FDB R divisor
37 01330   FDB ABS
38 01340   FDB USLASH
39 01350   FDB RFROM divisor
40 01360   FDB R
41 01370   FDB XOR quotient sign
42 01380   FDB CHS
43 01390   FDB SWAP remainder
44 01400   FDB RFROM dividend sign
45 01410   FDB CHS
46 01420   FDB SWAP
47 01430   FDB SEMIS
48 01500 *
49 01510   FCC '*'
50 01520   FCB 1
51 01530   FCB MFORE
52 01540   FDB MSLASH-CFAOFF
53 01550   FDB BIF+2
54 01560   FDB PFIND-CFAOFF
55 01570   FDB SSMOD-CFAOFF
56 01580 STAR      DOCOL   see fig-FORTH model
57 01590   FDB USTAR
58 01600   FDB DROP
59 01610   FDB SEMIS
60 01700 *
61 01710   FCC '/MOD'
62 01720   FCB 4
63 01730   FCB MFORE
64 01740   FDB STAR-CFAOFF
65 01750   FDB BIF+2
66 01760   FDB 0
67 01770   FDB 0
68 01780 SLAMOD    LDD ,U
69 01790   PSHU D
70 01800   LDD #-1
71 01810   TST 4,U sign extend
72 01820   BMI *+5
73 01830   ADDD #1
74 01840   STD 2,U
75 01850   LBRA MSLASH
76 01900 *
77 01910   FCC '/'
78 01920   FCB 1
79 01930   FCB MFORE
80 01940   FDB SLAMOD-CFAOFF
81 01950   FDB BIF+2
82 01960   FDB NEXSCR-CFAOFF
83 01970   FDB ADD1-CFAOFF
84 01980 SLASH     DOCOL   see fig-FORTH model
85 01990   FDB SLAMOD
86 02000   FDB SWAP
87 02010   FDB DROP
88 02020   FDB SEMIS
89 02100 *
90 02110   FCC 'MOD'
91 02120   FCB 3
92 02130   FCB MFORE
93 02140   FDB SLASH-CFAOFF
94 02150   FDB BIF+2
95 02160   FDB 0
96 02170   FDB 0
97 02180 MOD       DOCOL   see fig-FORTH model
98 02190   FDB SLAMOD
99 02210   FDB DROP
100 02220   FDB SEMIS
101 02300 *
102 02310   FCC '*/MOD'
103 02320   FCB 5
104 02330   FCB MFORE
105 02340   FDB MOD-CFAOFF
106 02350   FDB BIF+2
107 02360   FDB STARSL-CFAOFF
108 02370   FDB 0
109 02380 SSMOD     DOCOL   see fig-FORTH model
110 02390   FDB TOR
111 02400   FDB MSTAR
112 02410   FDB RFROM
113 02420   FDB MSLASH
114 02430   FDB SEMIS
115 02500 *
116 02510   FCC '*/'
117 02520   FCB 2
118 02530   FCB MFORE
119 02540   FDB SSMOD-CFAOFF
120 02550   FDB BIF+2
121 02560   FDB 0
122 02570   FDB 0
123 02580 STARSL    DOCOL   see fig-FORTH model
124 02590   FDB SSMOD
125 02600   FDB SWAP
126 02610   FDB DROP
127 02630   FDB SEMIS
128 02700 *
129 02710   FCC 'M/MOD'
130 02720   FCB 5
131 02730   FCB MFORE
132 02740   FDB STARSL-CFAOFF
133 02750   FDB BIF+2
134 02760   FDB MSTAR-CFAOFF
135 02770   FDB MESS-CFAOFF
136 02780 MSMOD     DOCOL   see fig-FORTH model
137 02790   FDB TOR
138 02800   FDB ZERO
139 02810   FDB R
140 02820   FDB USLASH ms word
141 02830   FDB RFROM
142 02840   FDB SWAP
143 02850   FDB TOR save high q
144 02860   FDB USLASH ls word
145 02870   FDB RFROM double q
146 02880   FDB SEMIS
147 02900 *
148 02910   FCC '+BUF'
149 02920   FCB 4
150 02930   FCB MFORE
151 02940   FDB MSMOD-CFAOFF
152 02950   FDB BIF+2
153 02960   FDB 0
154 02970   FDB 0
155 02980 ADDBUF    LDX <UP
156 02990   LDD BPBUF+2
157 02995   ADDD #4
158 03000   ADDD ,U
159 03010   CMPD ULIMIT,X
160 03020   BLO ADDBN
161 03025   LDD UFIRST,X
162 03030 ADDBN     STD ,U
163 03040   CMPD UPREV,X
164 03050   BEQ *+7
165 03060   LDD #-1
166 03065   BRA *+5
167 03070   LDD #0
168 03080   PSHU D
169 03090   NEXT
170 03100 *
171 03110   FCC 'UPDATE'
172 03120   FCB 6
173 03130   FCB MFORE
174 03140   FDB ADDBUF-CFAOFF
175 03150   FDB BIF+2
176 03160   FDB UNTIL-CFAOFF
177 03170   FDB USER-CFAOFF
178 03180 UPDATE    LDX <UP
179 03190   LDD [UPREV,X]
180 03200   ORA #$80
181 03210   STD [UPREV,X]
182 03220   NEXT
183 03300 *
184 03310   FCC 'EMPTY-BUFFERS'
185 03320   FCB 13
186 03330   FCB MFORE
187 03340   FDB UPDATE-CFAOFF
188 03350   FDB BIF+2
189 03360   FDB 0
190 03370   FDB 0
191 03380 EMTBUF    LDX <UP
192 03390   LDD ULIMIT,X
193 03395   SUBD #1 catch odd
194 03400   PSHS D,Y
195 03410   LDX UFIRST,X
196 03420   LDY #0
197 03430   LDD BPBUF+2
198 03440 EMTBL     CMPX ,S
199 03445   BHS EMTBE
200 03450   STY ,X++ update bit
201 03455   LEAX D,X
202 03460   CMPX ,S
203 03465   BHS EMTBE
204 03470   STY ,X++ term NUL
205 03475   BRA EMTBL
206 03480 EMTBE     PULS D,Y
207 03490   NEXT
208 03500 *
209 03510   FCC 'DRIVE-OFFSET'
210 03520   FCB 12
211 03530   FCB MFORE
212 03540   FDB EMTBUF-CFAOFF
213 03550   FDB BIF+2
214 03560   FDB DRIVE-CFAOFF
215 03570   FDB DROOT-CFAOFF
216 03580 DROFFS    DO1ARR
217 03590   FDB 0 low
218 03600   FDB 4 width
219 03610   FCB 2 element size
220 03620   FDB 18*35 drive 0
221 03630   FDB 18*35
222 03640   FDB $8000 8 Meg max
223 03650   FDB $8000
224 03660   FDB $8000 never a drive 5!
225 03700 *
226 03710   FCC 'DRIVE'
227 03720   FCB 5
228 03730   FCB MFORE
229 03740   FDB DROFFS-CFAOFF
230 03750   FDB BIF+2
231 03760   FDB 0
232 03770   FDB 0
233 03780 DRIVE     LDX #DROFFS+7
234 03800   LDD #0
235 03810 DRIVL     ADDD ,X++
236 03820   BMI DRIVX table end?
237 03830   DEC 1,U
238 03840   BPL DRIVL
239 03850   SUBD -2,X back one
240 03860 DRIVX     LDX <UP
241 03870   STD UOFFS,X
242 03890   LEAU 2,U
243 03900   NEXT
244 04000 *
245 04000   FCC 'R/W'
246 04010   FCB 3
247 04020   FCB MFORE
248 04030   FDB DRIVE-CFAOFF
249 04040   FDB BIF+2
250 04050   FDB 0
251 04060   FDB 0
252 04070 RW        PSHS Y,U,DP
253 04080   LDY $C006 control table
254 04090   LDX #DROFFS+7
255 04100   LDD 2,U
256 04110 RWD       SUBD ,X++ sectors
257 04120   BHS RWD
258 04130   BVC RWR table end?
259 04140   LDD #6
260 04150   PSHU D
261 04160   JMP ERROR
262 04170 RWR       ADDD ,--X back one
263 04175   PSHS X
264 04180   PSHU D
265 04190   LDD #18 sectors/track
266 04200   PSHU D
267 04210   DOCOL
268 04220   FDB SLAMOD
269 04230   FDB XMACH
270 04240   PULU D
271 04250   STB 2,Y track
272 04260   PULU D
273 04265   INCB
274 04270   STB 3,Y sector
275 04280   PULS D table entry
276 04290   SUBD #DROFFS+7
277 04300   ASRB drive #
278 04310   STB 1,Y
279 04320   LDD 4,U buffer
280 04330   STD 4,Y
281 04340   LDB #2 coco READ
282 04350   LDX ,U 0?
283 04360   BNE *+3
284 04370   INCB coco WRITE
285 04380   STB ,Y op code
286 04384   CLRA
287 04386   TFR A,DP
288 04390   JSR [$C004]     ROM handles timeout
289 04400   PULS Y,U,DP     if IRQ enabled
290 04420   LEAU 6,U
291 04430   LDX $C006
292 04440   LDB 6,X coco status
293 04450   BEQ RWE
294 04460   LDX <UP
295 04470   LDD #0 no disc
296 04480   STD UWARN,X
297 04490   LDD #8
298 04500   PSHU D
299 04510   JMP ERROR
300 04520 RWE       NEXT
301 05000 *