0
|
1 ********************************************************************
|
|
2 * CC3HDisk - CoCo 3 Tandy hard disk adapter driver
|
|
3 *
|
|
4 * $Id$
|
|
5 *
|
|
6 * Ed. Comments Who YY/MM/DD
|
|
7 * ------------------------------------------------------------------
|
|
8 * 5 Taken from OS-9 L2 Tandy distribution and BGP 98/10/12
|
|
9 * modified banner for V3
|
|
10
|
|
11 nam CC3HDisk
|
|
12 ttl CoCo 3 Tandy hard disk adapter driver
|
|
13
|
|
14 * Disassembled 98/08/23 20:51:43 by Disasm v1.6 (C) 1988 by RML
|
|
15
|
|
16 ifp1
|
|
17 use defsfile
|
|
18 endc
|
|
19
|
|
20 tylg set Drivr+Objct
|
|
21 atrv set ReEnt+rev
|
|
22 rev set $01
|
|
23 edition set 5
|
|
24
|
|
25 mod eom,name,tylg,atrv,start,size
|
|
26
|
|
27 u0000 rmb 8
|
|
28 u0008 rmb 7
|
|
29 u000F rmb 123
|
|
30 u008A rmb 29
|
|
31 u00A7 rmb 2
|
|
32 u00A9 rmb 1
|
|
33 u00AA rmb 1
|
|
34 u00AB rmb 2
|
|
35 u00AD rmb 2
|
|
36 u00AF rmb 1
|
|
37 u00B0 rmb 1
|
|
38 u00B1 rmb 1
|
|
39 u00B2 rmb 1
|
|
40 u00B3 rmb 1
|
|
41 u00B4 rmb 1
|
|
42 u00B5 rmb 1
|
|
43 u00B6 rmb 1
|
|
44 u00B7 rmb 1
|
|
45 u00B8 rmb 1
|
|
46 u00B9 rmb 1
|
|
47 u00BA rmb 1
|
|
48 u00BB rmb 1
|
|
49 u00BC rmb 2
|
|
50 u00BE rmb 1
|
|
51 u00BF rmb 2
|
|
52 u00C1 rmb 2
|
|
53 size equ .
|
|
54 fcb $FF
|
|
55
|
|
56 name fcs /CC3HDisk/
|
|
57 fcb edition
|
|
58
|
|
59 start equ *
|
|
60 lbra L0029
|
|
61 lbra L00A4
|
|
62 lbra L00E5
|
|
63 lbra L00A2
|
|
64 lbra L017C
|
|
65 lbra L0094
|
|
66 L0029 lbsr L04D5
|
|
67 lda >$FF51
|
|
68 cmpa #$08
|
|
69 beq L0038
|
|
70 comb
|
|
71 ldb #$F6
|
|
72 bra L0084
|
|
73 L0038 lbsr L04C1
|
|
74 bcs L0084
|
|
75 ldd #$FFFF
|
|
76 std >u00A9,u
|
|
77 std >u00A7,u
|
|
78 leax <$25,y
|
|
79 ldd ,x++
|
|
80 sta >u00B3,u
|
|
81 stb >u00BE,u
|
|
82 ldd ,x++
|
|
83 std >u00BF,u
|
|
84 ldd ,x++
|
|
85 std >u00C1,u
|
|
86 lda ,x
|
|
87 sta >u00B2,u
|
|
88 lda #$04
|
|
89 leay u000F,u
|
|
90 ldb #$FF
|
|
91 L006D stb ,y
|
|
92 stb <$15,y
|
|
93 leay <$26,y
|
|
94 deca
|
|
95 bne L006D
|
|
96 ldd #$0100
|
|
97 pshs u
|
|
98 os9 F$SRqMem
|
|
99 tfr u,x
|
|
100 puls u
|
|
101 L0084 bcs L00C8
|
|
102 stx >u00AB,u
|
|
103 leax >$0100,x
|
|
104 stx >u00AD,u
|
|
105 bra L00C7
|
|
106 L0094 pshs u
|
|
107 ldu >u00AB,u
|
|
108 ldd #$0100
|
|
109 os9 F$SRtMem
|
|
110 puls u
|
|
111 L00A2 clrb
|
|
112 rts
|
|
113 L00A4 lbsr L04D5
|
|
114 cmpx #$0000
|
|
115 bne L00CC
|
|
116 tstb
|
|
117 bne L00CC
|
|
118 bsr L00D2
|
|
119 bcs L00C8
|
|
120 ldx $08,y
|
|
121 pshs y,x
|
|
122 ldy >u00A7,u
|
|
123 ldb #$14
|
|
124 L00BE lda b,x
|
|
125 sta b,y
|
|
126 decb
|
|
127 bpl L00BE
|
|
128 puls y,x
|
|
129 L00C7 clrb
|
|
130 L00C8 lbsr L04E2
|
|
131 rts
|
|
132 L00CC bsr L00D2
|
|
133 bcs L00C8
|
|
134 bra L00C7
|
|
135 L00D2 lbsr L0340
|
|
136 bcs L00E4
|
|
137 ldx $08,y
|
|
138 lda #$02
|
|
139 sta >u00B9,u
|
|
140 lda #$20
|
|
141 lbsr L028D
|
|
142 L00E4 rts
|
|
143 L00E5 lbsr L04D5
|
|
144 bsr L014B
|
|
145 bcs L00C8
|
|
146 pshs x,b
|
|
147 bsr L0101
|
|
148 puls x,b
|
|
149 bcs L00C8
|
|
150 tst <$28,y
|
|
151 bne L00C7
|
|
152 bsr L0114
|
|
153 bcc L00C7
|
|
154 ldb <$00F5
|
|
155 bra L00C8
|
|
156 L0101 lbsr L0340
|
|
157 bcs L0113
|
|
158 lda #$03
|
|
159 sta >u00B9,u
|
|
160 lda #$30
|
|
161 ldx $08,y
|
|
162 lbsr L028D
|
|
163 L0113 rts
|
|
164 L0114 pshs x,b,a
|
|
165 ldx $08,y
|
|
166 pshs x
|
|
167 ldx >u00AB,u
|
|
168 stx $08,y
|
|
169 ldx $04,s
|
|
170 bsr L00D2
|
|
171 puls x
|
|
172 stx $08,y
|
|
173 bcs L0149
|
|
174 lda #$20
|
|
175 pshs u,y,a
|
|
176 ldy >u00AB,u
|
|
177 tfr x,u
|
|
178 L0135 ldx ,u
|
|
179 cmpx ,y
|
|
180 bne L0145
|
|
181 leau u0008,u
|
|
182 leay $08,y
|
|
183 dec ,s
|
|
184 bne L0135
|
|
185 bra L0147
|
|
186 L0145 orcc #Carry
|
|
187 L0147 puls u,y,a
|
|
188 L0149 puls pc,x,b,a
|
|
189 L014B pshs b
|
|
190 ldb >$FF50
|
|
191 beq L017A
|
|
192 lda <$21,y
|
|
193 bne L015D
|
|
194 andb #$80
|
|
195 bne L0175
|
|
196 bra L017A
|
|
197 L015D cmpa #$01
|
|
198 bne L0167
|
|
199 andb #$40
|
|
200 bne L0175
|
|
201 bra L017A
|
|
202 L0167 cmpa #$02
|
|
203 bne L0171
|
|
204 andb #$20
|
|
205 bne L0175
|
|
206 bra L017A
|
|
207 L0171 andb #$10
|
|
208 beq L017A
|
|
209 L0175 comb
|
|
210 ldb #$F2
|
|
211 stb ,s
|
|
212 L017A puls pc,b
|
|
213 L017C lbsr L04D5
|
|
214 lbsr L0461
|
|
215 ldx $06,y
|
|
216 ldb $02,x
|
|
217 cmpb #$03
|
|
218 bne L018F
|
|
219 lbsr L04A6
|
|
220 bra L01A2
|
|
221 L018F cmpb #$04
|
|
222 bne L0197
|
|
223 bsr L01B6
|
|
224 bra L01A2
|
|
225 L0197 cmpb #$0C
|
|
226 bne L019F
|
|
227 bsr L01A9
|
|
228 bra L01A2
|
|
229 L019F comb
|
|
230 ldb #$D0
|
|
231 L01A2 lbcs L00C8
|
|
232 lbra L00C7
|
|
233 L01A9 ldd <$25,y
|
|
234 exg a,b
|
|
235 std >u00B6,u
|
|
236 lbsr L0497
|
|
237 rts
|
|
238 L01B6 ldd $08,x
|
|
239 cmpd #$0000
|
|
240 bne L01C4
|
|
241 ldd $06,x
|
|
242 cmpa #$00
|
|
243 beq L01C6
|
|
244 L01C4 clrb
|
|
245 rts
|
|
246 L01C6 pshs u,y,x
|
|
247 clr >u00AF,u
|
|
248 clr >u00B0,u
|
|
249 clr >u00B1,u
|
|
250 lda <$2A,y
|
|
251 bsr L023E
|
|
252 L01D9 lda <$2A,y
|
|
253 sta >u00B4,u
|
|
254 lda >u00B2,u
|
|
255 sta >u00B5,u
|
|
256 lda >u00B8,u
|
|
257 anda #$F8
|
|
258 sta >u00B8,u
|
|
259 lda >u00B1,u
|
|
260 ora >u00B8,u
|
|
261 sta >u00B8,u
|
|
262 ldd >u00AF,u
|
|
263 exg a,b
|
|
264 std >u00B6,u
|
|
265 lda #$03
|
|
266 sta >u00B9,u
|
|
267 lda #$50
|
|
268 ldx >u00AB,u
|
|
269 bsr L028D
|
|
270 bcs L023C
|
|
271 lda >u00B1,u
|
|
272 inca
|
|
273 sta >u00B1,u
|
|
274 cmpa <$27,y
|
|
275 bcs L01D9
|
|
276 clr >u00B1,u
|
|
277 ldd >u00AF,u
|
|
278 addd #$0001
|
|
279 std >u00AF,u
|
|
280 cmpd <$25,y
|
|
281 bcs L01D9
|
|
282 clrb
|
|
283 L023C puls pc,u,y,x
|
|
284 L023E pshs y,x,b,a
|
|
285 ldb <$2D,y
|
|
286 stb >u00BB,u
|
|
287 sta >u00BA,u
|
|
288 lsla
|
|
289 ldx >u00AB,u
|
|
290 leay a,x
|
|
291 nega
|
|
292 pshs y,x,b,a
|
|
293 clra
|
|
294 L0256 clr ,x
|
|
295 sta $01,x
|
|
296 inca
|
|
297 cmpa >u00BA,u
|
|
298 beq L0279
|
|
299 ldb >u00BB,u
|
|
300 lslb
|
|
301 abx
|
|
302 cmpx $04,s
|
|
303 bcs L026F
|
|
304 ldb ,s
|
|
305 leax b,x
|
|
306 L026F cmpx $02,s
|
|
307 bne L0256
|
|
308 leax $02,x
|
|
309 stx $02,s
|
|
310 bra L0256
|
|
311 L0279 ldy $04,s
|
|
312 lda #$00
|
|
313 L027E cmpy >u00AD,u
|
|
314 beq L0289
|
|
315 sta ,y+
|
|
316 bra L027E
|
|
317 L0289 leas $06,s
|
|
318 puls pc,y,x,b,a
|
|
319 L028D pshs y,x,a
|
|
320 leax >u00B3,u
|
|
321 ldy #$FF59
|
|
322 ldb #$06
|
|
323 L0299 lda ,x+
|
|
324 sta ,y+
|
|
325 decb
|
|
326 bne L0299
|
|
327 lda ,s
|
|
328 sta ,y
|
|
329 ldy $03,s
|
|
330 ldx $01,s
|
|
331 lda >u00B9,u
|
|
332 cmpa #$03
|
|
333 beq L02C7
|
|
334 bsr L02E2
|
|
335 cmpa #$02
|
|
336 beq L02BB
|
|
337 L02B7 bsr L02F3
|
|
338 puls pc,y,x,a
|
|
339 L02BB bsr L02EC
|
|
340 L02BD lda >$FF58
|
|
341 sta ,x+
|
|
342 decb
|
|
343 bne L02BD
|
|
344 bra L02B7
|
|
345 L02C7 lda ,x+
|
|
346 sta >$FF58
|
|
347 decb
|
|
348 bne L02C7
|
|
349 bsr L02E2
|
|
350 bra L02B7
|
|
351 L02D3 lda >$FF5F
|
|
352 pshs a
|
|
353 lda >$FF5F
|
|
354 cmpa ,s
|
|
355 leas $01,s
|
|
356 bne L02D3
|
|
357 rts
|
|
358 L02E2 pshs a
|
|
359 L02E4 bsr L02D3
|
|
360 anda #$80
|
|
361 bne L02E4
|
|
362 puls pc,a
|
|
363 L02EC bsr L02D3
|
|
364 bita #$08
|
|
365 beq L02EC
|
|
366 rts
|
|
367 L02F3 bsr L02D3
|
|
368 bita #$01
|
|
369 bne L02FB
|
|
370 clrb
|
|
371 rts
|
|
372 L02FB comb
|
|
373 bita #$02
|
|
374 beq L0303
|
|
375 lbsr L04F2
|
|
376 L0303 lda >$FF59
|
|
377 bita #$80
|
|
378 bne L0333
|
|
379 bita #$40
|
|
380 bne L0320
|
|
381 bita #$10
|
|
382 bne L0323
|
|
383 bita #$04
|
|
384 bne L0337
|
|
385 bita #$02
|
|
386 bne L0323
|
|
387 bita #$01
|
|
388 bne L0327
|
|
389 clrb
|
|
390 rts
|
|
391 L0320 ldb #$F3
|
|
392 rts
|
|
393 L0323 comb
|
|
394 ldb #$F7
|
|
395 rts
|
|
396 L0327 comb
|
|
397 ldb #$F4
|
|
398 rts
|
|
399 comb
|
|
400 ldb #$F5
|
|
401 rts
|
|
402 L032F comb
|
|
403 ldb #$F6
|
|
404 rts
|
|
405 L0333 comb
|
|
406 ldb #$F0
|
|
407 rts
|
|
408 L0337 lda >$FF5F
|
|
409 bita #$10
|
|
410 beq L0323
|
|
411 bra L032F
|
|
412 L0340 lbsr L0461
|
|
413 bcs L0347
|
|
414 bsr L0348
|
|
415 L0347 rts
|
|
416 L0348 pshs y,x,b
|
|
417 lbsr L04C1
|
|
418 lbcs L0429
|
|
419 stx >u00BC,u
|
|
420 tstb
|
|
421 bne L0381
|
|
422 cmpx #$0000
|
|
423 bne L0381
|
|
424 leax >u00B4,u
|
|
425 ldd #$0001
|
|
426 sta $01,x
|
|
427 sta $02,x
|
|
428 sta $03,x
|
|
429 stb ,x
|
|
430 lda >u00B8,u
|
|
431 anda #$F8
|
|
432 sta >u00B8,u
|
|
433 tst >u00AA,u
|
|
434 lbne L040C
|
|
435 lbra L0428
|
|
436 L0381 ldy >u00A7,u
|
|
437 cmpb ,y
|
|
438 lbhi L042F
|
|
439 bcs L0394
|
|
440 cmpx $01,y
|
|
441 lbcc L042F
|
|
442 L0394 clr >u00B6,u
|
|
443 clr >u00B7,u
|
|
444 ldb ,s
|
|
445 ldx $01,s
|
|
446 ldy $03,s
|
|
447 tstb
|
|
448 bne L03B5
|
|
449 pshs x,b,a
|
|
450 lda <$2A,y
|
|
451 ldb <$27,y
|
|
452 mul
|
|
453 subd $02,s
|
|
454 puls x,b,a
|
|
455 bhi L03D6
|
|
456 L03B5 pshs u,y,x,b,a
|
|
457 lda >u00BE,u
|
|
458 ldy >u00BF,u
|
|
459 ldu >u00C1,u
|
|
460 bsr L0436
|
|
461 ldu $06,s
|
|
462 std >u00BC,u
|
|
463 tfr x,d
|
|
464 exg a,b
|
|
465 std >u00B6,u
|
|
466 puls u,y,x,b,a
|
|
467 L03D6 clra
|
|
468 ldb <$2A,y
|
|
469 beq L042F
|
|
470 pshs b,a
|
|
471 pshs a
|
|
472 ldd >u00BC,u
|
|
473 L03E4 subd $01,s
|
|
474 bcs L03EC
|
|
475 inc ,s
|
|
476 bra L03E4
|
|
477 L03EC addd $01,s
|
|
478 stb >u00B5,u
|
|
479 lda >u00B8,u
|
|
480 anda #$F8
|
|
481 ora ,s
|
|
482 sta >u00B8,u
|
|
483 leas $03,s
|
|
484 lda #$01
|
|
485 sta >u00B4,u
|
|
486 tst >u00AA,u
|
|
487 beq L0428
|
|
488 L040C clr >u00AA,u
|
|
489 ldy >u00A7,u
|
|
490 lda <$15,y
|
|
491 ldy $03,s
|
|
492 cmpa #$FF
|
|
493 bne L0424
|
|
494 lbsr L04A6
|
|
495 bra L0429
|
|
496 L0424 bsr L0497
|
|
497 bra L0429
|
|
498 L0428 clrb
|
|
499 L0429 bcc L042D
|
|
500 stb ,s
|
|
501 L042D puls pc,y,x,b
|
|
502 L042F puls b
|
|
503 comb
|
|
504 ldb #$F1
|
|
505 puls pc,y,x
|
|
506 L0436 pshs u,y,x,b,a
|
|
507 ldd $01,s
|
|
508 L043A subd $04,s
|
|
509 bcc L0444
|
|
510 addd $04,s
|
|
511 andcc #^Carry
|
|
512 bra L0446
|
|
513 L0444 orcc #Carry
|
|
514 L0446 rol $03,s
|
|
515 rolb
|
|
516 rola
|
|
517 dec ,s
|
|
518 bne L043A
|
|
519 std ,s
|
|
520 andb $06,s
|
|
521 stb $02,s
|
|
522 ldb $07,s
|
|
523 beq L045F
|
|
524 L0458 lsr ,s
|
|
525 ror $01,s
|
|
526 decb
|
|
527 bne L0458
|
|
528 L045F puls pc,u,y,x,b,a
|
|
529 L0461 lda <$21,y
|
|
530 cmpa #$04
|
|
531 lbcc L0333
|
|
532 cmpa >u00A9,u
|
|
533 beq L0496
|
|
534 sta >u00A9,u
|
|
535 dec >u00AA,u
|
|
536 lsla
|
|
537 lsla
|
|
538 lsla
|
|
539 pshs a
|
|
540 lda >u00B8,u
|
|
541 anda #$E7
|
|
542 ora ,s
|
|
543 leas $01,s
|
|
544 sta >u00B8,u
|
|
545 pshs x
|
|
546 ldx <$1E,y
|
|
547 stx >u00A7,u
|
|
548 puls x
|
|
549 L0496 rts
|
|
550 L0497 clr >u00B9,u
|
|
551 lda <$22,y
|
|
552 anda #$0F
|
|
553 ora #$70
|
|
554 lbsr L028D
|
|
555 rts
|
|
556 L04A6 clr >u00B9,u
|
|
557 lda <$22,y
|
|
558 anda #$0F
|
|
559 ora #$10
|
|
560 lbsr L028D
|
|
561 bcs L04C0
|
|
562 ldx >u00A7,u
|
|
563 clr <$15,x
|
|
564 clr <$16,x
|
|
565 L04C0 rts
|
|
566 L04C1 pshs b,a
|
|
567 clrb
|
|
568 L04C4 lda >$FF5F
|
|
569 bita #$40
|
|
570 bne L04D3
|
|
571 decb
|
|
572 bne L04C4
|
|
573 ldb #$F6
|
|
574 stb $01,s
|
|
575 comb
|
|
576 L04D3 puls pc,b,a
|
|
577 L04D5 dec <u008A
|
|
578 lda #$02
|
|
579 sta >MPI.Slct
|
|
580 lda #$08
|
|
581 L04DE sta >$FF51
|
|
582 rts
|
|
583 L04E2 pshs cc
|
|
584 lda #$00
|
|
585 sta >$FF51
|
|
586 lda #$03
|
|
587 sta >MPI.Slct
|
|
588 clr <u008A
|
|
589 puls pc,cc
|
|
590 L04F2 lda #$10
|
|
591 bra L04DE
|
|
592
|
|
593 emod
|
|
594 eom equ *
|
|
595 end
|
|
596
|