mac-rom/Internal/Asm/AMICEqu.a
Elliot Nunn 4325cdcc78 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 09:52:23 +08:00

212 lines
7.9 KiB
Plaintext

;
; File: AMICEqu.a
;
; Contains: Equates for accessing the Apple Macintosh I/O Controller (AMIC) on PDM
;
; Written by: Dave Calvert
;
; Copyright: © 1992-1993 by Apple Computer, Inc. All rights reserved.
;
; This file is used in these builds: ROM RISC (PDM ENET)
;
; Change History (most recent first):
;
; <SM21> 11/10/93 fau From SuperMunggio: Changed the check to see if the file has
; already been included.
; <SM20> 10/14/93 pdw <MC2>
; <SM19> 9/13/93 SAM Backed out the last rev. The multipier that was changed in
; <SM17> indicates the number of bytes in each entry. Two longs =
; 8 bytes.
; <SM18> 9/13/93 RC Fixed a bug with the number of Vectors which were being
; allocated for the AMIC DMA handlers
; <MC2> 9/13/93 SAM Changed the ddVectCount to be a byte quantity instead of a long.
; <SM17> 9/10/93 pdw Pulled the SCC Lvl 4 Port A and B interrupt vectors/refcons out
; of the DMA Dispatch portion of DMADispatchGlobals.
; <SM16> 9/9/93 pdw Another rearrangement of the DMADispatchGlobals structure.
; <SMG3> 9/1/93 chp Added a slightly less verbose version DMADispGlobals (formerly
; in InternalOnlyEqu.a). Added symbolic constants previously
; defined in SonySWIM3.a.
; <SMG2> 8/30/93 chp Add an interrupt handler selector for level 3 MACE interrupts,
; which are now dispatched through InterruptHandlers.a as well.
; <SM14> 8/1/93 pdw Adding SCSI equates.
; <SM13> 6/14/93 kc Moved some AMIC vectors from obsolete DMAMgrEqu.a.
; <SM12> 6/2/93 GMR Changed name of DMA reset bit, so it won't conflict with same
; definition in other include file.
; <SM11> 6/1/93 dwc Support for work-around to wait for MACE transmit status valid.
; <SM10> 5/27/93 dwc Added _GetMicroSeconds trap definition to use in AMIC
; work-around code.
; <SM9> 5/4/93 dwc Added debug code to work around AMIC's returning FF's on the
; first read.
; <SM8> 4/16/93 dwc Add equates for SonoraPrimaryInit.a to mask and clear MACE
; interrupts.
; <SM7> 4/6/93 dwc Updated for level 4 DMA interrupts.
; <SM6> 3/24/93 dwc Added code to try to recover when interrupt level is lowered
; during packet handling.
; <SM5> 3/9/93 jmp Moved an equate that was originally placed in
; SonoraPrimaryInit.a to this file.
; <SM4> 3/5/93 dwc Removed some more debugging code.
; <SM3> 2/25/93 dwc Enable receive, remove some debug equates.
; <SM2> 2/24/93 dwc Cleaned up some debug equates, added some more debug equates,
; disabled receive for the PDM D5 ROM build.
;
;
IF &TYPE('__INCLUDINGAMICEQU__') = 'UNDEFINED' THEN
__INCLUDINGAMICEQU__ SET 1
; Ethernet MACE equate for SonoraPrimaryInit.a
MACE_INT EQU $80 ; MACE interrupt status register offset <SM8>
MACE_INT_MSK EQU $90 ; MACE interrupt mask register offset <SM8>
MACE_BIU_CNFG EQU $B0 ; BIU config register offset to reset MACE
;
; AMIC DMA Register offsets
;
; AMIC Interrupt Register offsets
AMIC_INT_CTL EQU -$7000 ; AMIC Interrupt Control register
AMIC_DMA_ISR0 EQU -$6FF8 ; AMIC Interrupt Status register 0
AMIC_DMA_ISR1 EQU -$6FF6 ; AMIC Interrupt Status register 1
; AMIC interrupt control register bits
MACEIE EQU 3 ; Enable ENET interrupt from MACE to AMIC
ENETIRQ EQU 3 ; Ethernet interrupt asserted
DMAIRQ EQU 4 ; DMA interrupt asserted
INTMODE EQU 6 ; AMIC interrupt mode bit
CPUINT EQU 7 ; AMIC CPU interrupt bit
; AMIC DMA status register bits
ERXIRQ EQU 4 ; Ethernet receive DMA interrupt pending
ETXIRQ EQU 5 ; Ethernet transmit DMA interrupt pending
;
; AMIC DMA recv packet status record
;
AMIC_DMA_STAT_REC RECORD 0 ; AMIC DMA status record
RFS0 DS.B 1 ; RCVCNT [7-0] Recv'd message byte count
RFS1 DS.W 1 ; RCVCNT [11-8] Receive status, recv message byte count
CmdStat DS.W 1
ENDR
; Absolutes
bufferLogicalBase EQU $61000000 ; DMA buffer logical address
emulatorOffset EQU $60F40000 ; Emulator's offset D5 ROM
AMIC_DMA_BASE_REG EQU $50F31000 ; DMA base address register 3 [31:24]
; ¥¥ Temps for the PDM ENET driver ¥¥
XMIT_BUFF0 EQU $14000 ; Offset from recv buffer start to xmit buff 0
XMIT_BUFF1 EQU $14800 ; Offset from recv buffer start to xmit buff 1
XMITSET0 EQU $00 ; Offset for xmit byte count reg 0 HIGH BYTE
XMITSET1 EQU $10 ; Offset for xmit byte count reg 1 HIGH BYTE
; Receive register offsets
AMIC_DMA_RECV_HEAD EQU $1030 ; Receive head pointer [AMIC] Ã
AMIC_DMA_RECV_TAIL EQU $1034 ; Receive tail pointer Ã
AMIC_DMA_RECV_CNTL EQU $1028 ; Receive DMA Control/Status register
; Transmit register offsets, 8 bits
AMIC_DMA_XMIT_CNTL EQU $0C20 ; Transmit DMA channel control/status register offset
; AMIC XMIT Register offsets - Set 0
AMIC_DMA_XMIT_BUFF0 EQU $14000 ; Register Set 0 address register
AMIC_DMA_XMIT_CNT0L EQU $1045 ; Register Set 0 count register LOW
AMIC_DMA_XMIT_CNT0H EQU $1044 ; Register Set 0 count register HIGH
; AMIC XMIT Register offsets - Set 1
AMIC_DMA_XMIT_BUFF1 EQU $14800 ; Register Set 1 address register
AMIC_DMA_XMIT_CNT1L EQU $1055 ; Register Set 1 count register LOW
AMIC_DMA_XMIT_CNT1H EQU $1054 ; Register Set 1 count register HIGH
; AMIC FDC Register offsets
DMAFloppyBase equ $1060 ; address offset for floppy DMA
DMAFloppyCount equ $1064 ; count for floppy DMA
DMAFloppyCS equ $1068 ; DMA control/status for the floppy
; Test these to see if the xmit reg set is available
; If = 1, reg buffer is 'empty', set is available
SET0 EQU 5
SET1 EQU 6
AMIC_DMA_BASE_ADDR0 EQU $0003 ; DMA base address register 0 [7:0]
AMIC_DMA_BASE_ADDR1 EQU $0002 ; DMA base address register 1 [15:8]
AMIC_DMA_BASE_ADDR2 EQU $0001 ; DMA base address register 2 [23:16]
AMIC_DMA_BASE_ADDR3 EQU $0000 ; DMA base address register 3 [31:24]
;
; DMA interrupt handler selectors bit #s: $50f2a00a ($FÉ8) | $50f2a008 (7É0)
;
hwAmicRXB EQU 0 ; SCC Port B Receive
hwAmicTXB EQU 1 ; Transmit
hwAmicRXA EQU 2 ; SCC Port A Receive
hwAmicTXA EQU 3 ; Transmit
hwAmicERX EQU 4 ; Ethernet Receive
hwAmicETX EQU 5 ; Transmit
hwAmicFDC EQU 6 ; Floppy
hwAmicUnused EQU 7 ; Unused
hwAmicSIN EQU 8 ; Sound In
hwAmicSOUT EQU 9 ; Out
ddVectCount EQU $A ; # of implemented vectors
;
; AMIC Interrupt Dispatcher vector table
;
DMADispGlobals RECORD 0, INCREMENT ; (Generic DMA dispatch table)
ddDMAbase DS.L 1 ; DMA controller's base address
ddVector0 DS.L 1 ; Source 0 IRQ vector
ddRefCon0 DS.L 1 ; Source 0 Handler RefCon
DS.B (ddVectCount-1)*8 ; one for each remaining vector
SCCLvl4Avector DS.L 1 ; Level 4 SCC port A vector
SCCLvl4Arefcon DS.L 1 ; Level 4 SCC port A refCon
SCCLvl4Bvector DS.L 1 ; Level 4 SCC port B vector
SCCLvl4Brefcon DS.L 1 ; Level 4 SCC port B refCon
maceVector DS.L 1 ; MACE enet interrupt vector
maceRefcon DS.L 1 ; MACE enet interrupt refCon
ddSize EQU * ; size of this record
ENDR
;
; AMIC DMA Channel Register Bit defines
;
; DMA Control/Status Register bit offsets
DMARST EQU 0 ; Soft reset (xmit & rcv)
DMARUN EQU 1 ; DMA enable (xmit & rcv)
DMAIE EQU 3 ; DMA Interrupt Enable (xmit & rcv)
DMADIR EQU 6 ; DMA Direction (SCSI, FDC)
OVRRUN EQU 6 ; Rcv Head ptr has tried to pass Tail Ptr (ENET)
DMAIF EQU 7 ; DMA Interrupt Flag (xmit & rcv)
XMTMSK EQU (1<<DMAIF) ; Transmit AMIC idle mask
XMTDMA EQU (1<<DMAIF)+(1<<DMAIE)+(1<<DMARUN) ; Transmit AMIC DMA mask
RCVMSK EQU (1<<DMAIF)+(1<<DMAIE)+(1<<DMARUN) ; Receive AMIC mask
pageSize EQU $0100 ; Buffer page - garbage bytes - pkt size & status
wrapTime EQU $BB ; Max buffer limit - 192 x 256 = 49152
;***** SCSI ******
kbAMICDirection equ DMADIR
kbAMICFlush equ 4
kbAMICRun equ 1
kbAMICReset equ 0
kmAMICDirection equ 1<<kbAMICDirection
kmAMICFlush equ 1<<kbAMICFlush
kmAMICRun equ 1<<kbAMICRun
kmAMICReset equ 1<<kbAMICReset
ENDIF ; __INCLUDINGAMICEQU__