mac-rom/Internal/Asm/BootEqu.a
Elliot Nunn 2b68b7d5e7 Reverse boot 3
Well, the parts of it that are clearly descended from the Cube-E
sources.
2018-01-03 06:32:31 +08:00

160 lines
7.8 KiB
Plaintext

;
; File: BootEqu.a
;
; Contains: equates for the boot time environment
;
; Copyright: © 1989-1994 by Apple Computer, Inc., all rights reserved.
;
; Change History (most recent first):
;
; <SM8> 2/6/94 IH Added ROM version equates.
; <SM7> 3/11/93 SAM Added sgEDiskStealFLag to boot globs that tells the MMU init
; code whether or not to steal RAM chunks from the map.
; <SM6> 2/20/93 SAM Added emuWarmStartConst - a new warmstart flag for the native
; startup code. Too bad Paula is 5 characters...
; <SM5> 8/19/92 CSS Update from Reality:
; <11> 8/18/92 DTY Change the name of BootGlobs, which is used by the ROM Start
; Manager to StartGlobals to avoid confusion with BootGlobals,
; which is used by the boot code in Boot[1-3].a.
; <SM4> 8/17/92 CCH Added scratch area in boot globs.
; <10> 7/1/92 DTY #1031401: Bump the slop in the system heap up from 44K to 64K.
; This gives a little more room for 'PACK' resource to get loaded
; when the system heap is packed down in low memory conditions.
; <9> 5/28/92 DTY #1030972: Add systemEnabledBit. 'boot' 2 will set this bit if it
; couldnÕt find any Gibblies to boot the machine. 'boot' 3 will
; check this bit and display the ÒThis disk is too old to be used
; on this Macintosh.Ó message.
; <8> 1/23/92 KC Roll in Terror patches from BootEqu.a. Original comments follow.
; {2} 12/20/90 CCH Added defStackAddr equate.
; <7> 1/17/92 DTY Take the kROMVersion equates out of this file; theyÕre defined
; in LinkedPatchMacros.a
; <6> 1/14/92 csd Move the BootGlobals record here from BootCode.a and
; StartSystem.a so we donÕt have to keep the two versions in sync.
; NOTE: BootGlobals is not the same as BootGlobs!
; <5> 12/30/91 RB Added space for Edisk variables in the BootGlobals record.
; <4> 8/21/91 JSM Clean up header.
; <3> 1/30/91 gbm sab, #38: Change the Ôalready including this fileÕ variable to
; all uppercase (for security reasons)
; <1.3> 5/30/89 rwh moved warm start to near top of boot globals record. Added
; bgTopOff, bgPhysicalTableOff.
; <1.2> 5/26/89 rwh renamed BootGlobs fields for consistency. Added HoleSysHeap,
; HoleLowMem.
; <1.1> 5/16/89 rwh added warm start to the boot globals record
; <1.0> 5/13/89 rwh New today
;
IF &TYPE('__INCLUDINGBOOTEQU__') = 'UNDEFINED' THEN
__INCLUDINGBOOTEQU__ SET 1
StartGlobals RECORD {sgRamTable},DECR
sgTestSpace ds.l 2 ; 2 longs for diagnostics to trash
sgRamTable equ * ; table of start/size physical RAM, -1 ended
sgMaxChunks equ 8 ; maximum # RAM chunks we can accomodate
sgWarmStart ds.l 1 ; warm start constant
sgTopOff ds.l 1 ; offset to top of boot globals area
sgAllocOff ds.l 1 ; offset to bottom of allocated area
sgPhysicalTableOff ds.l 1 ; offset to physical space table (for VM et al)
sgTotalRAM ds.l 1 ; total RAM in the system
sgPhys2Log ds.l 1 ; physical to logical offset for MMU tables
sgMMFlags ds.b 1 ; memory manager start mode flags
sgTypeMMU ds.b 1 ; type of MMU
sg24Info ds.b MMUConfigInfo ; 24 bit mode MMU info
sg32Info ds.b MMUConfigInfo ; 32 bit mode MMU info
sgRamDiskSize ds.l 1 ; size of RAM disk, if any <5> rb
sgRamDiskBase ds.l 1 ; logical base of RAM disk, if any <5> rb
sgScratch ds.l 4 ; 4 longs of scratch space <SM11>
sgEDiskStealFlag ds.b 1 ; 1 byte flag to tell INIT code to steal RAM for the EDisk <SM7>
sgAlign ds.b 1 ; alignment
sgBottom equ * ; last field
ENDR
HoleSysHeap equ $38000000 ; start of system heap when using 'black hole'
HoleLowMem equ $10000 ; real RAM space for low mem w/'black hole'
defStackAddr EQU $180000 ; start stack at 1.5M for systems with ³2 meg {2}
; From StartSystem.a and BootCode.a: <6>
BootGlobals record -400 ; offsets from A5 for boot time globals
initialSP equ * ; value of stack pointer during boot
paramBlock ds.b 194 ; 194 parameter block for file system and driver calls
quickDrawGlobals ds.b QDGlobals ; 206 QuickDraw globals
initialA5 equ * ; this is a place holder; it must be at offset 0
quickDrawGlobalsPtr ds.l 1 ; 4 pointer to QuickDraw globals
physicalMemTop ds.l 1 ; 4 MemTop as set from diagnostics
logicalMemTop ds.l 1 ; 4 MemTop after loading VM
postBootNewPtrStartup ds.l 1 ; 4 pointer to implementation of NewPtrStartup
bufPtrLimit ds.l 1 ; 4 barrier; how low bufPtr is allowed to go
resetFlag ds.w 1 ; 2 clear if donÕt reset; -1 if do reset
reservedForAfterBoot ds.l 1 ; 4 minSysHeapFreeAfterBoot until launch time
ds.b 24
sysRsrcFirstBlk ds.w 1 ; 2 $32
sysRsrcPhysicalLen ds.l 1 ; 4 $34
enablerRsrcFirstBlk ds.w 1 ; 2 $38
enablerRsrcPhysicalLen ds.l 1 ; 4 $3A
boot3Size ds.l 1 ; 4 $3E
ds.b 46 ; 46 padding (so we match the ROM boot code)
port ds.b portRec ; 108 GrafPort already opened by the boot code
fileName ds.b 256 ; 256 file name used by INIT file opening code
ds.b 148 ; 148 padding (so we match the ROM boot code)
initialA6 equ * ; value of A6 that the ROM boot code sets up
bootBlocks ds.b 1024 ; 1024 the boot blocks themselves
lowestBufPtr equ * ; here is the lowest that INITs can use
fileBuffer ds.b 524 ; 524 buffer used to load StartupScreen, MacsBug, etc.
size equ *-initialSP ; how big is this record, anyway?
endr
emuWarmStartConst equ 'SamB' ; Emulated Mac Warmstart constant <SM6>
processMgrCode0 equ -16470 ; resource ID of jump table for the Process Mgr.
; the following are the sizes of things
; the boot code has far-reaching responsibilities for making sure there is enough RAM
minRAMNeededToBoot equ 3*512*1024 ; 1.5 MB You just gotta have it.
; MacsBug sizes
debuggerGlobalSize equ 4 ; size above BufPtr needed by MacsBug
; system heap sizes
initialSysHeapSize equ 10*1024*1024; for Finder and 1 cdev and I'm guessing a bit more
minSysHeapFreeForINIT equ 256*1024 ; minimum amount that INITs need in the system heap
minSysHeapFreeAfterBoot equ 400*1024 ; minimum amount that must remain free in system heap
sysHeapFreeSpaceSlop equ 16*1024 ; slop for MakeSysFree routine
minSysHeapFreeSpace equ 64*1024 ; this goes into emMinSysHeapFreeSpace for use by Finder & Process Mgr
; size of heap used to load INITs, script systems, and
minBootAppHeapSize equ 256*1024 ; smallest heap for INIT loading
; Process Mgr. sizes
processMgrStackSize equ 8*1024 ; stack size
minProcessMgrSpace equ 500*1024 ; stack & heap size for Finder and 1 cdev
;
elbowRoomCacheCantHave equ 400*1024 ; special-case adjustment to limit File CacheÕs use of BufPtr <38>
systemEnabledBit equ 2 ; bit number to prevent booting the System on an unknown machine.
extensionsEnabledBit equ 5 ; bit number to disable extensions *** move to SysEqu.a?
ExtensionsEnabledByte equ $B20 ; byte to disable extensions *** move to SysEqu.a?
CurNamePtr equ CurApName+4 ; pointer to name of currently executing file
; IIci/Terror/Horror ROM minors ($67C)
kROMMajorIIci equ $67C ; IIci, Horror, Terror, Kaos
kROMMinorTERROR equ $15
kROMMinorTERROR2 equ $17 ; Zydeco's flavor of TERROR
kROMMinorDart equ $18 ; PowerBook 160,165,165c,180,180c version of HORROR.
kROMMinorSlice equ $24 ; SliceÕs version of HORROR.
kROMMinorPO equ $26 ; Primus/Optimus HORROR.
kROMMinorEscher equ $27 ; PowerBook 270cÕs ROM, a revision of HORROR.
kROMMinorYeager equ $29 ; YeagerÕs flavor of HORROR.
kROMMinorBlackBird equ $30 ; BlackBird is using Kaos, which is a 2MB overpatch of HORROR.
; SuperMario ROM minors ($77D)
kROMMajorSuperMario equ $77D ; SuperMario
kROMMinorPDM equ $20 ; PDM, LAW, Cold Fusion using SuperMario.
kROMMinorSTP equ $21 ; STP using SuperMario.
ENDIF ; ...already included