mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2024-12-28 16:31:01 +00:00
4325cdcc78
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.
221 lines
7.5 KiB
Plaintext
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
|
|
|