;____________________________________________________________________________________ ; ; File: HALc96_PSC.a ; ; Contains: Stuff for 53c96/PSC machines (Cyclone) ; ; Written by: Paul Wolf ; ; Copyright: © 1990-1993 by Apple Computer, Inc., all rights reserved. ; ; ; Change History (most recent first): ; ; 11/22/93 pdw Rolling in from . ; 10/29/93 DCB Getting rid of warnings. ; 10/27/93 DCB Saving ChanlControl in the Halg so Cyclone doesn't choke on ; itself. ; 10/14/93 pdw roll-in. ; 10/12/93 pdw Added support for Synchronous data transfers, rewrote State ; Machine, message handling etc. ; 9/9/93 pdw Lots of little changes. Name changes, temporary cache_bug ; stuff. ; 7/17/93 pdw Added this minDMAsize thing. ; 6/29/93 pdw Massive checkins: Change asynchronicity mechanism to CallMachine ; stack switching mechanism. Adding support for Cold Fusion. ; Rearranging HW/SW Init code. Some code optimizations. ; 5/5/93 PW Converted names to meanies-friendly names. Updated with latest ; from Ludwig stuff. ; 5/1/93 PW Removed PSC register write retries (old PSC bug workaround). ; 3/26/93 PW Removed generic DMA routines from this file and put them into ; HALc96DMA.a. ; 3/20/93 PW New (effectively). Split HALc96PSC.a into 2 files - this one ; and HALc96DMA.a to better handle alternate DMA hardware (i.e. ; AMIC). ; ;____________________________________________________________________________________ MACHINE MC68020 ; '020-level BLANKS ON ; assembler accepts spaces & tabs in operand field PRINT OFF ; do not send subsequent lines to the listing file ; don't print includes LOAD 'StandardEqu.d' ; INCLUDE 'HardwarePrivateEqu.a' INCLUDE 'HardwareEqu.a' ; INCLUDE 'UniversalEqu.a' ; for TestFor INCLUDE 'Debug.a' ; for NAME macro INCLUDE 'SCSI.a' INCLUDE 'SCSIEqu53c96.a' INCLUDE 'ACAM.a' INCLUDE 'SIMCoreEqu.a' INCLUDE 'HALc96equ.a' INCLUDE 'PSCequ.a' PRINT ON ; do send subsequent lines to the listing files CASE OBJECT IMPORT RecordEvent IMPORT OneByteRead, OneByteWrite ;========================================================================== IF 0 THEN ; from PSCEqu.a $50F31000 + SCSI_CNTL EQU $C00 ; Channel 0 control register 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 DMA Channel Register offsets ; PSC_DMA_CHNL RECORD 0 ; PSC DMA Channel record for use Addr DS.L 1 ; with Channel base equ's below, Cnt DS.L 1 ; SCSI_CHNL, MACE_RECV_CHNL, etc. CmdStat DS.W 1 ENDR ENDIF ;========================================================================== ;ΡΡΡ DMA Channel Control Register bit offsets PSCChannelBits RECORD 0 unused0 ds.b 8 CIRQ ds.b 1 ; 8 FLUSH ds.b 1 ; 9 PAUSE ds.b 1 ; 10 SWRESET ds.b 1 ; 11 CIE ds.b 1 ; 12 BERR ds.b 1 ; 13 FROZEN ds.b 1 ; 14 ENDR ;ΡΡΡΡ DMA Channel Set Command/Status Register bit offsets PSCSetBits RECORD 0 unused0 ds.b 8 IF ds.b 1 ; 8 DIR ds.b 1 ; 9 TERMCNT ds.b 1 ; 10 ENABLED ds.b 1 ; 11 IE ds.b 1 ; 12 unused13 ds.b 2 SENSE ds.b 1 ; 15 ENDR kmWriteOnes equ 1< pdw F§ move.l bufferAddr(a6), Addr(A2_SetRegs) ; pdw F§ move.w #1<