mirror of
https://github.com/elliotnunn/supermario.git
synced 2024-11-22 04:31:30 +00:00
176 lines
7.6 KiB
Plaintext
176 lines
7.6 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>
|