mac-rom/Internal/Asm/SCSIDiskModeEqu.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

176 lines
6.7 KiB
Plaintext

;
; File: SCSIDiskModeEqu.a
;
; Contains: SCSI Disk Mode Transfer Equates
;
; Written by: James Blair
;
; Copyright: © 1992-1993 by Apple Computer, Inc. All rights reserved.
;
; This file is used in these builds: ROM
;
; Change History (most recent first):
;
; <SM2> 12/13/93 PN Roll in KAOs and Horror changes to support Malcom and AJ
; machines
; <SM1> 11/20/92 SWC Added to SuperMario from Horror. Horror changes below.
; <H4> 7/13/92 SWC jab/Fine tune low power display toggling.
; <H3> 7/13/92 SWC jab/Drawing extension for external video SDM.
; <H2> 6/25/92 SWC jab/Added DMA support.
; <H1> 3/4/92 jab First checked in.
;
; picture IDs
DiskModePICT EQU 95 ; SCSI symbol
Arrow1 EQU 96 ; these arrows mark data in motion - position 1
Arrow2 EQU 97 ; animated position 2
Arrow3 EQU 98 ; animated position 3
BattPICT EQU 99 ; low battery
DiskId_Base EQU 100 ; base resource number SCSI IDs
; bounding rectangle topLefts, relative to the topLeft of the DiskModePICT
ArrowsTop EQU 60 ; Arrows PICT DestRect Top
ArrowsLeft EQU 74 ; Arrows PICT DestRect Left
IDTop EQU 53 ; SCSI ID PICT DestRect Top
IDLeft EQU 43 ; SCSI ID PICT DestRect Left
BattTop EQU 62 ; SCSI Battery PICT DestRect Top
BattLeft EQU 36 ; SCSI Battery PICT DestRect Left
; miscellaneous
defaultID EQU 2 ; default SCSI ID for DiskMode if PRAM is weird
DimLevel EQU 1 ; minimum dimming level
horizDelta EQU 40 ; how many pixels the PICT moves each time
iconDelay EQU 3000 ; timing values for drawing delay <H2> <H3>
sbArrowDelay EQU 100 ; single bus timing values for drawing delay <H2> <H3>
dbArrowDelay EQU 2 ; dual bus timing values for drawing delay <H2> <H3>
transThres EQU 5000 ; threshold count value for low power warning <H4>
; ¥¥¥¥¥¥¥ Stack Storage ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
DiskModeVars RECORD 0,DECREMENT
saveA5 ds.l 1
localA5 ds.l 1
thePort ds.l 1 ; my own QuickDraw (required!)
ds.b grafSize-4 ; other QuickDraw globals (except thePort)
myQDProcs ds.b qdProcsRec ; storage for QD bottleneck procs <H3>
oldBitsProcPtr ds.l 1 ; address of original bitsProc QD bottleneck proc <H3>
arrow3PictHndl ds.l 1 ; handle to third motion arrow
arrow2PictHndl ds.l 1 ; handle to second motion arrow
arrow1PictHndl ds.l 1 ; handle to first motion arrow
scsiIDPictHndl ds.l 1 ; handle to SCSI ID picture
battPICTHndl ds.l 1 ; handle to battery picture
scsiPictHndl ds.l 1 ; handle to SCSI symbol picture
arrowRect ds.w 4 ; bounds of motion arrows
scsiIDRect ds.w 4 ; bounds of SCSI ID
battRect ds.w 4 ; bounds of battery
scsiRect ds.w 4 ; bounds of SCSI symbol
ArrowDelay ds.l 1 ; how often to draw the arrows, in 500 usec intervals <H2>
maxRightX ds.w 1 ; the maximum X coordinate for the PICT drawing
deltaX ds.w 1 ; signed offset of how far to move each time
diskID ds.w 1 ; holds the virtual SCSI id of our DiskMode drive
whichArrow ds.w 1 ; which arrow to draw
diskStat ds.w 1 ; this word holds our DiskMode status
SavedSR ds.w 1 ; holds saved SR value <H2>
SBLvl2Hndlr ds.l 1 ; holds the old level 2 handler <H2>
drawTimerTsk ds.b 22 ; timer task for drawing the icon <H2>
backliteRefNum ds.w 1 ; Backlight driver's refNum
backliteMin ds.w 1 ; minimum backlight level
backliteMax ds.w 1 ; maximum backlight level
transCount ds.l 1 ; determines the state of the backlight <H2>
DrawCount ds.l 1 ; counter to tell us when it is ok to draw <H2>
SavedCDB ds.b 12 ; stored CDB for xfer specification <H2>
MyPort ds.b portRec
DiskModeVarsSize EQU *
ENDR
; ¥¥¥¥¥¥¥ Backlight driver equates ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
SetBrightness EQU $4301 ; set screen brightness
DisableSlideCtl EQU $4303 ; enable/disable slider control of brightness
GetBrightRange EQU $5303 ; get brightness range
; ¥¥¥¥¥¥¥ DiskStat Bits and Equates ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
ArrowMask EQU 3 ; bits 0-1 contain which arrow to draw
LowPower EQU 2 ; bit 2: draw low battery picture <H2>
DrawWarning EQU 3 ; bit 3: draw battery picture this time (alternate with SCSI ID)
BackLiteOff EQU 4 ; bit 4: backlight is currently off
DoingXfer EQU 5 ; bit 5: we are in a xfer routine <H2>
bitSEL EQU 6 ; bit 6: a SEL interrupt has occurred on diskID <H2>
; ¥¥¥¥¥¥¥ SCSI Equates ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
a1_Int EQU a1
a2_Ext EQU a2
d3_IntStat EQU d3
IntSELMask EQU (1<<7)+(1<<0) ; mask for selecting internal ID 0
IntArbMask EQU (1<<7)
bitATN EQU 1
bitREQ EQU 3 ; REQ/ is bit 3 in sTCR
scsiBlkB EQU 512 ; number of bytes/block <H2>
; phase mask when CSR contents are shifted right 2 bits
phDO EQU ((0<<bMSG) | (0<<bCD) | (0<<bIO))>>2 ; data out
phDI EQU ((0<<bMSG) | (0<<bCD) | (1<<bIO))>>2 ; data in
phCMD EQU ((0<<bMSG) | (1<<bCD) | (0<<bIO))>>2 ; command
phStat EQU ((0<<bMSG) | (1<<bCD) | (1<<bIO))>>2 ; status
phMsgOut EQU ((1<<bMSG) | (1<<bCD) | (0<<bIO))>>2 ; message out
phMsgIn EQU ((1<<bMSG) | (1<<bCD) | (1<<bIO))>>2 ; message in
;¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥ <H2>
;
; This stuff is only good until we turn off interrupts in Config ROM when it determines that we are
; going into DiskMode. It should be able to determine that we are going into SDM...it knows that
; we need interrupts turned off if the cable is attached.
;
;--------------------------------------------------------------------
; VSC Temporary Equates
;--------------------------------------------------------------------
vscBase EQU $FEE00000 ; base of the VSC on Deskbar/Gemini
slotIER EQU $12 ; Slot interrupt enable register
slotCIRQ EQU $03 ; 1=interrupts enabled from Slot C
slotDIRQ EQU $04 ; 1=interrupts enabled from Slot D
VBLIRQ EQU $06 ; 1=interrupts enabled from VBL
setEnable EQU $07 ; /1=set interrupt enables corresponding to 1's in bits 0-6
; \0=clear interrupt enables corresponding to 1's in bits 0-6
vscIER EQU $13 ; VSC interrupt enable register
scsiDRQEn EQU $00 ; 1=interrupts enabled from SCSI DMA Requests
anySlotEn EQU $01 ; 1=interrupts enabled from VBL or NuBus slot
ejectEn EQU $02 ; 1=interrupts enabled from eject mechanism
scsiEn EQU $03 ; 1=interrupts enabled from SCSI chip
enetEn EQU $04 ; 1=interrupts enabled from SONIC
;¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥ <H2>