;***************************************
;***************************************
;
;   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
