dingusppc/zdocs/developers/dbdma.md
2024-08-26 06:48:55 -07:00

2.1 KiB

The Description-Based Direct Memory Access (DBDMA) relies on memory-based descriptions, minimizing CPU interrupts.

Channel Number
SCSI0 0x0
FLOPPY 0x1
ETHERNET TRANSMIT 0x2
ETHERNET RECIEVE 0x3
SCC TRANSMIT A 0x4
SCC RECIEVE A 0x5
SCC TRANSMIT B 0x6
SCC RECIEVE B 0x7
AUDIO OUT 0x8
AUDIO IN 0x9
SCSI1 0xA

What's notable about the registers is that they are in little-endian format, thus Mac OS uses the stwbrx and lwbrx instructions to store values.

Register Offset
ChannelControl 0x00
ChannelStatus 0x04
CommandPtrHi 0x08
CommandPtrLo 0x0C
InterruptSelect 0x10
BranchSelect 0x14
WaitSelect 0x18
TransferMode 0x1C
Data2PtrHi 0x20
Data2PtrLo 0x24
BranchPtrHi 0x2C
BranchPtrLo 0x30
Command Value
OUTPUT_MORE 0x0
OUTPUT_LAST 0x1
INPUT_MORE 0x2
INPUT_LAST 0x3
STORE_QUAD 0x4
LOAD_QUAD 0x5
NOP 0x6
STOP 0x7
Key Name Value
KEY_STREAM0 0x0
KEY_STREAM1 0x1
KEY_STREAM2 0x2
KEY_STREAM3 0x3
KEY_REGS 0x5
KEY_SYSTEM 0x6
KEY_DEVICE 0x7

Control Register

Value Offset
Branch 0x100
Active 0x400
Dead 0x800
Wake 0x1000
Flush 0x2000
Pause 0x4000
Run 0x8000

References