boot3/Drivers/IOP/IOPDefs.aii
Elliot Nunn 5b0f0cc134 Bring in CubeE sources
Resource forks are included only for .rsrc files. These are DeRezzed into their data fork. 'ckid' resources, from the Projector VCS, are not included.

The Tools directory, containing mostly junk, is also excluded.
2017-12-26 10:02:57 +08:00

221 lines
7.5 KiB
Plaintext

;EASE$$$ READ ONLY COPY of file ÒIOPDefs.aiiÓ
; 1.2 CCH 07/08/1989 Added EASE comments to file.
;¥1.1 GGD 06/15/1989 Updated to use equates for the latest rev of the IOP chip,
; re-formated tab stops in source.
; 1.0 CCH 11/ 9/1988 Adding to EASE.
; END EASE MODIFICATION HISTORY
macro
assert &boolExpr
if not(&Eval(&boolExpr)) then
aerror &concat('Assertion Failed - ',&boolExpr)
endif
endm
; 65C02 definitions
pswC equ %00000001 ; carry bit
pswZ equ %00000010 ; zero bit
pswI equ %00000100 ; interrupt bit
pswD equ %00001000 ; decimal bit
pswB equ %00010000 ; break bit
psw5 equ %00100000 ; bit 5 unused
pswV equ %01000000 ; overflow bit
pswN equ %10000000 ; negative bit
StackPage equ $0100 ; page 1 is the stack
vNMI equ $FFFA ; non-maskable interrupt
vRESET equ $FFFC ; reset vector
vINT equ $FFFE ; interrupt vector
; IOP Hardware offsets
IOBase equ $F000 ; base of I/O space
; TIMER Hardware Control
TimerCounterL equ IOBase+$10 ; (RW) Timer low counter (latch on write)
TimerCounterH equ IOBase+$11 ; (RW) Timer high counter (load on write)
TimerLatchL equ IOBase+$12 ; (RW) Timer low latch
TimerLatchH equ IOBase+$13 ; (RW) Timer high latch
; DMA Hardware Control
DMA1Control equ IOBase+$20 ; (RW) DMA channel 1 control
DMAEN1 equ %00000001 ; enable DMA channel 1
DREQ1 equ %00000010 ; DMA request 1 active
DMADIR1 equ %00000100 ; transfer I/O to RAM
DEN1ON2 equ %00001000 ; start DMA 1 after DMA 2 complete
IOA1 equ %00010000 ; DMA I/O address
DMA1RAMAddressL equ IOBase+$21 ; (RW) DMA channel 1 RAM address low byte
DMA1RAMAddressH equ IOBase+$22 ; (RW) DMA channel 1 RAM address high byte
DMA1XferCountL equ IOBase+$23 ; (RW) DMA channel 1 transfer count low byte
DMA1XferCountH equ IOBase+$24 ; (RW) DMA channel 1 transfer count high byte
DMA2Control equ IOBase+$28 ; (RW) DMA channel 2 control
DMAEN2 equ %00000001 ; enable DMA channel 2
DREQ2 equ %00000010 ; DMA request 2 active
DMADIR2 equ %00000100 ; transfer I/O to RAM
DEN2ON1 equ %00001000 ; start DMA 2 after DMA 1 complete
IOA2 equ %00010000 ; DMA I/O address
DMA2RAMAddressL equ IOBase+$29 ; (RW) DMA channel 2 RAM address low byte
DMA2RAMAddressH equ IOBase+$2A ; (RW) DMA channel 2 RAM address high byte
DMA2XferCountL equ IOBase+$2B ; (RW) DMA channel 2 transfer count low byte
DMA2XferCountH equ IOBase+$2C ; (RW) DMA channel 2 transfer count high byte
; Miscelaneous Hardware Control
SCCControlReg equ IOBase+$30 ; (RW) SCC control register
BYPASS equ %00000001 ; Host processor controls SCC/ISM
SCCISM equ %00000010 ; ISM port
* equ %00000100 ; unused
RTXCA equ %00001000 ; selects SCC channel A clock source
RTXCB equ %00100000 ; selects SCC channel B clock source
GPOUT1 equ %10000000 ; general purpose output 1
RTXC3MHz equ %00 ; 3.6864MHz
RTXCDPCLK equ %01 ; DPCLK/10
RTXCDPLLOut equ %10 ; Digital phase locked loop output
RTXCGPI equ %11 ; GPIA or GPIB
IOControlReg equ IOBase+$31 ; (RW) I/O Control register
IODurationCount equ %00000001 ; I/O duration count
IODelayCount equ %00010000 ; I/O delay count
TimerDPLLctl equ IOBase+$32 ; (RW) Timer/DPLL control
CONT equ %00000001 ; timer continuous mode
GPOUT0 equ %00000010 ; general purpose output 0
GPIN0 equ %00000100 ; general purpose input 0
GPIN1 equ %00001000 ; general purpose input 1
DPLL1EN equ %00010000 ; DPLL 1 enabled
CRSNS1 equ %00100000 ; carrier present on RXDA
DPLL2EN equ %01000000 ; DPLL 2 enabled
CRSNS2 equ %10000000 ; carrier present on RXDB
InterruptMask equ IOBase+$33 ; (RW) Interrupt Mask Register
DMA1ENI equ %00000010 ; enable DMA channel 1 interrupts
DMA2ENI equ %00000100 ; enable DMA channel 2 interrupts
SCCENI equ %00001000 ; enable SCC interrupts
HSTENI equ %00010000 ; enable interrupts from the host processor
TMRENI equ %00100000 ; enable timer interrupts
InterruptReg equ IOBase+$34 ; (RW) Interrupt Register
DMA1INT equ %00000010 ; DMA channel 1 interrupt
DMA2INT equ %00000100 ; DMA channel 2 interrupt
SCCINT equ %00001000 ; SCC interrupt
HSTINT equ %00010000 ; interrupt from the host processor
TMRINT equ %00100000 ; timer interrupt
HostControl equ IOBase+$35 ; (RW) Host Register
INTHST0 equ %00000100 ; host interrupt 0 active
INTHST1 equ %00001000 ; host interrupt 1 active
MsgCompletedINT equ INTHST0 ; indicates message in MessageCompleted state
NewMsgSentINT equ INTHST1 ; indicates message in NewMessageSent state
; IOP Shared Memory Addresses
RCVMsgBase equ $0200 ; receive message page
RCVMsgMax equ RCVMsgBase+$00 ; Highest receive message number
RCVMsg1State equ RCVMsgBase+$01 ; receive message 1 state
RCVMsg2State equ RCVMsgBase+$02 ; receive message 2 state
RCVMsg3State equ RCVMsgBase+$03 ; receive message 3 state
RCVMsg4State equ RCVMsgBase+$04 ; receive message 4 state
RCVMsg5State equ RCVMsgBase+$05 ; receive message 5 state
RCVMsg6State equ RCVMsgBase+$06 ; receive message 6 state
RCVMsg7State equ RCVMsgBase+$07 ; receive message 7 state
PatchReq equ RCVMsgBase+$1F ; Host wants to patch IOP code
RCVMsg1Data equ RCVMsgBase+$20 ; receive message 1 data
RCVMsg2Data equ RCVMsgBase+$40 ; receive message 2 data
RCVMsg3Data equ RCVMsgBase+$60 ; receive message 3 data
RCVMsg4Data equ RCVMsgBase+$80 ; receive message 4 data
RCVMsg5Data equ RCVMsgBase+$A0 ; receive message 5 data
RCVMsg6Data equ RCVMsgBase+$C0 ; receive message 6 data
RCVMsg7Data equ RCVMsgBase+$E0 ; receive message 7 data
XMTMsgBase equ $0300 ; transmit message page
XMTMsgMax equ XMTMsgBase+$00 ; Highest transmit message number
XMTMsg1State equ XMTMsgBase+$01 ; transmit message 1 state
XMTMsg2State equ XMTMsgBase+$02 ; transmit message 2 state
XMTMsg3State equ XMTMsgBase+$03 ; transmit message 3 state
XMTMsg4State equ XMTMsgBase+$04 ; transmit message 4 state
XMTMsg5State equ XMTMsgBase+$05 ; transmit message 5 state
XMTMsg6State equ XMTMsgBase+$06 ; transmit message 6 state
XMTMsg7State equ XMTMsgBase+$07 ; transmit message 7 state
Alive equ XMTMsgBase+$1F ; IOP is alive flag
XMTMsg1Data equ XMTMsgBase+$20 ; transmit message 1 data
XMTMsg2Data equ XMTMsgBase+$40 ; transmit message 2 data
XMTMsg3Data equ XMTMsgBase+$60 ; transmit message 3 data
XMTMsg4Data equ XMTMsgBase+$80 ; transmit message 4 data
XMTMsg5Data equ XMTMsgBase+$A0 ; transmit message 5 data
XMTMsg6Data equ XMTMsgBase+$C0 ; transmit message 6 data
XMTMsg7Data equ XMTMsgBase+$E0 ; transmit message 7 data
; IOP Message States
Idle equ 0 ; message buffer idle
NewMessageSent equ 1 ; new message arrived
MessageReceived equ 2 ; message being processed
MessageCompleted equ 3 ; request completed
; Block Copy Message Assignments
BCxmtState equ XMTMsg1State
BCxmtData equ XMTMsg1Data
; Block Copy Driver request format
bcIOPtoHOST equ $00
bcHOSTtoIOP equ $01
bcCompare equ $02
bcReqCmd equ BCxmtData+$00 ; (byte) Request Kind
bcReqByteCount equ BCxmtData+$02 ; (word) transfer byte count
bcReqHostAddr equ BCxmtData+$04 ; (long) host RAM address
bcReqIopAddr equ BCxmtData+$08 ; (word) IOP RAM address
bcReqCompRel equ BCxmtData+$0A ; (byte) Compare Relation (output)
; TMPB Time constants (1 tick = 256 clocks @1.9584MHz = 130.71895 uSec)
TMPB1second equ 7650 ; 1 second
TMPB100ms equ TMPB1second/10 ; 100 milliseconds
TMPB10ms equ TMPB1second/100 ; 10 milliseconds
TMPB1ms equ TMPB1second/1000 ; 1 millisecond