annotate level1/modules/rb1773.asm @ 1581:c35df03d98db

IRQ properly deleted
author boisy
date Fri, 21 May 2004 03:18:56 +0000
parents 1a19aed5dc34
children dc3272e71faa
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
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
11 *
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
12 * Disto Super Controller II Registers:
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
13 *
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
14 * $FF74 RW.Dat --- R/W Buffer data #1
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
15 * $FF75 mirror of $FF74
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
16 * $FF76 RW.Ctrl --- Write D0 = 0 FDC Write Op #2
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
17 * = 1 FDC Read Op #2
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
18 * D1 = 0 Normal Mode
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
19 * = 1 Buffered I/O Mode
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
20 * D2 = 0 Normal NMI
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
21 * = 1 Masked NMI
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
22 * D3 = 0 No FIRQ (Masked)
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
23 * = 1 Enabled FIRQ
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
24 * Read D7 = FDC INT Status (Inverted)
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
25 * $FF77 mirror of $FF76
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
26 * #1: any write to $FF76-$FF77 clears Buffer counter
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
27 * #2: in buffered mode only
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
28 *
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
29 * $Id$
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
30 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
31 * Edt/Rev YYYY/MM/DD Modified by
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
32 * Comment
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 * 11 1993/05/12 ???
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
35 * 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
36 * between sector buffers & in drive table init/copies.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
37 * 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
38 * Shrunk (slowed slightly) error returns
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
39 * Added blobstop code
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 * 11r1 2003/09/03 Boisy G. Pitre
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
42 * Added code to sense if HW is present or not and return error if not.
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
43 *
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
44 * 1r0 2004/05/20 Boisy G. Pitre
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
45 * Restarted edition due to name change; backported to Level 1
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
46
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
47 nam rb1773
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
48 ttl Western Digital 1773 Disk Controller Driver
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
49
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
50 IFP1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
51 use defsfile
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
52 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
53
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
54 tylg set Drivr+Objct
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
55 atrv set ReEnt+rev
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
56 rev set $00
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
57 edition set 1
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
58
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
59 * Configuration Settings
1578
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
60 N.Drives equ 4 number of drives to support
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
61 TC9 equ 0 Set to 1 for TC9 special slowdowns
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
62 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
63
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
64 * WD-17X3 Definitions
1578
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
65 CtrlReg equ $00 Control register for Tandy controllers; not part of WD
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
66 WD_Cmd equ $08
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
67 WD_Stat equ WD_Cmd
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
68 WD_Trak equ $09
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
69 WD_Sect equ $0A
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
70 WD_Data equ $0B
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
71
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
72 * WD-17X3 Commands
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
73 S$FrcInt equ $D0
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
74
1578
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
75 * Control Register Definitions
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
76 C_HALT equ %10000000 Halt line to CPU is active when set
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
77 C_SIDSEL equ %01000000 Side select (0 = front side, 1 = back side)
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
78 C_DBLDNS equ %00100000 Density (0 = single, 1 = double)
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
79 C_WPRCMP equ %00010000 Write precompensation (0 = off, 1 = on)
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
80 C_MOTOR equ %00001000 Drive motor (0 = off, 1 = on)
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
81 C_DRV2 equ %00000100 Drive 2 selected when set
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
82 C_DRV1 equ %00000010 Drive 1 selected when set
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
83 C_DRV0 equ %00000001 Drive 0 selected when set
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
84
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
85 mod eom,name,tylg,atrv,start,size
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
86
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
87 u0000 rmb DRVBEG+(DRVMEM*N.Drives)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
88 u00A7 rmb 2 Last drive table accessed (ptr)
1579
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
89 CtlImg rmb 1 Bit mask for control reg (drive #, side,etc)
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
90 u00AA rmb 1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
91 sectbuf rmb 2 Ptr to 512 byte sector buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
92 u00AD rmb 1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
93 u00AE rmb 1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
94 FBlock rmb 2 block number for format
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
95 IFGT Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
96 FTask rmb 1 task number for format
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
97 ENDC
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
98 VIRQPak rmb 2 Vi.Cnt word for VIRQ
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
99 u00B3 rmb 2 Vi.Rst word for VIRQ
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
100 u00B5 rmb 1 Vi.Stat byte for VIRQ (drive motor timeout)
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
101 loglsn rmb 2 OS9's logical sector #
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
102 physlsn rmb 1 PCDOS (512 byte sector) sector #
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
103 size equ .
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
104
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
105 fcb DIR.+SHARE.+PEXEC.+PWRIT.+PREAD.+EXEC.+UPDAT.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
106
1574
e9c2b4be14f6 With faith, this too shall pass.
boisy
parents: 1570
diff changeset
107 name fcs /rb1773/
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
108 fcb edition
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
109
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
110 VIRQCnt fdb TkPerSec*4 Initial count for VIRQ (4 seconds)
1570
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 IRQPkt fcb $00 Normal bits (flip byte)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
113 fcb $01 Bit 1 is interrupt request flag (Mask byte)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
114 fcb 10 Priority byte
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
115
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
116 * Init
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
117 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
118 * Entry:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
119 * Y = address of device descriptor
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
120 * U = address of device memory area
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
121 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
122 * Exit:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
123 * CC = carry set on error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
124 * B = error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
125 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
126 * New code added 09/03/2003 by Boisy G. Pitre
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
127 * 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
128 * does exist.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
129 Init ldx V.PORT,u get Base port address
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
130 lda WD_Data,x get byte at FDC Data register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
131 coma complement it to modify it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
132 sta WD_Data,x write it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
133 clrb
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
134 Init2 decb delay a bit...
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
135 bmi Init2
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
136 suba WD_Data,x read it back
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
137 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
138 **
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
139 IFEQ Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
140 clr >D.DskTmr flag drive motor as not running
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
141 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
142 clr <D.MotOn flag drive motor as not running
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
143 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
144 leax WD_Stat,x point to Status/Command register
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
145 lda #S$FrcInt "Force Interrupt" command
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
146 sta ,x send to FDC
1579
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
147 lbsr FDCDelay time delay for ~ 108 cycles
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
148 lda ,x eat status register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
149 ldd #$FF*256+N.Drives 'invalid' value & # of drives
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
150 sta >physlsn,u set 512 byte sector # to bogus value
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
151 sta >physlsn+1,u
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
152 leax DRVBEG,u point to start of drive tables
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
153 l@ sta ,x DD.TOT MSB to bogus value
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
154 sta <V.TRAK,x init current track # to bogus value
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
155 leax <DRVMEM,x point to next drive table
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
156 decb done all drives yet?
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
157 bne l@ no, init them all
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
158 leax >NMISvc,pc point to NMI service routine
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
159 IFGT Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
160 stx <D.NMI install as system NMI
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
161 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
162 stx >D.XNMI+1 NMI jump vector operand
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
163 lda #$7E JMP code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
164 sta >D.XNMI NMI jump vector opcode
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
165 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
166 pshs y save device dsc. ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
167 leay >u00B5,u point to Vi.Stat in VIRQ packet
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
168 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
169 leay >IRQSvc,pc point to IRQ service routine
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
170 leax >IRQPkt,pc point to IRQ packet
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
171 os9 F$IRQ install IRQ
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
172 puls y Get back device dsc. ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
173 bcs Return If we can't install IRQ, exit
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
174 IFNE SCII
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
175 lda MPI.Slct
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
176 sta mpislot,u
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
177 ldd #RW.Ctrl
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
178 leay SC2vec,pcr
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
179 os9 F$IRQ
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
180 bcs Return
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
181 pshs cc
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
182 orcc #IntMasks
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
183 lda $FF23
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
184 * disable FIRQ from cart. set flag on falling edge of CART
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
185 anda #$FC
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
186 sta $FF23
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
187 lda $FF22
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
188 lda D.IRQER
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
189 ora #1 enable CART IRQ
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
190 sta D.IRQER .. save in IRQENR shadow
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
191 sta IRQENR .. and actual register
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
192 puls cc
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
193 ENDC
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
194 ldd #512 Request 512 byte sector buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
195 pshs u Preserve device mem ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
196 os9 F$SRqMem Request sector buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
197 tfr u,x Move ptr to sector buffer to x
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
198 puls u Restore device mem ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
199 bcs Return If error, exit with it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
200 stx >sectbuf,u Save ptr to sector buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
201
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
202 * GetStat
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 * Entry:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
205 * A = function code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
206 * Y = address of path descriptor
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
207 * U = address of device memory area
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
208 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
209 * Exit:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
210 * CC = carry set on error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
211 * B = error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
212 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
213 GetStat clrb no GetStt calls - return, no error, ignore
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
214 Return rts
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
215
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
216 * Term
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
217 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
218 * Entry:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
219 * U = address of device memory area
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
220 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
221 * Exit:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
222 * CC = carry set on error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
223 * B = error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
224 *
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
225 Term leay >VIRQPak,u Point to VIRQ packet
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
226 IFNE H6309
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
227 tfr 0,x "remove"
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
228 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
229 ldx #$0000
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
230 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
231 os9 F$VIRQ Remove VIRQ
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
232 IFNE H6309
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
233 tfr 0,x "remove"
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
234 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
235 ldx #$0000
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
236 ENDC
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
237 leay >IRQSvc,pc point to IRQ service routine
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
238 os9 F$IRQ Remove IRQ
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
239 IFNE SCII
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
240 IFNE H6309
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
241 tfr 0,x "remove"
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
242 ELSE
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
243 ldx #$0000
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
244 ENDC
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
245 leay SC2vec,pcr
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
246 os9 F$IRQ Remove IRQ
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
247 ENDC
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
248 pshs u Save device mem ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
249 ldu >sectbuf,u Get pointer to sector buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
250 ldd #512 Return sector buffer memory
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
251 os9 F$SRtMem
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
252 puls u Restore device mem ptr
1578
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
253 clr >DPort+CtrlReg shut off drive motors
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
254 IFEQ Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
255 clr >D.DskTmr Clear out drive motor timeout flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
256 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
257 clr <D.MotOn Clear out drive motor timeout flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
258 ENDC
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
259 ex rts return
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
260
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
261 * Check if 512 byte sector conversion needed
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
262 * Entry: B:X=LSN
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
263 * U=Static mem ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
264 * Y=Path dsc. ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
265 * 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
266 * for 512 byte sectors
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
267 Chk512 pshs x,b save LSN
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
268 stx >loglsn,u save OS9 LSN
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
269 lda <PD.TYP,y get device type from path dsc.
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
270 anda #%00000100 mask out all but 512 byte sector flag
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
271 bne Log2Phys 512 byte sectors, go process
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
272 L00CA puls pc,x,b restore LSN & return
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
273 * 512 byte sector processing goes here
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
274 Log2Phys puls x,b Get back LSN
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
275 clrb Clear carry for rotate (also high byte of LSN)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
276 tfr x,d Move to mathable register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
277 IFNE H6309
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
278 rord Divide LSN by 2
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
279 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
280 rora
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
281 rorb
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
282 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
283 tfr d,x Move new LSN back to X
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
284 stx >physlsn,u Save 'physical' LSN (for controller)
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
285 clrb No error & return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
286 rts
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
287
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
288 start lbra Init
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
289 bra Read
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
290 nop
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
291 lbra Write
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
292 bra GetStat
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
293 nop
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
294 lbra SetStat
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
295 bra Term
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
296 nop
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
297
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
298 * Read
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
299 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
300 * Entry:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
301 * B = MSB of LSN
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
302 * X = LSB of LSN
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
303 * Y = address of path descriptor
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
304 * U = address of device memory area
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
305 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
306 * Exit:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
307 * CC = carry set on error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
308 * B = error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
309 *
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
310 Read bsr Chk512 go check for 512 byte sector/adjust if needed
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
311 lda #%10010001 error flags (see Disto SCII source)
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
312 pshs x preserve sector #
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
313 lbsr L0162 go read the sector
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
314 puls x restore sector #
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
315 bcs ex if error, exit
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
316 pshs y,x save path dsc ptr & LSN
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
317 leax ,x LSN0?
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
318 bne L012D no, go calculate normally
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
319 puls y,x yes, restore path dsc ptr & LSN
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
320 lda <PD.TYP,y get type from path dsc.
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
321 bita #TYP.NSF standard OS-9 format?
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
322 beq L00F0 yes, skip ahead
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
323 lbsr L051A
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
324 pshs y,x save path dsc ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
325 bra L012D
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
326
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
327 * LSN0, standard OS-9 format
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
328 L00F0 ldx >sectbuf,u Get ptr to sector buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
329 pshs y,x Preserve path dsc. ptr & sector buffer ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
330 ldy >u00A7,u Get last drive table accessed ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
331 IFNE H6309
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
332 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
333 tfm x+,y+ Copy them
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
334 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
335 ldb #DD.SIZ
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
336 L00F0Lp lda ,x+
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
337 sta ,y+
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
338 decb
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
339 bne L00F0Lp
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
340 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
341 ldy >u00A7,u Get drive table ptr back
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
342 lda <DD.FMT,y Get format for disk in drive
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
343 ldy 2,s restore path descriptor pointer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
344 ldb <PD.DNS,y Get path's density settings
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
345 bita #FMT.DNS Disk in drive double density?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
346 beq L0115 No, all drives can read single, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
347 bitb #DNS.MFM Can our path dsc. handle double density?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
348 beq erbtyp No, illegal
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
349 L0115 bita #FMT.TDNS Is new disk 96 tpi?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
350 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
351 bitb #DNS.DTD Can path dsc. handle 96 tpi?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
352 beq erbtyp No, illegal
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
353 L011D bita #FMT.SIDE Is new disk double sided?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
354 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
355 lda <PD.SID,y Get # sides path dsc. can handle
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
356 suba #2 sides higher or equal to 2?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
357 blo erbtyp Yes, exit with illegal type error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
358 L0128 clrb No error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
359 * puls y,x ??? 2 USELESS LINES?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
360 * pshs y,x
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
361 * LSN's other than 0 come straight here
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
362 L012D ldy 2,s Get path dsc. ptr back??
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
363 ldx PD.BUF,y Get path dsc. buffer ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
364 lda <PD.TYP,y Get path dsc. disk type
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
365 ldy >sectbuf,u Get ptr to sector buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
366 IFNE H6309
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
367 ldw #256 OS9 sector size (even if physical was 512)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
368 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
369 anda #%00000100 Mask out all but 512 byte sector flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
370 beq L014B If normal sector, just copy it
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
371 ldd >loglsn,u Get OS9's LSN (twice of the 'real' 512 sector)
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
372 andb #$01 Mask out all but odd/even sector indicator
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
373 beq L014B Even, use 1st half of 512 byte sector
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
374 IFNE H6309
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
375 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
376 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
377 leay 256,y
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
378 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
379 L014B equ *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
380 IFNE H6309
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
381 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
382 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
383 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
384 pshs d
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
385 clrb
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
386 L014BLp lda ,y+
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
387 sta ,x+
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
388 decb
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
389 bne L014BLp
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
390 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
391 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
392
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
393 erbtyp comb
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
394 ldb #E$BTyp Error - wrong type error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
395 puls pc,y,x
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
396
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
397 * Read error - retry handler
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
398 L0159 bcc L0162 Normal retry, try reading again
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
399 pshs x,d Preserve regs
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
400 lbsr sktrk0 Seek to track 0 (attempt to recalibrate)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
401 puls x,d Restore regs & try reading again
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
402
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
403 L0162 pshs x,d Preserve regs
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
404 bsr L016F Go read sector
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
405 puls x,d Restore regs (A=retry flags)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
406 bcc L01D7 No error, return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
407 lsra Shift retry flags
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
408 bne L0159 Still more retries allowed, go do them
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
409 * otherwise, final try before we give up
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
410 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
411 bcs L01D7 Error somewhere, exit with it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
412 L0176 ldx >sectbuf,u Get physical sector buffer ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
413 * pshs y,cc Preserve timeout timer & CC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
414 ldb #$80 Read sector command
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
415 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
416 *** Next few lines are commented out for blobstop patches
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
417 *L0180 bita >DPort+WD_Stat check status register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
418 * bne L0197 eat it & start reading sector
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
419 * leay -1,y bump timeout timer down
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
420 * bne L0180 keep trying until it reaches 0 or sector read
1579
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
421 * lda >CtlImg,u get current drive settings
1578
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
422 * ora #C_MOTOR turn drive motor on
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
423 * sta >DPort+CtrlReg send to controller
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
424 * puls y,cc restore regs
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
425 * lbra L03E0 exit with Read Error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
426 *** Blobstop fixes
1578
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
427 stb >DPort+CtrlReg send B to control register
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
428 nop allow HALT to take effect
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
429 nop
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
430 bra L0197 and a bit more time
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
431 * Read loop - exited with NMI
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
432 * Entry: X=ptr to sector buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
433 * B=Control register settings
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
434 L0197 lda >DPort+WD_Data get byte from controller
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
435 sta ,x+ store into sector buffer
1578
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
436 * stb >DPort+CtrlReg drive info
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
437 nop -- blobstop fix
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
438 bra L0197 Keep reading until sector done
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
439
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
440 L01A1 orcc #IntMasks Shut off IRQ & FIRQ
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
441 stb >DPort+WD_Cmd Send command
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
442 * ldy #$FFFF
1578
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
443 ldb #C_DBLDNS+C_MOTOR Double density & motor on
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
444 * ldb #%00101000 Double density & motor on
1579
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
445 orb >CtlImg,u Merge with current drive settings
1578
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
446 stb >DPort+CtrlReg Send to control register
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
447 ldb #C_HALT+C_DBLDNS+C_MOTOR Enable halt, double density & motor on
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
448 * ldb #%10101000 Enable halt, double density & motor on
1579
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
449 orb >CtlImg,u Merge that with current drive settings
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
450 lbra FDCDelay Time delay to wait for command to settle
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
451 * lda #$02
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
452 *L01BE rts
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
453
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
454 * Write
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
455 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
456 * Entry:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
457 * B = MSB of LSN
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
458 * X = LSB of LSN
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
459 * Y = address of path descriptor
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
460 * U = address of device memory area
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
461 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
462 * Exit:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
463 * CC = carry set on error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
464 * B = error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
465 *
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
466 Write lbsr Chk512 go adjust LSN for 512 byte sector if needed
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
467 lda #%1001001 retry flags for I/O errors (see Disto SCII source)
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
468 L01C4 pshs x,d preserve LSN, retries
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
469 bsr L01E8 go write the sector
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
470 puls x,d restore LSN, retries
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
471 bcs L01D8 error writing, go to write retry handler
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
472 tst <PD.VFY,y no error, do we want physical verify?
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
473 bne L01D6 no, exit without error
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
474 lbsr verify go re-read & verify 32 out of 256 bytes
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
475 bcs L01D8 error on verify, go to write retry handler
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
476 L01D6 clrb no error & return
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
477 L01D7 rts
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
478
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
479 * Write error retry handler
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
480 L01D8 lsra Shift retry flags
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
481 lbeq L03AF Too many retries, exit with error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
482 bcc L01C4 Normal retry, attemp to re-write sector
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
483 pshs x,d Preserve flags & sector #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
484 lbsr sktrk0 Seek to track 0 (attempt to recalibrate)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
485 puls x,d Restore flags & sector #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
486 bra L01C4 Try re-writing now
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
487
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
488 * 512 byte sector write here
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
489 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
490 bcs L01D7 Error, exit with it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
491 pshs y,d Preserve path dsc. ptr & LSN
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
492 lda <PD.TYP,y Get device type
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
493 anda #%00000100 512 byte sector?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
494 beq L020D No, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
495 lda #$91 ??? appears to be useless
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
496 lbsr L0176 Go read the sector in
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
497 ldd >loglsn,u Get OS9 LSN
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
498 andb #$01 Even or odd?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
499 beq L020D Even, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
500 ldx >sectbuf,u Get physical sector buffer ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
501 leax >$0100,x Point to 2nd half
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
502 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
503
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
504 L020D ldx >sectbuf,u Get physical sector buffer ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
505
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
506 L0211 ldy PD.BUF,y Get path dsc. buffer ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
507 IFNE H6309
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
508 ldw #256 Copy write buffer to sector buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
509 tfm y+,x+
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
510 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
511 clrb
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
512 L0211Lp lda ,y+
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
513 sta ,x+
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
514 decb
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
515 bne L0211Lp
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
516 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
517 puls y,d Get path dsc. ptr & LSN back
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
518 ldx >sectbuf,u Get physical sector buffer ptr again
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
519 ldb #$A0 Write sector command
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
520
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
521 * Format track comes here with B=$F0 (write track)
1579
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
522 *WrTrk pshs y,cc Preserve path dsc. ptr & CC
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
523 WrTrk lbsr L01A1 Send command to controller (including delay)
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
524 *** Commented out for blobstop fixes
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
525 *L0229 bita >DPort+WD_Stat Controller done yet?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
526 * bne L0240 Yes, go write sector out
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
527 * leay -$01,y No, bump wait counter
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
528 * bne L0229 Still more tries, continue
1579
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
529 * lda >CtlImg,u Get current drive control register settings
1578
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
530 * ora #C_MOTOR Drive motor on (but drive select off)
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
531 * sta >DPort+CtrlReg Send to controller
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
532 * puls y,cc Restore regs
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
533 * lbra L03AF Check for errors from status register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
534
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
535 IFGT Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
536 *** added blobstop
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
537 lda FBlock+1,u get the block number for format
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
538 beq L0230 if not format, don't do anything
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
539 sta >$FFA1 otherwise map the block in
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
540 ENDC
1579
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
541 L0230 stb >DPort+CtrlReg send data to control register
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
542 bra L0240 wait a bit for HALT to enable
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
543
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
544 * 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
545 L0240 nop --- wait a bit more
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
546 lda ,x+ Get byte from write buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
547 sta >DPort+WD_Data Save to FDC's data register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
548 * 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
549 IFEQ TC9-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
550 nop
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
551 nop
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
552 ENDC
1578
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
553 * stb >DPort+CtrlReg Set up to read next byte
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
554 bra L0240 Go read it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
555
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
556 * NMI routine
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
557 NMISvc leas R$Size,s Eat register stack
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
558 * puls y,cc Get path dsc. ptr & CC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
559 IFGT Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
560 ldx <D.SysDAT get pointer to system DAT image
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
561 lda 3,x get block number 1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
562 sta >$FFA1 map it back into memory
1579
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
563 ENDC
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
564 andcc #^IntMasks turn IRQ's on again
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
565 ldb >DPort+WD_Stat Get status register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
566 bitb #%00000100 Did we lose data in the transfer?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
567 * lbne L03E0 Yes, exit with Read Error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
568 lbeq L03B2 Otherwise, check for drive errors
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
569 comb -- blobstop error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
570 ldb #E$DevBsy -- device busy
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
571 rts -- and exit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
572
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
573 verify pshs x,d
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
574 ldx PD.BUF,y Get write buffer ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
575 pshs x Preserve it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
576 ldx >sectbuf,u Get sector buffer ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
577 stx PD.BUF,y Save as write buffer ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
578 ldx 4,s
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
579 lbsr L016F Go read sector we just wrote
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
580 puls x Get original write buffer ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
581 stx PD.BUF,y Restore path dsc. version
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
582 bcs L02A3 If error reading, exit with it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
583 pshs u,y Preserve device mem, path dsc. ptrs
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
584 ldb <PD.TYP,y Get type from path dsc.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
585 ldy >sectbuf,u Get sector buffer ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
586 andb #%00000100 512 byte sector?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
587 beq L028D No, skip ahead
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
588 ldd >loglsn,u Get OS9's sector #
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
589 andb #$01 Odd/even sector?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
590 beq L028D Even; compare first half
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
591 leay >$0100,y Odd, compare second half
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
592 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
593 lda #32 # of 'spotty' checks to do
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
594 L028F ldx ,u Get 2 bytes from original write buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
595 cmpx ,y Same as corresponding bytes in re-read sector?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
596 bne L029F No, error & return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
597 leau 8,u Skip next 6 bytes
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
598 leay 8,y
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
599 deca Done our 'spotty' check?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
600 bne L028F No, continue
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
601 fcb $8C skip the next 2 bytes
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
602
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
603 L029F orcc #Carry
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
604 L02A1 puls u,y
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
605 L02A3 puls pc,x,d
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
606
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
607 L02A5 pshs a Save Caller's track #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
608 ldb <V.TRAK,x Get track # drive is currently on
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
609 bra L02E9 Go save it to controller & continue
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
610
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
611 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
612 bsr L032B Get track/sector # (A=Trk, B=Sector)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
613 pshs a Save track #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
614 lda >u00AD,u Get side 1/2 flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
615 beq L02C4 Side 1, skip ahead
1579
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
616 lda >CtlImg,u Get control register settings
1578
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
617 ora #C_SIDSEL Set side 2 (drive 3) select
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
618 * ora #%01000000 Set side 2 (drive 3) select
1579
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
619 sta >CtlImg,u Save it back
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
620 L02C4 lda <PD.TYP,y Get drive type settings
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
621 bita #%00000010 ??? (Base 0/1 for sector #?)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
622 bne L02CC Skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
623 incb Bump sector # up by 1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
624 L02CC stb >DPort+WD_Sect Save into Sector register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
625 ldx >u00A7,u Get last drive table accessed
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
626 ldb <V.TRAK,x Get current track # on device
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
627 lda <DD.FMT,x Get drive format specs
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
628 lsra Shift track & bit densities to match PD
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
629 eora <PD.DNS,y Check for differences with path densities
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
630 anda #%00000010 Keep only 48/96 tpi differences
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
631 pshs a Save differences
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
632 lda 1,s Get track # back
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
633 tst ,s+ Are tpi's different?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
634 beq L02E9 No, continue normally
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
635 lsla Yes, multiply track # by 2 ('double-step')
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
636 lslb Multiply current track # by 2 ('double-step')
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
637 L02E9 stb >DPort+WD_Trak Save current track # onto controller
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
638
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
639 * 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
640 * Unless write precomp is needed, all of this is useless
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
641 * 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
642 IFEQ PRECOMP-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
643 ldb #21 Pre-comp track #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
644 pshs b Save it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
645 ldb <PD.DNS,y Get current density settings
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
646 andb #%00000010 Just want to check track density
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
647 beq L02F9 48 tpi, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
648 lsl ,s Multiply pre-comp value by 2 ('double-step')
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
649 L02F9 cmpa ,s+ Is track # high enough to warrant precomp?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
650 bls L0307 No, continue normally
1579
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
651 ldb >CtlImg,u
1578
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
652 orb #C_WRPCMP Turn on Write precomp
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
653 * orb #%00010000 Turn on Write precomp
1579
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
654 stb >CtlImg,u
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
655 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
656
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
657 L0307 ldb >u00AA,u ??? Get flag (same drive flag?)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
658 bne L0314 no, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
659 ldb ,s get track #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
660 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
661 beq L0321 yes, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
662 L0314 sta >DPort+WD_Data save track # to data register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
663 ldb <PD.STP,y get stepping rate
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
664 andb #%00000011 just keep usable settings (6-30 ms)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
665 eorb #%00011011 set proper bits for controller
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
666 lbsr L03E4 send command to controller & time delay
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
667 L0321 puls a get track # back
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
668 sta <V.TRAK,x save as current track #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
669 sta >DPort+WD_Trak save to controller
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
670 clrb no error & return
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: B:X LSN
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
674 * Exit: A=Track #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
675 * B=Sector #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
676 * <u00AD=00 = Head 1 , $FF = Head 2
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
677 L032B tstb Sector # > 65535?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
678 bne L033F Yes, illegal for floppy
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
679 tfr x,d Move sector # to D
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
680 leax ,x LSN 0?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
681 beq L0371 Yes, exit this routine
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
682 ldx >u00A7,u Get previous drive table ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
683 cmpd DD.TOT+1,x Within range of drive spec?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
684 blo L0343 Yes, go calculate track/sector #'s
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
685 L033F comb Exit with Bad sector # error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
686 ldb #E$Sect
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
687 rts
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
688
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
689 * Calculate track/sector #'s?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
690 L0343 stb >u00AE,u Save LSB of LSN
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
691 clr ,-s Clear track # on stack
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
692 ldb <DD.FMT,x Get drive format
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
693 lsrb Shift out # sides into carry
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
694 ldb >u00AE,u Get LSB of LSN again
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
695 bcc L0367 Single sided drive, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
696 bra L035D Double sided drive, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
697 * Double sided drive handling here
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
698 L0355 com >u00AD,u ???? Odd/even sector track flag?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
699 bne L035D Odd, so don't bump track # up
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
700 inc ,s Bump up track #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
701
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
702 L035D subb DD.TKS,x Subtract # sectors/track
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
703 sbca #$00
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
704 bcc L0355 Still more sectors left, continue
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
705 bra L036D Wrapped, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
706 * Single sided drive handling here
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
707 L0365 inc ,s Bump track # up
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 L0367 subb DD.TKS,x Subtract # sectors/track
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
710 sbca #$00
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
711 bcc L0365 Still more, go bump the track up
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
712 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
713 puls a Get the track #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
714 L0371 rts A=track #, B=Sector #, <u00AD=Odd
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
715
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
716 * Drive control register bit mask table
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
717 L0372 fcb $01 Drive 0
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
718 fcb $02 Drive 1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
719 fcb $04 Drive 2
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
720 fcb $40 Drive 3 / Side select
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
721
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
722 L0376 clr >u00AA,u ???
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
723
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
724 chkdrv lda <PD.DRV,y Get drive # requested
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
725 cmpa #4 Drive 0-3?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
726 blo L0385 Yes, continue normally
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
727 NoHW comb Illegal drive # error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
728 ldb #E$Unit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
729 rts
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
730
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
731 * 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
732 L0385 pshs x,d Save sector #, drive # & B???
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
733 leax >L0372,pc Point to drive bit mask table
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
734 ldb a,x Get bit mask for drive # we want
1579
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
735 stb >CtlImg,u Save mask
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
736 leax DRVBEG,u Point to beginning of drive tables
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
737 ldb #DRVMEM Get size of each drive table
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
738 mul Calculate offset to drive table we want
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
739 leax d,x Point to it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
740 cmpx >u00A7,u Same as Last drive table accessed?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
741 beq L03A6 Yes, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
742 stx >u00A7,u Save new drive table ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
743 com >u00AA,u ??? Set flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
744 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
745 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
746 puls pc,x,d Restore sector #,drive #,B & return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
747
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
748 L03AF ldb >DPort+WD_Stat Get status register from FDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
749 L03B2 bitb #%11111000 Any of the error bits set?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
750 beq L03CA No, exit without error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
751 aslb Drive not ready?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
752 bcs L03CC Yes, use that error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
753 aslb Write protect error?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
754 bcs L03D0 Yes, use that error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
755 aslb Write fault error?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
756 bcs L03D4 Yes, use that error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
757 aslb Sector not found?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
758 bcs L03D8 Yes, use Seek error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
759 aslb CRC error?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
760 bcs L03DC Yes, use that error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
761 L03CA clrb No error & return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
762 rts
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
763
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
764 L03CC ldb #E$NotRdy not ready
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
765 fcb $8C skip 2 bytes
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
766
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
767 L03D0 ldb #E$WP write protect
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
768 fcb $8C skip 2 bytes
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
769
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
770 L03D4 ldb #E$Write write error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
771 fcb $8C
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
772
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
773 L03D8 ldb #E$Seek seek error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
774 fcb $8C
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 L03DC ldb #E$CRC CRC error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
777 * fcb $8C
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
778
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
779 *L03E0 ldb #E$Read Read error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
780 orcc #Carry set carry
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
781 rts
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 L03E4 bsr L0404 Send command to controller & waste some time
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
784 L03E6 ldb >DPort+WD_Stat Check FDC status register
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
785 bitb #$01 Is controller still busy?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
786 beq L0403 No, exit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
787 ldd >VIRQCnt,pc Get initial count value for drive motor speed
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
788 std >VIRQPak,u Save it
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
789 bra L03E6 Wait for controller to finish previous command
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
790
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
791 * Send command to FDC
1578
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
792 L03F7 lda #C_MOTOR
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
793 * lda #%00001000 Mask in Drive motor on bit
1579
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
794 ora >CtlImg,u Merge in drive/side selects
1578
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
795 sta >DPort+CtrlReg Turn the drive motor on & select drive
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
796 stb >DPort+WD_Cmd Save command & return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
797 L0403 rts
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
798
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
799 L0404 bsr L03F7 Go send command to controller
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
800
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
801 * 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
802 * People with crystal upgrades should modify the loop counter
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
803 * to get a 58+ us delay time. MINIMUM 58us.
1579
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
804 FDCDelay
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
805 pshs a 14 cycles, plus 3*loop counter
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
806 IFEQ Level-1
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
807 lda #18 (only do about a 100 cycle delay for now)
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
808 ELSE
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
809 lda #29 (only do about a 100 cycle delay for now)
1579
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
810 ENDC
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
811 L0409 deca for total ~63 us delay (123 cycles max.)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
812 bne L0409
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
813 puls a,pc restore register and 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 * SetStat
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 * Entry:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
818 * A = function code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
819 * Y = address of path descriptor
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
820 * U = address of device memory area
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
821 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
822 * Exit:
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
823 * CC = carry set on error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
824 * B = error code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
825 *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
826 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
827 ldb R$B,x Get function code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
828 cmpb #SS.WTrk Write track?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
829 beq SSWTrk Yes, go do it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
830 cmpb #SS.Reset Restore head to track 0?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
831 lbeq sktrk0 Yes, go do it --- beq
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
832 comb set carry for error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
833 ldb #E$UnkSvc return illegal service request error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
834 rts
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
835
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
836 SSWTrk pshs u,y preserve register stack & descriptor
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
837
1579
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
838 * Level 2 Code
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
839 IFGT Level-1
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
840
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
841 *--- new code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
842 ldb #1 1 block to allocate
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
843 os9 F$AllRAM allocate some RAM
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
844 bcs L0489 error out if at all
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
845 leax >FBlock,u point to 'my' DAT image
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
846 std ,x save a copy of the block
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
847 os9 F$ResTsk reserve a task number for the copy
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
848 bcs FError error out
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
849 stb 2,x save temporary task number in FTask,u
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
850 lslb 2 bytes per entry
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
851 ldu <D.TskIPt get task image table pointer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
852 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
853 lsrb get the right number again
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
854 IFNE H6309
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
855 tfr 0,u destination is address 0
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
856 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
857 ldu #$0000
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
858 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
859 *--- end new code
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
860
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
861 ldx 2,s get pointer to descriptor
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
862 * stu >FBlock,x
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
863 ldx <D.Proc Get current process ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
864 lda P$Task,x Get task # for current process
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
865 * ldb <D.SysTsk Get system task #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
866 ldy ,s
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
867 ldx PD.RGS,y Get register stack ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
868 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
869 ldy #$1A00 Size of track buffer
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
870 os9 F$Move Copy from caller to temporary task
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
871 bcs L0479 Error copying, exit
1579
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
872 puls u,y
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
873 pshs u,y
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
874
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
875 ENDC
1579
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
876 * End of Level 2 Code
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
877
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
878 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
879 ldx PD.RGS,y Get caller's register stack ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
880 ldb R$Y+1,x Get caller's side/density
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
881 bitb #$01 Check side
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
882 beq L0465 Side 1, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
883 com >u00AD,u
1579
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
884 ldb >CtlImg,u Get current control register settings
1578
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
885 * orb #%01000000 Mask in side 2
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
886 orb #C_SIDSEL Mask in side 2
1579
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
887 stb >CtlImg,u Save updated control register
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
888 L0465 lda R$U+1,x Get caller's track #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
889 ldx >u00A7,u Get current drive table ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
890 lbsr L02A5
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
891 bcs L0489
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
892 ldb #$F0 Write track command?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
893 *---
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
894 IFEQ Level-1
1579
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
895 ldx PD.RGS,y
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
896 ldx R$X,x
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
897 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
898 ldx #$2000 start writing from block 1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
899 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
900
1579
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
901 lbsr WrTrk Go write the track
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
902
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
903 IFGT Level-1
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
904 L0479 ldu 2,s
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
905 pshs b,cc Preserve error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
906 ldb >FTask,u point to task
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
907 os9 F$RelTsk release the task
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
908 fcb $8C skip 2 bytes
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
909
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
910 * format comes here when block allocation passes, but task allocation
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
911 * gives error. So er de-allocate the block.
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
912 FError
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
913 pshs b,cc save error code, cc
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
914 ldx >FBlock,u point to block
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
915 ldb #1 1 block to return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
916 os9 F$DelRAM de-allocate image RAM blocks
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
917 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
918 puls b,cc Restore error
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
919 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
920
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
921 L0489 puls pc,u,y Restore regs & return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
922
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
923 * seek the head to track 0
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
924 sktrk0 lbsr chkdrv
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
925 ldx >u00A7,u
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
926 clr <$15,x
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
927 lda #$05
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
928 L0497 ldb <PD.STP,y
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
929 andb #%00000011 Just keep usable settings (6-30 ms)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
930 eorb #%01001011 Set proper bits for controller
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
931 pshs a
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
932 lbsr L03E4
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
933 puls a
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
934 deca
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
935 bne L0497
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
936 ldb <PD.STP,y
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
937 andb #%00000011 Just keep usable settings (6-30 ms)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
938 eorb #%00001011 Set proper bits for controller
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
939 lbra L03E4
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
940
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
941 L04B3 pshs y,x,d Preserve regs
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
942 ldd >VIRQCnt,pc Get VIRQ initial count value
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
943 std >VIRQPak,u Save it
1579
1a19aed5dc34 rb1773 now works under L1 (formats, reads/writes fine)
boisy
parents: 1578
diff changeset
944 lda >CtlImg,u ?Get drive?
1578
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
945 ora #C_MOTOR Turn drive motor on for that drive
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
946 * ora #%00001000 Turn drive motor on for that drive
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
947 sta >DPort+CtrlReg Send drive motor on command to FDC
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
948 IFEQ Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
949 lda >D.DskTmr Get VIRQ flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
950 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
951 lda <D.MotOn Get VIRQ flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
952 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
953 bmi L04DE Not installed yet, try installing it
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
954 bne L04E0 Drive already up to speed, exit without error
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 * 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
957 ldx #32 wait for 32 ticks
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
958 os9 F$Sleep
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
959
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
960 L04DE bsr InsVIRQ Install VIRQ to wait for drive motors
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
961 L04E0 clrb No error & return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
962 puls pc,y,x,d
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
963
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
964 InsVIRQ lda #$01 Flag drive motor is up to speed
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
965 IFEQ Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
966 sta >D.DskTmr
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 sta <D.MotOn
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
969 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
970 ldx #$0001 Install VIRQ entry
1581
c35df03d98db IRQ properly deleted
boisy
parents: 1579
diff changeset
971 leay >VIRQPak,u Point to packet
1570
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
972 clr Vi.Stat,y Reset Status byte
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
973 ldd >VIRQCnt,pc Get initial VIRQ count value
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
974 os9 F$VIRQ Install VIRQ
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
975 bcc VIRQOut No error, exit
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
976 lda #$80 Flag that VIRQ wasn't installed
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
977 IFEQ Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
978 sta >D.DskTmr
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 sta <D.MotOn
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 VIRQOut clra
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
983 rts
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
984
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
985 * IRQ service routine for VIRQ (drive motor time)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
986 * Entry: U=Ptr to VIRQ memory area
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
987 IRQSvc pshs a
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
988 lda <D.DMAReq
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
989 beq L0509
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
990 bsr InsVIRQ
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
991 bra IRQOut
1578
d58915e348d1 Updated with bit definitions of control register...
boisy
parents: 1574
diff changeset
992 L0509 sta >DPort+CtrlReg
1570
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 aim #$FE,>u00B5,u
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 lda u00B5,u
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
997 anda #$FE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
998 sta u00B5,u
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
999 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1000 * 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
1001 IFEQ Level-1
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1002 clr >D.DskTmr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1003 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1004 clr <D.MotOn
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1005 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1006 IRQOut puls pc,a
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1007
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1008 * Non-OS9 format goes here
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1009 * Entry: X=LSN
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1010 * Y=Path dsc. ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1011 * U=Device mem ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1012 L051A pshs x Preserve Logical sector #
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1013 ldx >u00A7,u Get last drive table accessed ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1014 clra
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1015 pshs x,a Save ptr & NUL byte
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1016 IFNE H6309
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1017 ldw #$14 Clear 20 bytes
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1018 tfm s,x+
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1019 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1020 ldb #$14
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1021 L051ALp clr ,x+
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1022 decb
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1023 bne L051ALp
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1024 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1025 puls x,a Eat NUL & get back drive table ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1026 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
1027 lda <PD.SID,y Get # sides
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1028 mul Calculate # tracks on drive (1 per head)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1029 IFNE H6309
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1030 decd Adjust to ignore track 0
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1031 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1032 subd #$0001
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1033 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1034 lda <PD.SCT+1,y Get # sectors/track
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1035 sta DD.TKS,x Save in drive table
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1036 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
1037 mul Calculate # sectors on drive (minus track 0)
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1038 pshs x Preserve drive table ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1039 tfr d,x Move # sectors on drive to X
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1040 lda <PD.T0S+1,y Get # sectors on track 0
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1041 leax a,x Add that many sectors to total
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1042 lda <PD.TYP,y Get device type settings
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1043 anda #%00000100 Mask out all but 512 byte sector flag
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1044 beq L0550 Not 512 byte sector, skip ahead
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1045 IFNE H6309
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1046 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
1047 ELSE
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1048 tfr x,d
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1049 leax d,x
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1050 ENDC
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1051 L0550 tfr x,d Move # sectors to D
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1052 puls x Get back drive table ptr
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1053 std DD.TOT+1,x Save # sectors allowed on drive
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1054 lda #UPDAT.+EXEC. Owner's read/write/exec attributes
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1055 sta DD.ATT,x Set attributes for disk
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1056 lda <PD.DNS,y Get density settings
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1057 lsla Shift for DD.FMT
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1058 pshs a Preserve it a sec
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1059 lda <PD.SID,y Get # sides
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1060 deca Adjust to base 0
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1061 ora ,s+ Merge with density settings
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1062 sta <DD.FMT,x Save in device table
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1063 clrb No error?
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1064 puls pc,x Restore original LSN & return
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1065
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1066 emod
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1067 eom equ *
a4b6825eeb72 ccdisk renamed to rb1773, added CC3 driver into source
boisy
parents:
diff changeset
1068 end