tim@hoptoad.uucp (Tim Maroney) (08/14/86)
Apple Tech Support kindly gave me permission to post this file documenting
the low-memory globals defined by the new ROMs. These globals are, in many
cases, not guaranteed to be supported in future Mac systems. I got them
by using the search utility on the assembly language include files that
come with the Macintosh Programmers Workshop.
There are two blocks of globals. The first listed comes between $B00 and
$C00. (The new dispatch table is at $C00.) These are used by various
managers old and new, such as the Resource Manager, Font Manager, and SCSI
Manager. The second listed takes the place of the old RgSvArea ($36a), and
are used mostly by the Hierarchical File System and the caching system.
Now if someone would just tell me what the bits in SPMisc1 and SPMisc2 do,
I'd be all set....
TrapAgain EQU $B00 ; use 4 bytes here for another trap
KeyMVars EQU $B04 ; (word) for ROM KEYM proc state
ROMMapHndl EQU $B06 ; (long) handle of ROM resource map
PWMBuf1 EQU $B0A ; (long) PWM buffer ptr
BootMask EQU $B0E ; (word) needed during boot
WidthPtr EQU $B10 ; (long) Font Mgr global
AtalkHk1 EQU $B14 ; (long) Appletalk hook
AtalkHk2 EQU $B18 ; (long) Appletalk hook
SCSIFlag EQU $B22 ; (word) Configuration Flag for SCSI
TopMenuItem EQU $B26 ; (word) used for menu scrolling
AtMenuBottom EQU $B28 ; (word) flag for menu scrolling
WidthTabHandle EQU $B2A ; Font width table handle for measure
SCSIDrvrs EQU $B2E ; (word) bitmap for loaded SCSI drivers
TimeVars EQU $B30 ; the low memory pointer to the variable struct
BtDskRfn EQU $B34 ; (word) refnum for boot drive driver refnum
BootTmp8 EQU $B36 ; (8bytes) temp space needed by StartBoot
T1Arbitrate EQU $B3F ; (byte) $FF if Timer T1 up for grabs.
JDiskSel EQU $B40 ; (long) vector to .Sony DiskSelect routine
JSendCmd EQU $B44 ; (long) vector to .Sony DCD SendCmd routine
JDCDReset EQU $B48 ; (long) vector to .Sony DCD DCDReset routine
LastSPExtra EQU $B4C ; (long) most recent value of space extra
RMGRHiVars EQU $B80 ; $B80-$BFF are switched vars
; RMGR vars extend $B80 through $B9F
RomMapInsert EQU $B9E ; (byte) determines if we should link in map
TmpResLoad EQU $B9F ; second byte is temporary ResLoad value.
IntlSpec EQU $BA0 ; (long) - ptr to extra Intl data
RMGRPerm EQU $BA4 ; (byte) - permission byte for OpenResFile
WordRedraw EQU $BA5 ; (byte) - used by TextEdit RecalDraw
SysFontFam EQU $BA6 ; (word) System font family ID or zero
SysFontSize EQU $BA8 ; (word) System font size (or zero for 12 pt)
MBarHeight EQU $BAA ; (word) height of menu bar (usually 20)
TESysJust EQU $BAC ; (word) system justification (intl. textEdit)
HiHeapMark EQU $BAE ; (long) highest addr used by a zone below sp
SegHiEnable EQU $BB2 ; (byte) 0 to disable MoveHHi in LoadSeg
FDevDisable EQU $BB3 ; (byte) $FF to disable device-defined style extra
NewUnused EQU $BC0 ; (word) - used to be FlEvtMask
LastFOND EQU $BC2 ; (long) handle of last font def record
FONDID EQU $BC6 ; (word) ID of last font def record
App2Packs EQU $BC8 ; $BC8-$BE7 eight more package handles
MAErrProc EQU $BE8 ; (long) MacApp error proc address
MASuperTab EQU $BEC ; (long) handle to MacApp superclass table
FractEnable EQU $BF4 ; (byte) flag for fractional font widths
UsedFWidths EQU $BF5 ; (byte) flag saying if we used fract widths
FScaleHFact EQU $BF6 ; (long) horz. font scale factor
FScaleVFact EQU $BFA ; (long) vertical font scale factor
; The old ROMs had a register save area at $36A. It extended to $3A2.
; This area is used by HFS in the new ROMs.
RgSvArea EQU $36A ; reg save during async calls.
HFSVars EQU $36A ; Start of TFS variables in RAM version
HFSStkTop EQU $36A ; Temporary location of pointer to top of Stack
HFSStkPtr EQU $36E ; Temporary location of TFS Stack pointer
WDCBsPtr EQU $372 ; Working Directory queue header
HFSFlags EQU $376 ; Internal TFS flags
SysCRefCnt EQU $377 ; Usage count byte for system caches (number of vols)
CacheFlag EQU $377 ; cache usage count now used as cache flag
SysBMCPtr EQU $378 ; System-wide bitmap cache pointer
SysVolCPtr EQU $37C ; System-wide volume cache pointer
SysCtlCPtr EQU $380 ; System-wide control cache pointer
DefVRefNum EQU $384 ; Default volume's VRefNum; COULD BE WDRefNum!
PMSPPtr EQU $386 ; Pointer to list of directories on PMSP
HFSTagData EQU $38A ; Room for additional HFS tag data
HFSDSErr EQU $392 ; Final gasp - error that caused IOErr.
HFSVarEnd EQU $394 ; End of HFS variable area
CacheVars EQU $394
CacheCom EQU $39C
CurDirStore EQU $398 ; save dir across Standard File calls [long]
FmtDefaults EQU $39E ; ptr to formatting defs [long]
Remember, most of these should not be counted on for future Mac versions!
They are presented purely for your edification and to help in debugging
software under the new ROMs.
--
Tim Maroney, Electronic Village Idiot
{ihnp4,sun,well,ptsfa,lll-crg,frog}!hoptoad!tim (uucp)
hoptoad!tim@lll-crg (arpa)
Give me food, or give me slack (or kill me).