mirror of
https://github.com/elliotnunn/supermario.git
synced 2024-11-24 17:32:59 +00:00
389 lines
17 KiB
C
389 lines
17 KiB
C
/*
|
||
File: GestaltPrivateEqu.h
|
||
|
||
Contains: Private Gestalt information.
|
||
|
||
Written by: Jim Reekes
|
||
|
||
Copyright: © 1992-1993 by Apple Computer, Inc., all rights reserved.
|
||
|
||
Change History (most recent first):
|
||
|
||
<SM24> 12/2/93 JDR Updated gestaltBugFixAttrsTwo, and gestaltBugFixAttrsThree.
|
||
<SM23> 11/22/93 pdw Got rid of Trailing comma warning on gestaltM280.
|
||
<SM22> 11/12/93 ged Oops, fixed the last checkin.
|
||
<SM21> 11/12/93 ged Added gestaltSingerSnd to response list for gestaltSoundHardware
|
||
selector.
|
||
<SM20> 11/10/93 fau Update from SuperMunggio <SMG2>.
|
||
<SMG2> 10/26/93 fau Added TNTProto1 gestalt equ.
|
||
<SM19> 11/9/93 RLE added gestalts for 603-based PowerBooks
|
||
<SM18> 11/9/93 KW forgot commas.
|
||
<SM17> 11/9/93 KW added gestalts for STP machines
|
||
<SM16> 11/8/93 JRH Removed gestaltDBLite33, gestaltDBLite16, and gestaltEscher33.
|
||
gestaltEscher25 is now gestaltYeagerFSTN.
|
||
<SM15> 8/16/93 BG Update machinetype values to something closer to current.
|
||
<SM14> 6/6/93 BT Add gestaltEightToSixteenMegBlockMoveFix,
|
||
gestaltReleaseTheFontFlagFix, gestaltMSFlightSimDrawCrsrFix, and
|
||
gestaltRISCV0ResMgrPatches
|
||
<SM13> 4/16/93 gs Add gestaltMtCheckFix to 'bugz' bits for fix in MountVol when
|
||
scanning Catalog and Extents files.
|
||
<SM12> 4/11/93 chp Added SerialDMA HAL selector 'shal'.
|
||
<SM11> 4/8/93 KW changing gestaltCyclone40 -->78 and gestaltTempest33 --> 79
|
||
<SM10> 4/8/93 CSS Update GestaltGlobals from Reality and bump the Gestalt version
|
||
number so that I can add the field EDiskSize. This is
|
||
necessary, because when VM is install the boot globals
|
||
unavailable so the routine get EDiskSize doesn't function
|
||
properly.
|
||
<19> 4/4/93 ngk Remove unused fields in GestaltGlobals.
|
||
<18> 3/30/93 JDR Added gestaltMoveHHiExtraStackSpace
|
||
<17> 3/29/93 ngk To support GestaltValues, change table to be an array of
|
||
GestaltEntry's. Bump gestaltVers to 3. Add slotsUsed to
|
||
GestaltGlobals to reduce calls to GetHandleSize.
|
||
<16> 3/10/93 mgl Add gestaltMultiLayerSupport bit to gestaltOSAttr.
|
||
<15> 3/4/93 JK Added bug bit for PMgrOp fix to support MIDI on PowerBooks.
|
||
<14> 2/26/93 mgl Change the bit number for gestaltExtendedDebuggerSupport. OCE
|
||
had been using bit 10 for gestaltBgndMouseDownSupport for
|
||
sometime, but hadn't merged into Reality until now.
|
||
<13> 12/21/92 JSM Add GestaltProcPtr.
|
||
<12> 12/19/92 mgl Added gestaltExtendedDebuggerSupport bit to gestaltOSAttr for
|
||
extended debugger support in the Process Manager.
|
||
<11> 12/15/92 JDR Removed gestaltPowerBook145, since it's already in Gestalt.h.
|
||
Removed gestaltFosterFarms because it's already in Gestalt.h as
|
||
gestaltMacLCII.
|
||
<10> 12/9/92 RLE update machine type information for new machines
|
||
<SM9> 4/5/93 jb Added gestaltAwacsSnd constant for PDM, also added gestaltPDM
|
||
machineType constant.
|
||
<SM8> 3/31/93 rab Removed two change mark comments that were breaking the build.
|
||
<SM7> 3/31/93 CSS Added gestaltMoveHHiExtraStackSpace and gestaltPMgrMIDIFix
|
||
in "bugy" selector (from Reality).
|
||
<SM6> 12/7/92 CSS Update from Reality:
|
||
<9> 12/4/92 KIP remove trailing comma from enums to avoid syntax error message
|
||
in Think C.
|
||
<8> 12/4/92 KIP Add sndIntRestoreFix fix for Scruffy.
|
||
<7> 12/3/92 csd Added bug fix selectors for the January 93 tune up. Also fixed
|
||
the places where both define and = were used.
|
||
<SM5> 12/4/92 fau Added gestaltTempest33 and gestaltCyclone40. Changed
|
||
gestaltCyclone to gestaltCyclone33 and gestaltTempest to
|
||
gestaltTempest25.
|
||
<SM4> 12/3/92 fau Added a gestaltTempest.
|
||
<6> 8/19/92 JDR gestaltColumbia was defined twice.
|
||
<5> 8/7/92 JDR Changed gestaltHeadphonePluggedIn into
|
||
gestaltQuickTimeUsesNewSoundMgrCalls.
|
||
<4> 8/3/92 CSS Add some pre-released machines from SuperMario.
|
||
<3> 8/1/92 JDR Added flag gestaltQuickTimeUsesNewSoundMgrCalls.
|
||
<2> 7/18/92 JDR Syntax changes so I could include this with Think C.
|
||
<1> 7/17/92 JDR first checked in
|
||
|
||
*/
|
||
|
||
|
||
#ifndef __GESTALTPRIVEQU__
|
||
#define __GESTALTPRIVEQU__
|
||
|
||
#ifndef __TYPES__
|
||
#include <Types.h>
|
||
#endif
|
||
|
||
// Gestalt function
|
||
typedef pascal OSErr (*GestaltProcPtr)(OSType selector,long *response);
|
||
|
||
#define gestaltVers 4 /* gestalt version (is this an oxymoron?) */
|
||
|
||
|
||
// each entry in the Gestalt table looks like this
|
||
struct GestaltEntry {
|
||
OSType selector;
|
||
unsigned long value; // ProcPtr or value
|
||
short flags; // currently only bit is gestaltFlagIsValueMask
|
||
};
|
||
typedef struct GestaltEntry GestaltEntry;
|
||
typedef struct GestaltEntry *GestaltEntryPtr;
|
||
|
||
#define gestaltFlagIsValueMask 1 // bit in flags that means value is not ProcPtr
|
||
|
||
// Gestalt's global data structure
|
||
struct GestaltGlobals {
|
||
Handle tableH; /* handle to table of GestaltEntry */
|
||
long slotsUsed; /* number of entries in table */
|
||
long maxSlots; /* GetHandleSize(tableH)/sizeof(GestaltEntry) */
|
||
unsigned long memSize; /* amount of memory in this machine */
|
||
unsigned long realTop; /* adjusted memory size */
|
||
short machType; /* machine type */
|
||
char fpu; /* fpu type */
|
||
char mmu; /* mmu type */
|
||
long parityStatus; /* parity status */
|
||
long myScratch; /* scratch area */
|
||
char emu68k; /* 68k emulator installed flag */
|
||
char nativeCPU; /* native cpu type */
|
||
long nativePageSize; /* native page size */
|
||
long ediskSize; /* edisk size <SM10> CSS */
|
||
};
|
||
typedef struct GestaltGlobals GestaltGlobals;
|
||
typedef struct GestaltGlobals *GestaltGlobalsPtr;
|
||
|
||
#define kInitialEntryCount 80 // initial number of slots at boot time
|
||
#define kEntryGrowCount 16 // number of slots to add each time more is needed
|
||
|
||
|
||
// Private Gestalt selectors
|
||
#define gestaltLongHandle 'tabl' /* returns handle to proc table */
|
||
#define gestaltATalkVersion 'atkv' /* Returns 4-byte AppleTalk version even if AppleTalk is off. */
|
||
#define gestaltAtlkIntLevel 'aint' /* Returns desired AppleTalk interrupt mask level in a long */
|
||
#define gestaltGraphicsVersion 'grfx' /* Skia’s Gestalt selector */
|
||
|
||
//----------------------------------------------------------------------------------
|
||
// gestaltBugFixAttrs
|
||
//
|
||
// This selector, and others like it in the future, indicate the presence or absence
|
||
// of certain bug fixes (one bit for each one). The reason they exist is so we can
|
||
// ship system extensions that fix important bugs, and then have future systems
|
||
// or other extensions indicate that they have already fixed a bug (so the extension
|
||
// will stop trying to fix it). Yea, I know. Pretty goofy. -gbm
|
||
//
|
||
// I’ve taken the liberty of allocating several selectors here, for future expansion.
|
||
//----------------------------------------------------------------------------------
|
||
enum {
|
||
gestaltBugFixAttrs = 'bugz',
|
||
|
||
gestaltFixPrinting = 0,
|
||
gestaltResponderCrashFix = 1,
|
||
gestaltResponderVersionFix = 2,
|
||
gestaltPurgeFonts = 3,
|
||
gestaltAliasMgrFix = 4,
|
||
gestaltSCSIFix = 5,
|
||
gestaltKeyboardFix = 6,
|
||
gestaltTrueTypeFix = 7,
|
||
gestaltFixedMicroseconds = 8,
|
||
gestaltSaveLastSPExtra = 9,
|
||
gestaltVMCursorTaskFix = 10,
|
||
gestaltDietPatches = 11,
|
||
gestaltBackgroundPrintingPatch = 12,
|
||
gestaltNoPreferredAlertPatch = 13,
|
||
gestaltAllocPtrPatches = 14,
|
||
gestaltEPPCConnectionTableFix = 15,
|
||
gestaltDAHandlerPatch = 16,
|
||
gestaltLaunchFix = 17,
|
||
gestaltDeathNoticePatches = 18,
|
||
gestaltBacklightFix = 19,
|
||
gestaltPrintDriverFix = 20,
|
||
gestaltPMSegmentTweaks = 21,
|
||
gestaltWDEFZeroFix = 22,
|
||
gestaltPACKSixFix = 23,
|
||
gestaltResolveFileIDRefFix = 24,
|
||
gestaltDisappearingFolderFix = 25,
|
||
gestaltPowerBookSerialFix = 26,
|
||
gestaltPowerBookSleepQFix = 27,
|
||
gestaltPowerBookFloppyEjectFix = 28,
|
||
gestaltPowerBookSleepFPUFix = 29,
|
||
gestaltPowerBookRestFPUFix = 30,
|
||
gestaltMtCheckFix = 31,
|
||
|
||
gestaltBugFixAttrsTwo = 'bugy',
|
||
|
||
gestaltEgretSCCFix = 0,
|
||
gestaltEgretRdTimeFix = 1,
|
||
gestaltEgretIRQPatch = 2,
|
||
gestaltEgretTickHandlerFix = 3,
|
||
gestaltSCSIFastAckFix = 4,
|
||
gestaltAFEHomeResFileFix = 5,
|
||
gestaltPowerOffDelayFix = 6,
|
||
gestaltSndIntRestoreFix = 7,
|
||
gestaltPMgrMIDIFix = 8,
|
||
gestaltMoveHHiExtraStackSpace = 9,
|
||
gestaltMMUOverwriteByQuadraRAMDiskFix = 10,
|
||
gestaltTerrorADBReInitFix = 11,
|
||
gestaltCentrisOnBoardGreenVGASyncFix = 12,
|
||
gestaltGetIndResourceSysMapHandleFix = 13,
|
||
gestaltCentrisBluishWhiteFix = 14,
|
||
gestaltCentrisFlashWhileScrollingFix = 15,
|
||
gestaltEightToSixteenMegBlockMoveFix = 16,
|
||
gestaltReleaseTheFontFlagFix = 17,
|
||
gestaltMSFlightSimDrawCrsrFix = 18,
|
||
gestaltRISCV0ResMgrPatches = 19,
|
||
gestaltSCSIBusyBugFix = 20,
|
||
gestaltHFSDeferredTaskStackSwitch = 21,
|
||
gestaltTETrashExpandMemRecVersionField = 22,
|
||
gestaltDartPMgrOpTimeoutBadBranchFix = 23, /* <28> System Update 3.0 bug fixes */
|
||
gestaltPwrBookLowPwrNotificationFix = 24, /* <28> " */
|
||
gestaltBlockMoveDataPatch = 25, /* <28> " */
|
||
gestaltFSpExchangeFilesCompatibilityFix = 26, /* <28> " */
|
||
gestaltSyncReadCacheFlushFix = 27, /* <29> " */
|
||
gestaltUpdateResFileFlushIfSystemFix = 28, /* <29> " */
|
||
gestaltMacPlusSizeResourceFix = 29, /* <29> " */
|
||
gestaltProcessMgrIdleTimeToRemovedDriverFix = 30, /* <29> " */
|
||
gestaltAboutThisMacSystemSizeBarFix = 31, /* <30> " */
|
||
|
||
gestaltBugFixAttrsThree = 'bugx',
|
||
|
||
gestaltPartialResourceRangeCheckFix = 1 /* <33> SU 3.0 */
|
||
};
|
||
|
||
|
||
// private results for various selectors
|
||
|
||
enum {
|
||
// gestaltFontMgrAttr
|
||
gestaltPartialFonts = 1, /* Has partial TrueType */
|
||
gestaltDiskCachedFonts = 2 /* Has disk based font cache */
|
||
};
|
||
|
||
enum {
|
||
// gestaltHardwareAttr
|
||
gestaltHasRBV = 2, /* RBV exists */
|
||
gestaltHasOSS = 5, /* OSS exists */
|
||
gestaltHasSCSIDMA = 6, /* SCSI DMA exists */
|
||
gestaltHasSWIMIOP = 8, /* SWIM IOP exists */
|
||
gestaltHasSCCIOP = 9, /* SCC IOP exists */
|
||
gestaltHasFMC = 10, /* Fitch memory controller exists */
|
||
gestaltHasIWM = 11, /* IWM/SWIM exists */
|
||
gestaltHasPWM = 12, /* PWM disk speed buffer exists */
|
||
gestaltHasSoundBuffer = 13, /* RAM-based sound buffer exists */
|
||
gestaltHasVDAC = 14, /* Video D/A converter and CLUT exists */
|
||
gestaltHasPGC = 15, /* Parity Generation Chip exists (Mac IIci) */
|
||
gestaltHasRPU = 16, /* Random Parity Unit exists (Zone 5) */
|
||
gestaltHasOrwell = 17, /* Orwell memory controller exists (Eclipse) */
|
||
gestaltHasVISA = 18, /* Has VISA RBV equivalent */
|
||
// gestaltHasSoftPowerOff = 19, /* Has software poweroff •• Public •• */
|
||
gestaltHasSonic = 20, /* Has Sonic Ethernet hardware */
|
||
// gestaltHasSCSI961 = 21, /* Has SCSI96_1 •• Public •• */
|
||
// gestaltHasSCSI962 = 22, /* Has SCSI96_2 •• Public •• */
|
||
gestaltHasDAFB = 23, /* Has DAFB Video hardware */
|
||
// gestaltHasUniversalROM = 24, /* Does we gots a Universal ROM? •• Public •• */
|
||
gestaltHasJaws = 25, /* Has Jaws Memory Controller */
|
||
gestaltNeedsRESET = 26 /* need hard RESET to restart the machine */
|
||
};
|
||
|
||
enum {
|
||
// gestaltMachineType (Pre-released Machines)
|
||
|
||
gestaltCarnation = 28,
|
||
gestaltCarnation33 = 28,
|
||
gestaltColumbia = 31,
|
||
gestaltQuadra650 = 36,
|
||
gestaltPenlite = 39,
|
||
gestaltVail16 = 40,
|
||
gestaltCarnation25 = 41,
|
||
gestaltCarnation16 = 42,
|
||
gestaltCyclone33 = 43,
|
||
gestaltBrazil16L = 44,
|
||
gestaltBrazil16F = 46,
|
||
gestaltBrazil32F = 47,
|
||
gestaltBrazilC = 48,
|
||
gestaltWombat40 = 51,
|
||
gestaltQuadra610 = 53,
|
||
gestaltBrazil32cF = 55,
|
||
gestaltWombat20 = 58,
|
||
gestaltWombat40F = 59,
|
||
gestaltRiscQuadra700 = 61,
|
||
gestaltVail33 = 62, /* Route 66 (LC III @ 33MHz) */
|
||
gestaltWLCD33 = 63,
|
||
gestaltPDM66F = 64, /* Cold Fusion 66MHz */
|
||
gestaltPDM80F = 65, /* Cold Fusion 80MHz */
|
||
gestaltPDM100F = 66, /* Cold Fusion 100MHz */
|
||
gestaltTNTProto1 = 67, /* TNT Proto #1 */
|
||
gestaltTesseractF = 68, /* Tesseract in Fridge 66MHz */
|
||
gestaltTesseractC = 69, /* Tesseract in Unknown box 66MHz */
|
||
gestaltJust930 = 70, /* 930, whatever that was */
|
||
gestaltHokusai = 71, /* Color portable 33MHz */
|
||
gestaltBlackbird = 72, /* Color 040 portable ??MHz */
|
||
gestaltBlackbirdLC = 73, /* Color 040 portable 16MHz */
|
||
gestaltPDMEvt1 = 74, /* PDM in QFC - ••• EVT1 Units ONLY ••• */
|
||
/* gestaltPDM = 74,*/
|
||
gestaltPDMEvt2 = 75,
|
||
gestaltYeagerFSTN = 76, /* LC040 Duo with FSTN <SM16> */
|
||
gestaltTempest33 = 79,
|
||
gestaltHook33 = 80, /* LC 520 (Hook) 33MHz */
|
||
gestaltSlice25 = 81, /* Color Classic (Slice) 25MHz */
|
||
gestaltRiscCentris650 = 82, /* Centris 650 w/Smurf card */
|
||
gestaltSlice33 = 83, /* Color Classic (Slice) 33MHz */
|
||
gestaltNorad = 84, /* Powerbook 160 33MHz */
|
||
gestaltBudMan = 85, /* DBLite w/SWIM II and TouchPad 25MHz */
|
||
gestaltPrimus20 = 86, /* Primus (LC/040) 20MHz */
|
||
gestaltOptimus20 = 87, /* Optimus (Hook/040) 20MHz */
|
||
gestaltHookTV = 88, /* Hook+TV 32MHz */
|
||
gestaltLC475 = 89, /* Primus 25MHz */
|
||
gestaltPrimus33 = 90, /* Primus 33MHz */
|
||
gestaltOptimus25 = 91, /* Optimus 25MHz */
|
||
gestaltLC575 = 92, /* Optimus 33MHz */
|
||
gestaltAladdin20 = 93, /* Aladdin (LC/040 in ELB case) 20MHz */
|
||
gestaltQuadra605 = 94, /* Aladdin 25MHz */
|
||
gestaltAladdin33 = 95, /* Aladdin 33MHz */
|
||
gestaltMalcolm25 = 96, /* cost-reduced WLCD w/Primus chipset 25MHz */
|
||
gestaltMalcolm33 = 97, /* Malcolm 33MHz */
|
||
gestaltSlimus25 = 98, /* Color Classic/040 25MHz */
|
||
gestaltSlimus33 = 99, /* Slimus 33MHz */
|
||
gestaltPDM66WLCD = 100, /* PDM in WLCD 66MHz */
|
||
gestaltPDM80WLCD = 101, /* PDM in WLCD 80MHz */
|
||
gestaltYeagerG = 102, /* Grayscale Portable Duo 040LC 25 MHz */
|
||
gestaltYeagerC = 103, /* Color Portable Duo 040LC 25 MHz */
|
||
gestaltRiscQuadra900 = 104, /* Quadra900 w/Smurf card */
|
||
gestaltRiscQuadra950 = 105, /* Quadra950 w/Smurf card */
|
||
gestaltRiscCentris610 = 106, /* Centris610 w/Smurf card */
|
||
gestaltRiscQuadra800 = 107, /* Quadra800 w/Smurf card */
|
||
gestaltRiscQuadra610 = 108, /* Quadra610 w/Smurf card */
|
||
gestaltRiscQuadra650 = 109, /* Quadra650 w/Smurf card */
|
||
gestaltRiscTempest = 110, /* Tempest w/Smurf card */
|
||
gestaltPDM50L = 111, /* Carl Sagan (Cold Fusion in Lego) 50MHz */
|
||
gestaltPDM66L = 112, /* Carl Sagan 66MHz */
|
||
gestaltPDM80L = 113, /* Carl Sagan 80MHz */
|
||
gestaltBlackbirdBFD = 114, /* Blackbird (66/33MHz 040LC, VIA1&2, Pratt, PGE, 256 color 10.X" TFT LCD, 1 direct slot) */
|
||
gestaltJedi = 115, /* Jedi (33MHz, 030, low cost AIO powerbook, MSC, IDE, floppy ) */
|
||
gestaltSTPQ700 = 116, /* Q700 with STP card */
|
||
gestaltSTPQ900 = 117, /* Q900 with STP card */
|
||
gestaltSTPQ950 = 118, /* Q950 with STP card */
|
||
gestaltSTPC610 = 119, /* C610 with STP card */
|
||
gestaltSTPC650 = 120, /* C650 with STP card */
|
||
gestaltSTPQ610 = 121, /* Q610 with STP card */
|
||
gestaltSTPQ650 = 122, /* Q650 with STP card */
|
||
gestaltSTPQ800 = 123, /* Q800 with STP card */
|
||
gestaltAJ = 124, /* AJ (66 MHz 603, duo powerbook) */
|
||
gestaltAJ80 = 125, /* AJ (80 MHz 603, duo powerbook) */
|
||
gestaltMalcolmBB = 126, /* Malcolm (yep, same name as WLCD II)(66 MHz 603 upgrade to Blackbird) */
|
||
gestaltMalcolmBB80 = 127, /* Malcolm (yep, same name as WLCD II)(80 MHz 603 upgrade to Blackbird) */
|
||
gestaltM2 = 128, /* M2 (66 MHz 603, duo powerbook) */
|
||
gestaltM280 = 129 /* M2 (80 MHz 603, duo powerbook) */
|
||
};
|
||
|
||
enum {
|
||
// gestaltMiscAttr
|
||
gestaltBootGlobals = 1 /* this machine has boot globals */
|
||
};
|
||
|
||
enum {
|
||
// gestaltOSAttr
|
||
gestaltSkiaGlobalsSwitched = 9, /* Process Manager switches Skia globals on context switches */
|
||
gestaltExtendedDebuggerSupport = 11, /* Process Manager has fixes and new calls for debuggers <12> */
|
||
gestaltMultiLayerSupport = 12
|
||
};
|
||
|
||
enum {
|
||
// gestaltResourceMgrAttr
|
||
gestaltResourceOverrides = 1 /* can do resource override stuff */
|
||
};
|
||
|
||
enum {
|
||
#define gestaltSerialHALType 'shal' /* serial HAL resource ID for this machine */
|
||
gestaltSHALPSC = 1, /* PSC HAL (Cyclone, Tempest) */
|
||
gestaltSHALAMIC = 2 /* AMIC HAL (PDM) */
|
||
};
|
||
|
||
enum {
|
||
// gestaltSoundAttr
|
||
gestaltQuickTimeUsesNewSoundMgrCalls = 2 /* QuickTime can use new SoundParamBlock */
|
||
/* was named gestaltHeadphonePluggedIn but */
|
||
/* that's impossible to detect */
|
||
};
|
||
|
||
// this returns the component OSType necessary to use the built-in sound hardware
|
||
enum {
|
||
#define gestaltSoundHardware 'snhw' /* Get the built-in Sound Hardware */
|
||
gestaltClassicSnd = 'clas', /* Classic sound (i.e. Mac Plus) */
|
||
gestaltASCSnd = 'asc ', /* Apple Sound Chip sound hardware */
|
||
gestaltDSPSnd = 'dsp ', /* Digital Signal Processing sound hardware */
|
||
gestaltAwacsSnd = 'awac', /* Awacs audio codec */
|
||
gestaltSingerSnd = 'sing' /* Singer/Whitney sound subsystem */
|
||
};
|
||
|
||
|
||
#endif
|