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