The 64DD Interface is the only interface to the 64DD hardware, such as the drive, real-time clock, and more.
All memory-mapped registers on 64DD only use the high 16-bit word, the low 16-bit word only returns 0000.
R = Readable bit
W = Writable bit
U = Undefined/Unused bit
-n = Default value n at power on
[x:y] = Specifies bits x to y, inclusively
0x0500 0500 - ASIC_DATA
ASIC_DATA 0x0500 0500
31:24
RW-0
RW-0
RW-0
RW-0
RW-0
RW-0
RW-0
RW-0
DATA[15:8]
23:16
RW-0
RW-0
RW-0
RW-0
RW-0
RW-0
RW-0
RW-0
DATA[7:0]
15:8
U-0
U-0
U-0
U-0
U-0
U-0
U-0
U-0
—
—
—
—
—
—
—
—
7:0
U-0
U-0
U-0
U-0
U-0
U-0
U-0
U-0
—
—
—
—
—
—
—
—
bit 31-16
DATA[15:0]: Used as argument for commands, and used to return a value after a command is issued.
0x0500 0504 - ASIC_MISC_REG
ASIC_MISC_REG 0x0500 0504
31:24
R-0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
MISC_REG[15:8]
23:16
R-0
R-0
R-0
R-0
R-0
R-1
R-0
R-1
MISC_REG[7:0]
15:8
U-0
U-0
U-0
U-0
U-0
U-0
U-0
U-0
—
—
—
—
—
—
—
—
7:0
U-0
U-0
U-0
U-0
U-0
U-0
U-0
U-0
—
—
—
—
—
—
—
—
bit 31-16
MISC_REG[15:0]: Unknown, on a retail 64DD drive, it returns the value 0005.
0x0500 0508 - ASIC_STATUS (R) / ASIC_CMD (W)
When Reading:
ASIC_STATUS 0x0500 0508
31:24
U-0
R-0
U-0
R-0
R-0
R-0
R-0
R-0
—
DATA_REQ
—
C2_XFER
BM_ERROR
BM_INT
MECHA_INT
DISK
23:16
R-0
R-0
R-0
R-0
R-0
R-0
R-0
R-0
BUSY
RESET
—
SPM_OFF
HEAD_RETRACT
WPROTECT_ERR
MECHA_ERROR
DISK_CHANGE
15:8
U-0
U-0
U-0
U-0
U-0
U-0
U-0
U-0
—
—
—
—
—
—
—
—
7:0
U-0
U-0
U-0
U-0
U-0
U-0
U-0
U-0
—
—
—
—
—
—
—
—
bit 30
DATA_REQ: When reading from disk, this would be set to 1 when the data is ready to be read from the buffer, and when writing to disk, this would be set to 1 when the drive asks for the data to be written.
bit 28
C2_XFER: When reading from disk, this would be set to 1 when all 4 C2 sector data are read into the buffer.
bit 27
BM_ERROR: This bit is set to 1 when the Buffer Manager has an error.
bit 26
BM_INT: This bit is set to 1 when the Buffer Manager issues an interrupt. (Reading the register considers this specific interrupt as acknowledged.)
bit 25
MECHA_INT: This bit is set to 1 when the drive controller (H8/300 CPU) issues an interrupt. (Generally after any command issued is processed.)
bit 24
DISK: Disk is inserted.
bit 23
BUSY: If set to 1, the drive controller is currently busy either initializing, or currently processing a command.
bit 22
RESET: If set to 1, the drive is considered in Reset mode. (It is recommended to disable that mode.)
bit 20
SPM_OFF: If set to 1, the Spindle Motor is considered OFF.
bit 19
HEAD_RETRACT: If set to 1, the Drive Head is retracted.
bit 18
WPROTECT_ERR: Write Protect Error. (Set to 1 when attempting to write a write protected zone.)
bit 17
MECHA_ERROR: If set to 1, then the processed command ended in error.
bit 16
DISK_CHANGE: Set to 1 any time a disk has been inserted at least once (including at power on). It is NOT reset after a disk has been removed.
For detecting the 64DD, this register is read and checked if the first 16-bit word is 0000, if not then the 64DD is considered not present.