annotate level1/modules/rb1773.asm @ 1570:a4b6825eeb72

ccdisk renamed to rb1773, added CC3 driver into source
author boisy
date Tue, 18 May 2004 01:26:19 +0000
parents
children e9c2b4be14f6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1 ********************************************************************
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
2 * rb1773 - Western Digital 1773 Disk Controller Driver
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
3 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
4 * A lot of references to **.CYL or <u00B6 using 16 bit registers can be
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
5 * changed to 8 bit registers with a +1 offset, since track #'s >255 are
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
6 * ignored
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
7 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
8 * NOTE: 512 bytes is reserved as a physical sector buffer. Any reads/
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
9 * writes are done from this buffer to the controller. Copies of the 256
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
10 * byte chunk needed are done by a block memory move
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
11
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
12 * $Id$
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
13 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
14 * Edt/Rev YYYY/MM/DD Modified by
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
15 * Comment
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
16 * ------------------------------------------------------------------
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
17 * 11 1993/05/12 ???
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
18 * Special opts for TC9 to slow controller reads and writes TFM's
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
19 * between sector buffers & in drive table init/copies.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
20 * Changed software timing loop (drive spin-up) to F$Sleep for 32 ticks
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
21 * Shrunk (slowed slightly) error returns
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
22 * Added blobstop code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
23 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
24 * 11r1 2003/09/03 Boisy G. Pitre
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
25 * Added code to sense if HW is present or not and return error if not.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
26
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
27 nam rb1773
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
28 ttl Western Digital 1773 Disk Controller Driver
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
29
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
30 IFP1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
31 use defsfile
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
32 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
33
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
34 tylg set Drivr+Objct
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
35 atrv set ReEnt+rev
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
36 rev set $01
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
37 edition set 11
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
38
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
39 IFGT Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
40
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
41 * Configuration Settings
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
42 N.Drives equ 4 number of drives to support
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
43 TC9 equ 0 Set to 1 for TC9 special slowdowns
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
44 PRECOMP equ 0 Set to 1 to turn on write precompensation
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
45
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
46 * WD-17X3 Definitions
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
47 WD_Cmd equ $08
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
48 WD_Stat equ WD_Cmd
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
49 WD_Trak equ $09
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
50 WD_Sect equ $0A
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
51 WD_Data equ $0B
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
52
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
53 mod eom,name,tylg,atrv,start,size
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
54
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
55 u0000 rmb DRVBEG+(DRVMEM*N.Drives)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
56 u00A7 rmb 2 Last drive table accessed (ptr)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
57 u00A9 rmb 1 Bit mask for control reg (drive #, side,etc)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
58 u00AA rmb 1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
59 sectbuf rmb 2 Ptr to 512 byte sector buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
60 u00AD rmb 1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
61 u00AE rmb 1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
62 FBlock rmb 2 block number for format
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
63 IFGT Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
64 FTask rmb 1 task number for format
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
65 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
66 u00B1 rmb 2 Vi.Cnt word for VIRQ
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
67 u00B3 rmb 2 Vi.Rst word for VIRQ
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
68 u00B5 rmb 1 Vi.Stat byte for VIRQ (drive motor timeout)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
69 u00B6 rmb 2 OS9's logical sector #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
70 u00B8 rmb 1 PCDOS (512 byte sector) sector #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
71 size equ .
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
72
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
73 fcb DIR.+SHARE.+PEXEC.+PWRIT.+PREAD.+EXEC.+UPDAT.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
74
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
75 name equ *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
76 IFEQ Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
77 fcs /CCDisk/
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
78 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
79 fcs /rb1773/
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
80 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
81 fcb edition
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
82
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
83 VIRQCnt fdb $00F0 Initial count for VIRQ (240)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
84
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
85 IRQPkt fcb $00 Normal bits (flip byte)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
86 fcb $01 Bit 1 is interrupt request flag (Mask byte)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
87 fcb 10 Priority byte
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
88
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
89 * Init
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
90 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
91 * Entry:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
92 * Y = address of device descriptor
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
93 * U = address of device memory area
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
94 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
95 * Exit:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
96 * CC = carry set on error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
97 * B = error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
98 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
99 * New code added 09/03/2003 by Boisy G. Pitre
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
100 * Write a pattern to $FF4B and read it back to verify that the hardware
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
101 * does exist.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
102 Init ldx V.PORT,u get Base port address
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
103 lda WD_Data,x get byte at FDC Data register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
104 coma complement it to modify it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
105 sta WD_Data,x write it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
106 clrb
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
107 Init2 decb delay a bit...
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
108 bmi Init2
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
109 suba WD_Data,x read it back
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
110 lbne NoHW if not zero, we didn't read what we wrote
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
111 **
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
112 IFEQ Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
113 clr >D.DskTmr flag drive motor as not running
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
114 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
115 clr <D.MotOn flag drive motor as not running
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
116 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
117 leax WD_Stat,x point to Status/Command register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
118 lda #$D0 force Interrupt command
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
119 sta ,x send to FDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
120 lbsr L0406 time delay for ~ 108 cycles
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
121 lda ,x eat status register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
122 ldd #$FF*256+N.Drives 'invalid' value & # of drives
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
123 sta >u00B8,u set 512 byte sector # to bogus value
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
124 sta >u00B8+1,u
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
125 leax DRVBEG,u point to start of drive tables
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
126 L004B sta ,x DD.TOT MSB to bogus value
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
127 sta <V.TRAK,x init current track # to bogus value
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
128 leax <DRVMEM,x point to next drive table
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
129 decb done all 4 drives yet?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
130 bne L004B no, init them all
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
131 leax >NMISvc,pc point to NMI service routine
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
132 IFGT Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
133 stx <D.NMI install as system NMI
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
134 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
135 stx >D.XNMI+1 NMI jump vector operand
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
136 lda #$7E JMP code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
137 sta >D.XNMI NMI jump vector opcode
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
138 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
139 pshs y save device dsc. ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
140 leay >u00B5,u point to Vi.Stat in VIRQ packet
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
141 tfr y,d make it the status register ptr for IRQ
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
142 leay >IRQSvc,pc point to IRQ service routine
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
143 leax >IRQPkt,pc point to IRQ packet
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
144 os9 F$IRQ install IRQ
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
145 puls y Get back device dsc. ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
146 bcs Return If we can't install IRQ, exit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
147 ldd #512 Request 512 byte sector buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
148 pshs u Preserve device mem ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
149 os9 F$SRqMem Request sector buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
150 tfr u,x Move ptr to sector buffer to x
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
151 puls u Restore device mem ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
152 bcs Return If error, exit with it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
153 stx >sectbuf,u Save ptr to sector buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
154
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
155 * GetStat
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
156 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
157 * Entry:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
158 * A = function code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
159 * Y = address of path descriptor
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
160 * U = address of device memory area
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
161 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
162 * Exit:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
163 * CC = carry set on error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
164 * B = error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
165 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
166 GetStat clrb no GetStt calls - return, no error, ignore
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
167 Return rts
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
168
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
169 * Term
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
170 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
171 * Entry:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
172 * U = address of device memory area
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
173 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
174 * Exit:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
175 * CC = carry set on error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
176 * B = error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
177 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
178 Term leay >u00B1,u Point to VIRQ packet
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
179 IFNE H6309
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
180 tfr 0,x "remove"
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
181 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
182 ldx #$0000
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
183 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
184 os9 F$VIRQ Remove VIRQ
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
185 IFNE H6309
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
186 tfr 0,x "remove"
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
187 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
188 ldx #$0000
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
189 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
190 os9 F$IRQ Remove IRQ
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
191 pshs u Save device mem ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
192 ldu >sectbuf,u Get pointer to sector buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
193 ldd #512 Return sector buffer memory
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
194 os9 F$SRtMem
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
195 puls u Restore device mem ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
196 clr >DPort shut off drive motors
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
197 IFEQ Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
198 clr >D.DskTmr Clear out drive motor timeout flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
199 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
200 clr <D.MotOn Clear out drive motor timeout flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
201 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
202 L00AB rts return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
203
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
204 * Check if 512 byte sector conversion needed
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
205 * Entry: B:X=LSN
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
206 * U=Static mem ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
207 * Y=Path dsc. ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
208 * Exit: X=New LSN (same as original for 256 byte sectors, 1/2 of original
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
209 * for 512 byte sectors
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
210 L00AC pshs x,b Save LSN
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
211 stx >u00B6,u Save OS9 LSN
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
212 lda <PD.TYP,y Get device type from path dsc.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
213 anda #%00000100 Mask out all but 512 byte sector flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
214 bne L00BB 512 byte sectors, go process
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
215 L00CA puls pc,x,b Restore LSN & return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
216
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
217 * 512 byte sector processing goes here
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
218 L00BB puls x,b Get back LSN
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
219 clrb Clear carry for rotate (also high byte of LSN)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
220 tfr x,d Move to mathable register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
221 IFNE H6309
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
222 rord Divide LSN by 2
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
223 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
224 rora
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
225 rorb
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
226 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
227 tfr d,x Move new LSN back to X
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
228 stx >u00B8,u Save 'physical' LSN (for controller)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
229 clrb No error & return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
230 rts
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
231
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
232 start lbra Init
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
233 bra Read
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
234 nop
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
235 lbra Write
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
236 bra GetStat
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
237 nop
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
238 lbra SetStat
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
239 bra Term
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
240 nop
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
241
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
242 * Read
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
243 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
244 * Entry:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
245 * B = MSB of LSN
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
246 * X = LSB of LSN
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
247 * Y = address of path descriptor
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
248 * U = address of device memory area
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
249 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
250 * Exit:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
251 * CC = carry set on error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
252 * B = error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
253 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
254 Read bsr L00AC Go check for 512 byte sector/adjust if needed
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
255 lda #%10010001 Error flags (see Disto SCII source)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
256 pshs x Preserve sector #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
257 lbsr L0162 Go read the sector
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
258 puls x Restore sector #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
259 bcs L00AB If error, exit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
260 pshs y,x Save path dsc ptr & LSN
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
261 leax ,x LSN0?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
262 bne L012D No, go calculate normally
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
263 puls y,x Yes, restore path dsc ptr & LSN
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
264 lda <PD.TYP,y Get type from path dsc.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
265 bita #TYP.NSF Standard OS-9 format?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
266 beq L00F0 Yes, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
267 lbsr L051A
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
268 pshs y,x save path dsc ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
269 bra L012D
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
270
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
271 * LSN0, standard OS-9 format
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
272 L00F0 ldx >sectbuf,u Get ptr to sector buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
273 pshs y,x Preserve path dsc. ptr & sector buffer ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
274 ldy >u00A7,u Get last drive table accessed ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
275 IFNE H6309
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
276 ldw #DD.SIZ # bytes to copy from new LSN0 to drive table
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
277 tfm x+,y+ Copy them
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
278 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
279 ldb #DD.SIZ
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
280 L00F0Lp lda ,x+
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
281 sta ,y+
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
282 decb
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
283 bne L00F0Lp
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
284 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
285 ldy >u00A7,u Get drive table ptr back
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
286 lda <DD.FMT,y Get format for disk in drive
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
287 ldy 2,s restore path descriptor pointer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
288 ldb <PD.DNS,y Get path's density settings
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
289 bita #FMT.DNS Disk in drive double density?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
290 beq L0115 No, all drives can read single, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
291 bitb #DNS.MFM Can our path dsc. handle double density?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
292 beq erbtyp No, illegal
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
293 L0115 bita #FMT.TDNS Is new disk 96 tpi?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
294 beq L011D No, all drives handle 48 tpi, so skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
295 bitb #DNS.DTD Can path dsc. handle 96 tpi?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
296 beq erbtyp No, illegal
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
297 L011D bita #FMT.SIDE Is new disk double sided?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
298 beq L0128 No, all drives handle single sided, we're done
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
299 lda <PD.SID,y Get # sides path dsc. can handle
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
300 suba #2 sides higher or equal to 2?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
301 blo erbtyp Yes, exit with illegal type error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
302 L0128 clrb No error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
303 * puls y,x ??? 2 USELESS LINES?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
304 * pshs y,x
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
305 * LSN's other than 0 come straight here
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
306 L012D ldy 2,s Get path dsc. ptr back??
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
307 ldx PD.BUF,y Get path dsc. buffer ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
308 lda <PD.TYP,y Get path dsc. disk type
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
309 ldy >sectbuf,u Get ptr to sector buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
310 IFNE H6309
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
311 ldw #256 OS9 sector size (even if physical was 512)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
312 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
313 anda #%00000100 Mask out all but 512 byte sector flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
314 beq L014B If normal sector, just copy it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
315 ldd >u00B6,u Get OS9's LSN (twice of the 'real' 512 sector)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
316 andb #$01 Mask out all but odd/even sector indicator
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
317 beq L014B Even, use 1st half of 512 byte sector
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
318 IFNE H6309
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
319 addr w,y Odd, bump sector buffer ptr to 2nd half
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
320 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
321 leay 256,y
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
322 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
323 L014B equ *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
324 IFNE H6309
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
325 tfm y+,x+ Copy from physical sector buffer to PD buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
326 puls pc,y,x restore path dsc & sector buffer ptrs & return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
327 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
328 pshs d
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
329 clrb
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
330 L014BLp lda ,y+
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
331 sta ,x+
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
332 decb
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
333 bne L014BLp
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
334 puls pc,y,x,d restore path dsc & sector buffer ptrs & return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
335 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
336
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
337 erbtyp comb
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
338 ldb #E$BTyp Error - wrong type error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
339 puls pc,y,x
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
340
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
341 * Read error - retry handler
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
342 L0159 bcc L0162 Normal retry, try reading again
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
343 pshs x,d Preserve regs
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
344 lbsr sktrk0 Seek to track 0 (attempt to recalibrate)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
345 puls x,d Restore regs & try reading again
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
346
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
347 L0162 pshs x,d Preserve regs
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
348 bsr L016F Go read sector
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
349 puls x,d Restore regs (A=retry flags)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
350 bcc L01D7 No error, return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
351 lsra Shift retry flags
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
352 bne L0159 Still more retries allowed, go do them
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
353 * otherwise, final try before we give up
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
354 L016F lbsr L02AC Do double-step/precomp etc. if needed, seek
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
355 bcs L01D7 Error somewhere, exit with it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
356 L0176 ldx >sectbuf,u Get physical sector buffer ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
357 * pshs y,cc Preserve timeout timer & CC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
358 ldb #$80 Read sector command
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
359 bsr L01A1 Send to controller & time delay to let it settle
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
360 *** Next few lines are commented out for blobstop patches
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
361 *L0180 bita >DPort+WD_Stat check status register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
362 * bne L0197 eat it & start reading sector
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
363 * leay -1,y bump timeout timer down
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
364 * bne L0180 keep trying until it reaches 0 or sector read
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
365 * lda >u00A9,u get current drive settings
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
366 * ora #%00001000 turn drive motor on
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
367 * sta >DPort send to controller
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
368 * puls y,cc restore regs
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
369 * lbra L03E0 exit with Read Error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
370 *** Blobstop fixes
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
371 stb >DPort send command to FDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
372 nop allow HALT to take effect
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
373 nop
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
374 bra L0197 and a bit more time
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
375 * Read loop - exited with NMI
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
376 * Entry: X=ptr to sector buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
377 * B=Control register settings
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
378 L0197 lda >DPort+WD_Data get byte from controller
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
379 sta ,x+ store into sector buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
380 * stb >DPort drive info
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
381 nop -- blobstop fix
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
382 bra L0197 Keep reading until sector done
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
383
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
384 L01A1 orcc #IntMasks Shut off IRQ & FIRQ
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
385 stb >DPort+WD_Cmd Send command
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
386 * ldy #$FFFF
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
387 ldb #%00101000 Double density & motor on
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
388 orb >u00A9,u Merge with current drive settings
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
389 stb >DPort Send to control register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
390 ldb #%10101000 Enable halt, double density & motor on
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
391 orb >u00A9,u Merge that with current drive settings
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
392 lbra L0406 Time delay to wait for command to settle
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
393 * lda #$02
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
394 *L01BE rts
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
395
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
396 * Write
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
397 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
398 * Entry:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
399 * B = MSB of LSN
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
400 * X = LSB of LSN
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
401 * Y = address of path descriptor
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
402 * U = address of device memory area
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
403 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
404 * Exit:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
405 * CC = carry set on error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
406 * B = error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
407 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
408 Write lbsr L00AC Go adjust LSN for 512 byte sector if needed
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
409 lda #%1001001 Retry flags for I/O errors (see Disto SCII source)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
410 L01C4 pshs x,d Preserve LSN, retries
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
411 bsr L01E8 Go write the sector
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
412 puls x,d Restore LSN, retries
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
413 bcs L01D8 Error writing, go to write retry handler
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
414 tst <PD.VFY,y No error, do we want physical verify?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
415 bne L01D6 No, exit without error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
416 lbsr verify Go re-read & verify 32 out of 256 bytes
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
417 bcs L01D8 Error on verify, go to write retry handler
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
418 L01D6 clrb No error & return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
419 L01D7 rts
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
420
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
421 * Write error retry handler
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
422 L01D8 lsra Shift retry flags
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
423 lbeq L03AF Too many retries, exit with error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
424 bcc L01C4 Normal retry, attemp to re-write sector
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
425 pshs x,d Preserve flags & sector #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
426 lbsr sktrk0 Seek to track 0 (attempt to recalibrate)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
427 puls x,d Restore flags & sector #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
428 bra L01C4 Try re-writing now
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
429
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
430 * 512 byte sector write here
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
431 L01E8 lbsr L02AC Go do double-step/write precomp if needed
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
432 bcs L01D7 Error, exit with it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
433 pshs y,d Preserve path dsc. ptr & LSN
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
434 lda <PD.TYP,y Get device type
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
435 anda #%00000100 512 byte sector?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
436 beq L020D No, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
437 lda #$91 ??? appears to be useless
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
438 lbsr L0176 Go read the sector in
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
439 ldd >u00B6,u Get OS9 LSN
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
440 andb #$01 Even or odd?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
441 beq L020D Even, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
442 ldx >sectbuf,u Get physical sector buffer ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
443 leax >$0100,x Point to 2nd half
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
444 bra L0211 Copy caller's buffer to 2nd half of sector
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
445
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
446 L020D ldx >sectbuf,u Get physical sector buffer ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
447
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
448 L0211 ldy PD.BUF,y Get path dsc. buffer ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
449 IFNE H6309
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
450 ldw #256 Copy write buffer to sector buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
451 tfm y+,x+
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
452 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
453 clrb
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
454 L0211Lp lda ,y+
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
455 sta ,x+
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
456 decb
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
457 bne L0211Lp
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
458 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
459 puls y,d Get path dsc. ptr & LSN back
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
460 ldx >sectbuf,u Get physical sector buffer ptr again
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
461 ldb #$A0 Write sector command
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
462
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
463 * Format track comes here with B=$F0 (write track)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
464 *L0224 pshs y,cc Preserve path dsc. ptr & CC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
465 L0224 lbsr L01A1 Send command to controller (including delay)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
466 *** Commented out for blobstop fixes
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
467 *L0229 bita >DPort+WD_Stat Controller done yet?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
468 * bne L0240 Yes, go write sector out
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
469 * leay -$01,y No, bump wait counter
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
470 * bne L0229 Still more tries, continue
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
471 * lda >u00A9,u Get current drive control register settings
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
472 * ora #%00001000 Drive motor on (but drive select off)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
473 * sta >DPort Send to controller
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
474 * puls y,cc Restore regs
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
475 * lbra L03AF Check for errors from status register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
476
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
477 IFGT Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
478 *** added blobstop
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
479 lda FBlock+1,u get the block number for format
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
480 beq L0230 if not format, don't do anything
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
481 sta >$FFA1 otherwise map the block in
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
482 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
483
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
484 L0230 stb >DPort send command to FDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
485 bra L0240 wait a bit for HALT to enable
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
486 * Write sector routine (Entry: B= drive/side select) (NMI will break out)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
487 L0240 nop --- wait a bit more
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
488 lda ,x+ Get byte from write buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
489 sta >DPort+WD_Data Save to FDC's data register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
490 * EAT 2 CYCLES: TC9 ONLY (TRY 1 CYCLE AND SEE HOW IT WORKS)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
491 IFEQ TC9-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
492 nop
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
493 nop
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
494 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
495 * stb >DPort Set up to read next byte
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
496 bra L0240 Go read it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
497
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
498 * NMI routine
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
499 NMISvc leas R$Size,s Eat register stack
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
500 * puls y,cc Get path dsc. ptr & CC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
501 IFGT Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
502 ldx <D.SysDAT get pointer to system DAT image
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
503 lda 3,x get block number 1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
504 sta >$FFA1 map it back into memory
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
505 andcc #^IntMasks turn IRQ's on again
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
506 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
507 * puls y,cc Get path dsc. ptr & CC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
508 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
509 ldb >DPort+WD_Stat Get status register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
510 bitb #%00000100 Did we lose data in the transfer?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
511 * lbne L03E0 Yes, exit with Read Error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
512 lbeq L03B2 Otherwise, check for drive errors
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
513 comb -- blobstop error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
514 ldb #E$DevBsy -- device busy
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
515 rts -- and exit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
516
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
517 verify pshs x,d
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
518 ldx PD.BUF,y Get write buffer ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
519 pshs x Preserve it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
520 ldx >sectbuf,u Get sector buffer ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
521 stx PD.BUF,y Save as write buffer ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
522 ldx 4,s
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
523 lbsr L016F Go read sector we just wrote
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
524 puls x Get original write buffer ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
525 stx PD.BUF,y Restore path dsc. version
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
526 bcs L02A3 If error reading, exit with it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
527 pshs u,y Preserve device mem, path dsc. ptrs
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
528 ldb <PD.TYP,y Get type from path dsc.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
529 ldy >sectbuf,u Get sector buffer ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
530 andb #%00000100 512 byte sector?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
531 beq L028D No, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
532 ldd >u00B6,u Get OS9's sector #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
533 andb #$01 Odd/even sector?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
534 beq L028D Even; compare first half
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
535 leay >$0100,y Odd, compare second half
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
536 L028D tfr x,u Move PD.BUF ptr to U (since cmpx is faster)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
537 lda #32 # of 'spotty' checks to do
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
538 L028F ldx ,u Get 2 bytes from original write buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
539 cmpx ,y Same as corresponding bytes in re-read sector?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
540 bne L029F No, error & return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
541 leau 8,u Skip next 6 bytes
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
542 leay 8,y
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
543 deca Done our 'spotty' check?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
544 bne L028F No, continue
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
545 fcb $8C skip the next 2 bytes
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
546
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
547 L029F orcc #Carry
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
548 L02A1 puls u,y
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
549 L02A3 puls pc,x,d
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
550
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
551 L02A5 pshs a Save Caller's track #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
552 ldb <V.TRAK,x Get track # drive is currently on
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
553 bra L02E9 Go save it to controller & continue
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
554
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
555 L02AC lbsr L0376 Go set up controller for drive, spin motor up
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
556 bsr L032B Get track/sector # (A=Trk, B=Sector)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
557 pshs a Save track #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
558 lda >u00AD,u Get side 1/2 flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
559 beq L02C4 Side 1, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
560 lda >u00A9,u Get control register settings
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
561 ora #%01000000 Set side 2 (drive 3) select
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
562 sta >u00A9,u Save it back
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
563 L02C4 lda <PD.TYP,y Get drive type settings
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
564 bita #%00000010 ??? (Base 0/1 for sector #?)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
565 bne L02CC Skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
566 incb Bump sector # up by 1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
567 L02CC stb >DPort+WD_Sect Save into Sector register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
568 ldx >u00A7,u Get last drive table accessed
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
569 ldb <V.TRAK,x Get current track # on device
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
570 lda <DD.FMT,x Get drive format specs
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
571 lsra Shift track & bit densities to match PD
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
572 eora <PD.DNS,y Check for differences with path densities
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
573 anda #%00000010 Keep only 48/96 tpi differences
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
574 pshs a Save differences
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
575 lda 1,s Get track # back
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
576 tst ,s+ Are tpi's different?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
577 beq L02E9 No, continue normally
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
578 lsla Yes, multiply track # by 2 ('double-step')
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
579 lslb Multiply current track # by 2 ('double-step')
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
580 L02E9 stb >DPort+WD_Trak Save current track # onto controller
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
581
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
582 * From here to the line before L0307 is for write precomp, but is not used.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
583 * Unless write precomp is needed, all of this is useless
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
584 * I think most (if not all) drives do NOT need precomp
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
585 IFEQ PRECOMP-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
586 ldb #21 Pre-comp track #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
587 pshs b Save it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
588 ldb <PD.DNS,y Get current density settings
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
589 andb #%00000010 Just want to check track density
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
590 beq L02F9 48 tpi, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
591 lsl ,s Multiply pre-comp value by 2 ('double-step')
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
592 L02F9 cmpa ,s+ Is track # high enough to warrant precomp?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
593 bls L0307 No, continue normally
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
594 ldb >u00A9,u
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
595 orb #%00010000 Turn on Write precomp
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
596 stb >u00A9,u
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
597 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
598
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
599 L0307 ldb >u00AA,u ??? Get flag (same drive flag?)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
600 bne L0314 no, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
601 ldb ,s get track #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
602 cmpb <V.TRAK,x same as current track on this drive?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
603 beq L0321 yes, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
604 L0314 sta >DPort+WD_Data save track # to data register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
605 ldb <PD.STP,y get stepping rate
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
606 andb #%00000011 just keep usable settings (6-30 ms)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
607 eorb #%00011011 set proper bits for controller
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
608 lbsr L03E4 send command to controller & time delay
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
609 L0321 puls a get track # back
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
610 sta <V.TRAK,x save as current track #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
611 sta >DPort+WD_Trak save to controller
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
612 clrb no error & return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
613 rts
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
614
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
615 * Entry: B:X LSN
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
616 * Exit: A=Track #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
617 * B=Sector #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
618 * <u00AD=00 = Head 1 , $FF = Head 2
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
619 L032B tstb Sector # > 65535?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
620 bne L033F Yes, illegal for floppy
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
621 tfr x,d Move sector # to D
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
622 leax ,x LSN 0?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
623 beq L0371 Yes, exit this routine
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
624 ldx >u00A7,u Get previous drive table ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
625 cmpd DD.TOT+1,x Within range of drive spec?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
626 blo L0343 Yes, go calculate track/sector #'s
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
627 L033F comb Exit with Bad sector # error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
628 ldb #E$Sect
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
629 rts
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
630
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
631 * Calculate track/sector #'s?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
632 L0343 stb >u00AE,u Save LSB of LSN
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
633 clr ,-s Clear track # on stack
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
634 ldb <DD.FMT,x Get drive format
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
635 lsrb Shift out # sides into carry
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
636 ldb >u00AE,u Get LSB of LSN again
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
637 bcc L0367 Single sided drive, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
638 bra L035D Double sided drive, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
639 * Double sided drive handling here
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
640 L0355 com >u00AD,u ???? Odd/even sector track flag?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
641 bne L035D Odd, so don't bump track # up
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
642 inc ,s Bump up track #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
643
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
644 L035D subb DD.TKS,x Subtract # sectors/track
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
645 sbca #$00
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
646 bcc L0355 Still more sectors left, continue
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
647 bra L036D Wrapped, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
648 * Single sided drive handling here
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
649 L0365 inc ,s Bump track # up
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
650
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
651 L0367 subb DD.TKS,x Subtract # sectors/track
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
652 sbca #$00
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
653 bcc L0365 Still more, go bump the track up
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
654 L036D addb $03,x Bump sector # back up from negative value
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
655 puls a Get the track #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
656 L0371 rts A=track #, B=Sector #, <u00AD=Odd
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
657
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
658 * Drive control register bit mask table
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
659 L0372 fcb $01 Drive 0
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
660 fcb $02 Drive 1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
661 fcb $04 Drive 2
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
662 fcb $40 Drive 3 / Side select
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
663
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
664 L0376 clr >u00AA,u ???
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
665
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
666 chkdrv lda <PD.DRV,y Get drive # requested
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
667 cmpa #4 Drive 0-3?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
668 blo L0385 Yes, continue normally
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
669 NoHW comb Illegal drive # error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
670 ldb #E$Unit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
671 rts
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
672
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
673 * Entry: A=drive #, X=LSN (Physical, not OS9 logical if PCDOS disk)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
674 L0385 pshs x,d Save sector #, drive # & B???
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
675 leax >L0372,pc Point to drive bit mask table
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
676 ldb a,x Get bit mask for drive # we want
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
677 stb >u00A9,u Save mask
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
678 leax DRVBEG,u Point to beginning of drive tables
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
679 ldb #DRVMEM Get size of each drive table
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
680 mul Calculate offset to drive table we want
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
681 leax d,x Point to it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
682 cmpx >u00A7,u Same as Last drive table accessed?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
683 beq L03A6 Yes, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
684 stx >u00A7,u Save new drive table ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
685 com >u00AA,u ??? Set flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
686 L03A6 clr >u00AD,u Set side (head) flag to side 1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
687 lbsr L04B3 Go set up VIRQ to wait for drive motor
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
688 puls pc,x,d Restore sector #,drive #,B & return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
689
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
690 L03AF ldb >DPort+WD_Stat Get status register from FDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
691 L03B2 bitb #%11111000 Any of the error bits set?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
692 beq L03CA No, exit without error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
693 aslb Drive not ready?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
694 bcs L03CC Yes, use that error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
695 aslb Write protect error?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
696 bcs L03D0 Yes, use that error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
697 aslb Write fault error?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
698 bcs L03D4 Yes, use that error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
699 aslb Sector not found?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
700 bcs L03D8 Yes, use Seek error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
701 aslb CRC error?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
702 bcs L03DC Yes, use that error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
703 L03CA clrb No error & return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
704 rts
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
705
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
706 L03CC ldb #E$NotRdy not ready
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
707 fcb $8C skip 2 bytes
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
708
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
709 L03D0 ldb #E$WP write protect
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
710 fcb $8C skip 2 bytes
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
711
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
712 L03D4 ldb #E$Write write error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
713 fcb $8C
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
714
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
715 L03D8 ldb #E$Seek seek error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
716 fcb $8C
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
717
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
718 L03DC ldb #E$CRC CRC error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
719 * fcb $8C
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
720
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
721 *L03E0 ldb #E$Read Read error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
722 orcc #Carry set carry
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
723 rts
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
724
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
725 L03E4 bsr L0404 Send command to controller & waste some time
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
726 L03E6 ldb >DPort+WD_Stat Check FDC status register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
727 bitb #$01 Is controller still busy?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
728 beq L0403 No, exit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
729 ldd >VIRQCnt,pc Get initial count value for drive motor speed
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
730 std >u00B1,u Save it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
731 bra L03E6 Wait for controller to finish previous command
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
732
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
733 * Send command to FDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
734 L03F7 lda #%00001000 Mask in Drive motor on bit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
735 ora >u00A9,u Merge in drive/side selects
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
736 sta >DPort Turn the drive motor on & select drive
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
737 stb >DPort+WD_Cmd Save command & return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
738 L0403 rts
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
739
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
740 L0404 bsr L03F7 Go send command to controller
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
741
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
742 * This loop has been changed from nested LBSRs to timing loop.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
743 * People with crystal upgrades should modify the loop counter
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
744 * to get a 58+ us delay time. MINIMUM 58us.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
745 L0406 pshs a 14 cycles, plus 3*loop counter
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
746 lda #29 (only do about a 100 cycle delay for now)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
747 L0409 deca for total ~63 us delay (123 cycles max.)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
748 bne L0409
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
749 puls a,pc restore register and exit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
750
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
751 * SetStat
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
752 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
753 * Entry:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
754 * A = function code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
755 * Y = address of path descriptor
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
756 * U = address of device memory area
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
757 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
758 * Exit:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
759 * CC = carry set on error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
760 * B = error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
761 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
762 SetStat ldx PD.RGS,y Get caller's register stack ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
763 ldb R$B,x Get function code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
764 cmpb #SS.WTrk Write track?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
765 beq SSWTrk Yes, go do it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
766 cmpb #SS.Reset Restore head to track 0?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
767 lbeq sktrk0 Yes, go do it --- beq
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
768 comb set carry for error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
769 ldb #E$UnkSvc return illegal service request error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
770 rts
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
771
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
772 SSWTrk pshs u,y preserve register stack & descriptor
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
773
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
774 IFEQ Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
775
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
776 ldd #$1A00 Size of buffer to hold entire track image
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
777 os9 F$SRqMem Request memory from system
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
778 bcs L0489 Error requesting, exit with it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
779 stu >FBlock,x
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
780
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
781 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
782
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
783 *--- new code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
784 ldb #1 1 block to allocate
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
785 os9 F$AllRAM allocate some RAM
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
786 bcs L0489 error out if at all
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
787 leax >FBlock,u point to 'my' DAT image
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
788 std ,x save a copy of the block
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
789 os9 F$ResTsk reserve a task number for the copy
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
790 bcs FError error out
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
791 stb 2,x save temporary task number in FTask,u
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
792 lslb 2 bytes per entry
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
793 ldu <D.TskIPt get task image table pointer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
794 stx b,u save pointer to the task's DAT image
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
795 lsrb get the right number again
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
796 IFNE H6309
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
797 tfr 0,u destination is address 0
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
798 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
799 ldu #$0000
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
800 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
801 *--- end new code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
802
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
803 ldx 2,s get pointer to descriptor
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
804 * stu >FBlock,x
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
805 ldx <D.Proc Get current process ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
806 lda P$Task,x Get task # for current process
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
807 * ldb <D.SysTsk Get system task #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
808 ldy ,s
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
809 ldx PD.RGS,y Get register stack ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
810 ldx R$X,x Get ptr to caller's track buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
811 ldy #$1A00 Size of track buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
812 os9 F$Move Copy from caller to temporary task
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
813 bcs L0479 Error copying, exit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
814
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
815 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
816
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
817 puls u,y
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
818 pshs u,y
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
819 lbsr L0376 Go check drive #/wait for it to spin up
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
820 ldx PD.RGS,y Get caller's register stack ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
821 ldb R$Y+1,x Get caller's side/density
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
822 bitb #$01 Check side
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
823 beq L0465 Side 1, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
824 com >u00AD,u
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
825 ldb >u00A9,u Get current control register settings
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
826 orb #%01000000 Mask in side 2
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
827 stb >u00A9,u Save updated control register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
828 L0465 lda R$U+1,x Get caller's track #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
829 ldx >u00A7,u Get current drive table ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
830 lbsr L02A5
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
831 bcs L0489
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
832 ldb #$F0 Write track command?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
833 *---
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
834 IFEQ Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
835 ldx >FBlock,u
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
836 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
837 ldx #$2000 start writing from block 1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
838 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
839
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
840 lbsr L0224 Go write the track
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
841 L0479 ldu 2,s
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
842 pshs b,cc Preserve error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
843
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
844 IFEQ Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
845
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
846 ldu >FBlock,u Get ptr to track buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
847 ldd #$1A00 Return track buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
848 os9 F$SRtMem
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
849
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
850 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
851
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
852 ldb >FTask,u point to task
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
853 os9 F$RelTsk release the task
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
854 fcb $8C skip 2 bytes
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
855
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
856 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
857
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
858 * format comes here when block allocation passes, but task allocation
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
859 * gives error. So er de-allocate the block.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
860 FError
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
861 IFGT Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
862 pshs b,cc save error code, cc
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
863 ldx >FBlock,u point to block
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
864 ldb #1 1 block to return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
865 os9 F$DelRAM de-allocate image RAM blocks
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
866 clr FBlock+1,u ensure that the block # in FBlock is zero.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
867 puls b,cc Restore error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
868 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
869
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
870 L0489 puls pc,u,y Restore regs & return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
871
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
872 * seek the head to track 0
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
873 sktrk0 lbsr chkdrv
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
874 ldx >u00A7,u
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
875 clr <$15,x
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
876 lda #$05
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
877 L0497 ldb <PD.STP,y
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
878 andb #%00000011 Just keep usable settings (6-30 ms)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
879 eorb #%01001011 Set proper bits for controller
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
880 pshs a
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
881 lbsr L03E4
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
882 puls a
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
883 deca
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
884 bne L0497
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
885 ldb <PD.STP,y
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
886 andb #%00000011 Just keep usable settings (6-30 ms)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
887 eorb #%00001011 Set proper bits for controller
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
888 lbra L03E4
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
889
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
890 L04B3 pshs y,x,d Preserve regs
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
891 ldd >VIRQCnt,pc Get VIRQ initial count value
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
892 std >u00B1,u Save it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
893 lda >u00A9,u ?Get drive?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
894 ora #%00001000 Turn drive motor on for that drive
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
895 sta >DPort Send drive motor on command to FDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
896 IFEQ Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
897 lda >D.DskTmr Get VIRQ flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
898 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
899 lda <D.MotOn Get VIRQ flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
900 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
901 bmi L04DE Not installed yet, try installing it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
902 bne L04E0 Drive already up to speed, exit without error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
903
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
904 * Drive motor speed timing loop (could be F$Sleep call now) (was over .5 sec)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
905 ldx #32 wait for 32 ticks
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
906 os9 F$Sleep
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
907
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
908 L04DE bsr InsVIRQ Install VIRQ to wait for drive motors
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
909 L04E0 clrb No error & return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
910 puls pc,y,x,d
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
911
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
912 InsVIRQ lda #$01 Flag drive motor is up to speed
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
913 IFEQ Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
914 sta >D.DskTmr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
915 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
916 sta <D.MotOn
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
917 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
918 ldx #$0001 Install VIRQ entry
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
919 leay >u00B1,u Point to packet
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
920 clr Vi.Stat,y Reset Status byte
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
921 ldd >VIRQCnt,pc Get initial VIRQ count value
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
922 os9 F$VIRQ Install VIRQ
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
923 bcc VIRQOut No error, exit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
924 lda #$80 Flag that VIRQ wasn't installed
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
925 IFEQ Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
926 sta >D.DskTmr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
927 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
928 sta <D.MotOn
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
929 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
930 VIRQOut clra
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
931 rts
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
932
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
933 * IRQ service routine for VIRQ (drive motor time)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
934 * Entry: U=Ptr to VIRQ memory area
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
935 IRQSvc pshs a
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
936 lda <D.DMAReq
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
937 beq L0509
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
938 bsr InsVIRQ
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
939 bra IRQOut
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
940 L0509 sta >DPort
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
941 IFNE H6309
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
942 aim #$FE,>u00B5,u
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
943 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
944 lda u00B5,u
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
945 anda #$FE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
946 sta u00B5,u
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
947 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
948 * fdb u00B5 --- so changes in data size won't affect anything
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
949 IFEQ Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
950 clr >D.DskTmr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
951 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
952 clr <D.MotOn
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
953 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
954 IRQOut puls pc,a
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
955
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
956 * Non-OS9 format goes here
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
957 * Entry: X=LSN
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
958 * Y=Path dsc. ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
959 * U=Device mem ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
960 L051A pshs x Preserve Logical sector #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
961 ldx >u00A7,u Get last drive table accessed ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
962 clra
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
963 pshs x,a Save ptr & NUL byte
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
964 IFNE H6309
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
965 ldw #$14 Clear 20 bytes
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
966 tfm s,x+
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
967 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
968 ldb #$14
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
969 L051ALp clr ,x+
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
970 decb
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
971 bne L051ALp
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
972 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
973 puls x,a Eat NUL & get back drive table ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
974 ldb <PD.CYL+1,y Get # cylinders on drive (ignores high byte)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
975 lda <PD.SID,y Get # sides
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
976 mul Calculate # tracks on drive (1 per head)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
977 IFNE H6309
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
978 decd Adjust to ignore track 0
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
979 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
980 subd #$0001
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
981 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
982 lda <PD.SCT+1,y Get # sectors/track
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
983 sta DD.TKS,x Save in drive table
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
984 sta <DD.SPT+1,x Save in other copy in drive table
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
985 mul Calculate # sectors on drive (minus track 0)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
986 pshs x Preserve drive table ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
987 tfr d,x Move # sectors on drive to X
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
988 lda <PD.T0S+1,y Get # sectors on track 0
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
989 leax a,x Add that many sectors to total
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
990 lda <PD.TYP,y Get device type settings
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
991 anda #%00000100 Mask out all but 512 byte sector flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
992 beq L0550 Not 512 byte sector, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
993 IFNE H6309
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
994 addr x,x Multiply by 2 (convert to 256 byte OS9 sectors)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
995 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
996 tfr x,d
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
997 leax d,x
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
998 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
999 L0550 tfr x,d Move # sectors to D
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1000 puls x Get back drive table ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1001 std DD.TOT+1,x Save # sectors allowed on drive
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1002 lda #UPDAT.+EXEC. Owner's read/write/exec attributes
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1003 sta DD.ATT,x Set attributes for disk
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1004 lda <PD.DNS,y Get density settings
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1005 lsla Shift for DD.FMT
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1006 pshs a Preserve it a sec
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1007 lda <PD.SID,y Get # sides
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1008 deca Adjust to base 0
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1009 ora ,s+ Merge with density settings
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1010 sta <DD.FMT,x Save in device table
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1011 clrb No error?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1012 puls pc,x Restore original LSN & return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1013
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1014 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1015
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1016 *****************************************************************
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1017 * NewDisk -- copyright 1985 by Dave Lewis.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1018 * Released to public domain January, 1986
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1019 * Permission granted to copy and redistribute provided this
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1020 * header is included with all copies.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1021 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1022 * This program is intended to replace the CCDisk module in the
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1023 * OS9Boot file on the OS-9 system disk. It is far more
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1024 * versatile than the disk driver provided with Color Computer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1025 * OS-9, and is also slightly smaller (20 bytes or so).
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1026 * Some of its features are:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1027 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1028 * -Uses the device descriptor to set head step rate. Original
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1029 * had 30mS hard-coded in.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1030 * -Handles double-sided disks.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1031 * -Gets its track and side information from the disk so you
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1032 * can read and write disks in any format the drive can
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1033 * physically handle. You can use 40-track double sided disks
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1034 * and still read/write 35-track single side disks.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1035 * -Performs some tests before attempting to use the disk.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1036 * The original CCDisk would hang the system if you tried to
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1037 * access a drive without a disk in it (I know, I know - you
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1038 * don't have to say `DUMMY!' - but it happens). You can
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1039 * hang this one too but not as easily.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1040 * -An 80-track double sided disk holds 720Kbytes of data.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1041 * That's four and a half 35-track single siders.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1042 * -All of this stuff is completely transparent once NewDisk is
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1043 * installed. NewDisk automatically senses the disk format
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1044 * and conforms to it. (within limits -- don't use non-OS9
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1045 * formats)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1046 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1047 * One problem -- this program is not complete in itself. If you
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1048 * want to boot from a double-sided disk you will need my
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1049 * version of OS9Gen which will generate a double-sided system
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1050 * disk. Don't try it with the stock version; you'll have to
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1051 * reformat the disk to clean it up afterwards.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1052 *****************************************************************
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1053 * Copyright 1985 by Dave Lewis.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1054 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1055 * UUCP address is loral!dml; in S. Cal. use ihnp4!sdcc3!loral
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1056 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1057 * I'm releasing this program to public domain. Copy it, share
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1058 * it, but don't you DARE sell it! I worked hard on it. Include
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1059 * this header with all copies.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1060 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1061 * If you like this program, send me 5 bucks to encourage me to
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1062 * write more stuff - or at least to release it. If you send
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1063 * me 10 bucks I'll send you a good (Dysan) double side disk
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1064 * formatted 35 track single side with both sourcecode and
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1065 * executable binary files of the following:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1066 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1067 * - NewDisk -- single or double sided disks, any number of
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1068 * tracks within reason, step rate set in device descriptor
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1069 * - OS9Gen -- rewritten version that automatically senses for
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1070 * single/double sided disk and puts all the boot data in
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1071 * the right places. Also enters the kernel file in the
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1072 * root directory, which makes Dcheck happy.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1073 * - Separate -- breaks up your bootfile into its component
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1074 * modules for modification. Replace or remove any module
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1075 * individually.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1076 * - Diskdescr -- sourcecode for an OS-9 disk device descriptor
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1077 * with EQUates at the beginning for step rate, #tracks,
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1078 * and single or double sided.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1079 * - Documentation and procedure files for installing all of
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1080 * the above in most common system configurations.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1081 * - Other stuff I've written that you may find useful.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1082 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1083 * Send to:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1084 * Dave Lewis
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1085 * 4417 Idaho Apt. 4
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1086 * San Diego CA 92116
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1087 *****************************************************************
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1088 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1089 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1090 * Copyright 1985 by Dave Lewis
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1091 * 4417 Idaho apt. 4
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1092 * San Diego, CA 92116
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1093 * Released to public domain January, 1986
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1094 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1095 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1096 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1097 N.DRIVES EQU 3 Number of drives supported
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1098 DISKRUN EQU $70 Disk run time after access
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1099 NMIVECT EQU $109 NMI jump vector in RAM
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1100 COMDREG EQU $FF48 1793 Command register (write)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1101 STATREG EQU $FF48 1793 Status register (read)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1102 TRAKREG EQU $FF49 1793 Track register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1103 SECTREG EQU $FF4A 1793 Sector register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1104 DATAREG EQU $FF4B 1793 Data register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1105 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1106 MOD eom,NAME,tylg,atrv,EXEC,STORG
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1107 FCB $FF Mode byte -- all modes
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1108 NAME FCS 'rb1773'
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1109 FCB 4 Version number
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1110 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1111 RMB DRVBEG Storage common to all drives
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1112 TABL.ORG RMB DRVMEM Drive 0 parameter table
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1113 RMB DRVMEM Drive 1 parameter table
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1114 RMB DRVMEM Drive 2 parameter table
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1115 DRV.ACT RMB 2 Active drive's table origin
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1116 DPRT.IMG RMB 1 Drive control port image byte
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1117 DRVS.RDY RMB 1 Drive ready flags
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1118 Q.SEEK RMB 1 Same drive/track flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1119 STORG EQU . Total storage required
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1120 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1121 * Function dispatch vectors
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1122 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1123 EXEC LBRA INIT Initialize variables
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1124 LBRA READ Read one sector
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1125 LBRA WRITE Write one sector
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1126 LBRA RETNOERR GETSTA call is not used
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1127 LBRA SETSTA Two oddball calls
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1128 LBRA RETNOERR TERM call is not used
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1129 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1130 INIT CLR >D.DSKTMR Zero disk rundown timer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1131 LDA #$D0 `Force interrupt' command
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1132 STA >COMDREG
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1133 LDA #$FF
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1134 LDB #N.DRIVES Number of drives
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1135 STB V.NDRV,U
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1136 LEAX TABL.ORG,U Origin of first drive table
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1137 INI.TBL STA DD.TOT+1,X Make total sectors nonzero
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1138 STA V.TRAK,X Force first seek to track 0
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1139 CLR DD.FMT,X Make it see a 1-sided disk
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1140 LEAX DRVMEM,X Go to next drive table
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1141 DECB Test for last table done
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1142 BNE INI.TBL Loop if not finished
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1143 LEAX NMI.SVC,PCR Get address of NMI routine
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1144 STX >NMIVECT+1 NMI Jump vector operand
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1145 LDA #$7E Jump opcode
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1146 STA >NMIVECT NMI Jump vector opcode
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1147 LDA >STATREG Clear interrupt condition
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1148 RETNOERR CLRB
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1149 RTS
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1150 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1151 ERR.WPRT COMB Set carry flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1152 LDB #E$WP Set error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1153 RTS
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1154 ERR.SEEK COMB Set carry flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1155 LDB #E$SEEK Set error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1156 RTS
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1157 ERR.CRC COMB Set carry flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1158 LDB #E$CRC Set error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1159 RTS
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1160 ERR.READ COMB Set carry flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1161 LDB #E$READ Set error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1162 RTS
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1163 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1164 * All disk controller commands exit via NMI. The service routine
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1165 * returns control to the address on top of stack after registers
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1166 * have been dumped off.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1167 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1168 NMI.SVC LEAS R$SIZE,S Dump registers off stack
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1169 LDA >STATREG Get status condition
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1170 STAT.TST LSLA Test status register bit 7
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1171 LBCS ERR.NRDY Status = Not Ready if set
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1172 LSLA Test bit 6
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1173 BCS ERR.WPRT Status = Write Protect if set
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1174 LSLA Test bit 5
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1175 LBCS ERR.WRT Status = Write Fault if set
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1176 LSLA Test bit 4
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1177 BCS ERR.SEEK Status = Record Not Found
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1178 LSLA Test bit 3
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1179 BCS ERR.CRC Status = CRC Error if set
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1180 LSLA Test bit 2
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1181 BCS ERR.READ Status = Lost Data if set
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1182 CLRB No error if all 0
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1183 RETURN1 RTS
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1184 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1185 READ TSTB If LSN is greater than 65,536
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1186 BNE ERR.SECT return a sector error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1187 LDA #$A4 Set retry control byte
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1188 CMPX #0 Is it sector 0?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1189 BNE READ2 If not, just read the data
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1190 BSR READ2 If sector 0, read it and
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1191 BCS RETURN1 update drive table
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1192 PSHS Y,X Save X and Y
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1193 LDX PD.BUF,Y Point to data buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1194 LDY DRV.ACT,U Point to active drive's table
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1195 LDB #DD.RES+1 Counter and offset pointer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1196 SEC0LOOP LDA B,X Get byte from buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1197 STA B,Y Store in drive table
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1198 DECB Decrement loop index
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1199 BPL SEC0LOOP Loop until B < 0
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1200 CLRB No error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1201 PULS X,Y,PC Pull and return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1202 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1203 WRITE TSTB If LSN is greater than 65,536
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1204 BNE ERR.SECT return a sector error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1205 LDA #$A4 Set retry control byte
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1206 PSHS X,A,CC Save registers
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1207 LBSR DSKSTART Start and select drive
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1208 BCS EXIT.ERR Exit if error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1209 REWRITE LDX 2,S Get LSN off stack
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1210 LBSR SEEK Position head at sector
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1211 BCS RETRY.WR Try again if seek error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1212 BSR WRITE2 Write the sector
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1213 BCS RETRY.WR Try again if write error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1214 TST PD.VFY,Y Check verify flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1215 BNE EXIT.NER Exit without verify if off
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1216 BSR VERIFY Verify sector just written
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1217 BCC EXIT.NER Exit if no error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1218 RETRY.WR LDA 1,S Get retry control byte
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1219 LSRA Indicate another try
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1220 STA 1,S Put updated byte back
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1221 BEQ EXIT.ERR If zero, no more chances
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1222 BCC REWRITE If bit 0 was 0, don't home
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1223 BSR HOME Home and start all over
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1224 BCC REWRITE If it homed OK, try again
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1225 EXIT.ERR PULS CC Restore interrupt masks
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1226 COMA Set carry for error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1227 BRA CCDEXIT Finish exit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1228 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1229 EXIT.NER PULS CC Restore interrupt masks
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1230 CLRB Clear carry -- no error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1231 CCDEXIT LDA #8 Spindle motor control bit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1232 STA >DPORT Deselect disk drive
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1233 PULS A,X,PC Pull and return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1234 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1235 ERR.SECT COMB Set carry flag for error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1236 LDB #E$SECT Set error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1237 RTS
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1238 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1239 READ2 PSHS X,A,CC CC is on top of stack
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1240 LBSR DSKSTART Start drives and test
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1241 BCS EXIT.ERR Abort if not ready
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1242 REREAD LDX 2,S Recover LSN from stack
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1243 LBSR SEEK Position head at sector
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1244 BCS RETRY.RD Try again if seek error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1245 BSR READ3 Read the sector
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1246 BCC EXIT.NER Read OK, return data
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1247 RETRY.RD LDA 1,S Get retry control byte
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1248 LSRA Indicate another try
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1249 STA 1,S Put updated byte back
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1250 BEQ EXIT.ERR If it was all 0, quit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1251 BCC REREAD If bit 0 was 0, don't home
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1252 BSR HOME Home and start all over
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1253 BCC REREAD If it won't home, quit now
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1254 BRA EXIT.ERR Exit with an error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1255 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1256 WRITE2 LDA #$A2 `Write sector' command
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1257 BSR RWCMDX Execute command
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1258 WAITWDRQ BITA >STATREG Wait until controller is
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1259 BEQ WAITWDRQ ready to transfer data
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1260 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1261 WRTLOOP LDA ,X+ Get byte from data buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1262 STA >DATAREG Put it in data register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1263 STB >DPORT Activate DRQ halt function
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1264 BRA WRTLOOP Loop until interrupted
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1265 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1266 VERIFY LDA #$82 `Read sector' command
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1267 BSR RWCMDX Execute command
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1268 WAITVDRQ BITA >STATREG Wait until controller is
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1269 BEQ WAITVDRQ ready to transfer data
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1270 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1271 VFYLOOP LDA >DATAREG Get read data byte
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1272 STB >DPORT Activate DRQ halt function
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1273 CMPA ,X+ Compare to source data
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1274 BEQ VFYLOOP Loop until interrupt if equal
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1275 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1276 ANDB #$7F Mask off DRQ halt bit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1277 STB >DPORT Disable DRQ halt function
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1278 LBSR KILLCOMD Abort read command
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1279 ERR.WRT COMB Set carry flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1280 LDB #E$WRITE Set error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1281 RTS
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1282 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1283 SS.HOME PSHS X,A,CC Set up stack for exit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1284 BSR HOME Home drive
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1285 BRA SS.EXIT Skip to empty-stack exit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1286 SS.EXIT4 LEAS 2,S Exit w/4 bytes on stack
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1287 SS.EXIT2 LEAS 2,S Exit w/2 bytes on stack
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1288 SS.EXIT BCS EXIT.ERR Exit with error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1289 BRA EXIT.NER Exit with no error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1290 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1291 HOME LBSR DSKSTART Start and select drive
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1292 BCS RETURN2 Return if error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1293 LDX DRV.ACT,U Point to active drive's table
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1294 CLR V.TRAK,X Set track number to zero
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1295 LDD #$43C Home, verify, allow 3 seconds
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1296 LBSR STEPEX Execute stepping command
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1297 RETURN2 RTS
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1298 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1299 SETSTA LDX PD.RGS,Y Point to caller's stack
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1300 LDB R$B,X Get stacked B register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1301 CMPB #SS.RESET `Home' call
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1302 BEQ SS.HOME Execute Home sequence
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1303 CMPB #SS.WTRK `Write track' call, used by
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1304 BEQ WRT.TRAK the Format utility
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1305 COMB If not one of those, it's an
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1306 LDB #E$UNKSVC illegal setsta call
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1307 RTS
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1308 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1309 READ3 LDA #$82 Read sector command
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1310 BSR RWCMDX Set up for sector read
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1311 WAITRDRQ BITA >STATREG Wait for controller to find
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1312 BEQ WAITRDRQ sector and start reading
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1313 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1314 READLOOP LDA >DATAREG Get data from controller
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1315 STA ,X+ Store in sector buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1316 STB >DPORT Activate DRQ halt function
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1317 BRA READLOOP Loop until interrupted
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1318 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1319 RWCMDX LDX PD.BUF,Y Point to sector buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1320 LDB DPRT.IMG,U Do a side verify using the
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1321 BITB #$40 DPORT image byte as a side
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1322 BEQ WTKCMDX select indicator
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1323 ORA #8 Compare for side 1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1324 WTKCMDX STA >COMDREG Issue command to controller
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1325 LDB #$A8 Set up DRQ halt function
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1326 ORB DPRT.IMG,U OR in select bits
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1327 LDA #2 DRQ bit in status register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1328 RTS
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1329 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1330 * Write an entire track -- used by Format
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1331 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1332 WRT.TRAK PSHS X,A,CC Set up stack for exit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1333 LDA R$U+1,X Get track number
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1334 LDB R$Y+1,X Get side select bit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1335 LDX R$X,X Get track buffer address
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1336 PSHS X,D Save 'em
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1337 LBSR DSKSTART Start and select drive
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1338 BCS SS.EXIT4 Exit if error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1339 PULS D Get track number and side
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1340 LDX DRV.ACT,U Get drive table address
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1341 BSR SID.PCMP Get drive ready to go
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1342 TST Q.SEEK,U Different drive/track?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1343 BNE WRT.TRK2 If not, no need to seek
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1344 LDD #$103C Seek, allow 3 seconds
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1345 LBSR STEPEX Execute stepping command
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1346 BCS SS.EXIT2 Exit if error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1347 WRT.TRK2 PULS X Retrieve track buffer address
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1348 LDA #$F0 `Write track' command
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1349 BSR WTKCMDX Execute write track command
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1350 LBSR WAITWDRQ Just like a Write Sector
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1351 LBRA SS.EXIT Return to caller
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1352 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1353 SID.PCMP LSRB Bit 0 of B is set for
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1354 BCC SIDE.ONE side 2 of disk
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1355 LDB DPRT.IMG,U Get drive control image byte
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1356 ORB #$40 Side 2 select bit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1357 STB DPRT.IMG,U Activate side 2 select
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1358 SIDE.ONE CMPA PD.CYL+1,Y If track number exceeds #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1359 LBHI ERR.SECT of tracks, return error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1360 SD.PCMP2 LDB PD.DNS,Y Check track density of drive
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1361 LSRB Shift bit 1 (TPI bit) into
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1362 LSRB carry flag (1 = 96 TPI)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1363 LDB #20 Precomp starts at track 21
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1364 BCC FORTYTKS on 48 TPI drives, track 41
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1365 LSLB on 96 TPI drives
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1366 FORTYTKS PSHS B Put B where it can be used
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1367 CMPA ,S+ Does it need precomp?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1368 BLS NOPRECMP No, skip next step
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1369 LDB DPRT.IMG,U Get drive control image byte
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1370 ORB #$10 Write precompensation bit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1371 STB DPRT.IMG,U Activate precompensation
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1372 NOPRECMP LDB V.TRAK,X Get current track number
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1373 STB >TRAKREG Update disk controller
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1374 CMPA V.TRAK,X Same track as last access?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1375 BEQ SAMETRAK If so, leave flag set
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1376 CLR Q.SEEK,U Clear same drive/track flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1377 SAMETRAK STA V.TRAK,X Update track number
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1378 STA >DATAREG Set destination track
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1379 LDB DPRT.IMG,U Get disk control byte
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1380 STB >DPORT Update control port
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1381 RTS
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1382 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1383 * Translate logical sector number (LSN) to physical side, track
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1384 * and sector, activate write precompensation if necessary,
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1385 * and execute seek command. If any error occurs, return error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1386 * number to calling routine.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1387 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1388 SEEK LDD PD.SCT,Y Get #sectors per track
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1389 PSHS X,D Put LSN and sec/trk on stack
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1390 LDD 2,S Get LSN off stack
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1391 CLR 2,S Set up track counter
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1392 FINDTRAK INC 2,S Increment track counter
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1393 SUBD ,S Subtract sectors in one track
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1394 BPL FINDTRAK Loop if LSN still positive
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1395 ADDD ,S++ Restore sector number
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1396 INCB Sector numbers start at 1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1397 STB 1,S Save sector number
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1398 PULS A Get track number
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1399 DECA Compensate for extra count
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1400 LDX DRV.ACT,U Get active table address
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1401 LDB DD.FMT,X See if disk is double sided
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1402 BITB #1 Test #sides bit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1403 BEQ SEEK2 If one-sided, skip next step
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1404 LSRA Divide track number by 2
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1405 ROLB Put remainder in B bit 0
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1406 SEEK2 BSR SID.PCMP Set up precomp and side sel
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1407 PULS B Get sector number
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1408 STB >SECTREG Set destination sector
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1409 TST Q.SEEK,U Same drive/track?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1410 BNE COMDEXIT If so, no need to seek
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1411 LDD #$143C Seek with verify, allow 3 sec
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1412 BRA STEPEX Execute stepping command
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1413 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1414 * Execute command in A and wait for it to finish. If it runs
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1415 * normally or aborts with an error it will exit through NMI;
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1416 * if it takes an unreasonable amount of time this routine
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1417 * will abort it and set the carry flag. If the command
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1418 * involves head movement, use STEPEX to set step rate.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1419 * On entry, A contains command code and B contains time limit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1420 * in 50-millisecond increments.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1421 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1422 STEPEX PSHS A Put raw command on stack
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1423 LDA PD.STP,Y Get step rate code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1424 EORA #3 Convert to 1793's format
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1425 ORA ,S+ Combine with raw command
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1426 COMDEX STA >COMDREG Execute command in A
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1427 CLRA Clear carry flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1428 BSR WAIT50MS Wait while command runs
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1429 BCC COMDEXIT Exit if no error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1430 CMPB #E$NOTRDY Test for the three valid
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1431 BEQ KCEXIT error codes for a Type 1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1432 CMPB #E$SEEK disk controller command --
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1433 BEQ KCEXIT home, seek or force int-
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1434 CMPB #E$CRC errupt -- and return the
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1435 BEQ KCEXIT errors
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1436 COMDEXIT CLRB No error, clear carry
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1437 RTS
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1438 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1439 WAIT50MS LDX #$15D8 Almost exactly 50 mSec delay
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1440 WAITIMER LEAX -1,X Wait specified time for disk
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1441 BNE WAITIMER controller to issue NMI
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1442 DECB signaling command completed
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1443 BNE WAIT50MS or aborted with error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1444 KILLCOMD LDA #$D0 Force interrupt, NMI disabled
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1445 STA >COMDREG Abort command in progress
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1446 ERR.NRDY LDB #E$NOTRDY Set error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1447 KCEXIT COMA Set carry to flag error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1448 RTS
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1449 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1450 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1451 * Get selected drive ready to read or write. If spindle motors are
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1452 * stopped, start them and wait until they're up to operating
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1453 * speed. Check drive number and select drive if number is valid.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1454 * Monitor index pulses to ensure door is closed, disk inserted
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1455 * and turning, etc. Return appropriate error code if any of
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1456 * these conditions can't be met.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1457 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1458 DSKSTART TST >D.DSKTMR Are drives already running?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1459 BNE SPINRDY If so, no need to wait
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1460 CLR DRVS.RDY,U No drives are ready
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1461 LDD #$80B Motor on, wait 550 mSec
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1462 STA >DPORT Start spindle motors
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1463 BSR WAIT50MS Wait for motors to start
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1464 SPINRDY LDA PD.DRV,Y Get drive number
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1465 CMPA V.NDRV,U Test for valid drive #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1466 BHS ERR.UNIT Return error if not
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1467 LEAX TABL.ORG,U Compute address of active
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1468 LDB #DRVMEM drive's parameter table
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1469 MUL TABL.ORG + (D# * tablesize)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1470 LEAX D,X Add computed offset to origin
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1471 LDA PD.DRV,Y Get drive number again
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1472 LSLA Set corresponding drv select
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1473 BNE NOTDRV0 bit -- 1 for D1, 2 for D2
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1474 INCA Set bit 0 for drive 0
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1475 NOTDRV0 TFR A,B Copy select bit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1476 ORB #$28 Enable double density
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1477 ORCC #INTMASKS Disable IRQ and FIRQ
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1478 STB >DPORT Enable drive
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1479 STB DPRT.IMG,U Set image byte
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1480 CLR Q.SEEK,U Clear same drive/track flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1481 CMPX DRV.ACT,U Is this the same drive?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1482 BNE NEWDRIVE If not, leave flag zeroed
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1483 LDB #$FF Indicate successive accesses
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1484 STB Q.SEEK,U to the same drive.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1485 NEWDRIVE STX DRV.ACT,U Store table address
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1486 BITA DRVS.RDY,U Has this drive been ready
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1487 BNE DRVRDY since the motors started?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1488 PSHS A Save drive select bit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1489 LDD #$D405 Force int, allow 250 mSec
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1490 BSR COMDEX Look for index pulse
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1491 PSHS CC Save carry flag condition
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1492 BSR KILLCOMD Clear index-pulse NMI state
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1493 PULS CC,A Restore carry flag and A
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1494 BCS RETURN3 Error if no index pulse
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1495 DRVRDY ORA DRVS.RDY,U Set corresponding drive
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1496 STA DRVS.RDY,U ready flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1497 LDA #DISKRUN Restart disk rundown timer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1498 STA >D.DSKTMR
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1499 LDA >STATREG Clear interrupt condition
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1500 CLRB Return no error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1501 RETURN3 RTS
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1502 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1503 ERR.UNIT COMB Set carry flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1504 LDB E$UNIT Set error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1505 RTS
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1506 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1507 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1508
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1509 emod
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1510 eom equ *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1511 end