-
Notifications
You must be signed in to change notification settings - Fork 85
/
Copy pathiodefs
209 lines (209 loc) · 5.27 KB
/
iodefs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
;***************************************
;***************************************
;
; I/O DEFINITIONS FOR THE PHOENIX
; DISKETTE (8 INCH) BOARD
;
;***************************************
;***************************************
;
; IEEE MAIN CONTROL/DATA VIA
; (MOS 6522)
;
;***************************************
* = $A000 ;ORIGIN ADDRESS
IEDATB *=*+1 ;SIDE B DATA (SEE BELOW)
IEDATA *=*+1 ;SIDE A DATA (IEEE DATA)
IEDDRB *=*+1 ;SIDE B DATA DIRECTION
IEDDRA *=*+1 ;SIDE A DATA DIRECTION
IET1 *=*+4 ;TIMER 1 REGS (REFRESH NMI)
IET2 *=*+2 ;TIMER 2 -NOT USED-
IESR *=*+1 ;SHIFT REG (NOT USED)
IEACR *=*+1 ;AUXILLIARY CONTROL REG
IEPCR *=*+1 ;PERIPHERAL CONTROL REG
IEIFR *=*+1 ;INTERRUPT FLAG REG
IEIER *=*+1 ;INTERRUPT ENABLE REG
IEORA *=*+1 ;SIDE A DATA (NO HANDSHAKE)
;
; CONTROL LINES
;
; CA1 = DAVI (USED FOR RX)
; CA2 = NRFDO (USED FOR RX)
; NOTE: NRFDO HERE IS INVERTED FROM ON THE BUS
;
; CB1 = NDACI (USED FOR TX)
; CB2 = DAVO LATCH (USED FOR TX)
;
;
; SIDE B DATA REGISTER DEFINITION
;
IEADR = $03 ;CU ADDR IS LOW 2 BITS
IEATN = $04 ;ATN (HIGH=ATN)
IEDAVI = $08 ;DAV IN IS 2^3
IEEOIO = $10 ;EOI OUT IS 2^4
IEDACD = $20 ;NDAC DISABLE 2^5
IELSTN = $40 ;LISTEN OUT IS 2^6
;LISTEN=1 TALK=0
;LISTEN = DAVO HIGH ON THE BUS
IENMI = $80 ;NMI OUT IS 2^7
;THIS IS SQUARE WAVE OUTPUT
;BASED ON T1 TIMER
;
; NOTE: OUTBOARD HARDWARE CONTROLS NDACO AS FOLLOWS:
; WHEN NOT DISABLED (SEE IEDACD), NDACO
; WILL BE SET HIGH WHENEVER DAVI IS LOW
; AND NRFDO IS LOW.
.PAG
;***************************************
;
; DISK TRANSCEIVER CONTROL
; (MOS 6520)
;
;***************************************
;
* = $6000 ;ORIGIN ADDRESS
DRDA *=*+1 ;DATA & DIR REG SIDE A
DRCA *=*+1 ;SIDE A CONTROL REG
DRDB *=*+1 ;DATA & DIR REG SIDE B
DRCB *=*+1 ;SIDE B CONTROL REG
;
; SIDE A DATA REGISTER DEFINITION
;
; 2^7 - FORMAT
; 2^6 - GCR- / FM+ (GCR = 0)
; 2^5 - ENABLE AUTO ACKNOWLEDGE (FOR TALK)
; HARDWARE NAME "ENDAC"
; 2^4 - CK4
; 2^3 - CK3 DENSITY SELECTS 5-0
; 2^2 - CK2
; 2^1 - CK1
; 2^0 - CK0
;
; NOTE: NO READS OF SIDE A DATA ARE ALLOWED
; BECAUSE IT WOULD CLEAR AN ATN INT.
; SEE "DRDAI" MEMORY IMAGE.
;
;
; SIDE B DATA REGISTER DEFINITION
;
; 2^7 - FR / W (READ=1 WRITE=0)
; 2^6 - SEQUENCER RESET
; 2^5 - STEPPER MOTOR SELECT DRIVE 1
; 2^4 - STEPPER MOTOR SELECT DRIVE 0
; 2^3 - SELECT LIGHT DRIVE 1 (0=LIT)
; 2^2 - SELECT LIGHT DRIVE 0
; 2^1 - RESET SEQ INT & ERROR
; LOW TO HIGH CAUSES RESET
; 2^0 - NA
;
; NOTE: BECAUSE A READ TO THE B SIDE DATA
; WOULD POSSIBLY RESET A LATCHED
; EOI, A MEMORY IMAGE IS KEPT OF DRDB
; SEE "DRDBI".
;
;
; CONTROL LINES
;
; CA1 = ATN (INT ON ATN GOING HIGH)
; CA2 = ATN (INT ON ATN GOING LOW)
; CB1 = EOI (ENABLED WHEN DAV LOW)
; CB2 = NRFD LOCK TO CATCH ATN LOW THEN HIGH (RFDMSK)
;
.PAG
;***************************************
;
; PHYSICAL DISK CONTROL
; (MOS 6520)
;
;***************************************
;
* = $4000 ;ORIGIN ADDRESS
PDDA *=*+1 ;DATA & DIR REG SIDE A
PDCA *=*+1 ;SIDE A CONTROL REG
PDDB *=*+1 ;DATA & DIR REG SIDE B
PDCB *=*+1 ;SIDE B CONTROL REG
;
; SIDE A DATA REGISTER DEFINITION
;
; 2^7 - STEP CONTROL 3 (LOW=SINGLE SIDED)
; 2^6 - STEP CONTROL 2 (0=ON FOR ALL PHASES)
; 2^5 - STEP CONTROL 1
; 2^4 - STEP CONTROL 0
; 2^3 - HEAD NUMBER B (SEE NOTE)
; 2^2 - HEAD NUMBER A " "
; 2^1 - HEAD LOAD DRIVE 1 (1=LOADED)
; 2^0 - HEAD LOAD DRIVE 0
;
; NOTE: HEAD NUMBER A & B ARE DECODED IN HARDWARE
; TO SELECT ONE OF UP TO FOUR HEADS
; THIS ALLOWS FOR UP TO TWO HEADS FOR EACH
; OF TWO DRIVES. THEY ARE DECODED AS SHOWN
;
; BIT HEAD DRIVE
; B-A
;
; 0 0 0 0
; 0 1 1 0
; 1 0 0 1
; 1 1 1 1
;
; SIDE B DATA REGISTER DEFINITION
;
; 2^7 - DOOR OPEN DRIVE 1 IN (1=OPEN)
; 2^6 - DOOR OPEN DRIVE 0 IN
; 2^5 - WRITE PROTECT 1 IN (1=NOT PROTECTED)
; 2^4 - WRITE PROTECT 0 IN
; 2^3 - NRFDI IN
; 2^2 - NDACI IN
; 2^1 - TRK 00 DRIVE 1 IN
; 2^0 - TRK 00 DRIVE 0 IN
;
; CONTROL LINES
;
; CA1 = SEQUENCE DONE IN
; CA2 = SEQUENCER ERROR
; CB1 = NA
; CB2 = ATN ACK
;
.PAG
;***************************************
;
; DISK DMA CHIP
; (INTEL 8257)
;
;***************************************
;
* = $8000 ;ORIGIN ADDRESS
DMACH0 *=*+1 ;CHANNEL 0 DMA
DMATC0 *=*+1 ;CHANNEL 0 TERMINAL COUNT
;$40=DMA WRITE
;$80=DMA READ
DMACH1 *=*+1 ;CHANNEL 1 DMA
DMATC1 *=*+1 ;CHANNEL 1 TERMINAL COUNT
DMACH2 *=*+1 ;CHANNEL 2 DMA
DMATC2 *=*+1 ;CHANNEL 2 TERMINAL COUNT
DMACH3 *=*+1 ;CHANNEL 3 DMA
DMATC3 *=*+1 ;CHANNEL 3 TERMINAL COUNT
DMAMOD *=*+1 ;MODE SET
;
;VALUES OF DMAMOD WHEN WRITTEN
;2^7 AUTOLOAD
;2^6 TC STOP
;2^5 EXTENDED WRITE
;2^4 ROTATING PRIORITY
;2^3 CHNL 3
;2^2 CHNL 2
;2^1 CHNL 1
;2^0 CHNL 0
;
;VALUES OF DMAMOD WHEN READ
;2^7,6,5 NOT USED
;2^4 UPDATE FLAG
;2^3 TC STATUS FOR CHNL 3
;2^2 TC STATUS FOR CHNL 2
;2^1 TC STATUS FOR CHNL 1
;2^0 TC STATUS FOR CHNL 0
;
;***************************************
;***************************************
.END