; ; 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): ; ; 12/13/93 PN Roll in KAOs and Horror changes to support Malcom and AJ ; machines ; 11/20/92 SWC Added to SuperMario from Horror. Horror changes below. ;

7/13/92 SWC jab/Fine tune low power display toggling. ;

7/13/92 SWC jab/Drawing extension for external video SDM. ;

6/25/92 SWC jab/Added DMA support. ;

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

sbArrowDelay EQU 100 ; single bus timing values for drawing delay

dbArrowDelay EQU 2 ; dual bus timing values for drawing delay

transThres EQU 5000 ; threshold count value for low power warning

; ••••••• 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

oldBitsProcPtr ds.l 1 ; address of original bitsProc QD bottleneck proc

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

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

SBLvl2Hndlr ds.l 1 ; holds the old level 2 handler

drawTimerTsk ds.b 22 ; timer task for drawing the icon

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

DrawCount ds.l 1 ; counter to tell us when it is ok to draw

SavedCDB ds.b 12 ; stored CDB for xfer specification

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

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

bitSEL EQU 6 ; bit 6: a SEL interrupt has occurred on diskID

; ••••••• 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

; phase mask when CSR contents are shifted right 2 bits phDO EQU ((0<>2 ; data out phDI EQU ((0<>2 ; data in phCMD EQU ((0<>2 ; command phStat EQU ((0<>2 ; status phMsgOut EQU ((1<>2 ; message out phMsgIn EQU ((1<>2 ; message in ;••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••

; ; 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 ;••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••