mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2025-01-03 09:31:04 +00:00
4325cdcc78
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.
226 lines
9.9 KiB
Plaintext
226 lines
9.9 KiB
Plaintext
;
|
|
; File: EDiskEqu.a
|
|
;
|
|
; Contains: Equates and Data structures used internally by the EDisk Driver.
|
|
;
|
|
; Copyright: © 1988-1991, 1993 by Apple Computer, Inc., all rights reserved.
|
|
;
|
|
; Change History (most recent first):
|
|
;
|
|
; <SM7> 11/9/93 SAM Roll in <MC5> from mc900ftjesus.
|
|
; <MC4> 11/9/93 SAM Reducing the max edisk size to 255 MB. Tough.
|
|
; <SM6> 11/8/93 SAM Roll in <MC3> from mc900ftjesus.
|
|
; <MC3> 11/8/93 SAM Added MaxRamDiskSize. Currently set to 256MB -1.
|
|
; <SM5> 10/28/93 CCH Just checking to see if you were paying attention.. Really added
|
|
; EDiskProtect equate to EDiskDriveInfo record.
|
|
; <SM4> 10/28/93 CCH Added EDiskProtect equate to EDiskDriveInfo record.
|
|
; <SM3> 6/17/93 kc Roll in Ludwig.
|
|
; <LW5> 6/16/93 KW Ok mess with MinHeapSize again. now equal to 0x00260000, which
|
|
; is the current value of the mnrm resource in the memory control
|
|
; panel. Power users will be able to open the memory control
|
|
; panel and lower the mnrm resource to this value and still have a
|
|
; ram disk.
|
|
; <SM1> 11/01/92 HY Added GintyHeader record to support ROM disks.
|
|
; <5> 10/28/91 SAM/KSM Rolled in Regatta file.
|
|
;
|
|
; Terror Change History:
|
|
;
|
|
; <7> 6/26/91 CCH Moved RAM disk base to slot 7 space so as not to conflict with
|
|
; DB Lite's frame buffer,.
|
|
; <6> 6/25/91 CCH Moved RAM disk base to $60000000 and added MinRamDiskSize
|
|
; equate.
|
|
; <5> 6/13/91 CCH Moved RamDiskSize to EDiskDriveInfo record.
|
|
; <4> 6/13/91 CCH Moved bRamDisk equate in from MMUTables.a.
|
|
; <3> 4/2/91 CCH Reduced minimum heap size to allow for space used by BootGlobs.
|
|
; <2> 12/20/90 CCH Added memory allocation equates for Edisk driver.
|
|
; ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
; Pre-TERROR ROM comments begin here.
|
|
; ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
; <2> 5/16/90 JJ Modify parameter ram byte address. Merged two bytes ($75-76)
|
|
; into one ($AF) since only 1 bit was used from $75.
|
|
; <1.2> 5/26/89 GMR Changed RomSpaceEnd from $F00000 to $E00000, added new RAM disk
|
|
; size status code (drvSizeCode)
|
|
; <1.1> 2/21/89 GGD Added support for SLIM interface adapter. Changed origin in
|
|
; EDiskDriveInfo record to be DriveQElement.
|
|
; <1.0> 11/9/88 CCH Adding to EASE.
|
|
;
|
|
; To Do:
|
|
;
|
|
IF &TYPE('__INCLUDINGEDISKPRIVEQU__') = 'UNDEFINED' THEN
|
|
__INCLUDINGEDISKPRIVEQU__ SET 1
|
|
|
|
EDiskDriveInfo record {DriveQElement},increment ; drive specific variables
|
|
SLIMRegPtr ds.l 1 ; pointer to hardware polling regs (SLIMs only)
|
|
HWDepProcPtr ds.l 1 ; pointer to HW dependent function handler proc
|
|
HeaderInfoPtr ds.l 1 ; pointer to header info if present
|
|
FormatTime ds.l 1 ; time when disk last formatted
|
|
FormatTicks ds.l 1 ; ticks when last formatted
|
|
CheckSumPtr ds.l 1 ; pointer to CheckSum table if present
|
|
DataStartPtr ds.l 1 ; pointer to first byte of data storage
|
|
DataEndPtr ds.l 1 ; pointer to last byte+1 of data storage
|
|
MediaIconPtr ds.l 1 ; pointer to media Icon and Mask
|
|
DriveIconPtr ds.l 1 ; pointer to drive Icon and Mask
|
|
WhereStringPtr ds.l 1 ; pointer to GetInfo Where: string
|
|
DriveInfo ds.l 1 ; longword for Return Drive Info call
|
|
|
|
MountedFlag equ 0 ; disk inserted event successfully posted
|
|
CreateWithXSums equ 1 ; create RAM EDisk with checksums by default
|
|
EDiskProtect equ 2 ; EDisk data buffer is protected
|
|
|
|
Flags ds.b 1 ; state flags
|
|
DiskInPlaceInit ds.b 1 ; $02, $08, $48. Value for DiskInPlace when inserted
|
|
|
|
InsertedMask equ (1<<3)-1 ; last 3 polls are relevant
|
|
InsertedStatus ds.b 1 ; inserted status from last 8 polls
|
|
|
|
|
|
align 4 ; long word align
|
|
RamDiskSize ds.l 1 ; size of memory for RAM disk, in bytes <T5>
|
|
|
|
WriteProtected ds.b 1 ; bit7=1=write protected
|
|
DiskInPlace ds.b 1 ; 0 = no disk place, 1 or 2 = disk in place
|
|
Installed ds.b 1 ; 0 = don't know, 1=installed, $FF=not installed
|
|
Sides ds.b 1 ; bit7=0=single sided, bit7=1=double sided
|
|
|
|
; record origin is here (fields above have negative offsets)
|
|
DriveQElement ds.b dQDrvSz2+2 ; standard drive queue element
|
|
DQE equ DriveQElement ; just a shorter name
|
|
|
|
EDiskDriveInfoSize equ *-EDiskDriveInfo; size of drive specific variables
|
|
endr
|
|
|
|
|
|
EDiskVars record 0,increment ; global variables used by driver
|
|
FindDqePatch ds.w 3 ; either an RTS or JMP.L $xxxxxxxx
|
|
PrimePatch ds.w 3 ; either an RTS or JMP.L $xxxxxxxx
|
|
DCEpointer ds.l 1 ; pointer to device control entry
|
|
Active ds.b 1 ; Indicates request in progress
|
|
align 2
|
|
VTask ds.b vblPhase+2 ; Virtical Retrace Task info
|
|
|
|
IconAndMaskSize equ ((32*32)/8)*2 ; room for Icon data and mask
|
|
WhereStringSize equ 32 ; room for name string
|
|
|
|
IconBuffer ds.b IconAndMaskSize
|
|
WhereStringBuff ds.b WhereStringSize
|
|
|
|
align 2
|
|
EDiskVarsSize equ * ; size of global variables used by driver
|
|
endr
|
|
|
|
eDiskPollRate equ 17 ; 17 ticks = 0.2833333 seconds
|
|
ejectPolls equ 11 ; give up on eject after about 3 seconds
|
|
|
|
; EDisk Drive Types (for Return Drive Info control call)
|
|
|
|
ramDiskType equ 16 ; EDisk allocated in system RAM space
|
|
romDiskType equ 17 ; EDisk in expansion ROM space
|
|
slimDiskType equ 18 ; EDisk on SLIM card
|
|
|
|
; EDisk header block
|
|
|
|
EDiskHeader record 0,increment ; layout of the slim signature block
|
|
HdrScratch ds.b 128 ; scratch space for r/w testing and vendor info
|
|
HdrBlockSize ds.w 1 ; size of header block (512 bytes for version 1)
|
|
HdrVersion ds.w 1 ; header version number (this is version 1)
|
|
HdrSignature ds.b 12 ; 'EDisk Gary D'
|
|
HdrDeviceSize ds.l 1 ; size of device, in bytes
|
|
HdrFormatTime ds.l 1 ; time when last formatted (pseudo unique ID)
|
|
HdrFormatTicks ds.l 1 ; ticks when last formatted (pseudo unique ID)
|
|
HdrCheckSumOff ds.l 1 ; offset to CheckSum table if present
|
|
HdrDataStartOff ds.l 1 ; offset to first byte of data storage
|
|
HdrDataEndOff ds.l 1 ; offset to last byte+1 of data storage
|
|
HdrMediaIconOff ds.l 1 ; offset to media Icon and Mask if present
|
|
HdrDriveIconOff ds.l 1 ; offset to drive Icon and Mask if present
|
|
HdrWhereStrOff ds.l 1 ; offset to GetInfo Where: string if present
|
|
HdrDriveInfo ds.l 1 ; longword for Return Drive Info call if present
|
|
ds.b 512-* ; rest of block is reserved
|
|
EDiskHeaderSize equ * ; size of EDisk header block
|
|
endr
|
|
|
|
; <SM1><Begin>
|
|
;¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥ Ginty ROM Header ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
|
|
|
|
GintyHeader record 0,increment ; layout of the slim signature block
|
|
HdrScratch ds.b 128 ; scratch space for r/w testing and vendor info
|
|
HdrBlockSize ds.w 1 ; size of header block (512 bytes for version 1)
|
|
HdrVersion ds.w 1 ; header version number (this is version 1)
|
|
HdrSignature ds.b 12 ; 'Ginty HYGWGA'
|
|
HdrDeviceSize ds.l 1 ; size of device, in bytes
|
|
HdrFormatTime ds.l 1 ; time when last formatted (pseudo unique ID)
|
|
HdrFormatTicks ds.l 1 ; ticks when last formatted (pseudo unique ID)
|
|
HdrCheckSumOff ds.l 1 ; offset to CheckSum table if present
|
|
HdrDataStartOff ds.l 1 ; offset to first byte of data storage
|
|
HdrDataEndOff ds.l 1 ; offset to last byte+1 of data storage
|
|
HdrMediaIconOff ds.l 1 ; offset to media Icon and Mask if present
|
|
HdrDriveIconOff ds.l 1 ; offset to drive Icon and Mask if present
|
|
HdrWhereStrOff ds.l 1 ; offset to GetInfo Where: string if present
|
|
HdrDriveInfo ds.l 1 ; longword for Return Drive Info call if present
|
|
HdrEDiskOffset ds.l 1 ; offset to EDisk driver
|
|
HdrBootCode ds.l 1 ; offset to Patch code for loading EDisk driver and boot process
|
|
ds.b 512-* ; rest of block is reserved
|
|
GintyHdrSize equ * ; size of Ginty header block
|
|
endr ; <SM1><End>
|
|
|
|
; Internal ROM disks are aligned on 64KB boundarys starting in the system ROM
|
|
; and running up to the beginning of I/O space
|
|
|
|
RomDiskAlign equ $00010000 ; aligned on 64K byte boundarys
|
|
RomSpaceEnd equ $00E00000 ; don't search I/O space <1.2>
|
|
ROMSize equ $00400000 ; search a 4mb ROM space <SM1>
|
|
|
|
; EDisk parameter RAM usage
|
|
|
|
slimsExist equ 7 ; bit 7 = 0, slims have never been seen
|
|
; bit 7 = 1, slims have been seen
|
|
ramDiskPramAddr equ $AF ; PRam byte (bits 0-6) is RamDisk size / 64KB
|
|
|
|
drvSizeCode equ $4544 ; Status code for drive size call <1.2>
|
|
|
|
; Function codes passed to HWDepProcPtr in register D0
|
|
|
|
CheckEDiskInserted equ 0
|
|
CheckEDiskReadOnly equ 1
|
|
EnableEDiskWrites equ 2
|
|
DisableEDiskWrites equ 3
|
|
EjectEDisk equ 4
|
|
|
|
|
|
; SLIMs are mapped into RAM as follows
|
|
|
|
slim0RamBase equ $00500000 ; SLIM 0 is mapped here in the address space
|
|
slim1RamBase equ $00700000 ; SLIM 1 is mapped here in the address space
|
|
|
|
|
|
; SLIM register addresses, eventually move to HardwareEqu.a
|
|
|
|
slimAdapterROM equ $00E00000 ; base of 64K rom on slim adapter
|
|
|
|
slimAdapterInfo equ $00FC0200 ; address of slim adapter status reg
|
|
slimsInstalled equ 3 ; bit 3 = 1 if slim adapter installed
|
|
|
|
slim0RegBase equ $00F00000 ; register base for slim 0 (upper)
|
|
slim1RegBase equ $00F00030 ; register base for slim 1 (lower)
|
|
|
|
slimStatusReg equ $00000000 ; offset to slim status register
|
|
*slimInserted equ 3 ; bit 3 = 1 if slim is inserted
|
|
slimReadOnly equ 2 ; bit 2 = 1 if slim is ROM or Write Protected
|
|
|
|
slimEjectReg equ $00000010 ; offset to slim eject control register
|
|
slimNotEjecting equ 3 ; bit 3 = 1 if slim is not ejecting
|
|
; (buffers enabled)
|
|
; bit 3 = 0 to start eject and disable
|
|
; buffers (on falling edge)
|
|
|
|
slimProtectReg equ $00000020 ; offset to slim write protect register
|
|
slimNoWrites equ 3 ; bit 3 = 1 if software write protected
|
|
|
|
; Memory allocation equates for Edisk
|
|
|
|
bRamDisk EQU $70000000 ; base of Ram Disk area (32 bit mode) <T7>
|
|
|
|
MinRamDiskSize EQU $00030000 ; minimum disk size is 192k <T6>
|
|
MaxRamDiskSize EQU $0FF00000 ; maximum disk size is 255MB <MC4>
|
|
MinHeapSize EQU $00260000 ; must have at least Å2.5 megs free for heap <LW5>
|
|
|
|
ENDIF ; Already Included. |