Mercurial > hg > Members > kono > nitros9-code
annotate 3rdparty/drivers/disto/cc3disk_sc2_slp.asm @ 1181:d05758ec0de9
Improved source slightly
author | boisy |
---|---|
date | Tue, 27 May 2003 18:24:06 +0000 |
parents | ecc14d6a24af |
children |
rev | line source |
---|---|
398 | 1 ******************************************************************** |
2 * CC3Disk - Disto No Halt Super Controller II disk driver | |
3 * | |
400
15d9dbd6a0e4
Added IRQ and sleep versions of Disto's no halt floppy controller's drvier.
tlindner
parents:
399
diff
changeset
|
4 * This driver their 'sleep' driver. It is a no halt (multitasking) |
15d9dbd6a0e4
Added IRQ and sleep versions of Disto's no halt floppy controller's drvier.
tlindner
parents:
399
diff
changeset
|
5 * disk driver, but it does not use interrupts. Thus it is safe to use |
15d9dbd6a0e4
Added IRQ and sleep versions of Disto's no halt floppy controller's drvier.
tlindner
parents:
399
diff
changeset
|
6 * this driver with other hardware uses interrupts. |
15d9dbd6a0e4
Added IRQ and sleep versions of Disto's no halt floppy controller's drvier.
tlindner
parents:
399
diff
changeset
|
7 * |
398 | 8 * $Id$ |
9 * | |
10 * Ed. Comments Who YY/MM/DD | |
11 * ------------------------------------------------------------------ | |
400
15d9dbd6a0e4
Added IRQ and sleep versions of Disto's no halt floppy controller's drvier.
tlindner
parents:
399
diff
changeset
|
12 * 02 Fist disassembled tjl 02/08/27 |
398 | 13 |
14 nam CC3Disk | |
15 ttl os9 device driver | |
16 | |
17 * Disassembled 02/08/27 11:42:59 by Disasm v1.6 (C) 1988 by RML | |
399 | 18 |
19 * Disto's Super Controller II supports two locations for its | |
20 * registers: $FF74 and $FF58 | |
21 | |
22 nh_base equ $FF74 | |
23 nh_stat equ nh_base | |
24 nh_data equ nh_base+2 | |
25 | |
398 | 26 ifp1 |
27 use defsfile | |
28 endc | |
29 tylg set Drivr+Objct | |
30 atrv set ReEnt+rev | |
31 rev set $02 | |
32 mod eom,name,tylg,atrv,start,size | |
33 u0000 rmb 1 | |
34 u0001 rmb 1 | |
35 u0002 rmb 1 | |
36 u0003 rmb 1 | |
37 u0004 rmb 1 | |
38 u0005 rmb 2 | |
39 u0007 rmb 1 | |
40 u0008 rmb 2 | |
41 u000A rmb 4 | |
42 u000E rmb 1 | |
43 u000F rmb 1 | |
44 u0010 rmb 2 | |
45 u0012 rmb 1 | |
46 u0013 rmb 31 | |
47 u0032 rmb 24 | |
48 u004A rmb 6 | |
49 u0050 rmb 47 | |
50 u007F rmb 11 | |
51 u008A rmb 28 | |
52 u00A6 rmb 1 | |
53 u00A7 rmb 10 | |
54 u00B1 rmb 13 | |
55 size equ . | |
56 fcb $FF | |
57 name equ * | |
58 fcs /CC3Disk/ | |
59 fcb $A2 " | |
60 start equ * | |
61 lbra L003C | |
62 lbra L0084 | |
63 lbra L010E | |
64 lbra L0081 | |
65 lbra L030F | |
66 leay >u00B1,u | |
67 ldx #$0000 | |
68 os9 F$VIRQ | |
69 os9 F$IRQ | |
70 clrb | |
71 stb >$FF40 | |
72 stb <u0032 | |
73 rts | |
74 L0039 fcb $00 | |
75 fcb $01 | |
76 fcb $09 | |
399 | 77 L003C clr >nh_data |
398 | 78 clr <u0032 |
79 ldx #$FF48 | |
80 lda #$D0 | |
81 sta ,x | |
82 lbsr L02D9 | |
83 lda ,x | |
84 lda #$FF | |
85 sta >u00A7,u | |
86 ldb #$04 | |
87 leax u000F,u | |
88 L0057 sta ,x | |
89 sta <$15,x | |
90 leax <$26,x | |
91 decb | |
92 bne L0057 | |
93 leax >L01C0,pcr | |
399 | 94 stx <D.NMI |
398 | 95 pshs u |
96 leau >u00A7,u | |
97 leay u000E,u | |
98 tfr y,d | |
99 leay >L0428,pcr | |
100 leax >L0039,pcr | |
101 os9 F$IRQ | |
102 puls u | |
103 bcs L0082 | |
104 L0081 clrb | |
105 L0082 rts | |
106 L0083 rts | |
107 L0084 lbsr L01E7 | |
108 clr u0003,u | |
109 ldd <u0010,u | |
110 bne L00D8 | |
111 bsr L00D8 | |
112 bcs L0083 | |
113 lda <$23,y | |
114 bita #$40 | |
115 lbne L043B | |
116 ldx $08,y | |
117 pshs y,x | |
118 ldy <$1E,y | |
119 ldb #$14 | |
120 L00A5 lda b,x | |
121 sta b,y | |
122 decb | |
123 bpl L00A5 | |
124 lda <$10,y | |
125 ldy $02,s | |
126 ldb <$24,y | |
127 bita #$02 | |
128 beq L00BD | |
129 bitb #$01 | |
130 beq L00D3 | |
131 L00BD bita #$04 | |
132 beq L00C5 | |
133 bitb #$02 | |
134 beq L00D3 | |
135 L00C5 bita #$01 | |
136 beq L00D0 | |
137 lda <$27,y | |
138 suba #$02 | |
139 bcs L00D3 | |
140 L00D0 clrb | |
141 puls pc,y,x | |
142 L00D3 comb | |
143 ldb #$F9 | |
144 puls pc,y,x | |
145 L00D8 lbsr L0257 | |
146 bcs L0083 | |
147 ldb #$80 | |
148 lda #$07 | |
149 lbsr L016C | |
150 bcc L00F6 | |
151 ldb >$FF48 | |
399 | 152 clr >nh_data |
398 | 153 lda u0001,u |
154 ora #$08 | |
155 sta >$FF40 | |
156 lbra L01E3 | |
157 L00F6 ldx $08,y | |
158 ldb #$80 | |
159 tst u0003,u | |
160 bne L010B | |
161 pshs b | |
399 | 162 L0100 ldd >nh_stat |
398 | 163 std ,x++ |
164 dec ,s | |
165 bne L0100 | |
166 puls b | |
167 L010B andcc #$FE | |
168 rts | |
169 L010E lbsr L01E7 | |
170 L0111 bsr L0120 | |
171 bcs L011F | |
172 tst <$28,y | |
173 bne L011E | |
174 bsr L0144 | |
175 bcs L0111 | |
176 L011E clrb | |
177 L011F rts | |
178 L0120 lbsr L0257 | |
179 bcs L011F | |
180 ldx $08,y | |
181 lda #$04 | |
399 | 182 sta >nh_data |
398 | 183 ldb #$80 |
184 pshs b | |
185 L0130 ldd ,x++ | |
399 | 186 std >nh_stat |
398 | 187 dec ,s |
188 bne L0130 | |
189 puls b | |
190 ldb #$A0 | |
191 lda #$06 | |
192 bsr L016C | |
193 lbra L01C4 | |
194 L0144 lda u0004,u | |
195 pshs a | |
196 clr u0004,u | |
197 lda #$FF | |
198 sta u0003,u | |
199 lbsr L00D8 | |
200 bcs L0167 | |
201 pshs b | |
399 | 202 L0155 ldd >nh_stat |
398 | 203 cmpd ,x++ |
204 bne L0163 | |
205 dec ,s | |
206 bne L0155 | |
207 bra L0165 | |
208 L0163 orcc #$01 | |
209 L0165 puls b | |
210 L0167 puls a | |
211 sta u0004,u | |
212 rts | |
213 L016C std u0008,u | |
214 L016E ldd u0008,u | |
215 bsr L018D | |
216 bcs L0179 | |
217 lbsr L01C4 | |
218 bcc L018C | |
219 L0179 lda >$FF48 | |
220 bita #$40 | |
221 bne L018B | |
222 lsr u0004,u | |
223 beq L018B | |
224 bcc L016E | |
225 lbsr L02E5 | |
226 bra L016E | |
227 L018B coma | |
228 L018C rts | |
229 L018D stb >$FF48 | |
399 | 230 sta >nh_data |
398 | 231 ldb #$28 |
232 orb u0001,u | |
233 stb >$FF40 | |
234 ldb #$04 | |
235 lda #$FF | |
236 pshs x,a | |
237 L01A0 ldx #$0001 | |
238 lbsr L03C3 | |
239 dec ,s | |
240 beq L01B5 | |
399 | 241 tst >nh_data |
398 | 242 bmi L01A0 |
399 | 243 stb >nh_data |
398 | 244 clrb |
245 puls pc,x,a | |
399 | 246 L01B5 stb >nh_data |
398 | 247 lda #$D0 |
248 sta >$FF48 | |
249 comb | |
250 puls pc,x,a | |
251 L01C0 leas $0C,s | |
252 puls y,cc | |
253 L01C4 ldb >$FF48 | |
399 | 254 clr >nh_data |
398 | 255 andb #$F8 |
256 beq L01DC | |
257 pshs x | |
258 leax <L01DD,pcr | |
259 L01D3 leax $01,x | |
260 rolb | |
261 bcc L01D3 | |
262 ldb ,x | |
263 puls pc,x | |
264 L01DC clrb | |
265 L01DD rts | |
266 fcb $F6 | |
267 fcb $F2 | |
268 fcb $F5 | |
269 fcb $F7 | |
270 fcb $F3 | |
399 | 271 L01E3 comb |
272 ldb #$F4 | |
273 rts | |
398 | 274 L01E7 leau >u00A7,u |
275 clr u0007,u | |
276 lda #$91 | |
277 sta u0004,u | |
278 tstb | |
279 bne L0203 | |
280 tfr x,d | |
281 std <u0010,u | |
282 beq L0225 | |
283 ldx <$1E,y | |
284 cmpd $01,x | |
285 bcs L0209 | |
286 L0203 comb | |
287 ldb #$F1 | |
288 leas $02,s | |
289 rts | |
290 L0209 clr ,-s | |
291 bra L020F | |
292 L020D inc ,s | |
293 L020F subd <$11,x | |
294 bcc L020D | |
295 addd <$11,x | |
296 lda <$10,x | |
297 lsra | |
298 bcc L0223 | |
299 lsr ,s | |
300 bcc L0223 | |
301 inc u0007,u | |
302 L0223 puls a | |
303 L0225 std u0005,u | |
304 clrb | |
305 rts | |
306 L0229 clr u0002,u | |
307 lda <$21,y | |
308 cmpa #$04 | |
309 bcs L0236 | |
310 comb | |
311 ldb #$F0 | |
312 rts | |
313 L0236 pshs x,b,a | |
314 cmpa ,u | |
315 beq L023E | |
316 com u0002,u | |
317 L023E sta ,u | |
318 leax <L024C,pcr | |
319 ldb a,x | |
320 stb u0001,u | |
321 lbsr L03DD | |
322 puls pc,x,b,a | |
678 | 323 L024C fcb $01,$02,$04,$40 |
398 | 324 L0250 pshs a |
325 ldb <$15,x | |
326 bra L028E | |
327 L0257 lbsr L0229 | |
328 bcs L02B1 | |
329 ldd u0005,u | |
330 pshs a | |
331 lda u0007,u | |
332 beq L026A | |
333 lda u0001,u | |
334 ora #$40 | |
335 sta u0001,u | |
336 L026A lda <$23,y | |
337 bita #$02 | |
338 bne L0272 | |
339 incb | |
340 L0272 stb >$FF4A | |
341 ldx <$1E,y | |
342 ldb <$15,x | |
343 lda <$10,x | |
344 lsra | |
345 eora <$24,y | |
346 anda #$02 | |
347 pshs a | |
348 lda $01,s | |
349 tst ,s+ | |
350 beq L028E | |
351 lsla | |
352 lslb | |
353 L028E stb >$FF49 | |
354 tst u0002,u | |
355 bne L029C | |
356 ldb ,s | |
357 cmpb <$15,x | |
358 beq L02A8 | |
359 L029C sta >$FF4B | |
360 ldb <$22,y | |
361 andb #$03 | |
362 eorb #$1B | |
363 bsr L02B2 | |
364 L02A8 puls a | |
365 sta <$15,x | |
366 sta >$FF49 | |
367 clrb | |
368 L02B1 rts | |
369 L02B2 bsr L02D7 | |
370 L02B4 ldb >$FF48 | |
371 bitb #$01 | |
372 beq L02D9 | |
373 ldd #$00F0 | |
374 std u000A,u | |
375 pshs x | |
376 ldx #$0001 | |
377 lbsr L03C3 | |
378 puls x | |
379 bra L02B4 | |
380 L02CC lda #$08 | |
381 ora u0001,u | |
382 sta >$FF40 | |
383 stb >$FF48 | |
384 rts | |
385 L02D7 bsr L02CC | |
386 L02D9 clr <u0012,u | |
387 inc <u0012,u | |
388 L02DF rol <u0012,u | |
389 bpl L02DF | |
390 rts | |
391 L02E5 pshs x,b | |
392 lbsr L0229 | |
393 bcs L030D | |
394 ldx <$1E,y | |
395 clr <$15,x | |
396 lda #$04 | |
397 L02F4 ldb <$22,y | |
398 andb #$03 | |
399 eorb #$4B | |
400 pshs a | |
401 bsr L02B2 | |
402 puls a | |
403 deca | |
404 bne L02F4 | |
405 ldb <$22,y | |
406 andb #$03 | |
407 eorb #$0B | |
408 bsr L02B2 | |
409 L030D puls pc,x,b | |
410 L030F leau >u00A7,u | |
411 ldx $06,y | |
412 ldb $02,x | |
413 cmpb #$04 | |
414 beq L0323 | |
415 cmpb #$03 | |
416 beq L02E5 | |
417 comb | |
418 ldb #$D0 | |
419 rts | |
420 L0323 pshs u,y | |
421 ldd #$1A00 | |
422 os9 F$SRqMem | |
423 lbcs L0381 | |
424 ldx $02,s | |
425 stu <$13,x | |
426 ldx <u0050 | |
427 lda $06,x | |
428 ldb <L00D0 | |
429 ldy ,s | |
430 ldx $06,y | |
431 ldx $04,x | |
432 ldy #$1A00 | |
433 os9 F$Move | |
434 bcs L0372 | |
435 puls u,y | |
436 pshs u,y | |
437 lbsr L0229 | |
438 bcs L0372 | |
439 ldx $06,y | |
440 ldb $07,x | |
441 bitb #$01 | |
442 beq L0363 | |
443 lda u0001,u | |
444 ora #$40 | |
445 sta u0001,u | |
446 sta u0007,u | |
447 L0363 lda $09,x | |
448 ldx <$1E,y | |
449 lbsr L0250 | |
450 bcs L0372 | |
451 ldx <u0013,u | |
452 bsr L0383 | |
453 L0372 ldu $02,s | |
454 pshs b,cc | |
455 ldu <u0013,u | |
456 ldd #$1A00 | |
457 os9 F$SRtMem | |
458 puls b,cc | |
459 L0381 puls pc,u,y | |
460 L0383 pshs y,cc | |
461 orcc #$50 | |
462 ldb #$F0 | |
463 stb >$FF48 | |
464 ldy #$FFFF | |
465 ldb #$28 | |
466 orb u0001,u | |
467 stb >$FF40 | |
468 orb #$A8 | |
469 lda #$02 | |
470 lbsr L02D9 | |
471 L039E bita >$FF48 | |
472 bne L03B9 | |
473 leay -$01,y | |
474 bne L039E | |
475 lda u0001,u | |
476 ora #$08 | |
477 sta >$FF40 | |
478 lda #$D0 | |
479 sta >$FF48 | |
480 puls y,cc | |
481 comb | |
482 ldb #$F5 | |
483 rts | |
484 L03B9 lda ,x+ | |
485 sta >$FF4B | |
486 stb >$FF40 | |
487 bra L03B9 | |
488 L03C3 pshs b,a | |
489 ldd <u0050 | |
490 cmpd <u004A | |
491 puls b,a | |
492 beq L03D2 | |
493 os9 F$Sleep | |
494 rts | |
495 L03D2 ldx #$A000 | |
496 L03D5 nop | |
497 nop | |
498 nop | |
499 leax -$01,x | |
500 bne L03D5 | |
501 rts | |
502 L03DD pshs y,x,b,a | |
503 ldd #$00F0 | |
504 std u000A,u | |
505 lda u0001,u | |
506 ora #$08 | |
507 sta >$FF40 | |
508 ldx #$0028 | |
509 lda <u0032 | |
510 bmi L040A | |
511 beq L0408 | |
512 tst u0002,u | |
513 beq L040C | |
514 lda <$23,y | |
515 bita #$10 | |
516 beq L040C | |
517 bsr L03C3 | |
518 ldd #$00F0 | |
519 std u000A,u | |
520 bra L040C | |
521 L0408 bsr L03C3 | |
522 L040A bsr L040F | |
523 L040C clrb | |
524 puls pc,y,x,b,a | |
525 L040F lda #$01 | |
526 sta <u0032 | |
527 ldx #$0001 | |
528 leay u000A,u | |
529 clr $04,y | |
530 ldd #$00F0 | |
531 os9 F$VIRQ | |
532 bcc L0426 | |
533 lda #$80 | |
534 sta <u0032 | |
535 L0426 clra | |
536 rts | |
537 L0428 pshs a | |
538 lda <u008A | |
539 beq L0432 | |
540 bsr L040F | |
541 bra L0439 | |
542 L0432 sta >$FF40 | |
543 clr u000E,u | |
544 clr <u0032 | |
545 L0439 puls pc,a | |
546 L043B ldx <$1E,y | |
547 ldb #$14 | |
548 L0440 clr b,x | |
549 decb | |
550 bpl L0440 | |
551 ldb <$26,y | |
552 lda <$27,y | |
553 mul | |
554 subd #$0001 | |
555 lda <$2A,y | |
556 sta $03,x | |
557 sta <$12,x | |
558 mul | |
559 addd <$2B,y | |
560 std $01,x | |
561 lda #$07 | |
562 sta $0D,x | |
563 lda <$24,y | |
564 lsla | |
565 pshs a | |
566 lda <$27,y | |
567 deca | |
568 ora ,s+ | |
569 sta <$10,x | |
570 clrb | |
571 rts | |
572 emod | |
573 eom equ * |