2624
|
1 IFNE DRAGON.D-1
|
|
2 DRAGON.D set 1
|
|
3
|
|
4 ********************************************************************
|
|
5 * DgnDefs - Dragon I/O Definitions
|
|
6 *
|
|
7 * $Id$
|
|
8 *
|
|
9 * Edt/Rev YYYY/MM/DD Modified by
|
|
10 * Comment
|
|
11 * ------------------------------------------------------------------
|
|
12 * 2004/11/16 P.Harvey-Smith.
|
|
13 * Fixed the stupid error I made in the defines below that made all the
|
|
14 * non DPxxxxx defines equal to FF00 !!!
|
|
15 *
|
|
16 * 2005/04/14 P.Harvey-Smith
|
|
17 * Added non DP defines for ACIA on Dragon 64/Alpha
|
|
18 *
|
|
19 * 2005/04/21 P.Harvey-Smith
|
|
20 * Fixed errors in defines for WD2797 non-DP registers.
|
|
21 *
|
|
22
|
|
23 nam DgnDefs
|
|
24 ttl Dragon I/O Definitions
|
|
25
|
|
26 *************************************************
|
|
27 *
|
|
28 * NitrOS-9 Level 1 Section
|
|
29 *
|
|
30 *************************************************
|
|
31
|
|
32 HW.Page SET $FF Device descriptor hardware page
|
|
33
|
|
34 **********************************
|
|
35 * Power Line Frequency Definitions
|
|
36 *
|
|
37 Hz50 EQU 1 Assemble clock for 50 hz power
|
|
38 Hz60 EQU 2 Assemble clock for 60 hz power
|
|
39 PwrLnFrq SET Hz60 Set to Appropriate freq
|
|
40
|
|
41
|
|
42 **********************************
|
|
43 * Ticks per second
|
|
44 *
|
|
45 IFEQ PwrLnFrq-Hz50
|
|
46 TkPerSec SET 50
|
|
47 ELSE
|
|
48 TkPerSec SET 60
|
|
49 ENDC
|
|
50
|
|
51
|
|
52 ****************************************
|
|
53 * Special character Bit position equates
|
|
54 *
|
|
55 SHIFTBIT EQU %00000001
|
|
56 CNTRLBIT EQU %00000010
|
|
57 ALTERBIT EQU %00000100
|
|
58 UPBIT EQU %00001000
|
|
59 DOWNBIT EQU %00010000
|
|
60 LEFTBIT EQU %00100000
|
|
61 RIGHTBIT EQU %01000000
|
|
62 SPACEBIT EQU %10000000
|
|
63
|
|
64 ********************
|
|
65 * VTIO Static Memory
|
|
66 *
|
|
67 * Definitions for ports on Dragon 32/64/Alpha.
|
|
68 *
|
|
69 *
|
|
70 IO equ $ff00 IO page on Dragon
|
|
71
|
|
72 *
|
|
73 * Most of these symbols will be defined twice, as some
|
|
74 * of the Dragon code, sets DP=$FF, and uses direct page
|
|
75 * addressing to access the io ports, whilst some of it
|
|
76 * uses absolute addressing.
|
|
77 * The versions starting DP must be used with DP=$FF.
|
|
78 *
|
|
79
|
|
80 * PIA 0 and 1 standard on all Dragons.
|
|
81 DPPIA0DA EQU $00 Side A Data/DDR
|
|
82 PIA0Base EQU DPPIA0DA
|
|
83 DPPIA0CRA EQU $01 Side A Control.
|
|
84 DPPIA0DB EQU $02 Side B Data/DDR
|
|
85 DPPIA0CRB EQU $03 Side B Control.
|
|
86
|
|
87 PIA0DA EQU DPPIA0DA+IO Side A Data/DDR
|
|
88 PIA0CRA EQU DPPIA0CRA+IO Side A Control.
|
|
89 PIA0DB EQU DPPIA0DB+IO Side A Data/DDR
|
|
90 PIA0CRB EQU DPPIA0CRB+IO Side A Control.
|
|
91
|
|
92 DPPIA1DA EQU $20 Side A Data/DDR
|
|
93 PIA1Base EQU DPPIA1DA
|
|
94 DPPIA1CRA EQU $21 Side A Control.
|
|
95 DPPIA1DB EQU $22 Side B Data/DDR
|
|
96 DPPIA1CRB EQU $23 Side B Control.
|
|
97
|
|
98 PIA1DA EQU DPPIA1DA+IO Side A Data/DDR
|
|
99 PIA1CRA EQU DPPIA1CRA+IO Side A Control.
|
|
100 PIA1DB EQU DPPIA1DB+IO Side A Data/DDR
|
|
101 PIA1CRB EQU DPPIA1CRB+IO Side A Control.
|
|
102
|
|
103 * Dragon Alpha has a third PIA at $FF24.
|
|
104 DPPIA2DA EQU $24 Side A Data/DDR
|
|
105 DPPIA2CRA EQU $25 Side A Control.
|
|
106 DPPIA2DB EQU $26 Side B Data/DDR
|
|
107 DPPIA2CRB EQU $27 Side B Control.
|
|
108
|
|
109 PIA2DA EQU DPPIA2DA+IO Side A Data/DDR
|
|
110 PIA2CRA EQU DPPIA2CRA+IO Side A Control.
|
|
111 PIA2DB EQU DPPIA2DB+IO Side A Data/DDR
|
|
112 PIA2CRB EQU DPPIA2CRB+IO Side A Control.
|
|
113
|
|
114 * WD2797 Floppy disk controler, used in Alpha Note registers in reverse order !
|
|
115 DPCmdRegA EQU $2F command/status
|
|
116 DPTrkRegA EQU $2E Track register
|
|
117 DPSecRegA EQU $2D Sector register
|
|
118 DPDataRegA EQU $2C Data register
|
|
119
|
|
120 CmdRegA EQU DPCMDREGA+IO command/status
|
|
121 TrkRegA EQU DPTRKREGA+IO Track register
|
|
122 SecRegA EQU DPSECREGA+IO Sector register
|
|
123 DataRegA EQU DPDATAREGA+IO Data register
|
|
124
|
2670
|
125 DPort SET DataRegA Disk controller base address
|
2624
|
126
|
|
127 * Constants for Alpha AY-8912 sound chip, which is used to control
|
|
128 * Drive select and motor on the Alpha
|
|
129 AYIOREG EQU $0E AY-8912, IO Register number.
|
|
130 AYIdle EQU $00 Make AY Idle.
|
|
131 AYWriteReg EQU $01 Write AY Register
|
|
132 AYReadReg EQU $02 Read AY Register
|
|
133 AYREGLatch EQU $03 Latch register into AY
|
|
134
|
|
135 DSMask EQU $03 Drive select mask.
|
|
136 MotorMask EQU $04 Motor enable mask
|
|
137 DDENMask EQU $08 DDEN Mask
|
|
138 ENPMask EQU $10 Enable Precomp mask
|
|
139 NMIMask EQU $20 NMI enable Mask
|
|
140
|
|
141 * Dragon 64/Alpha Serial port.
|
|
142 DPAciaData EQU $04 ACIA Rx/Tx Register
|
|
143 DPAciaStat EQU $05 ACIA status register
|
|
144 DPAciaCmd EQU $06 ACIA command register
|
|
145 DPAciaCtrl EQU $07 ACIA control register
|
|
146
|
|
147 AciaData EQU DPAciaData+IO ACIA Rx/Tx Register
|
|
148 AciaStat EQU DPAciaStat+IO ACIA status register
|
|
149 AciaCmd EQU DPAciaCmd+IO ACIA command register
|
|
150 AciaCtrl EQU DPAciaCtrl+IO ACIA control register
|
|
151
|
|
152 * DragonDos Cartrage IO for WD2797
|
|
153 * WD2797 Floppy disk controler, used in DragonDos.
|
|
154 DPCmdRegD EQU $40 command/status
|
|
155 DPTrkRegD EQU $41 Track register
|
|
156 DPSecRegD EQU $42 Sector register
|
|
157 DPDataRegD EQU $43 Data register
|
|
158
|
|
159 CmdRegD EQU DPCMDREGD+IO command/status
|
|
160 TrkRegD EQU DPTRKREGD+IO Track register
|
|
161 SecRegD EQU DPSECREGD+IO Sector register
|
|
162 DataRegD EQU DPDATAREGD+IO Data register
|
|
163
|
|
164 DPDSKCTL EQU $48 Disk DS/motor control reg
|
|
165 DSKCTL EQU DPDSKCTL+IO
|
|
166
|
|
167 * Disk IO bitmasks (DragonDos).
|
|
168 NMIEnD EQU %00100000
|
|
169 WPCEnD EQU %00010000
|
|
170 SDensEnD EQU %00001000
|
|
171 MotorOnD EQU %00000100
|
|
172 Drive0D EQU %00000000
|
|
173 Drive1D EQU %00000001
|
|
174 Drive2D EQU %00000010
|
|
175 Drive3D EQU %00000011
|
|
176 DDosDriveMask EQU %00000011 Mask out all non drive select bits
|
|
177 DDosCtrlMask EQU %11111100 Mask in all non drive select bits
|
|
178
|
|
179
|
|
180 * Disk IO bitmasks (Dragon Alpha).
|
|
181 PIANMIEnA EQU %00001000 PIA2, CA2, used to enable/disable NMI
|
|
182 PIANMIDisA EQU %11110111 Bitmask to force CA2 off, and disable NMI
|
|
183
|
|
184 NMIEnA EQU %10000000 Flag to enable disable NMI, passed to AlphaDskCtl
|
|
185 WPCEnA EQU %01000000 According to circuit trace by R.Harding.
|
|
186 SDensEnA EQU %00100000 DDen, from circuit trace on R.Harding's machine.
|
|
187 MotorOnA EQU %00010000
|
|
188 Drive0A EQU %00000001
|
|
189 Drive1A EQU %00000010
|
|
190 Drive2A EQU %00000100
|
|
191 Drive3A EQU %00001000
|
|
192 AlphaDrvMask EQU %00001111 Mask out all non drive select bits
|
|
193 AlphaCtrlMask EQU %11110000 Mask in all non drive select bits
|
|
194
|
|
195 Mask58 EQU %01111111 And mask to make sure 5.25" clock selected by WD2797
|
|
196
|
|
197 NMICA2En EQU $3C Value for PIA CRA to enable NMI
|
|
198 NMICA2Dis EQU $34 Value for PIA CRA to disable NMI
|
|
199
|
|
200 * Disk Commands
|
|
201 FrcInt EQU %11010000
|
|
202 ReadCmnd EQU %10001000
|
|
203 RestCmnd EQU %00000000
|
|
204 SeekCmnd EQU %00010000
|
|
205 StpICmnd EQU %01000000
|
|
206 WritCmnd EQU %10101000
|
|
207 WtTkCmnd EQU %11110000
|
|
208 Sid2Sel EQU %00000010
|
|
209
|
|
210 * Disk Status Bits
|
|
211 BusyMask EQU %00000001
|
|
212 LostMask EQU %00000100
|
|
213 ErrMask EQU %11111000
|
|
214 CRCMask EQU %00001000
|
|
215 RNFMask EQU %00010000
|
|
216 RTypMask EQU %00100000
|
|
217 WPMask EQU %01000000
|
|
218 NotRMask EQU %10000000
|
|
219
|
|
220 DensMask EQU %00000001
|
|
221 T80Mask EQU %00000010
|
|
222
|
|
223 ENDC
|