mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2024-12-29 07:29:15 +00:00
275 lines
9.6 KiB
Plaintext
275 lines
9.6 KiB
Plaintext
|
;
|
|||
|
; File: PSCEqu.a
|
|||
|
;
|
|||
|
; Contains: Equates for accessing the Peripheral Subsystem Controller (PSC)
|
|||
|
;
|
|||
|
; Written by: Mark A. Law
|
|||
|
;
|
|||
|
; Copyright: <09> 1992-1993 by Apple Computer, Inc. All rights reserved.
|
|||
|
;
|
|||
|
; Change History (most recent first):
|
|||
|
;
|
|||
|
; <SM7> 6/14/93 kc Roll in Ludwig.
|
|||
|
; <LW5> 4/13/93 chp Cleaned up, reorganized, and generally munged to a greater
|
|||
|
; degree than necessary. Unused fields of PSC_INT_TBL have been
|
|||
|
; removed since the changes in <P5> were only to support the
|
|||
|
; (defunct) DMA Manager.
|
|||
|
; <LW4> 3/16/93 chp Remove the definition of the PSCIntTbl lomem which has been
|
|||
|
; superseded by an equivalent field in ExpandMem.
|
|||
|
; <LW3> 2/24/93 chp Updated UTSC offsets to reflect the correct values for the final
|
|||
|
; PSC silicon and added a generic equate to the beginning of the
|
|||
|
; 64-bit register.
|
|||
|
; <LW2> 1/23/93 mal Added DSP Level 2 interrupt handler & parm placeholders to PSC
|
|||
|
; interrupt table.
|
|||
|
; <SM6> 11/19/92 mal Changed some MACE Enet DMA channel equs.
|
|||
|
; <SM5> 8/13/92 chp Added equates for SCCATX DMA channel number 6 (PSC2).
|
|||
|
; <SM4> 6/21/92 ejb Adding equate L5 ("Level 5") for the RTDrvr.
|
|||
|
; <SM3> 6/21/92 ejb Add equate DSPTOHOST as an alias for the equate DSP (PSC Lvl5
|
|||
|
; irq 0). The latter's name conflicts with RTDrvr equates.
|
|||
|
; <SM2> 5/24/92 RB Changed the DMA flush bit name to avoid a conflict with the
|
|||
|
; Sound Manager equates. From FLUSH to DMAFLUSH.
|
|||
|
; <P7> 4/2/92 mal Added ifdef to ensure we only included once per asm.
|
|||
|
; <P6> 4/2/92 mal Updated PSCIntTbl to real lowmem location.
|
|||
|
; <P5> 2/28/92 chp Modified structure of PSCIntTbl and changed <20>IRE<52> references to
|
|||
|
; <09>IER<45> (interrupt enable register) for consistency with
|
|||
|
; documentation and other parts of the source.
|
|||
|
; <P4> 2/21/92 mal Removed sound equates.
|
|||
|
; <P3> 2/14/92 mal Removed use of PSCBase, all registers defined as offsets.
|
|||
|
; <P2> 1/24/92 mal Added temporary PSCIntTbl lowmem global.
|
|||
|
;
|
|||
|
|
|||
|
|
|||
|
IF &TYPE('__IncludingPSCEqu__') = 'UNDEFINED' THEN
|
|||
|
__IncludingPSCEqu__ SET 1
|
|||
|
|
|||
|
|
|||
|
; PSC Interrupt Register and Interrupt Enable Register offsets
|
|||
|
|
|||
|
; level 2 registers - see HardwarePrivateEqu.a
|
|||
|
|
|||
|
; level 3 register offsets
|
|||
|
L3IR EQU $130 ; Level 3 Interrupt Register
|
|||
|
L3IER EQU $134 ; Level 3 Interrupt Enable Register
|
|||
|
; level 3 bit offsets, both irq's and enable's
|
|||
|
MACE EQU 0
|
|||
|
L3B7 EQU 7 ; "or" of all irq's, "sense" bit for enables
|
|||
|
|
|||
|
; level 4 register offsets
|
|||
|
L4IR EQU $140 ; Level 4 Interrupt Register
|
|||
|
L4IER EQU $144 ; Level 4 Interrupt Enable Register
|
|||
|
; level 4 bit offsets, both irq's and enable's
|
|||
|
SNDSTAT EQU 0
|
|||
|
L4SCCA EQU 1
|
|||
|
L4SCCB EQU 2
|
|||
|
DMA EQU 3
|
|||
|
L4B7 EQU 7 ; "or" of all irq's, "sense" bit for enables
|
|||
|
|
|||
|
; level 5 register offsets
|
|||
|
L5 EQU 5 ; Level 5 interrupt
|
|||
|
L5IR EQU $150 ; Level 5 Interrupt Register
|
|||
|
L5IER EQU $154 ; Level 5 Interrupt Enable Register
|
|||
|
; level 5 bit offsets, both irq's and enable's
|
|||
|
DSP EQU 0
|
|||
|
DSPTOHOST EQU 0
|
|||
|
FRMOVRN EQU 1
|
|||
|
L5B7 EQU 7 ; "or" of all irq's, "sense" bit for enables
|
|||
|
|
|||
|
; level 6 register offsets
|
|||
|
L6IR EQU $160 ; Level 6 Interrupt Register
|
|||
|
L6IER EQU $164 ; Level 6 Interrupt Enable Register
|
|||
|
; level 6 bit offsets, both irq's and enable's
|
|||
|
L660HZ EQU 0
|
|||
|
L6SCCA EQU 1
|
|||
|
L6SCCB EQU 2
|
|||
|
L6B7 EQU 7 ; "or" of all irq's, "sense" bit for enables
|
|||
|
|
|||
|
|
|||
|
; Universal Time Stamp Counter Register offsets
|
|||
|
|
|||
|
UTSC EQU $300
|
|||
|
LSUTSC EQU $300 ; least significant lword
|
|||
|
MSUTSC EQU $304 ; most significant lword
|
|||
|
|
|||
|
|
|||
|
PSCTEST EQU $400
|
|||
|
|
|||
|
PSC_BERRIE EQU $800 ; Bus Error Interrupt Enable (byte)
|
|||
|
BERRIE EQU 0 ; Bus Error Interrupt Enable bit offset
|
|||
|
|
|||
|
PSC_ISR EQU $804 ; Interrupt Status Register (long)
|
|||
|
|
|||
|
|
|||
|
; PSC DMA Control Register offsets
|
|||
|
|
|||
|
SCSI_CNTL EQU $C00 ; Channel 0 control register (word)
|
|||
|
PSC_MACE_RECV_CNTL EQU $C10 ; Channel 1 control register
|
|||
|
PSC_MACE_XMIT_CNTL EQU $C20 ; Channel 2 control register
|
|||
|
FDC_CNTL EQU $C30 ; Channel 3 control register
|
|||
|
SCCA_CNTL EQU $C40 ; Channel 4 control register
|
|||
|
SCCB_CNTL EQU $C50 ; Channel 5 control register
|
|||
|
SCCATX_CNTL EQU $C60 ; Channel 6 control register
|
|||
|
|
|||
|
|
|||
|
; PSC DMA Set Register offsets
|
|||
|
|
|||
|
PSC_DMA_CHNL RECORD 0 ; PSC DMA Channel record for use
|
|||
|
Addr
|
|||
|
Addr0 DS.L 1 ; with Channel base equ's below,
|
|||
|
Cnt
|
|||
|
Cnt0 DS.L 1 ; SCSI_CHNL, MACE_RECV_CHNL, etc.
|
|||
|
CmdStat
|
|||
|
CmdStat0 DS.W 1
|
|||
|
ORG *+6
|
|||
|
Addr1 DS.L 1 ; 32 bits
|
|||
|
Cnt1 DS.L 1 ; 32 bits
|
|||
|
CmdStat1 DS.W 1 ; 16 bits
|
|||
|
ORG *+6
|
|||
|
ENDR
|
|||
|
|
|||
|
SCSI EQU $1000 ; Channel 0 base
|
|||
|
SCSI_ADDR0 EQU $1000 ; Register Set 0 address register
|
|||
|
SCSI_CNT0 EQU $1004 ; Register Set 0 count register
|
|||
|
SCSI_CMDSTAT0 EQU $1008 ; Register Set 0 command/status register
|
|||
|
SCSI_ADDR1 EQU $1010 ; Register Set 1 address register
|
|||
|
SCSI_CNT1 EQU $1014 ; Register Set 1 count register
|
|||
|
SCSI_CMDSTAT1 EQU $1018 ; Register Set 1 command/status register
|
|||
|
|
|||
|
PSC_MACE_RECV EQU $1020 ; Channel 1 base
|
|||
|
MACE_RECV_ADDR0 EQU $1020 ; Register Set 0 address register
|
|||
|
MACE_RECV_CNT0 EQU $1024 ; Register Set 0 count register
|
|||
|
MACE_RECV_CMDSTAT0 EQU $1028 ; Register Set 0 command/status register
|
|||
|
MACE_RECV_ADDR1 EQU $1030 ; Register Set 1 address register
|
|||
|
MACE_RECV_CNT1 EQU $1034 ; Register Set 1 count register
|
|||
|
MACE_RECV_CMDSTAT1 EQU $1038 ; Register Set 1 command/status register
|
|||
|
|
|||
|
PSC_MACE_XMIT EQU $1040 ; Channel 2 base
|
|||
|
MACE_XMIT_ADDR0 EQU $1040 ; Register Set 0 address register
|
|||
|
MACE_XMIT_CNT0 EQU $1044 ; Register Set 0 count register
|
|||
|
MACE_XMIT_CMDSTAT0 EQU $1048 ; Register Set 0 command/status register
|
|||
|
MACE_XMIT_ADDR1 EQU $1050 ; Register Set 1 address register
|
|||
|
MACE_XMIT_CNT1 EQU $1054 ; Register Set 1 count register
|
|||
|
MACE_XMIT_CMDSTAT1 EQU $1058 ; Register Set 1 command/status register
|
|||
|
|
|||
|
FDC EQU $1060 ; Channel 3 base
|
|||
|
FDC_ADDR0 EQU $1060 ; Register Set 0 address register
|
|||
|
FDC_CNT0 EQU $1064 ; Register Set 0 count register
|
|||
|
FDC_CMDSTAT0 EQU $1068 ; Register Set 0 command/status register
|
|||
|
FDC_ADDR1 EQU $1070 ; Register Set 1 address register
|
|||
|
FDC_CNT1 EQU $1074 ; Register Set 1 count register
|
|||
|
FDC_CMDSTAT1 EQU $1078 ; Register Set 1 command/status register
|
|||
|
|
|||
|
SCCA EQU $1080 ; Channel 4 base
|
|||
|
SCCA_ADDR0 EQU $1080 ; Register Set 0 address register
|
|||
|
SCCA_CNT0 EQU $1084 ; Register Set 0 count register
|
|||
|
SCCA_CMDSTAT0 EQU $1088 ; Register Set 0 command/status register
|
|||
|
SCCA_ADDR1 EQU $1090 ; Register Set 1 address register
|
|||
|
SCCA_CNT1 EQU $1094 ; Register Set 1 count register
|
|||
|
SCCA_CMDSTAT1 EQU $1098 ; Register Set 1 command/status register
|
|||
|
|
|||
|
SCCB EQU $10A0 ; Channel 5 base
|
|||
|
SCCB_ADDR0 EQU $10A0 ; Register Set 0 address register
|
|||
|
SCCB_CNT0 EQU $10A4 ; Register Set 0 count register
|
|||
|
SCCB_CMDSTAT0 EQU $10A8 ; Register Set 0 command/status register
|
|||
|
SCCB_ADDR1 EQU $10B0 ; Register Set 1 address register
|
|||
|
SCCB_CNT1 EQU $10B4 ; Register Set 1 count register
|
|||
|
SCCB_CMDSTAT1 EQU $10B8 ; Register Set 1 command/status register
|
|||
|
|
|||
|
SCCATX EQU $10C0 ; Channel 6 base
|
|||
|
SCCATX_ADDR0 EQU $10C0 ; Register Set 0 address register
|
|||
|
SCCATX_CNT0 EQU $10C4 ; Register Set 0 count register
|
|||
|
SCCATX_CMDSTAT0 EQU $10C8 ; Register Set 0 command/status register
|
|||
|
SCCATX_ADDR1 EQU $10D0 ; Register Set 1 address register
|
|||
|
SCCATX_CNT1 EQU $10D4 ; Register Set 1 count register
|
|||
|
SCCATX_CMDSTAT1 EQU $10D8 ; Register Set 1 command/status register
|
|||
|
|
|||
|
|
|||
|
; PSC DMA Channel Register Bits
|
|||
|
|
|||
|
; DMA Channel Command/Status Register bit offsets
|
|||
|
IF EQU 8
|
|||
|
DIR EQU 9
|
|||
|
TERMCNT EQU 10
|
|||
|
ENABLED EQU 11
|
|||
|
IE EQU 12
|
|||
|
|
|||
|
; DMA Channel Control Register bit offsets
|
|||
|
CIRQ EQU 8
|
|||
|
DMAFLUSH EQU 9
|
|||
|
PAUSE EQU 10
|
|||
|
SWRESET EQU 11
|
|||
|
CIE EQU 12
|
|||
|
BERR EQU 13
|
|||
|
FROZEN EQU 14
|
|||
|
|
|||
|
SENSE EQU 15
|
|||
|
|
|||
|
|
|||
|
; PSC Interrupt Handler Table Template (see InterruptHandlers.a)
|
|||
|
;
|
|||
|
; This table contains address, parm entries for the real handlers for
|
|||
|
; interrupt levels 3, 4, 5, and 6. Individual drivers are responsible
|
|||
|
; for installing themselves and an optional parameter into the table.
|
|||
|
;
|
|||
|
; An interrupt handler is dispatched with its parameter in A1.
|
|||
|
;
|
|||
|
; During Cyclone development, the PSCIntTbl lomem ($1FC0) pointed to this table.
|
|||
|
; Now the pointer is in ExpandMem (emDMADispGlobs).
|
|||
|
|
|||
|
PSC_INT_TBL record 0,increment
|
|||
|
|
|||
|
; device interrupt handlers - levels 3-6
|
|||
|
;
|
|||
|
MACEhndlr ds.l 1 ; MACE int. handler
|
|||
|
MACEparm ds.l 1
|
|||
|
|
|||
|
SNDSTAThndlr ds.l 1 ; Level 4 SNDSTAT int. handler
|
|||
|
SNDSTATparm ds.l 1
|
|||
|
L4SCCAhndlr ds.l 1 ; Level 4 SCCA int. handler
|
|||
|
L4SCCAparm ds.l 1
|
|||
|
L4SCCBhndlr ds.l 1 ; Level 4 SCCB int. handler
|
|||
|
L4SCCBparm ds.l 1
|
|||
|
|
|||
|
DSPhndlr ds.l 1 ; Level 5 DSP int. handler
|
|||
|
DSPparm ds.l 1
|
|||
|
FRMOVRNhndlr ds.l 1 ; Level 5 FRMOVRN int. handler
|
|||
|
FRMOVRNparm ds.l 1
|
|||
|
|
|||
|
L660HZhndlr ds.l 1 ; Level 6 60 Hz int. handler
|
|||
|
L660HZparm ds.l 1
|
|||
|
L6SCCAhndlr ds.l 1 ; Level 6 SCCA int. handler
|
|||
|
L6SCCAparm ds.l 1 ; (On Mac OS, SCC ints at Level 4)
|
|||
|
L6SCCBhndlr ds.l 1 ; Level 6 SCCB int. handler
|
|||
|
L6SCCBparm ds.l 1 ; (On Mac OS, SCC ints at Level 4)
|
|||
|
|
|||
|
; DMA interrupt handlers - level 4
|
|||
|
;
|
|||
|
DMA_hndlrs EQU *
|
|||
|
|
|||
|
SCSIhndlr ds.l 1 ; SCSI DMA int. handler
|
|||
|
SCSIparm ds.l 1
|
|||
|
MACE_RECVhndlr ds.l 1 ; Mace Receive DMA int. handler
|
|||
|
MACE_RECVparm ds.l 1
|
|||
|
MACE_XMIThndlr ds.l 1 ; Mace Transmit Done DMA int. handler
|
|||
|
MACE_XMITparm ds.l 1
|
|||
|
FDChndlr ds.l 1 ; FDC DMA int. handler
|
|||
|
FDCparm ds.l 1
|
|||
|
SCCAhndlr ds.l 1 ; SCCA DMA int. handler
|
|||
|
SCCAparm ds.l 1
|
|||
|
SCCBhndlr ds.l 1 ; SCCB DMA int. handler
|
|||
|
SCCBparm ds.l 1
|
|||
|
SCCATXhndlr ds.l 1 ; SCCATX DMA int. handler
|
|||
|
SCCATXparm ds.l 1
|
|||
|
|
|||
|
; For Sound compatibility with older systems, the Level 5 DSP Interrupt handler
|
|||
|
; installs a <20>deferred<65> handler/parm here. PSCServiceInt will run this handler
|
|||
|
; if one exists and it<69>s about to RTE to level 0 or 1.
|
|||
|
;
|
|||
|
DSPL2hndlr ds.l 1 ; ptr to head of queue
|
|||
|
DSPL2parm ds.l 1 ; ptr to tail of queue
|
|||
|
|
|||
|
PSC_INT_TBL_SZ equ *
|
|||
|
endr
|
|||
|
|
|||
|
|
|||
|
ENDIF ; including __IncludingPSCEqu__
|