;__________________________________________________________________________________________________ ; ; File: UniversalTables.a ; ; Contains: Product decoder and info tables ; ; Written by: Horrorists, SuperMarioists, and Universalists everywhere ; ; Copyright: © 1991-1994 by Apple Computer, Inc. All rights reserved. ; ; Change History (most recent first): ; ; 1/14/94 LB The product info table for TNTProto1 now uses the Fridgidaire ; floppy drive and media icons. ; 12/13/93 PN Roll in KAOs and Horror changes to support Malcom and AJ ; machines. ; 11/19/93 chp Add hasEnhancedLtalk ProductInfo flag to Cyclone/Tempest ; products. Support for both internal and external SCSI96 buses on ; TNT. ; 11/17/93 KW added a 40 MHz wombat to the STP product tables. ; 11/10/93 fau Added the TNT Product Info Tables. ; 11/10/93 KW added STPs own productinfo tables. Thanks to rich. ; 11/9/93 KW hacked in some changes for STP machines. Because of the hacks, ; old quadras, wombats probably will not boot. I will fix that ; and make less of a hack after our SCM build ; 11/8/93 JRH boxDBLite16 is now boxPowerBookDuo250. boxDBLite20 is now ; boxPenLite. ; 10/21/93 SAM Roll in from cm900ftjesus. ; 10/21/93 SAM Added SoundStereoMixing and SoundPlayAndRecord to PDM, ; ColdFusion, and CarlSagan's Universal tables. ; 10/21/93 GMR Roll in from mc900ftjesus. ; 10/20/93 GMR Fixed the BartExists valid flag for CF so it properly does the ; optional check for it (as in PDM). ; 10/10/93 SAM Roll in and from mc900ftjesus. ; 10/10/93 SAM For PDM: Added hasEnhancedLTalk to PDM/ColdFusion/CarlSagan, cuz ; they do. ; 10/10/93 SAM For PDM: Changed the PDM labels (since the evt support has been ; dropped). Removed hasSoftVBL from PDM/CF/CS. Added hasNewMemMgr ; to all three. Pointed Carl Sagan's decoder table ptr at PDM's ; instead of Cold Fusion's (which has a different internal SCSI ; address...) ; 10/6/93 RC Take Out PDM EVT1 support ; 10/1/93 JDR Updated the snd primitives routine names according to ; SndPrimitives.a. ; 9/25/93 SAM Backed out the last change. The productInfo tables should be ; keyed off of a decoder type. ; 9/15/93 PN Add hasAMIC into ProductInfo table for PDM to fix the Universal ; build ; 8/20/93 chp The name of the Cyclone interrupt primitives table changed in ; InterruptHandlers.a. Reflect that change in ProductInfo. ; 8/17/93 SAM Put forSmurf conds around all the smurf junk. ; 08-16-93 jmp Changed the PDM VideoInfo record to reflect the fact that PDM ; uses Slot $9’s sPRAM as is reserved in the NuBusInfo record for ; PDM. This fixes the problem where PDMs sPRAM kept getting blown ; away. ; 8/13/93 KW adding two more smurf wombats ; 8/12/93 BG Removed the ProductInfo for WLCD_C1 as it will never exist. ; Added ProductInfo (and associated pointers) for Carl Sagan. ; 8/11/93 RC Enabled extra slots on PDM and Cold Fusion for Second Wave Nubus ; Expansion box ; 8/11/93 KW added some productinfo tables for a few new smurf machines ; 8/4/93 GMR Added separate NuBusInfo table for ColdFusion, and fixed the one ; for PDM. ; 08-03-93 jmp Update the videoinfo records in this file to contain the new ; field from the HORROR sources. ; 7/27/93 GMR Added Bart flags and base addresses to PDM/ColdFusion tables. ; 7/14/93 PN Add hasHardPowerOff to MacLC external feature ; 6/28/93 SAM Updated the ColdFusion family table to know about the second ; SCSI bus (ie the SCSI mgr can now handle it!) ; 6/24/93 SAM Added one table for all the ColdFusions (w/o SCSI2exists for ; now) ; 6/17/93 joe Added the SoundInLineLevel bit to the PDMInfo records so that ; Telecaster will turn on its mic preamp. ; 6/14/93 kc Roll in Ludwig. ; 6/10/93 SAM Add hasHardPowerOff to PDM info. ; 4/29/93 fau Bug#: 1081636: Added the SoundLineLevelInput to Cyclone and ; Tempest. Changed all Sound8BitMono to SoundHasSoundIn. Added ; SoundStereoIn where appropriate. All these are to reflect ; changes in Reality. ; 4/19/93 chp Fix some documentation. ; 4/14/93 fau Added the required changes for moving CivicExists and ; SebastianExists to Cyclone/Tempest info tables. Added hasPRAM ; to slots A/B for Cyclone/Tempest. ; 6/3/93 SAM Updated PDMs boxflags to correspond with the changes made in ; InternalOnlyEqu.a ; 6/2/93 GMR Changed PDM's Interrupt table to point to it's own, unique table ; (for disabling level 3 ints). ; 5/25/93 joe Now the PDM info tables use SndCntlPDM instead of ; SndCntlCyclone. ; 5/19/93 GMR Moved Sonydriver icon tables over to this file, so we don't have ; to change the floppy driver for each new machine. ; 5/6/93 SAM Turned SoftVBLs back on for both kinds of PDMs. Put the VIA1 ; initialization back the way it should be (not the cyclone way) - ; for PDM. ; 5/3/93 RC Turned on SerialDMA driver for AMIC 2 PDM and made sure that it ; was not turned on for PDM (EVT1) ; 4/22/93 SAM Changed some offsets in the PDMAMIC2Info table that were added ; in the previous change. ; 4/21/93 SAM Added an entry for the Evt2 PDMs which have a different CPU id. ; 4/15/93 RC Turned off Serial DMA for PDM ; 4/11/93 chp Add SerialDMA and HAL binding to ProductInfo of Cyclone, ; Tempest, and PDM. Fix usage of has68kEmulator for dc.l instead ; of BitVector32 because the latter doesn't accept encoded values. ; 4/6/93 fau Removed the 'slotDisabled' from PDM's NuBus info table so that ; we can support the Ventana Board. ; 4/5/93 jb Changed "SingerExists" to "AwacsExists" in hasHMC & infoPDM. ; 3/31/93 chp Synchronize SuperMario with Ludwig changes. ; 3/24/93 mal Removed hasinterrupt flag from slot 9 for Cyclone & Tempest. ; 3/22/93 fau Added a new VideoInfoTempest to support a different board id for ; Tempest. Note that Cyclone33 and Cyclone40 share the same one, ; as do Tempest25 and Tempest33 -- this should probably change if ; these other machines ship. ; 3/21/93 fau Changed the DefaultRSRC for Cyclone40/33 to 4 (maybe NonFPU) ; from 3 (FPU only). These should really be equates. ; 3/5/93 CCH Added MaceExists to PDMInfo and Mace address to HMCDecoderInfo. ; 2/26/93 fau Updated the ID for Cyclone40 (HW requested an $F --I don't like ; it but tough). Removed all support for Cyclone EVT3. ; 2/24/93 chp Cyclone VIA1 port A initialization updated to take advantage of ; the new wait/request multiplexer in the rev. 04 PSC. ; 2/15/93 FU Moved the InfoCycloneEVT3 record to be after the other 4 cyclone ; ones, so that we always compare first against a YMCA-based ; machine. Fixed the offset of a couple of tables in ; InfoCyclone40 that were using InfoCyclone33 as their base! ; 2/12/93 GS Updated the InfoCyclone40 record to conatin the new CPUID for ; the 40MHz Cyclone. ; 2/11/93 CSS Update Vail tables to indicate Egret8 and VDACAddr (SONORA) is ; valid. So that Vail CPU will boot again with SuperMario. ; 2/8/93 CSS Update from Horror: Add OrwellExists to Quadra based machines. ; This to get the test TestFor OrwellExists to work in the SCSI ; manager to determine whether to run the SCSI96 SCSI manager or ; the SCSI96BIOS SCSI manager. This test may not be the best test ; for this, but this is the way it was in Horror. ; 2/5/93 SAM Touched up the last touchup. Sorry about that. ; 2/5/93 SAM Touched up the last checkin. ; 2/5/93 RC Added has68kEmulator to Smurf on Wombat ; 2/5/93 SAM Hey, PDM supports 256 mb of RAM now. How much does yours? ; 2/2/93 GMR Added SWIM3Exists flag to PDM tables. ; 1/27/93 RC Added the AMICExists flag to PDM ; 1/22/93 fau Expanded the RamInfoTempest table to include all 8 possible ; banks. ; 1/15/93 RC Took out the auto RAM Disk on Doot of PDM and reset the RAM size ; to 11 Meg ; 1/14/93 PN Add MacIIsiIntTbl and SndCntlMacIIsi tables for Macsi to make ; SuperMario boot on si again. ; 01-13-93 jmp Pointed VideoInfo Pratt at the CSC super sResource directory. ; 01-11-93 jmp Updated various BoxFlag names. ; 1/10/93 RC SWIM support worked on for Smurf on Wombat ; 1/10/93 RC added IWM and SoftPower flags to PDM ; 12/23/92 RC Added Support for Smurf on Wombat ; 12/21/92 SWC Removed the InfoPrattUnknown ProductInfo table since Pratt has a ; CPU ID register and thus has no need of an "unknown" table. ; 12/17/92 RB Removed some of the LC930 conditionals. Added back other hasXXXX ; conditionals to make it easier to build 1 off 1 Meg ROMs. ; Rescued the IIsi from the grave. Added hasYMCA for Cyclone ; machines and hasHMC for PDM. ; 12/9/92 SAM Changed the CPU ID for PDM . Added 3 additional CPU IDs for the ; other PDM "boxes." ; 12/9/92 jmp Changed PDM’s VideoInfo record so that the physical framebuffer ; base is now at 0 and not 1M. Also, reflected this changed in ; the logical base, as well. ; 12/5/92 jmp Temporarily pointed BlackBird’s VideoInfo tables to the ; “unknown” directory since CSC won’t be ready for initial ; bring-up (we’ll be using the VSC MMU-based DeclData instead). ; 12/5/92 SWC Added special sound table for DJMEMC machines so their sound ; hardware initialization can also whack built-in video. ; 12/4/92 fau Added StereoPlayandRecord and StereoMixing external features ; flags to Cyclone-type machines. ; 12/4/92 fau Added tables for Tempest33 and Cyclone40 and update to use new ; boxflag names for Cyclone-type machines. Backed out . ; 12/1/92 EH Adding Tables for Blackbird. ; 12/1/92 SWC Added IntHandlerPtr, a pointer to the interrupt handler setup ; table, to the ProductInfo tables. Removed all the Mac II family ; tables. ; 11/30/92 dwc Added AMIC address to HMCDecoderTable for PDM. ; 11/23/92 mal Moved CIVIC baseaddr to new location in DecoderInfo Table since ; DAFBAddr split with CIVICAddr. ; 11/23/92 SWC Added an IMPORT of CudaADBTable and pointed all the Cuda-based ; machines to it. ; 11/20/92 fau Modified the BasesValid2 for Tempest to not have any flags so ; that GetExtHardwareInfo will uses the YMCA decoder default bases ; to look and see if a MUNI exists. Added MUNIExists to Cyclone, ; CycloneEVT4 and to MMC/YMCADecoder. ; 11/19/92 SWC Added PowerManagerPtr, a pointer to the Power Manager primitives ; table, to the ProductInfo tables. Put build conditionals back ; in. Obsoleted old tables and grouped them at the end of the file ; for later permenant deletion. ; 11/11/92 fau Add ROM external feature bit and set on for Tempest to indicate ; that machine has Hard Power off. ; 11/10/92 RB Moved four export labels that are undefined under an LC930 ; build. ; 11/7/92 jmp Eliminated the obsolete DAFB and LC VideoInfo records. ; 11/7/92 rab Roll in Horror changes. Comments follow: ; 10/17/92 BG Added information for a possible WLCD33. ; 10/16/92 JC Add ROM external feature bit and set on for Vail and WLCD to ; indicate that machine has Hard Power off so it can be used by a ; disk based gestalt patch so that we do not need to add ; additional items to the table in the disk patch. ; 9/10/92 NJV Changed Vail table to no longer support simultaneous play and ; record and pointed sound primitives to new Vail sound primitives ; table. ; 8/25/92 BG Modified CPUIDProductLookup table to add a '-*' to the Wombat40F ; table entry. Oops. ; 6/30/92 HJR Cleaned up the NubusInfoDartanian and modified VideoInfoDart to ; use second wrap of the GSC to prevent QuickDraw bug. ; 6/26/92 BG Modified InfoWombat20, Wombat25 to have the correct combo ; resource byte for having an optional FPU (040LC or 040). ; 6/26/92 BG Added Wombat20,40 and WLCDc1 to the table so that they'll be ; looked for. ; 6/22/92 BG Added WLCDc1, Wombat20 and Wombat40L universal table entries, as ; Prod. Marketing seems to think they will become products ; sometime in the near future. ; 6/16/92 BG Changed the WLCD productInfo tables to point at the WLCD NuBus ; info. Also changed WLCD default resource combo to 4. ; 6/10/92 BG Changed the separator in the RamInfoWombat table from 'SamB' to ; its hex equivalent. For some reason, Asm was interpreting that ; as a PASCAL string (??) and adding a length byte to the start of ; it. ; 6/9/92 BG Fixed VIA1InitWombat to correctly set PA6 as an INPUT. ; 6/4/92 NJV Changed InfoVail tables since we can now play and record ; simultaneously. ; 6/3/92 BG When I updated the InfoWombat33F ProductInfo entry, I forgot to ; change the VIA1 ID bits. Fixed. ; 6/3/92 BG Rearranged the RamInfoWombat table to have the table-separator ; marker after banks 6&7 to make the djMEMCMerge code in ; SizeMemPatch.a a little easier to deal with. ; 11/3/92 SWC Changed SlotEqu.a->Slots.a. ; 10/30/92 HY Added SupportsROMDisk feature flag in InfoMacLC product info table. ; 10/27/92 fau Added Tempest support. Removed ASCExists from Cyclone's ; universal info and added DSPExists and MACEExists to it. ; 10/25/92 HY Changed boxflag for InfoMacLC product info table to boxMacLCII. ; 10/22/92 fau Updated NubusInfoCyclone to reenable the slots that have been ; disabled way back in Pandora days. ; 10/22/92 fau Deleted MMCExists and YMCAExists from all Cyclone related info. ; Added DSPExists and MACEExists to those structures. ; 10/20/92 CCH Added InfoPDM to list of CPUID machines. ; 10/18/92 CCH Added support for the PDM CPU. ; 10/12/92 RB For the 1 Meg LC930 ROM, exclude all tables not related to the ; LC hardware. ; 9/30/92 fau Added support for Cyclone EVT4. This included a new memory ; decoder YMCA added to the DecoderKind record, a new ; CycloneInfoEVT4 record and a new RamInfo record for EVT4. Also, ; used bit 21 that was unused in the universal bits for the YMCA. ; It should eventually be moved to the bit that the MMC uses right ; now. ; 9/25/92 RB Added a ROM base address for dbLite & Cyclone when booting from ; RAM that is set to 4 Meg. Made the LC table work with LC II ; again. This will prevent the normal LC from booting, but at this ; point we need LC II to boot and not LC. ; 9/9/92 RB Make the Mac LC boot on SuperMario by moving up the ProductInfo ; for the LC. Changed the DecoderInfo record for VISA (MacLC) to ; match the real LC ROM (Somehow it got screwed up) and added a ; sound control vector address for LC. ; 9/8/92 chp For Cyclone, program the VIA1 port A W/Req bit as an output. ; This makes it a flip-flop which is initialized to “1,” disabling ; LocalTalk from polling serial characters on SCC port A. ; 8/26/92 PN Set ASCBase globals to a safe location on Cyclone so that ; application that writes to ASCBase will safely write to ROM ; 8/24/92 PN Take out CycloneboxEVT1 stuff ; 8/20/92 CCH Changed Orwell address to $50F0xxxx space instead of $5000xxxx ; space. ; 8/17/92 CCH Extended universal support to 96-bit, added versions for ; ProductInfo and DecoderInfo records, created DecoderAddr field ; in DecoderInfo for memory controller addresses, moved OrwellAddr ; field to DecoderAddr field, and started using BitVector32 macro. ; 7/27/92 CSS Disable NewAge for EVT1. ; 7/13/92 CCH Added conditionalized support for Cub Card on Quadra 700. ; 6/21/92 RB Added a table for Cyclone EVT2, renamed the old Cyclone tables ; CycloneEVT1. The EVT1 support will be deleted later, after all ; systems have been upgraded to EVT2. ; 6/18/92 RB Added a compile time conditional to temporarily support EVT1 ; Cyclone. Look for 'forEVT1' ; 6/4/92 KW (HJR,H44) Added dockingSlot to Dartanian slot E and enabled ; Slots C & D for Monet. ; (BG,H43) Modify some of the Wombat/WLCD universal table entries ; for optional FPU info, as well as an updated VIA1 CPU ID ; selection scheme. ; (NJV,H42) Adding SoundPlayAndRecord bit to ProductInfo Tables of ; machines that can play and record simultaneously. ; (BG,H41) Added Wombat(20,25,33,40) and WLCD (20,25) Universal ; information. ; (SWC,H40) Updated RamInfoDBLite for expandability up to 40MB. ; (jmp,H39) Changed the “sRsrcZydecoDir” name to the more generic ; “sRsrcBFBasedDir” (BF=BoxFlag) name. ; (AL,H38) Updated the Sonora info for the IHT entry point ; (changed from $58000000 to $50fc0000). ; The following H24..H21 came from Universal.a in Horror ; (NJV,H24) Added SoundPlayAndRecord bit to ProductInfo Tables of ; machines that can play and record simultaneously. ; (jmp,H23) Fixed a problem in the VideoInfo MacLC record that I ; caused in . ; (jmp,H22) Changed the “sRsrcZydecoDir” name to the more generic ; “sRsrcBFBasedDir” (BF=BoxFlag) name. ; (jmp,H21) Pruned the array of V8 VideoInfo records ’cuz we no ; longer need ’em. ; 5/28/92 KW Some Horror Stuff. Moved VisaDecoderTable entry in ; DecoderLookup in front of Niagra. Changed VisaDecoderTable. ; Added PatchRomAddr to OrwellDecoderTable. Added ; (1< 5/26/92 CSS Cyclone roll in. ; 5/25/92 RB Second pass of Cyclone changes...Removing Carnation and 4Square ; tables. ; 5/22/92 RB Cyclone changes, added tables for Cyclone, and CUDA. ; 5/2/92 kc Roll in Horror. Comments follow: ; 4/21/92 JC Add SonoraExistsBit to ExtValid flags for Sonora based machines. ; 4/20/92 NJV Adding changes needed to support Patch ROMs ; 4/19/92 JC Update Vail and Carnation Nubus Info tables. Move onboard video ; PRAM to slot B. ; 4/6/92 SWC Fixed DBLite's diagnostic ROM base address. ; 4/3/92 SWC Added ADB/DebugUtil primitives vector table to ProductInfo for ; each machine. ; 3/17/92 SWC Renamed InfoDBLite->InfoDBLite25 and InfoDBLiteLC->InfoDBLite33 ; to reflect reality. Added InfoDBLite16 and InfoDBLite20 in case ; we decide to use them. ; 2/25/92 SWC Added SoundStereoMixing to the external features for the ; Carnation and Dartanian boxes. ; 2/21/92 HJR Enabled VDAC on NiagraInfo. ; 2/20/92 JC Update Carnation product info tables to enable Sonic when second ; rev Sonoras are available. ; 2/19/92 JC Update CPUID Register values for Carnation when not using 1st ; rev Sonora. ; 02/18/92 jmp Conditionalized (with “hasSonora1”) the video base addresses for ; the Sonora-based machines for the upcoming turn of the Sonora ; hardware. ; 2/18/92 JC Changed boxCarnation to boxCarnation33 and boxVail to boxVail25 ; and added support for other Sonora based CPUs when hasSonora1 is ; false. ; 2/14/92 JC Remove alternate ROM Physical address for Sonora based machines. ; 2/13/92 HJR Added NiagraExistsBit to Niagra's ProductInfo external features, ; since Niagra is just a minor variant of Jaws. ; 1/30/92 SWC DBLite NuBus: marked slot 9 disabled since we'll be using its ; PRAM for Power Manager stuff, and enabled slots C and D so that ; NuBus cards installed in Gemini (docking station) will be ; recognized. ; 1/20/92 JC Use alternate ROM physical Address on Sonora based machines to ; be able to support Double Exposure on Vail and Enable FPUs on ; Carnation. ; 01/11/92 jmp Fixed some types in the InfoCarnation tables. ; 01/11/92 jmp Added in the two new fields for each of the VideoInfo records in ; this file. ; 1/9/92 SWC Marked slot E in DB-Lite's NubusInfo table as a docking slot so ; we can figure out which it is without hard-coding it someplace ; else. ; 12/20/91 JC Add Carnation 3 slot 16/25/33 Mhz and Vail 16/25 Mhz ; 12/16/91 HJR Add Tables for Niagra and Dartanian. ; 12/5/91 SAM Removed Vail's RAMInfo table cuz it is now indentical to ; Carnation's table. ; 12/4/91 SWC Added 3 new RAM banks to DB-Lite's RAM info table. ; 12/4/91 SWC Updated DB-Lite's CPU ID value for final hardware, and added a ; ProductInfo table for DB-Lite LC. Moved the CPU ID register ; description and the comment list containing the supported ; machines here so it'll be next to the CPUID ProductInfo table. ; 12/4/91 CCH Changed DBLite, Carnation, Vail to use ProductInfo-based CPUID ; register scheme. Also reorganized file to be info-type based. ; 11/26/91 jmp Added a “VDAC” for DBLite and updated the framebuffer base ; address for the DBLite and Sonora tables. ; 11/25/91 SAM Added Vail/Carnation RAMInfo tables. ; 11/25/91 CCH Modified Carnation/Vail's NuBus info table to not nuke ; SecondWave. Also used standard VIA equates. ;
10/30/91 SWC Added IWM base address to MSC/DB-Lite tables since we now have ; dynamic support for it in the Sony driver. ;
10/22/91 SWC Removed references to MSCAddr and MSCExists and added ; MSCChipBit, since MSC is just a variant of the RBV. ;

10/15/91 SWC Added clock/PRAM primitives vector table to ProductInfo for each ; machine. ;

8/28/91 rww More header cleanup. ;

8/28/91 rww Header cleanup. ;

8/28/91 rww First checked in. ;__________________________________________________________________________________________________ ; From now on, new product and decoder tables should go here. Since we can't patch these ; tables anyway, from now on they'll be located just underneath the dispatch table at link ; time, so the file can grow to fill the remaining free space. This should make ; it much easier to add new CPUs. ; The DB-Lite and unknown decoder and info tables were moved from Universal.a in order to ; free up some space there (about 350 bytes). Print Off Load 'StandardEqu.d' Include 'HardwarePrivateEqu.a' Include 'UniversalEqu.a' Include 'Slots.a' Include 'DepVideoEqu.a' include 'ROMEqu.a' Print On Machine MC68030 UnivTables Proc With DecoderKinds,DecoderInfo,ProductInfo,NuBusInfo IMPORT SNDCNTLSPIKE ; IF hasVIAClock THEN IMPORT RTCClockPRAM ;

ENDIF IF ViaADB THEN IMPORT ViaADBTable ; ENDIF IF hasPwrMgrClock THEN IMPORT PMGRClockPRAM ;

ENDIF IF PwrMgrADB THEN IMPORT PMgrADBTable ; ENDIF IF hasEgret THEN IMPORT EgretClockPRAM ;

IMPORT EgretADBTable ; IMPORT CudaClockPRAM ; IMPORT CudaADBTable ; ENDIF IF hasOrwell THEN IMPORT QuadraADBTable ; ENDIF IF hasProtectedPRAM THEN IMPORT NoPRAMClockPRAM ;

ENDIF IF IopADB THEN IMPORT IOPADBTable ; ENDIF ;——————————————————————————————————————————————————————————————————————————————————————————————— ; ; CPUID Product Lookup Tables ; ; All CPUs listed in this table support the CPU ID register scheme. ; ; For truly hip, way new machines, a new CPU ID is defined (which hopefully will allow ; us to define new computers to our hearts' content without worrying about running out ; of IDs. The new register resides at the top of I/O address space ($5FFFFFFC) and is ; 32-bits long. It looks like this: ; ; Bits: : 31 - 16 : 15 - 12 : 11 : 10 - 0 : ; +-------------------------+---------+-----+-----------------+ ; | signature, always $A55A | 0 to 15 | 0/1 | id field | ; +-------------------------+---------+-----+-----------------+ ; ; Bits 15 to 12 represent the design center: ; b15 b14 b13 b12 Design center ; 0 0 0 0 High volume ; 0 0 0 1 Portables ; 0 0 1 0 High performance CISC ; 0 0 1 1 High performance RISC ; Bit 11 is a 0 if the whole ID exists in this ID register, 1 otherwise ; Bits 10 to 0 are the actual ID, per design center ; ; So, the currently defined machines and their CPU IDs are: ; ; %1010010101011010 0000 0 00000000000 $A55A 0000 high volume, ID 0: Vail 16MHz ; %1010010101011010 0000 0 00000000001 $A55A 0001 high volume, ID 1: Vail 25MHz ; %1010010101011010 0010 0 00000000010 $A55A 0003 high volume, ID 3: Vail 33MHz ; ; %1010010101011010 0001 0 00000000000 $A55A 1000 portables, ID 0: Yeager ; %1010010101011010 0001 0 00000000001 $A55A 1001 portables, ID 1: reserved ; %1010010101011010 0001 0 00000000010 $A55A 1002 portables, ID 2: Escher (33MHz) ; %1010010101011010 0001 0 00000000011 $A55A 1003 portables, ID 3: reserved (was PenLite) ; %1010010101011010 0001 0 00000000100 $A55A 1004 portables, ID 4: Duo 210 (25MHz) ; %1010010101011010 0001 0 00000000101 $A55A 1005 portables, ID 5: Duo 230 (33MHz) ; %1010010101011010 0001 0 00000000110 $A55A 1006 portables, ID 6: DBLite (16MHz) ; %1010010101011010 0001 0 00000000111 $A55A 1007 portables, ID 7: reserved 16MHz system ; &1010010101011010 0001 1 00000001000 $A55A 1008 portables, ID 8: BlackBird ; ; %1010010101011010 0001 0 00000010000 $A55A 1010 portables, ID 10: was an MBT system (yeager) not used ; ; %1010010101011010 0010 0 00000000000 $A55A 2000 high perf CISC, ID 0: Carnation ; ; %1010010101011010 0001 0 00000000111 $A55A 1808 portables, ID 0: Blackbird ; %1010010101011010 0001 0 00000000111 $A55A 1809 portables, ID 1: reserved ; %1010010101011010 0001 0 00000000111 $A55A 180a portables, ID 2: reserved ; %1010010101011010 0001 0 00000000111 $A55A 180b portables, ID 3: reserved ; %1010010101011010 0001 0 00000000111 $A55A 180c portables, ID 4: reserved ; %1010010101011010 0001 0 00000000111 $A55A 180d portables, ID 5: reserved ; %1010010101011010 0001 0 00000000111 $A55A 180e portables, ID 6: reserved ; %1010010101011010 0001 0 00000000111 $A55A 180f portables, ID 7: reserved ; ; %1010010101011010 0010 1 01110101101 $A55A 2BAD high perf CISC ID 3AD: Wombat 20 MHz ; %1010010101011010 0010 1 01110101101 $A55A 2BAD high perf CISC ID 3AD: Wombat 25 MHz ; %1010010101011010 0010 1 01110101101 $A55A 2BAD high perf CISC ID 3AD: Wombat 33 MHz ; %1010010101011010 0010 1 01110101101 $A55A 2BAD high perf CISC ID 3AD: Wombat 40 MHz ; %1010010101011010 0010 1 01110101101 $A55A 2BAD high perf CISC ID 3AD: WLCD 20 MHz ; %1010010101011010 0010 1 01110101101 $A55A 2BAD high perf CISC ID 3AD: WLCD 25 MHz ; ; %1010010101011010 0011 0 00000010000 $A55A 3010 high perf RISC, ID 10: PDM ; %1010010101011010 0011 0 00000010001 $A55A 3011 high perf RISC, ID 11: PDM (PDM in QFC) ; %1010010101011010 0011 0 00000010010 $A55A 3012 high perf RISC, ID 12: PDM (Carl Sagan) ; %1010010101011010 0011 0 00000010011 $A55A 3013 high perf RISC, ID 13: PDM (Cold Fusion) ; ; %1010010101011010 0011 0 00000010000 $A55A 3020 high perf RISC, ID 20: TNT ; ; %1010010101011010 0010 1 01000110000 $A55A 2830 Hi End Mac, ID 0: Cyclone 25/33/40 Mhz ; Supplemental Cyclone/Tempest info in YMCA regs: M17 M16 M15 M14 ; ; Cyclone33 : 0 1 1 1 ID = $7 ; Cyclone40 : 1 1 1 1 ID = $F ; Tempest25 : 1 0 1 1 ID = $B ; Tempest33 : 1 0 0 0 ID = $8 ;——————————————————————————————————————————————————————————————————————————————————————————————— EXPORT ProductLookup,CPUIDProductLookup,DecoderLookup ALIGN 4 CPUIDProductLookup IF hasHMC THEN ; dc.l InfoPDM-* ; PDM dc.l InfoPDMcoldFusion-* ; PDM (Cold Fusion) dc.l InfoPDMCarlSagan-* ; PDM (Carl Sagan) ENDIF ; IF hasPratt THEN dc.l InfoBlackbird-* ; Blackbird ENDIF IF hasMSC THEN dc.l InfoYeager-* ; Yeager with real MBT chip dc.l InfoPowerBookDuo210-* ; PowerBook Duo 210 dc.l InfoPowerBookDuo230-* ; PowerBook Duo 230 dc.l InfoPowerBookDuo235-* ; PowerBook Duo 235 (230+active matrix) ;dc.l InfoEscher-* ; Escher 33MHz ENDIF IF hasSonora THEN dc.l InfoVail16-* ; Vail 16 Mhz dc.l InfoLCIII-* ; Vail 25 Mhz dc.l InfoVail33-* ; Vail 33 Mhz ENDIF IF hasDJMEMC THEN dc.l InfoWombat20-* ; Wombat @ 20 Mhz in Lego packaging dc.l InfoCentris650-* ; Wombat @ 25 Mhz in Lego packaging dc.l InfoQuadra650-* ; Wombat @ 33 Mhz in Lego packaging dc.l InfoQuadra800-* ; Wombat @ 33 Mhz in Frigidaire packaging dc.l InfoWombat40-* ; Wombat @ 40 Mhz in Lego packaging dc.l InfoWombat40F-* ; Wombat @ 40 Mhz in Frigidaire packaging dc.l InfoCentris610-* ; WLCD @ 20 Mhz dc.l InfoQuadra610-* ; WLCD @ 25 Mhz dc.l InfoWLCD33-* ; WLCD @ 33 Mhz IF forSmurf THEN dc.l InfoRiscQuadra800-* ; Quadra800 w/Smurf card dc.l InfoRiscCentris650-* ; Centris650 w/Smurf card dc.l InfoRiscCentris610-* ; Centris610 w/Smurf card dc.l InfoRiscQuadra610-* ; Quadra610 w/Smurf card dc.l InfoRiscQuadra650-* ; Quadra650 w/Smurf card ENDIF IF forSTP601 THEN dc.l InfoSTPCentris650-* ; Centris650 w/STP card dc.l InfoSTPQuadra650-* ; Quadra650 w/STP card dc.l InfoSTPQuadra40F-* ; 40mhz wombat w/STP card dc.l InfoSTPQuadra800-* ; Quadra800 w/STP card dc.l InfoSTPCentris610-* ; Centris610 w/STP card dc.l InfoSTPQuadra610-* ; Quadra610 w/STP card ENDIF ENDIF IF hasYMCA AND hasPSC THEN ; dc.l InfoCyclone33-* ; Cyclone 33 Mhz fau dc.l InfoQuadra840AV-* ; Cyclone 40 Mhz fau dc.l InfoCentris660AV-* ; Tempest 25 Mhz fau dc.l InfoTempest33-* ; Tempest 33 Mhz fau ENDIF ; IF hasOrwell AND forSmurf THEN dc.l InfoRiscQuadra700-* ; Quadra 700 w/Risc Card dc.l InfoRiscQuadra900-* ; Quadra 900 w/Risc Card dc.l InfoRiscQuadra950-* ; Quadra 950 w/Risc Card ENDIF IF hasGrandCentral THEN dc.l InfoTNTProto1-* ENDIF dc.l InfoUnknownUnknown-* ; totally lost dc.l 0 ; end of list ;——————————————————————————————————————————————————————————————————————————————————————————————— ; ; Decoder Lookup Table ; ;——————————————————————————————————————————————————————————————————————————————————————————————— ProductLookup IF hasVISADecoder THEN ; dc.l InfoMacLC-* ; Macintosh LC <12> ENDIF ; IF forSTP601 THEN dc.l InfoSTPQuadra700-* ; Quadra 700 w/STP Card dc.l InfoSTPQuadra900-* ; Quadra 900 w/STP Card dc.l InfoSTPQuadra950-* ; Quadra 950 w/STP Card ENDIF IF hasOrwell THEN dc.l InfoQuadra700-* ; Quadra 700, 1 direct slot, 2 NuBus slots dc.l InfoQuadra900-* ; Quadra 900, 1 direct slot, 5 NuBus slots <13> dc.l InfoQuadra950-* ; Quadra 950, 1 direct slot, 5 NuBus slots <5> ENDIF IF hasJaws THEN dc.l InfoPowerBook170-* ; PowerBook 140 and 170 <8> ENDIF IF hasNiagra THEN dc.l InfoPowerBook180-* ; PowerBook 180 ENDIF IF hasVISADecoder THEN dc.l InfoVISAUnknown-* ; unknown VISA decoder based machine <12> ENDIF IF hasJaws THEN dc.l InfoJAWSUnknown-* ; unknown JAWS based machine <25> ENDIF IF hasMDU THEN ; dc.l InfoMacIIsi-* ; Macintosh IIsi <3> ENDIF ; dc.l InfoUnknownUnknown-* ; totally lost dc.l 0 ; end if list, no match, check decoder again ;——————————————————————————————————————————————————————————————————————————————————————————————— ; ; Decoder Lookup Table ; ;——————————————————————————————————————————————————————————————————————————————————————————————— DecoderLookup IF hasVISADecoder THEN ; dc.l VISADecoderTable-* ; check for VISA decoder ENDIF ; IF hasNiagra THEN dc.l Niagratable-* ; check for Niagra decoder ENDIF IF hasJaws THEN dc.l JAWStable-* ; check for JAWS decoder <25><61> ENDIF IF hasOrwell THEN dc.l OrwellDecoderTable-* ; check for Orwell memory controller <13><19> ENDIF IF hasMDU THEN dc.l MDUtable-* ; check for MDU decoder ENDIF dc.l UnknownDecoderTable-* ; always find something ;——————————————————————————————————————————————————————————————————————————————————————————————— ; ; Product Info Tables ; ;——————————————————————————————————————————————————————————————————————————————————————————————— IF hasPratt THEN ; IMPORT SndCntlBlackbird, PrattIntTbl IMPORT PrattPMgrPrims,ImmgBabyRock ; PowerBook Blackbird product table ALIGN 4 InfoBlackbird dc.l PrattTable-InfoBlackbird ; offset to decoder info dc.l RamInfoPratt-InfoBlackbird ; offset to ram bank info dc.l VideoInfoPratt-InfoBlackbird ; offset to video info dc.l NuBusInfoPratt-InfoBlackbird ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< (Sound16Bit)|\ ; has 16-bit hardware (SoundStereoIn)|\ ; has stereo sound input (SoundStereoOut)|\ ; has stereo sound output (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< dc.l ImmgBabyRock-InfoBlackbird ; use BabyRock Internal Modem Manager dc.w cpuIDPortable|\ ; CPU ID: portable design center cpuIDinBoard|\ ; CPU ID: supplemental ID in Mother/Daughter board ID registers 8 ; CPU ID: Blackbird ID is 8 dc.w 0 ; spare dc.l IconInfoTIM-InfoBlackbird ; offset to ICON info ENDIF ; {hasPratt} IF hasMSC THEN IMPORT SndCntlPBDuo210, MSCPmgrPrims, MSCIntTbl,MBTPmgrPrims ALIGN 4 InfoPowerBookDuo210 dc.l MSCTable-InfoPowerBookDuo210 ; offset to decoder info dc.l RAMInfoMSC-InfoPowerBookDuo210 ; offset to ram bank info dc.l VideoInfoMSC-InfoPowerBookDuo210 ; offset to video info dc.l NuBusInfoMSC-InfoPowerBookDuo210 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.b MSCDecoder ; decoder kind dc.w $3FFF ; ROM85, New ROMs, Power Off ability dc.b 4 ; default ROM Resource configuration dc.b ProductInfoVersion ; ProductInfo version BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid IWMExists,\ ; IWMAddr is valid
SCSIExists,\ ; SCSIAddr is valid SCSIDackExists,\ ; SCSIDackAddr is valid SCSIHskExists,\ ; SCSIHskAddr is valid ASCExists,\ ; ASCAddr is valid RBVExists,\ ; RBVAddr is valid VDACExists ; VDACAddr (GSC) is valid BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ADBPwrMgr)|\ ; PMGR ADB (ClockPwrMgr)|\ ; PMGR clock/pram (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (1< dc.l 0 ; Flags for valid ext feature flags 32-63 dc.l 0 ; Flags for valid ext feature flags 64-95 dc.b $56,$00,$00,$00 ; Check VIA1 PA6, PA4, PA2, PA1 dc.b $00,$00,$00,$00 ; VIA1 PA6 = 0, PA4 = 0, PA2 = 0, PA1 = 0 dc.l VIA1InitMSC-InfoPowerBookDuo210 ; VIA1 init info dc.l 0 ; no VIA2 to init dc.l SndCntlPBDuo210-InfoPowerBookDuo210 ; sound control vector table dc.l PMGRClockPRAM-InfoPowerBookDuo210 ; clock/PRAM vector table

dc.l PMGRADBTable-InfoPowerBookDuo210 ; ADB/DebugUtil vector table dc.l MSCPmgrPrims-InfoPowerBookDuo210 ; Power Manager primitives dc.l MSCIntTbl-InfoPowerBookDuo210 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w cpuIDPortable|\ ; CPU ID: portable design center cpuIDinReg|\ ; CPU ID: register contains complete ID 4 ; CPU ID: PowerBook Duo 210 is 4 dc.w 0 ; spare dc.l IconInfoDBLite-InfoPowerBookDuo210 ; offset to ICON info ALIGN 4 InfoPowerBookDuo230 dc.l MSCTable-InfoPowerBookDuo230 ; offset to decoder info dc.l RAMInfoMSC-InfoPowerBookDuo230 ; offset to ram bank info dc.l VideoInfoMSC-InfoPowerBookDuo230 ; offset to video info dc.l NuBusInfoMSC-InfoPowerBookDuo230 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.b MSCDecoder ; decoder kind dc.w $3FFF ; ROM85, New ROMs, Power Off ability dc.b 4 ; default ROM Resource configuration dc.b ProductInfoVersion ; ProductInfo version BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid IWMExists,\ ; IWMAddr is valid
SCSIExists,\ ; SCSIAddr is valid SCSIDackExists,\ ; SCSIDackAddr is valid SCSIHskExists,\ ; SCSIHskAddr is valid ASCExists,\ ; ASCAddr is valid RBVExists,\ ; RBVAddr is valid VDACExists ; VDACAddr (GSC) is valid BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ADBPwrMgr)|\ ; PMGR ADB (ClockPwrMgr)|\ ; PMGR clock/pram (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (1< dc.l 0 ; Flags for valid ext feature flags 32-63 dc.l 0 ; Flags for valid ext feature flags 64-95 dc.b $56,$00,$00,$00 ; Check VIA1 PA6, PA4, PA2, PA1 dc.b $00,$00,$00,$00 ; VIA1 PA6 = 0, PA4 = 0, PA2 = 0, PA1 = 0 dc.l VIA1InitMSC-InfoPowerBookDuo230 ; VIA1 init info dc.l 0 ; no VIA2 to init dc.l SndCntlPBDuo210-InfoPowerBookDuo230 ; sound control vector table dc.l PMGRClockPRAM-InfoPowerBookDuo230 ; clock/PRAM vector table

dc.l PMGRADBTable-InfoPowerBookDuo230 ; ADB/DebugUtil vector table dc.l MSCPmgrPrims-InfoPowerBookDuo230 ; Power Manager primitives dc.l MSCIntTbl-InfoPowerBookDuo230 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w cpuIDPortable|\ ; CPU ID: portable design center cpuIDinReg|\ ; CPU ID: register contains complete ID 5 ; CPU ID: PowerBook Duo 230 is 5 dc.w 0 ; spare dc.l IconInfoDBLite-InfoPowerBookDuo230 ; offset to ICON info ALIGN 4 InfoPowerBookDuo235 dc.l MSCTable-InfoPowerBookDuo235 ; offset to decoder info dc.l RAMInfoMSC-InfoPowerBookDuo235 ; offset to ram bank info dc.l VideoInfoMSC-InfoPowerBookDuo235 ; offset to video info dc.l NuBusInfoMSC-InfoPowerBookDuo235 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.b MSCDecoder ; decoder kind dc.w $3FFF ; ROM85, New ROMs, Power Off ability dc.b 4 ; default ROM Resource configuration dc.b ProductInfoVersion ; ProductInfo version BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid IWMExists,\ ; IWMAddr is valid
SCSIExists,\ ; SCSIAddr is valid SCSIDackExists,\ ; SCSIDackAddr is valid SCSIHskExists,\ ; SCSIHskAddr is valid ASCExists,\ ; ASCAddr is valid RBVExists,\ ; RBVAddr is valid VDACExists ; VDACAddr (GSC) is valid BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ADBPwrMgr)|\ ; PMGR ADB (ClockPwrMgr)|\ ; PMGR clock/pram (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (1< dc.l 0 ; Flags for valid ext feature flags 32-63 dc.l 0 ; Flags for valid ext feature flags 64-95 dc.b $56,$00,$00,$00 ; Check VIA1 PA6, PA4, PA2, PA1 dc.b $00,$00,$00,$00 ; VIA1 PA6 = 0, PA4 = 0, PA2 = 0, PA1 = 0 dc.l VIA1InitMSC-InfoPowerBookDuo235 ; VIA1 init info dc.l 0 ; no VIA2 to init dc.l SndCntlPBDuo210-InfoPowerBookDuo235 ; sound control vector table dc.l PMGRClockPRAM-InfoPowerBookDuo235 ; clock/PRAM vector table

dc.l PMGRADBTable-InfoPowerBookDuo235 ; ADB/DebugUtil vector table dc.l MSCPmgrPrims-InfoPowerBookDuo235 ; Power Manager primitives dc.l MSCIntTbl-InfoPowerBookDuo235 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w cpuIDPortable|\ ; CPU ID: portable design center cpuIDinReg|\ ; CPU ID: register contains complete ID 6 ; CPU ID: PowerBook Duo 235 is 6 dc.w 0 ; spare dc.l IconInfoDBLite-InfoPowerBookDuo235 ; offset to ICON info ALIGN 4 InfoYeager dc.l MSCTable-InfoYeager ; offset to decoder info dc.l RAMInfoMSC-InfoYeager ; offset to ram bank info dc.l VideoInfoMSC-InfoYeager ; offset to video info dc.l NuBusInfoMSC-InfoYeager ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.b MSCDecoder ; decoder kind dc.w $3FFF ; ROM85, New ROMs, Power Off ability dc.b 4 ; default ROM Resource configuration dc.b ProductInfoVersion ; ProductInfo version BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid IWMExists,\ ; IWMAddr is valid
SCSIExists,\ ; SCSIAddr is valid SCSIDackExists,\ ; SCSIDackAddr is valid SCSIHskExists,\ ; SCSIHskAddr is valid ASCExists,\ ; ASCAddr is valid RBVExists,\ ; RBVAddr is valid VDACExists ; VDACAddr (GSC) is valid BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ADBPwrMgr)|\ ; PMGR ADB (ClockPwrMgr)|\ ; PMGR clock/pram (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (1< dc.l 0 ; Flags for valid ext feature flags 32-63 dc.l 0 ; Flags for valid ext feature flags 64-95 dc.b $56,$00,$00,$00 ; Check VIA1 PA6, PA4, PA2, PA1 dc.b $00,$00,$00,$00 ; VIA1 PA6 = 0, PA4 = 0, PA2 = 0, PA1 = 0 dc.l VIA1InitMSC-InfoYeager ; VIA1 init info dc.l 0 ; no VIA2 to init dc.l SndCntlPBDuo210-InfoYeager ; sound control vector table dc.l PMGRClockPRAM-InfoYeager ; clock/PRAM vector table

dc.l PMGRADBTable-InfoYeager ; ADB/DebugUtil vector table dc.l MBTPmgrPrims-InfoYeager ; Power Manager primitives dc.l MSCIntTbl-InfoYeager ; interrupt handlers table dc.l 0 ; internal modem manager dc.w cpuIDPortable|\ ; CPU ID: portable design center cpuIDinReg|\ ; CPU ID: register contains complete ID 0 ; CPU ID: Yeager is 16 dc.w 0 ; spare dc.l IconInfoDBLite-InfoYeager ; offset to ICON info ENDIF ; {hasMSC} IF hasNiagra THEN IMPORT SndCntlPB180, NiagraPMgrPrims, NiagraIntTbl ; PowerBook 180 product table ALIGN 4 InfoPowerBook180 dc.l NiagraTable-InfoPowerBook180 ; offset to decoder info dc.l RamInfoNiagra-InfoPowerBook180 ; offset to ram bank info dc.l VideoInfoNiagra-InfoPowerBook180 ; offset to video info dc.l NuBusInfoNiagra-InfoPowerBook180 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< JAWSExists ; JAWSAddr is valid BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockRTC)|\ ; Has RTC clock/PRAM (ADBPwrMgr)|\ ; PowerManager ADB (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< dc.l NiagraPMgrPrims-InfoPowerBook180 ; Power Manager primitives dc.l NiagraIntTbl-InfoPowerBook180 ; interrupt handlers table dc.w 0 ; no CPU ID register dc.w 0 ; spare dc.l IconInfoTIM-InfoPowerBook180 ; offset to ICON info ALIGN 4 InfoNiagraUnknown dc.l NiagraTable-InfoNiagraUnknown ; offset to decoder info dc.l RamInfoNiagra-InfoNiagraUnknown ; offset to ram bank info dc.l VideoInfoNiagra-InfoNiagraUnknown ; offset to video info dc.l NuBusInfoNiagra-InfoNiagraUnknown ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< (1< dc.l 0 ; Flags for valid ext feature flags 32-63 dc.l 0 ; Flags for valid ext feature flags 64-95 dc.b $00,$00,$00,$00 ; don't check any VIA bits dc.b $00,$00,$00,$00 ; anything with this decoder matches dc.l VIA1InitNiagra-InfoNiagraUnknown ; VIA1 init info dc.l VIA2InitNiagra-InfoNiagraUnknown ; VIA2 init info dc.l 0 ; no sound control vector table dc.l RTCClockPRAM-InfoNiagraUnknown ; clock/PRAM vector table dc.l PMGRADBTable-InfoNiagraUnknown ; ADB/DebugUtil vector table dc.l NiagraPMgrPrims-InfoNiagraUnknown ; Power Manager primitives dc.l NiagraIntTbl-InfoNiagraUnknown ; interrupt handlers table dc.l 0 ; internal modem manager dc.w 0 ; no CPU ID register dc.w 0 ; spare dc.l IconInfoTIM-InfoNiagraUnknown ; offset to ICON info ENDIF ; {hasNiagra} IF hasSonora THEN IMPORT SndCntlLCIII, SonoraIntTbl ; Vail 16 MHZ product table ALIGN 4 InfoVail16 dc.l SonoraTable-InfoVail16 ; offset to decoder info dc.l RamInfoVail-InfoVail16 ; offset to ram bank info dc.l VideoInfoVail-InfoVail16 ; offset to video info dc.l NuBusInfoVail-InfoVail16 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.b SonoraDecoder ; decoder kind dc.w $3FFF ; ROM85, New ROMs, Power Off ability dc.b 4 ; default ROM Resource configuration (non-FPU for now) dc.b ProductInfoVersion ; ProductInfo version BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid IWMExists,\ ; IWMAddr is valid SCSIExists,\ ; SCSIAddr is valid SCSIDackExists,\ ; SCSIDackAddr is valid SCSIHskExists,\ ; SCSIHskAddr is valid ASCExists,\ ; ASCAddr is valid RBVExists,\ ; RBV is valid VDACExists,\ ; VDACAddr (SONORA) is valid CSS PatchRomExists ; PatchRomAddr is valid BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l (ClockEgret)|\ ; Has Egret clock/pram (ADBEgret)|\ ; Egret ADB (Egret8)|\ ; Egret Eight firmware CSS (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< (1< dc.l 0 ; Flags for valid ext feature flags 32-63 dc.l 0 ; Flags for valid ext feature flags 64-95 dc.b $00,$00,$00,$00 ; don't check any VIA bits dc.b $00,$00,$00,$00 ; anything with this decoder matches dc.l VIA1InitVail-InfoVail16 ; VIA1 init info dc.l 0 ; no VIA2 init info dc.l SndCntlLCIII-InfoVail16 ; sound control vector table dc.l EgretClockPRAM-InfoVail16 ; clock/PRAM vector table

dc.l EgretADBTable-InfoVail16 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l SonoraIntTbl-InfoVail16 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w cpuIDHiVol|\ ; CPU ID: hi volume design center cpuIDinReg|\ ; CPU ID: register contains complete ID 0 ; CPU ID: Vail 16 Mhz dc.w 0 ; spare dc.l IconInfoMacLC-InfoVail16 ; offset to ICON info ; Vail 25 MHZ product table ALIGN 4 InfoLCIII dc.l SonoraTable-InfoLCIII ; offset to decoder info dc.l RamInfoVail-InfoLCIII ; offset to ram bank info dc.l VideoInfoVail-InfoLCIII ; offset to video info dc.l NuBusInfoVail-InfoLCIII ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< PatchRomExists ; PatchRomAddr is valid BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l (ClockEgret)|\ ; Has Egret clock/pram (ADBEgret)|\ ; Egret ADB (Egret8)|\ ; Egret Eight firmware CSS (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (1< (1< dc.l 0 ; Flags for valid ext feature flags 32-63 dc.l 0 ; Flags for valid ext feature flags 64-95 dc.b $00,$00,$00,$00 ; don't check any VIA bits dc.b $00,$00,$00,$00 ; anything with this decoder matches dc.l VIA1InitVail-InfoLCIII ; VIA1 init info dc.l 0 ; no VIA2 init info dc.l SndCntlLCIII-InfoLCIII ; sound control vector table dc.l EgretClockPRAM-InfoLCIII ; clock/PRAM vector table

dc.l EgretADBTable-InfoLCIII ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l SonoraIntTbl-InfoLCIII ; interrupt handlers table dc.w cpuIDHiVol|\ ; CPU ID: hi volume design center cpuIDinReg|\ ; CPU ID: register contains complete ID Vail25IDField ; CPU ID: Vail 25 Mhz dc.w 0 ; spare dc.l IconInfoMacLC-InfoLCIII ; offset to ICON info ; Vail 33 MHZ product table ALIGN 4 InfoVail33 dc.l SonoraTable-InfoVail33 ; offset to decoder info dc.l RamInfoVail-InfoVail33 ; offset to ram bank info dc.l VideoInfoVail-InfoVail33 ; offset to video info dc.l NuBusInfoVail-InfoVail33 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid IWMExists,\ ; IWMAddr is valid SCSIExists,\ ; SCSIAddr is valid SCSIDackExists,\ ; SCSIDackAddr is valid SCSIHskExists,\ ; SCSIHskAddr is valid ASCExists,\ ; ASCAddr is valid RBVExists,\ ; RBV is valid VDACExists,\ ; VDACAddr (SONORA) is valid SONICExists,\ ; SONIC is valid PatchRomExists ; PatchRomAddr is valid BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l (ClockEgret)|\ ; Has Egret clock/pram (ADBEgret)|\ ; Egret ADB (Egret8)|\ ; Egret Eight firmware CSS (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (1< (1< dc.l 0 ; Flags for valid ext feature flags 32-63 dc.l 0 ; Flags for valid ext feature flags 64-95 dc.b $00,$00,$00,$00 ; don't check any VIA bits dc.b $00,$00,$00,$00 ; anything with this decoder matches dc.l VIA1InitVail-InfoVail33 ; VIA1 init info dc.l 0 ; no VIA2 init info dc.l SndCntlLCIII-InfoVail33 ; sound control vector table dc.l EgretClockPRAM-InfoVail33 ; clock/PRAM vector table dc.l EgretADBTable-InfoVail33 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l SonoraIntTbl-InfoVail33 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w cpuIDHiVol|\ ; CPU ID: hi volume design center cpuIDinReg|\ ; CPU ID: register contains complete ID Vail33IDField ; CPU ID: Vail 33 Mhz dc.w 0 ; spare dc.l IconInfoMacLC-InfoVail33 ; offset to ICON info ENDIF ; {hasSonora} IF hasDJMEMC THEN IMPORT DJMEMCIntTbl, SndCntlQuadra800 ; 20MHz Wombat product table (Lego plastics) ALIGN 4 InfoWombat20 dc.l djMEMCTable-InfoWombat20 ; offset to decoder info dc.l RamInfoDJMEMC-InfoWombat20 ; offset to ram bank info dc.l VideoInfoDAFB-InfoWombat20 ; offset to video info dc.l NuBusInfoWombat-InfoWombat20 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.b ProductInfoVersion ; ProductInfo version BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid ASCExists,\ ; ASCAddr is valid (means Batman in this case) IWMExists,\ ; IWMAddr is valid SCSI96_1Exists,\ ; 1st SCSI96 is valid SONICExists,\ ; SONIC is valid PatchROMExists,\ ; Patch ROM is valid DAFBExists ; has DAFB video BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockRTC)|\ ; Has RTC clock/PRAM (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< dc.b $42,$00,$00,$00 ; VIA1: PA6 = 1, PA4 = 0, PA2 = 0, PA1 = 1 dc.l VIA1InitWombat-InfoWombat20 ; VIA1 init info dc.l VIA2InitWombat-InfoWombat20 ; VIA2 init info dc.l SndCntlQuadra800-InfoWombat20 ; sound control vector table dc.l RTCClockPRAM-InfoWombat20 ; clock/PRAM vector table dc.l ViaADBTable-InfoWombat20 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l DJMEMCIntTbl-InfoWombat20 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w (cpuIDHiEnd)|\ ; HiEnd design center (cpuIDinVIA)|\ ; supplemental ID in VIA1 $3AD ; specific ID dc.w 0 ; spare dc.l IconInfoLego-InfoWombat20 ; offset to ICON info ; 25MHz Wombat product table (Lego plastics) ALIGN 4 InfoCentris650 dc.l djMEMCTable-InfoCentris650 ; offset to decoder info dc.l RamInfoDJMEMC-InfoCentris650 ; offset to ram bank info dc.l VideoInfoDAFB-InfoCentris650 ; offset to video info dc.l NuBusInfoWombat-InfoCentris650 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.b ProductInfoVersion ; ProductInfo version BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid ASCExists,\ ; ASCAddr is valid (means Batman in this case) IWMExists,\ ; IWMAddr is valid SCSI96_1Exists,\ ; 1st SCSI96 is valid SONICExists,\ ; SONIC is valid PatchROMExists,\ ; Patch ROM is valid DAFBExists ; has DAFB video BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockRTC)|\ ; Has RTC clock/PRAM (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< dc.b $46,$00,$00,$00 ; VIA1: PA6 = 1, PA4 = 0, PA2 = 1, PA1 = 1 dc.l VIA1InitWombat-InfoCentris650 ; VIA1 init info dc.l VIA2InitWombat-InfoCentris650 ; VIA2 init info dc.l SndCntlQuadra800-InfoCentris650 ; sound control vector table dc.l RTCClockPRAM-InfoCentris650 ; clock/PRAM vector table dc.l ViaADBTable-InfoCentris650 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l DJMEMCIntTbl-InfoCentris650 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w (cpuIDHiEnd)|\ ; HiEnd design center (cpuIDinVIA)|\ ; supplemental ID in VIA1 $3AD ; specific ID dc.w 0 ; spare dc.l IconInfoLego-InfoCentris650 ; offset to ICON info ; 33MHz Wombat product table (Lego plastics) ALIGN 4 InfoQuadra650 dc.l djMEMCTable-InfoQuadra650 ; offset to decoder info dc.l RamInfoDJMEMC-InfoQuadra650 ; offset to ram bank info dc.l VideoInfoDAFB-InfoQuadra650 ; offset to video info dc.l NuBusInfoWombat-InfoQuadra650 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< dc.b $52,$00,$00,$00 ; VIA1: PA6 = 1, PA4 = 1, PA2 = 0, PA1 = 1 dc.l VIA1InitWombat-InfoQuadra650 ; VIA1 init info dc.l VIA2InitWombat-InfoQuadra650 ; VIA2 init info dc.l SndCntlQuadra800-InfoQuadra650 ; sound control vector table dc.l RTCClockPRAM-InfoQuadra650 ; clock/PRAM vector table dc.l ViaADBTable-InfoQuadra650 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l DJMEMCIntTbl-InfoQuadra650 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w (cpuIDHiEnd)|\ ; HiEnd design center (cpuIDinVIA)|\ ; supplemental ID in VIA1 $3AD ; specific ID dc.w 0 ; spare dc.l IconInfoLego-InfoQuadra650 ; offset to ICON info ; 33MHz Wombat product table (Frigidaire plastics) ALIGN 4 InfoQuadra800 dc.l djMEMCTable-InfoQuadra800 ; offset to decoder info dc.l RamInfoDJMEMC-InfoQuadra800 ; offset to ram bank info dc.l VideoInfoDAFB-InfoQuadra800 ; offset to video info dc.l NuBusInfoWombat-InfoQuadra800 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid ASCExists,\ ; ASCAddr is valid (means Batman in this case) IWMExists,\ ; IWMAddr is valid SCSI96_1Exists,\ ; 1st SCSI96 is valid SONICExists,\ ; SONIC is valid PatchROMExists,\ ; Patch ROM is valid DAFBExists ; has DAFB video BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l (ClockRTC)|\ ; Has RTC clock/PRAM (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< dc.l 0 ; Flags for valid ext feature flags 64-95 dc.b $56,$00,$00,$00 ; Check VIA1: PA6 PA4, PA2, PA1 dc.b $12,$00,$00,$00 ; VIA1: PA6 = 0, PA4 = 1, PA2 = 0, PA1 = 1 dc.l VIA1InitWombat-InfoQuadra800 ; VIA1 init info dc.l VIA2InitWombat-InfoQuadra800 ; VIA2 init info dc.l SndCntlQuadra800-InfoQuadra800 ; sound control vector table dc.l RTCClockPRAM-InfoQuadra800 ; clock/PRAM vector table dc.l ViaADBTable-InfoQuadra800 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l DJMEMCIntTbl-InfoQuadra800 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w (cpuIDHiEnd)|\ ; HiEnd design center (cpuIDinVIA)|\ ; supplemental ID in VIA1 $3AD ; specific ID dc.w 0 ; spare dc.l IconInfoFrigidaire-InfoQuadra800 ; offset to ICON info ; 40MHz Wombat product table (Lego plastics) ALIGN 4 InfoWombat40 dc.l djMEMCTable-InfoWombat40 ; offset to decoder info dc.l RamInfoDJMEMC-InfoWombat40 ; offset to ram bank info dc.l VideoInfoDAFB-InfoWombat40 ; offset to video info dc.l NuBusInfoWombat-InfoWombat40 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< dc.b $56,$00,$00,$00 ; VIA1: PA6 = 1, PA4 = 1, PA2 = 1, PA1 = 1 dc.l VIA1InitWombat-InfoWombat40 ; VIA1 init info dc.l VIA2InitWombat-InfoWombat40 ; VIA2 init info dc.l SndCntlQuadra800-InfoWombat40 ; sound control vector table dc.l RTCClockPRAM-InfoWombat40 ; clock/PRAM vector table dc.l ViaADBTable-InfoWombat40 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l DJMEMCIntTbl-InfoWombat40 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w (cpuIDHiEnd)|\ ; HiEnd design center (cpuIDinVIA)|\ ; supplemental ID in VIA1 $3AD ; specific ID dc.w 0 ; spare dc.l IconInfoLego-InfoWombat40 ; offset to ICON info ; 40MHz Wombat product table (Frigidaire package) ALIGN 4 InfoWombat40F dc.l djMEMCTable-InfoWombat40F ; offset to decoder info dc.l RamInfoDJMEMC-InfoWombat40F ; offset to ram bank info dc.l VideoInfoDAFB-InfoWombat40F ; offset to video info dc.l NuBusInfoWombat-InfoWombat40F ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid ASCExists,\ ; ASCAddr is valid (means Batman in this case) IWMExists,\ ; IWMAddr is valid SCSI96_1Exists,\ ; 1st SCSI96 is valid SONICExists,\ ; SONIC is valid PatchROMExists,\ ; Patch ROM is valid DAFBExists ; has DAFB video BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l (ClockRTC)|\ ; Has RTC clock/PRAM (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< dc.l 0 ; Flags for valid ext feature flags 64-95 dc.b $56,$00,$00,$00 ; Check VIA1: PA6 PA4, PA2, PA1 dc.b $16,$00,$00,$00 ; VIA1: PA6 = 0, PA4 = 1, PA2 = 1, PA1 = 1 dc.l VIA1InitWombat-InfoWombat40F ; VIA1 init info dc.l VIA2InitWombat-InfoWombat40F ; VIA2 init info dc.l SndCntlQuadra800-InfoWombat40F ; sound control vector table dc.l RTCClockPRAM-InfoWombat40F ; clock/PRAM vector table dc.l ViaADBTable-InfoWombat40F ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l DJMEMCIntTbl-InfoWombat40F ; interrupt handlers table dc.l 0 ; internal modem manager dc.w (cpuIDHiEnd)|\ ; HiEnd design center (cpuIDinVIA)|\ ; supplemental ID in VIA1 $3AD ; specific ID dc.w 0 ; spare dc.l IconInfoFrigidaire-InfoWombat40F ; offset to ICON info ; 20MHz WLCD product table (QFC plastics) ALIGN 4 InfoCentris610 dc.l djMEMCTable-InfoCentris610 ; offset to decoder info dc.l RamInfoDJMEMC-InfoCentris610 ; offset to ram bank info dc.l VideoInfoDAFB-InfoCentris610 ; offset to video info dc.l NuBusInfoWLCD-InfoCentris610 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< (1< dc.b $40,$00,$00,$00 ; VIA1: PA6 = 1, PA4 = 0, PA2 = 0, PA1 = 0 dc.l VIA1InitWombat-InfoCentris610 ; VIA1 init info dc.l VIA2InitWombat-InfoCentris610 ; VIA2 init info dc.l SndCntlQuadra800-InfoCentris610 ; sound control vector table dc.l RTCClockPRAM-InfoCentris610 ; clock/PRAM vector table dc.l ViaADBTable-InfoCentris610 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l DJMEMCIntTbl-InfoCentris610 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w (cpuIDHiEnd)|\ ; HiEnd design center (cpuIDinVIA)|\ ; supplemental ID in VIA1 $3AD ; specific ID dc.w 0 ; spare dc.l IconInfoQFC-InfoCentris610 ; offset to ICON info ; 25MHz WLCD product table (QFC plastics) ALIGN 4 InfoQuadra610 dc.l djMEMCTable-InfoQuadra610 ; offset to decoder info dc.l RamInfoDJMEMC-InfoQuadra610 ; offset to ram bank info dc.l VideoInfoDAFB-InfoQuadra610 ; offset to video info dc.l NuBusInfoWLCD-InfoQuadra610 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< (1< dc.b $44,$00,$00,$00 ; VIA1: PA6 = 1, PA4 = 0, PA2 = 1, PA1 = 0 dc.l VIA1InitWombat-InfoQuadra610 ; VIA1 init info dc.l VIA2InitWombat-InfoQuadra610 ; VIA2 init info dc.l SndCntlQuadra800-InfoQuadra610 ; sound control vector table dc.l RTCClockPRAM-InfoQuadra610 ; clock/PRAM vector table dc.l ViaADBTable-InfoQuadra610 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l DJMEMCIntTbl-InfoQuadra610 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w (cpuIDHiEnd)|\ ; HiEnd design center (cpuIDinVIA)|\ ; supplemental ID in VIA1 $3AD ; specific ID dc.w 0 ; spare dc.l IconInfoQFC-InfoQuadra610 ; offset to ICON info ; 33MHz WLCD product table (QFC package) ALIGN 4 InfoWLCD33 dc.l djMEMCTable-InfoWLCD33 ; offset to decoder info dc.l RamInfoDJMEMC-InfoWLCD33 ; offset to ram bank info dc.l VideoInfoDAFB-InfoWLCD33 ; offset to video info dc.l NuBusInfoWLCD-InfoWLCD33 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid ASCExists,\ ; ASCAddr is valid (means Batman in this case) IWMExists,\ ; IWMAddr is valid SCSI96_1Exists,\ ; 1st SCSI96 is valid SONICExists,\ ; SONIC is valid PatchROMExists,\ ; Patch ROM is valid DAFBExists ; has DAFB video BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l (ClockRTC)|\ ; Has RTC clock/PRAM (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< dc.l 0 ; Flags for valid ext feature flags 64-95 dc.b $56,$00,$00,$00 ; Check VIA1: PA6 PA4, PA2, PA1 dc.b $50,$00,$00,$00 ; VIA1: PA6 = 1, PA4 = 1, PA2 = 0, PA1 = 0 dc.l VIA1InitWombat-InfoWLCD33 ; VIA1 init info dc.l VIA2InitWombat-InfoWLCD33 ; VIA2 init info dc.l SndCntlQuadra800-InfoWLCD33 ; sound control vector table dc.l RTCClockPRAM-InfoWLCD33 ; clock/PRAM vector table dc.l ViaADBTable-InfoWLCD33 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l DJMEMCIntTbl-InfoWLCD33 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w (cpuIDHiEnd)|\ ; HiEnd design center (cpuIDinVIA)|\ ; supplemental ID in VIA1 $3AD ; specific ID dc.w 0 ; spare dc.l IconInfoQFC-InfoWLCD33 ; offset to ICON info IF forSmurf THEN ; Centris610 with a Smurf card ALIGN 4 InfoRiscCentris610 dc.l djMEMCTable-InfoRiscCentris610 ; offset to decoder info dc.l RamInfoRISCDJMEMC-InfoRiscCentris610; offset to ram bank info dc.l VideoInfoDAFB-InfoRiscCentris610 ; offset to video info dc.l NuBusInfoWLCD-InfoRiscCentris610 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< (ADBXcvr) ; Has transceiver ADB dc.l \ ; Flags for valid ext feature flags 32-63 (1< dc.b $40,$00,$00,$00 ; VIA1: PA6 = 1, PA4 = 0, PA2 = 0, PA1 = 0 dc.l VIA1InitWombat-InfoRiscCentris610 ; VIA1 init info dc.l VIA2InitWombat-InfoRiscCentris610 ; VIA2 init info dc.l SndCntlQuadra800-InfoRiscCentris610 ; sound control vector table dc.l RTCClockPRAM-InfoRiscCentris610 ; clock/PRAM vector table dc.l ViaADBTable-InfoRiscCentris610 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l DJMEMCIntTbl-InfoRiscCentris610 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w (cpuIDRISC)|\ ; HiEnd design center $1204 ; specific ID dc.w 0 ; spare dc.l IconInfoQFC-InfoRiscCentris610 ; offset to ICON info ; Wombat product table w/Smurf...a centris650 (Lego plastics) ALIGN 4 InfoRiscCentris650 ; dc.l djMEMCTable-InfoRiscCentris650 ; offset to decoder info dc.l RamInfoRISCDJMEMC-InfoRiscCentris650; offset to ram bank info dc.l VideoInfoDAFB-InfoRiscCentris650 ; offset to video info dc.l NuBusInfoWombat-InfoRiscCentris650 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.b ProductInfoVersion ; ProductInfo version BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid ASCExists,\ ; ASCAddr is valid (means Batman in this case) IWMExists,\ ; IWMAddr is valid SCSI96_1Exists,\ ; 1st SCSI96 is valid SONICExists,\ ; SONIC is valid PatchROMExists,\ ; Patch ROM is valid DAFBExists ; has DAFB video BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockRTC)|\ ; Has RTC clock/PRAM (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< dc.b $46,$00,$00,$00 ; VIA1: PA6 = 1, PA4 = 0, PA2 = 1, PA1 = 1 dc.l VIA1InitWombat-InfoRiscCentris650 ; VIA1 init info dc.l VIA2InitWombat-InfoRiscCentris650 ; VIA2 init info dc.l SndCntlQuadra800-InfoRiscCentris650 ; sound control vector table dc.l RTCClockPRAM-InfoRiscCentris650 ; clock/PRAM vector table dc.l ViaADBTable-InfoRiscCentris650 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l DJMEMCIntTbl-InfoRiscCentris650 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w (cpuIDRISC)|\ ; CPU ID: RISC design center $1200 ; specific ID dc.w 0 ; spare dc.l IconInfoLego-InfoRiscCentris650 ; offset to ICON info ; Quadra610 with a smurf card ALIGN 4 InfoRiscQuadra610 dc.l djMEMCTable-InfoRiscQuadra610 ; offset to decoder info dc.l RamInfoRISCDJMEMC-InfoRiscQuadra610 ; offset to ram bank info dc.l VideoInfoDAFB-InfoRiscQuadra610 ; offset to video info dc.l NuBusInfoWLCD-InfoRiscQuadra610 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< (ADBXcvr) ; Has transceiver ADB dc.l \ ; Flags for valid ext feature flags 32-63 (1< dc.b $44,$00,$00,$00 ; VIA1: PA6 = 1, PA4 = 0, PA2 = 1, PA1 = 0 dc.l VIA1InitWombat-InfoRiscQuadra610 ; VIA1 init info dc.l VIA2InitWombat-InfoRiscQuadra610 ; VIA2 init info dc.l SndCntlQuadra800-InfoRiscQuadra610 ; sound control vector table dc.l RTCClockPRAM-InfoRiscQuadra610 ; clock/PRAM vector table dc.l ViaADBTable-InfoRiscQuadra610 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l DJMEMCIntTbl-InfoRiscQuadra610 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w (cpuIDRISC)|\ ; HiEnd design center $1202 ; specific ID dc.w 0 ; spare dc.l IconInfoQFC-InfoRiscQuadra610 ; offset to ICON info ; Quadra650 with a smurf card ALIGN 4 InfoRiscQuadra650 dc.l djMEMCTable-InfoRiscQuadra650 ; offset to decoder info dc.l RamInfoRISCDJMEMC-InfoRiscQuadra650 ; offset to ram bank info dc.l VideoInfoDAFB-InfoRiscQuadra650 ; offset to video info dc.l NuBusInfoWombat-InfoRiscQuadra650 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< dc.b $52,$00,$00,$00 ; VIA1: PA6 = 1, PA4 = 1, PA2 = 0, PA1 = 1 dc.l VIA1InitWombat-InfoRiscQuadra650 ; VIA1 init info dc.l VIA2InitWombat-InfoRiscQuadra650 ; VIA2 init info dc.l SndCntlQuadra800-InfoRiscQuadra650 ; sound control vector table dc.l RTCClockPRAM-InfoRiscQuadra650 ; clock/PRAM vector table dc.l ViaADBTable-InfoRiscQuadra650 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l DJMEMCIntTbl-InfoRiscQuadra650 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w (cpuIDRISC)|\ ; CPU ID: RISC design center $1203 ; specific ID dc.w 0 ; spare dc.l IconInfoLego-InfoRiscQuadra650 ; offset to ICON info ; Quadra800 with a Risc card ALIGN 4 InfoRiscQuadra800 dc.l djMEMCTable-InfoRiscQuadra800 ; offset to decoder info dc.l RamInfoRISCDJMEMC-InfoRiscQuadra800 ; offset to ram bank info dc.l VideoInfoDAFB-InfoRiscQuadra800 ; offset to video info dc.l NuBusInfoWombat-InfoRiscQuadra800 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid ASCExists,\ ; ASCAddr is valid (means Batman in this case) IWMExists,\ ; IWMAddr is valid SCSI96_1Exists,\ ; 1st SCSI96 is valid SONICExists,\ ; SONIC is valid PatchROMExists,\ ; Patch ROM is valid DAFBExists ; has DAFB video BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l (ClockRTC)|\ ; Has RTC clock/PRAM (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< dc.b $56,$00,$00,$00 ; Check VIA1: PA6 PA4, PA2, PA1 dc.b $12,$00,$00,$00 ; VIA1: PA6 = 0, PA4 = 1, PA2 = 0, PA1 = 1 dc.l VIA1InitWombat-InfoRiscQuadra800 ; VIA1 init info dc.l VIA2InitWombat-InfoRiscQuadra800 ; VIA2 init info dc.l SndCntlQuadra800-InfoRiscQuadra800 ; sound control vector table dc.l RTCClockPRAM-InfoRiscQuadra800 ; clock/PRAM vector table dc.l ViaADBTable-InfoRiscQuadra800 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l DJMEMCIntTbl-InfoRiscQuadra800 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w (cpuIDRISC)|\ ; HiEnd design center $1201 ; specific ID dc.w 0 ; spare dc.l IconInfoFrigidaire-InfoRiscQuadra800; offset to ICON info ENDIF ; {for smurf} ENDIF ; {hasDJMEMC} IF forSTP601 THEN ; 25MHz STP Wombat product table (Lego plastics) ALIGN 4 InfoSTPCentris650 dc.l djMEMCTable-InfoSTPCentris650 ; offset to decoder info dc.l RamInfoDJMEMC-InfoSTPCentris650 ; offset to ram bank info dc.l VideoInfoDAFB-InfoSTPCentris650 ; offset to video info dc.l NuBusInfoWombat-InfoSTPCentris650 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.b ProductInfoVersion ; ProductInfo version BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid ASCExists,\ ; ASCAddr is valid (means Batman in this case) IWMExists,\ ; IWMAddr is valid SCSI96_1Exists,\ ; 1st SCSI96 is valid SONICExists,\ ; SONIC is valid PatchROMExists,\ ; Patch ROM is valid DAFBExists ; has DAFB video BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockRTC)|\ ; Has RTC clock/PRAM (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< dc.b $46,$00,$00,$00 ; VIA1: PA6 = 1, PA4 = 0, PA2 = 1, PA1 = 1 dc.l VIA1InitWombat-InfoSTPCentris650 ; VIA1 init info dc.l VIA2InitWombat-InfoSTPCentris650 ; VIA2 init info dc.l SndCntlQuadra800-InfoSTPCentris650 ; sound control vector table dc.l RTCClockPRAM-InfoSTPCentris650 ; clock/PRAM vector table dc.l ViaADBTable-InfoSTPCentris650 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l DJMEMCIntTbl-InfoSTPCentris650 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w ((cpuIDRISC))|\ ; RISC design center (cpuIDinVIA)|\ ; supplemental ID in VIA1 $3AD ; specific ID dc.w 0 ; spare dc.l IconInfoLego-InfoSTPCentris650 ; offset to ICON info ; 33MHz STP Wombat product table (Lego plastics) ALIGN 4 InfoSTPQuadra650 dc.l djMEMCTable-InfoSTPQuadra650 ; offset to decoder info dc.l RamInfoDJMEMC-InfoSTPQuadra650 ; offset to ram bank info dc.l VideoInfoDAFB-InfoSTPQuadra650 ; offset to video info dc.l NuBusInfoWombat-InfoSTPQuadra650 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.b ProductInfoVersion ; ProductInfo version BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid ASCExists,\ ; ASCAddr is valid (means Batman in this case) IWMExists,\ ; IWMAddr is valid SCSI96_1Exists,\ ; 1st SCSI96 is valid SONICExists,\ ; SONIC is valid PatchROMExists,\ ; Patch ROM is valid DAFBExists ; has DAFB video BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockRTC)|\ ; Has RTC clock/PRAM (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< dc.b $52,$00,$00,$00 ; VIA1: PA6 = 1, PA4 = 1, PA2 = 0, PA1 = 1 dc.l VIA1InitWombat-InfoSTPQuadra650 ; VIA1 init info dc.l VIA2InitWombat-InfoSTPQuadra650 ; VIA2 init info dc.l SndCntlQuadra800-InfoSTPQuadra650 ; sound control vector table dc.l RTCClockPRAM-InfoSTPQuadra650 ; clock/PRAM vector table dc.l ViaADBTable-InfoSTPQuadra650 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l DJMEMCIntTbl-InfoSTPQuadra650 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w (cpuIDRISC)|\ ; risc design center (cpuIDinVIA)|\ ; supplemental ID in VIA1 $3AD ; specific ID dc.w 0 ; spare dc.l IconInfoLego-InfoSTPQuadra650 ; offset to ICON info ; 33MHz STP Wombat product table (Frigidaire plastics) ALIGN 4 InfoSTPQuadra800 dc.l djMEMCTable-InfoSTPQuadra800 ; offset to decoder info dc.l RamInfoDJMEMC-InfoSTPQuadra800 ; offset to ram bank info dc.l VideoInfoDAFB-InfoSTPQuadra800 ; offset to video info dc.l NuBusInfoWombat-InfoSTPQuadra800 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.b ProductInfoVersion ; ProductInfo version BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid ASCExists,\ ; ASCAddr is valid (means Batman in this case) IWMExists,\ ; IWMAddr is valid SCSI96_1Exists,\ ; 1st SCSI96 is valid SONICExists,\ ; SONIC is valid PatchROMExists,\ ; Patch ROM is valid DAFBExists ; has DAFB video BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l (ClockRTC)|\ ; Has RTC clock/PRAM (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< dc.b $56,$00,$00,$00 ; Check VIA1: PA6 PA4, PA2, PA1 dc.b $12,$00,$00,$00 ; VIA1: PA6 = 0, PA4 = 1, PA2 = 0, PA1 = 1 dc.l VIA1InitWombat-InfoSTPQuadra800 ; VIA1 init info dc.l VIA2InitWombat-InfoSTPQuadra800 ; VIA2 init info dc.l SndCntlQuadra800-InfoSTPQuadra800 ; sound control vector table dc.l RTCClockPRAM-InfoSTPQuadra800 ; clock/PRAM vector table dc.l ViaADBTable-InfoSTPQuadra800 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l DJMEMCIntTbl-InfoSTPQuadra800 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w (cpuIDRISC)|\ ; risc design center (cpuIDinVIA)|\ ; supplemental ID in VIA1 $3AD ; specific ID dc.w 0 ; spare dc.l IconInfoFrigidaire-InfoSTPQuadra800 ; offset to ICON info ; 40MHz STP Wombat product table (Frigidaire plastics) ALIGN 4 InfoSTPQuadra40F dc.l djMEMCTable-InfoSTPQuadra40F ; offset to decoder info dc.l RamInfoDJMEMC-InfoSTPQuadra40F ; offset to ram bank info dc.l VideoInfoDAFB-InfoSTPQuadra40F ; offset to video info dc.l NuBusInfoWombat-InfoSTPQuadra40F ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.b ProductInfoVersion ; ProductInfo version BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid ASCExists,\ ; ASCAddr is valid (means Batman in this case) IWMExists,\ ; IWMAddr is valid SCSI96_1Exists,\ ; 1st SCSI96 is valid SONICExists,\ ; SONIC is valid PatchROMExists,\ ; Patch ROM is valid DAFBExists ; has DAFB video BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l (ClockRTC)|\ ; Has RTC clock/PRAM (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< dc.b $56,$00,$00,$00 ; Check VIA1: PA6 PA4, PA2, PA1 dc.b $16,$00,$00,$00 ; VIA1: PA6 = 0, PA4 = 1, PA2 = 1, PA1 = 1 dc.l VIA1InitWombat-InfoSTPQuadra40F ; VIA1 init info dc.l VIA2InitWombat-InfoSTPQuadra40F ; VIA2 init info dc.l SndCntlQuadra800-InfoSTPQuadra40F ; sound control vector table dc.l RTCClockPRAM-InfoSTPQuadra40F ; clock/PRAM vector table dc.l ViaADBTable-InfoSTPQuadra40F ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l DJMEMCIntTbl-InfoSTPQuadra40F ; interrupt handlers table dc.l 0 ; internal modem manager dc.w (cpuIDRISC)|\ ; HiEnd design center (cpuIDinVIA)|\ ; supplemental ID in VIA1 $3AD ; specific ID dc.w 0 ; spare dc.l IconInfoFrigidaire-InfoSTPQuadra40F ; offset to ICON info ; 20MHz STP WLCD product table (QFC plastics) ALIGN 4 InfoSTPCentris610 dc.l djMEMCTable-InfoSTPCentris610 ; offset to decoder info dc.l RamInfoDJMEMC-InfoSTPCentris610 ; offset to ram bank info dc.l VideoInfoDAFB-InfoSTPCentris610 ; offset to video info dc.l NuBusInfoWLCD-InfoSTPCentris610 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.b ProductInfoVersion ; ProductInfo version BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid ASCExists,\ ; ASCAddr is valid (means Batman in this case) IWMExists,\ ; IWMAddr is valid SCSI96_1Exists,\ ; 1st SCSI96 is valid SONICExists,\ ; SONIC is valid PatchROMExists,\ ; Patch ROM is valid DAFBExists ; has DAFB video BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockRTC)|\ ; Has RTC clock/PRAM (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< (1< dc.b $40,$00,$00,$00 ; VIA1: PA6 = 1, PA4 = 0, PA2 = 0, PA1 = 0 dc.l VIA1InitWombat-InfoSTPCentris610 ; VIA1 init info dc.l VIA2InitWombat-InfoSTPCentris610 ; VIA2 init info dc.l SndCntlQuadra800-InfoSTPCentris610 ; sound control vector table dc.l RTCClockPRAM-InfoSTPCentris610 ; clock/PRAM vector table dc.l ViaADBTable-InfoSTPCentris610 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l DJMEMCIntTbl-InfoSTPCentris610 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w (cpuIDRISC)|\ ; risc design center (cpuIDinVIA)|\ ; supplemental ID in VIA1 $3AD ; specific ID dc.w 0 ; spare dc.l IconInfoQFC-InfoSTPCentris610 ; offset to ICON info ; 25MHz STP WLCD product table (QFC plastics) ALIGN 4 InfoSTPQuadra610 dc.l djMEMCTable-InfoSTPQuadra610 ; offset to decoder info dc.l RamInfoDJMEMC-InfoSTPQuadra610 ; offset to ram bank info dc.l VideoInfoDAFB-InfoSTPQuadra610 ; offset to video info dc.l NuBusInfoWLCD-InfoSTPQuadra610 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.b ProductInfoVersion ; ProductInfo version BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid ASCExists,\ ; ASCAddr is valid (means Batman in this case) IWMExists,\ ; IWMAddr is valid SCSI96_1Exists,\ ; 1st SCSI96 is valid SONICExists,\ ; SONIC is valid PatchROMExists,\ ; Patch ROM is valid DAFBExists ; has DAFB video BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockRTC)|\ ; Has RTC clock/PRAM (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< (1< dc.b $44,$00,$00,$00 ; VIA1: PA6 = 1, PA4 = 0, PA2 = 1, PA1 = 0 dc.l VIA1InitWombat-InfoSTPQuadra610 ; VIA1 init info dc.l VIA2InitWombat-InfoSTPQuadra610 ; VIA2 init info dc.l SndCntlQuadra800-InfoSTPQuadra610 ; sound control vector table dc.l RTCClockPRAM-InfoSTPQuadra610 ; clock/PRAM vector table dc.l ViaADBTable-InfoSTPQuadra610 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l DJMEMCIntTbl-InfoSTPQuadra610 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w (cpuIDRISC)|\ ; risc design center (cpuIDinVIA)|\ ; supplemental ID in VIA1 $3AD ; specific ID dc.w 0 ; spare dc.l IconInfoQFC-InfoSTPQuadra610 ; offset to ICON info ENDIF ; {forSTP601} IF hasYMCA AND hasPSC THEN ; used to be MMC IMPORT SndCntlCyclone, PSCIntTbl ; 33 MHz Cyclone product table ALIGN 4 InfoCyclone33 dc.l CycloneDecoderTable-InfoCyclone33 ; offset to decoder info for EVT4 dc.l RamInfoCyclone-InfoCyclone33 ; offset to ram bank info dc.l VideoInfoCyclone-InfoCyclone33 ; offset to video info dc.l NuBusInfoCyclone-InfoCyclone33 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< CivicExists,\ ; Civic video is valid SebastianExists ; Sebastian CLUT DAC is valid BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockEgret)|\ ; Has Egret clock/pram (ADBEgret)|\ ; Egret ADB (Cuda)|\ ; Cuda firmware (SoundHasSoundIn)|\ ; Has Sound In (Sound16Bit)|\ ; Has 16-bit hardware (SoundStereoIn)|\ ; has stereo sound input (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1 << SoundLineLevel) ; requires line level on sound input port dc.l \ ; Flags for valid ext feature flags 32-63 (1< dc.b $00,$00,$00 ; Filler. dc.l VIA1InitCyclone-InfoCyclone33 ; VIA1 init info dc.l VIA2InitCyclone-InfoCyclone33 ; VIA2 init info dc.l SndCntlCyclone-InfoCyclone33 ; sound control vector table dc.l CudaClockPRAM-InfoCyclone33 ; clock/PRAM vector table dc.l CudaADBTable-InfoCyclone33 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l PSCIntTbl-InfoCyclone33 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w cpuIDHiEnd|\ ; CPU ID: hi end design center cpuIDinMMC|\ ; CPU ID: Extended ID in MMC. $30 ; CPU ID: Cyclone Family is ID $30 dc.w 0 ; spare dc.l FrigidaireIcon-InfoCyclone33 ; offset to ICON info •• fake for now •• ; 40 MHz Cyclone product table ALIGN 4 InfoQuadra840AV dc.l CycloneDecoderTable-InfoQuadra840AV ; offset to decoder info for EVT4 dc.l RamInfoCyclone-InfoQuadra840AV ; offset to ram bank info dc.l VideoInfoCyclone-InfoQuadra840AV ; offset to video info dc.l NuBusInfoCyclone-InfoQuadra840AV ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< CivicExists,\ ; Civic video is valid SebastianExists ; Sebastian CLUT DAC is valid BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockEgret)|\ ; Has Egret clock/pram (ADBEgret)|\ ; Egret ADB (Cuda)|\ ; Cuda firmware (SoundHasSoundIn)|\ ; Has Sound In (Sound16Bit)|\ ; Has 16-bit hardware (SoundStereoIn)|\ ; has stereo sound input (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1 << SoundLineLevel) ; requires line level on sound input port dc.l \ ; Flags for valid ext feature flags 32-63 (1< dc.b $00,$00,$00 ; Filler. dc.l VIA1InitCyclone-InfoQuadra840AV ; VIA1 init info dc.l VIA2InitCyclone-InfoQuadra840AV ; VIA2 init info dc.l SndCntlCyclone-InfoQuadra840AV ; sound control vector table dc.l CudaClockPRAM-InfoQuadra840AV ; clock/PRAM vector table dc.l CudaADBTable-InfoQuadra840AV ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l PSCIntTbl-InfoQuadra840AV ; interrupt handlers table dc.l 0 ; internal modem manager dc.w cpuIDHiEnd|\ ; CPU ID: hi end design center cpuIDinMMC|\ ; CPU ID: Extended ID in MMC. $30 ; CPU ID: Cyclone Family is ID $30 dc.w 0 ; spare dc.l FrigidaireIcon-InfoQuadra840AV ; offset to ICON info •• fake for now •• ; 25 MHz Tempest product table ALIGN 4 InfoCentris660AV dc.l CycloneDecoderTable-InfoCentris660AV; offset to decoder info (Same as Cyclone) dc.l RamInfoTempest-InfoCentris660AV ; offset to ram bank info dc.l VideoInfoTempest-InfoCentris660AV ; offset to video info (Same as Cyclone) dc.l NuBusInfoTempest-InfoCentris660AV ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockEgret)|\ ; Has Egret clock/pram (ADBEgret)|\ ; Egret ADB (Cuda)|\ ; Cuda firmware (SoundHasSoundIn)|\ ; Has Sound In (Sound16Bit)|\ ; Has 16-bit hardware (SoundStereoIn)|\ ; has stereo sound input (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1 << SoundLineLevel)|\ ; requires line level on sound input port (1< dc.l \ ; Flags for valid ext feature flags 32-63 (1< dc.l 0 ; no Power Manager primitives dc.l PSCIntTbl-InfoCentris660AV ; interrupt handlers table dc.l 0 ; internal modem manager dc.w cpuIDHiEnd|\ ; CPU ID: hi end design center cpuIDinMMC|\ ; CPU ID: Extended ID in MMC. $30 ; CPU ID: Cyclone Family is ID $30 dc.w 0 ; spare dc.l IconInfoQFC-InfoCentris660AV ; offset to ICON info •• fake for now •• ; 33 MHz Tempest product table ALIGN 4 InfoTempest33 dc.l CycloneDecoderTable-InfoTempest33 ; offset to decoder info (Same as Cyclone) dc.l RamInfoTempest-InfoTempest33 ; offset to ram bank info dc.l VideoInfoTempest-InfoTempest33 ; offset to video info (Same as Cyclone) dc.l NuBusInfoTempest-InfoTempest33 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockEgret)|\ ; Has Egret clock/pram (ADBEgret)|\ ; Egret ADB (Cuda)|\ ; Cuda firmware (SoundHasSoundIn)|\ ; Has Sound In (Sound16Bit)|\ ; Has 16-bit hardware (SoundStereoIn)|\ ; has stereo sound input (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1 << SoundLineLevel)|\ ; requires line level on sound input port (1< dc.l \ ; Flags for valid ext feature flags 32-63 (1< dc.l 0 ; no Power Manager primitives dc.l PSCIntTbl-InfoTempest33 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w cpuIDHiEnd|\ ; CPU ID: hi end design center cpuIDinMMC|\ ; CPU ID: Extended ID in MMC. $30 ; CPU ID: Cyclone Family is ID $30 dc.w 0 ; spare dc.l IconInfoQFC-InfoTempest33 ; offset to ICON info •• fake for now •• ENDIF ; hasYMCA IF hasHMC THEN ; ; ProductInfo table for PDM IMPORT SndCntlPDM, AMICIntTbl ; ALIGN 4 InfoPDM ; PDM Family dc.l HMCDecoderTable-InfoPDM ; offset to decoder info dc.l RamInfoPDM-InfoPDM ; offset to ram bank info dc.l VideoInfoPDM-InfoPDM ; PDM built in video dc.l NuBusInfoPDM-InfoPDM ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockEgret)|\ ; Has Egret clock/pram (ADBEgret)|\ ; Egret ADB (Cuda)|\ ; Cuda firmware (SoundHasSoundIn)|\ ; Has Sound In (Sound16Bit)|\ ; Has 16-bit hardware (SoundStereoIn)|\ ; has stereo sound input (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< (1< dc.l 0 ; Flags for valid ext feature flags 64-95 dc.b $00,$00,$00,$00 ; Check VIA1 PA6, PA4, PA2, PA1 dc.b $00,$00,$00,$00 ; VIA1 PA6 = 1, PA4 = 0, PA2 = 0, PA1 = 0 dc.l VIA1InitPDM-InfoPDM ; VIA1 init info dc.l 0 ; no VIA2 init info dc.l SndCntlPDM-InfoPDM ; sound control vector table dc.l CudaClockPRAM-InfoPDM ; clock/PRAM vector table dc.l CudaADBTable-InfoPDM ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l AMICIntTbl-InfoPDM ; interrupt handlers table dc.l 0 ; internal modem manager dc.w (cpuIDRISC)|\ ; CPU ID: RISC design center (cpuIDinReg)|\ ; CPU ID: ID only in Reg $3011 ; CPU ID: PDM ID is $3011 dc.w 0 ; spare dc.l IconInfoQFC-InfoPDM ; offset to ICON info ALIGN 4 InfoPDMcoldFusion ; Cold Fusion SAM dc.l HMCcfDecoderTable-InfoPDMcoldfusion ; offset to decoder info dc.l RamInfoPDM-InfoPDMcoldfusion ; offset to ram bank info dc.l VideoInfoPDM-InfoPDMcoldfusion ; PDM built in video dc.l NuBusInfoCFusion-InfoPDMcoldfusion ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockEgret)|\ ; Has Egret clock/pram (ADBEgret)|\ ; Egret ADB (Cuda)|\ ; Cuda firmware (SoundHasSoundIn)|\ ; Has Sound In (Sound16Bit)|\ ; Has 16-bit hardware (SoundStereoIn)|\ ; has stereo sound input (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1 << SoundLineLevel)|\ ; requires line level on sound input port (1< dc.l 0 ; Flags for valid ext feature flags 64-95 dc.b $00,$00,$00,$00 ; Check VIA1 PA6, PA4, PA2, PA1 dc.b $00,$00,$00,$00 ; VIA1 PA6 = 1, PA4 = 0, PA2 = 0, PA1 = 0 dc.l VIA1InitPDM-InfoPDMcoldfusion ; VIA1 init info dc.l 0 ; no VIA2 init info dc.l SndCntlPDM-InfoPDMcoldfusion ; sound control vector table dc.l CudaClockPRAM-InfoPDMcoldfusion ; clock/PRAM vector table dc.l CudaADBTable-InfoPDMcoldfusion ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l AMICIntTbl-InfoPDMcoldfusion ; interrupt handlers table dc.l 0 ; internal modem manager dc.w (cpuIDRISC)|\ ; CPU ID: RISC design center (cpuIDinReg)|\ ; CPU ID: ID only in Reg $3013 ; CPU ID: ColdFusion ID is $3013 dc.w 0 ; spare dc.l IconInfoFrigidaire-InfoPDMcoldfusion; offset to ICON info ALIGN 4 InfoPDMCarlSagan ; Carl Sagan dc.l HMCDecoderTable-InfoPDMCarlSagan ; offset to decoder info dc.l RamInfoPDM-InfoPDMCarlSagan ; offset to ram bank info dc.l VideoInfoPDM-InfoPDMCarlSagan ; PDM built in video dc.l NuBusInfoCFusion-InfoPDMCarlSagan ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockEgret)|\ ; Has Egret clock/pram (ADBEgret)|\ ; Egret ADB (Cuda)|\ ; Cuda firmware (SoundHasSoundIn)|\ ; Has Sound In (Sound16Bit)|\ ; Has 16-bit hardware (SoundStereoIn)|\ ; has stereo sound input (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1 << SoundLineLevel)|\ ; requires line level on sound input port (1< dc.l 0 ; Flags for valid ext feature flags 64-95 dc.b $00,$00,$00,$00 ; Check VIA1 PA6, PA4, PA2, PA1 dc.b $00,$00,$00,$00 ; VIA1 PA6 = 1, PA4 = 0, PA2 = 0, PA1 = 0 dc.l VIA1InitPDM-InfoPDMCarlSagan ; VIA1 init info dc.l 0 ; no VIA2 init info dc.l SndCntlPDM-InfoPDMCarlSagan ; sound control vector table dc.l CudaClockPRAM-InfoPDMCarlSagan ; clock/PRAM vector table dc.l CudaADBTable-InfoPDMCarlSagan ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l AMICIntTbl-InfoPDMCarlSagan ; interrupt handlers table dc.l 0 ; internal modem manager dc.w (cpuIDRISC)|\ ; CPU ID: RISC design center (cpuIDinReg)|\ ; CPU ID: ID only in Reg $3012 ; CPU ID: Carl Sagan ID is $3012 dc.w 0 ; spare dc.l IconInfoLego-InfoPDMCarlSagan ; offset to ICON info ENDIF ; hasHMC IF hasGrandCentral THEN IMPORT GCIntTbl, SndCntlPDM ; TNT bringup board product table ALIGN 4 InfoTNTProto1 dc.l HHeadDecoderTable-InfoTNTProto1 ; offset to decoder info for EVT4 dc.l RamInfoTNT-InfoTNTProto1 ; offset to ram bank info dc.l VideoInfoTNT-InfoTNTProto1 ; Pseudo TNT built in video dc.l NuBusInfoTNT-InfoTNTProto1 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.l CudaClockPRAM-InfoTNTProto1 ; clock/PRAM vector table dc.l CudaADBTable-InfoTNTProto1 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l GCIntTbl-InfoTNTProto1 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w cpuIDHiEnd|\ ; CPU ID: hi end design center (cpuIDinReg)|\ ; CPU ID: ID only in Reg $3020 ; CPU ID: PDM ID is $3011 dc.w 0 ; spare dc.l IconInfoFrigidaire-InfoTNTProto1 ; offset to ICON info ENDIF ; {hasGrandCentral} ;_______________________________________________________________________ ; ; ••• The following applies only to older CPUs that do not support the ; ••• CPUID register identification scheme. ; ; The tables below figure out which logic board we are running on. Some VIA bits ; have been dedicated to this task starting with the Mac II. On other machines, ; we need to be more clever to determine which board it is. ; ; For 020/030 based machines, the VIA bits are used. For the Mac II, IIx, IIcx and ; SE30 machines, the ID bits are PA6 on VIA1 aand PB3 on VIA2. Note that on the ; Mac II, PB3 on VIA 2 is normally an output that controls the MMU, but when read as an ; input it is pulled high internal to the VIA. ; ; PA6 PB3 machine ; ; 0 0 Mac IIx ; 0 1 Mac II ; 1 0 Mac SE 30 ; 1 1 Mac IIcx ; ; For newer machines, Via 1 port A has four bits dedicated to a logic board ID. These bits ; are defined as follows: ; ; PA6 PA4 PA2 PA1 machine <5.0> ; 1 1 1 1 Aurora 25MHz, CX package IIci ; 1 1 1 0 Elsie (was Foursquare) LC <12> ; 1 1 0 1 F19 IIfx ; 1 0 1 1 Aurora 16MHz, CX package ; 0 1 1 1 Erickson IIsi ; 0 0 1 1 Aurora 16MHz, SE package (reserved for future) ; 1 1 0 0 Eclipse Quadra900 <13> ; 1 0 0 0 Spike Quadra700 ; 0 1 0 1 TIM PowerBook170 <36> ; 0 1 1 0 Waimea <36> IF hasOrwell THEN IMPORT SndCntlQuadra700, SndCntlQuadra900, Quadra700IntTbl, Quadra900IntTbl ALIGN 4 InfoQuadra700 dc.l OrwellDecoderTable-InfoQuadra700 ; offset to decoder info dc.l RAMInfo2Bank4Meg-InfoQuadra700 ; offset to ram bank info dc.l VideoInfoDAFB-InfoQuadra700 ; DAFB built in video dc.l NuBusInfoQuadra700-InfoQuadra700 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.b ProductInfoVersion ; ProductInfo version BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid ASCExists,\ ; ASCAddr is valid (means Batman in this case) IWMExists,\ ; IWMAddr is valid SCSI96_1Exists,\ ; 1st SCSI96 is valid OrwellExists,\ ; OrwellAddr in valid CSS SONICExists,\ ; SONIC is valid DAFBExists ; has DAFB video BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockRTC)|\ ; Has RTC clock/PRAM (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (SoundStereoOut)|\ ; has stereo sound output (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< dc.l ViaADBTable-InfoQuadra700 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l Quadra700IntTbl-InfoQuadra700 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w 0 ; no CPU ID register dc.w 0 ; spare dc.l IconInfoQuadra700-InfoQuadra700 ; offset to ICON info ALIGN 4 InfoQuadra900 dc.l OrwellDecoderTable-InfoQuadra900 ; offset to decoder info dc.l RamInfoQuadra900-InfoQuadra900 ; offset to ram bank info dc.l VideoInfoDAFB-InfoQuadra900 ; DAFB built in video <58> dc.l NuBusInfoQuadra900-InfoQuadra900 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< (1< dc.b OrwellDecoder ; decoder kind dc.w $3FFF ; ROM85, New ROMs, Power Off ability. dc.b 2 ; default ROM Resource configuration dc.b ProductInfoVersion ; ProductInfo version BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid ASCExists,\ ; ASCAddr is valid (means Batman in this case) <47> SWIMIOPExists,\ ; SWIMIOPAddr is valid SCCIOPExists,\ ; SCCIOPAddr is valid OrwellExists,\ ; OrwellAddr is valid CSS SONICExists,\ ; SONIC is valid <58> SCSI96_1Exists,\ ; 1st SCSI96 is valid <58> PatchROMExists,\ ; Patch ROM is valid SCSI96_2Exists,\ ; 2nd SCSI96 is valid <58> DAFBExists ; has DAFB video <58> BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockEgret)|\ ; Has Egret clock/PRAM <58> (SoundHasSoundIn)|\ ; Has 8-bit mono sound input <58> (Caboose)|\ ; Caboose firmware (SoundStereoOut)|\ ; has stereo sound output <58> (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (KeyswCaboose)|\ ; has a Caboose-flavored power keyswitch <58> (1< dc.l 0 ; Flags for valid ext feature flags 32-63 dc.l 0 ; Flags for valid ext feature flags 64-95 dc.b $56,$00,$00,$00 ; Check VIA1 PA6, PA4, PA2, PA1 dc.b $50,$00,$00,$00 ; VIA1 PA6 = 1, PA4 = 1, PA2 = 0, PA1 = 0 dc.l VIA1InitQuadra900-InfoQuadra900 ; VIA1 init info dc.l VIA2InitQuadra900-InfoQuadra900 ; VIA2 init info dc.l SndCntlQuadra900-InfoQuadra900 ; sound control vector table dc.l EgretClockPRAM-InfoQuadra900 ; clock/PRAM vector table

dc.l QuadraADBTable-InfoQuadra900 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l Quadra900IntTbl-InfoQuadra900 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w 0 ; no CPU ID register dc.w 0 ; spare dc.l IconInfoQuadra900-InfoQuadra900 ; offset to ICON info ALIGN 4 InfoQuadra950 dc.l OrwellDecoderTable-InfoQuadra950 ; offset to decoder info dc.l RamInfoQuadra900-InfoQuadra950 ; offset to ram bank info dc.l VideoInfoDAFB-InfoQuadra950 ; DAFB built in video dc.l NuBusInfoQuadra900-InfoQuadra950 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.b ProductInfoVersion ; ProductInfo version BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid ASCExists,\ ; ASCAddr is valid (means Batman in this case) <47> SWIMIOPExists,\ ; SWIMIOPAddr is valid SCCIOPExists,\ ; SCCIOPAddr is valid OrwellExists,\ ; OrwellAddr is valid CSS SONICExists,\ ; SONIC is valid <58> SCSI96_1Exists,\ ; 1st SCSI96 is valid <58> SCSI96_2Exists,\ ; 2nd SCSI96 is valid <58> PatchROMExists,\ ; Patch ROM is valid DAFBExists ; has DAFB video <58> BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockEgret)|\ ; Has Egret clock/PRAM <58> (SoundHasSoundIn)|\ ; Has 8-bit mono sound input <58> (Caboose)|\ ; Caboose firmware (SoundStereoOut)|\ ; has stereo sound output <58> (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (KeyswCaboose)|\ ; has a Caboose-flavored power keyswitch <58> (1< dc.l 0 ; Flags for valid ext feature flags 32-63 dc.l 0 ; Flags for valid ext feature flags 64-95 dc.b $56,$00,$00,$00 ; Check VIA1 PA6, PA4, PA2, PA1 dc.b $10,$00,$00,$00 ; VIA1 PA6 = 0, PA4 = 1, PA2 = 0, PA1 = 0 dc.l VIA1InitQuadra900-InfoQuadra950 ; VIA1 init info dc.l VIA2InitQuadra900-InfoQuadra950 ; VIA2 init info dc.l SndCntlQuadra900-InfoQuadra950 ; sound control vector table dc.l EgretClockPRAM-InfoQuadra950 ; clock/PRAM vector table

dc.l QuadraADBTable-InfoQuadra950 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l Quadra900IntTbl-InfoQuadra950 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w 0 ; no CPU ID register dc.w 0 ; spare dc.l IconInfoQuadra900-InfoQuadra950 ; offset to ICON info ; ProductInfo table for 601 Smurf cards running in Quadra 700's IF forSmurf THEN ALIGN 4 InfoRiscQuadra700 ; dc.l OrwellDecoderTable-InfoRiscQuadra700; offset to decoder info dc.l RamInfoRiscQuadra-InfoRiscQuadra700 ; offset to ram bank info dc.l VideoInfoDAFB-InfoRiscQuadra700 ; DAFB built in video dc.l NuBusInfoQuadra700-InfoRiscQuadra700; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< CSS SCSI96_1Exists,\ ; 1st SCSI96 is valid SONICExists,\ ; SONIC is valid DAFBExists ; has DAFB video BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockRTC)|\ ; Has RTC clock/PRAM (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (SoundStereoOut)|\ ; has stereo sound output (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (ADBXcvr) ; Has transceiver ADB dc.l \ ; Flags for valid ext feature flags 32-63 (1< dc.l Quadra700IntTbl-InfoRiscQuadra700 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w (cpuIDRISC)|\ ; CPU ID: RISC design center $1235 ; CPU ID: Risc Card ID is $1234 dc.w 0 ; spare dc.l IconInfoQuadra700-InfoRiscQuadra700 ; offset to ICON info ; ProductInfo table for 601 Smurf cards running in Quadra 900's ALIGN 4 InfoRiscQuadra900 dc.l OrwellDecoderTable-InfoRiscQuadra900; offset to decoder info dc.l RamInfoRiscQuadra-InfoRiscQuadra900 ; offset to ram bank info dc.l VideoInfoDAFB-InfoRiscQuadra900 ; DAFB built in video dc.l NuBusInfoQuadra900-InfoRiscQuadra900; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.b ProductInfoVersion ; ProductInfo version BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid ASCExists,\ ; ASCAddr is valid (means Batman in this case) <47> SWIMIOPExists,\ ; SWIMIOPAddr is valid SCCIOPExists,\ ; SCCIOPAddr is valid OrwellExists,\ ; OrwellAddr is valid CSS SONICExists,\ ; SONIC is valid <58> SCSI96_1Exists,\ ; 1st SCSI96 is valid <58> SCSI96_2Exists,\ ; 2nd SCSI96 is valid <58> DAFBExists ; has DAFB video <58> BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockEgret)|\ ; Has Egret clock/PRAM <58> (SoundHasSoundIn)|\ ; Has 8-bit mono sound input <58> (Caboose)|\ ; Caboose firmware (SoundStereoOut)|\ ; has stereo sound output <58> (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (KeyswCaboose)|\ ; has a Caboose-flavored power keyswitch <58> (ADBIop) ; IOP ADB <58> dc.l \ ; Flags for valid ext feature flags 32-63 (1< dc.l EgretClockPRAM-InfoRiscQuadra900 ; clock/PRAM vector table

dc.l QuadraADBTable-InfoRiscQuadra900 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l Quadra900IntTbl-InfoRiscQuadra900 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w (cpuIDRISC)|\ ; CPU ID: RISC design center $1236 ; CPU ID: Risc Card ID is $1236 dc.w 0 ; spare dc.l IconInfoQuadra900-InfoRiscQuadra900 ; offset to ICON info ; ProductInfo table for 601 Smurf cards running in Quadra 950's ALIGN 4 InfoRiscQuadra950 dc.l OrwellDecoderTable-InfoRiscQuadra950; offset to decoder info dc.l RamInfoRiscQuadra-InfoRiscQuadra950 ; offset to ram bank info dc.l VideoInfoDAFB-InfoRiscQuadra950 ; DAFB built in video dc.l NuBusInfoQuadra900-InfoRiscQuadra950; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.b ProductInfoVersion ; ProductInfo version BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid ASCExists,\ ; ASCAddr is valid (means Batman in this case) <47> SWIMIOPExists,\ ; SWIMIOPAddr is valid SCCIOPExists,\ ; SCCIOPAddr is valid OrwellExists,\ ; OrwellAddr is valid CSS SONICExists,\ ; SONIC is valid <58> SCSI96_1Exists,\ ; 1st SCSI96 is valid <58> SCSI96_2Exists,\ ; 2nd SCSI96 is valid <58> DAFBExists ; has DAFB video <58> BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockEgret)|\ ; Has Egret clock/PRAM <58> (SoundHasSoundIn)|\ ; Has 8-bit mono sound input <58> (Caboose)|\ ; Caboose firmware (SoundStereoOut)|\ ; has stereo sound output <58> (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (KeyswCaboose)|\ ; has a Caboose-flavored power keyswitch <58> (ADBIop) ; IOP ADB <58> dc.l \ ; Flags for valid ext feature flags 32-63 (1< dc.l EgretClockPRAM-InfoRiscQuadra950 ; clock/PRAM vector table

dc.l QuadraADBTable-InfoRiscQuadra950 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l Quadra900IntTbl-InfoRiscQuadra950 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w (cpuIDRISC)|\ ; CPU ID: RISC design center $1237 ; CPU ID: Risc Card ID is $1237 dc.w 0 ; spare dc.l IconInfoQuadra900-InfoRiscQuadra950 ; offset to ICON info ENDIF ; {forSmurf} ENDIF ; {hasOrwell} IF forSTP601 THEN ; ProductInfo table STP Quadra 700's ALIGN 4 InfoSTPQuadra700 dc.l OrwellDecoderTable-InfoSTPQuadra700 ; offset to decoder info dc.l RAMInfo2Bank4Meg-InfoSTPQuadra700 ; offset to ram bank info dc.l VideoInfoDAFB-InfoSTPQuadra700 ; DAFB built in video dc.l NuBusInfoQuadra700-InfoSTPQuadra700 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.b ProductInfoVersion ; ProductInfo version BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid ASCExists,\ ; ASCAddr is valid (means Batman in this case) IWMExists,\ ; IWMAddr is valid SCSI96_1Exists,\ ; 1st SCSI96 is valid OrwellExists,\ ; OrwellAddr in valid CSS SONICExists,\ ; SONIC is valid DAFBExists ; has DAFB video BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockRTC)|\ ; Has RTC clock/PRAM (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (SoundStereoOut)|\ ; has stereo sound output (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< dc.l ViaADBTable-InfoSTPQuadra700 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l Quadra700IntTbl-InfoSTPQuadra700 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w 0 ; no CPU ID register dc.w 0 ; spare dc.l IconInfoQuadra700-InfoSTPQuadra700 ; offset to ICON info ; ProductInfo table STP Quadra 900's ALIGN 4 InfoSTPQuadra900 dc.l OrwellDecoderTable-InfoSTPQuadra900 ; offset to decoder info dc.l RamInfoQuadra900-InfoSTPQuadra900 ; offset to ram bank info dc.l VideoInfoDAFB-InfoSTPQuadra900 ; DAFB built in video <58> dc.l NuBusInfoQuadra900-InfoSTPQuadra900 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.b ProductInfoVersion ; ProductInfo version BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid ASCExists,\ ; ASCAddr is valid (means Batman in this case) <47> SWIMIOPExists,\ ; SWIMIOPAddr is valid SCCIOPExists,\ ; SCCIOPAddr is valid OrwellExists,\ ; OrwellAddr is valid CSS SONICExists,\ ; SONIC is valid <58> SCSI96_1Exists,\ ; 1st SCSI96 is valid <58> PatchROMExists,\ ; Patch ROM is valid SCSI96_2Exists,\ ; 2nd SCSI96 is valid <58> DAFBExists ; has DAFB video <58> BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockEgret)|\ ; Has Egret clock/PRAM <58> (SoundHasSoundIn)|\ ; Has 8-bit mono sound input <58> (Caboose)|\ ; Caboose firmware (SoundStereoOut)|\ ; has stereo sound output <58> (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (KeyswCaboose)|\ ; has a Caboose-flavored power keyswitch <58> (1< dc.l \ ; Flags for valid ext feature flags 32-63 (1< dc.l EgretClockPRAM-InfoSTPQuadra900 ; clock/PRAM vector table

dc.l QuadraADBTable-InfoSTPQuadra900 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l Quadra900IntTbl-InfoSTPQuadra900 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w 0 ; no CPU ID register dc.w 0 ; spare dc.l IconInfoQuadra900-InfoSTPQuadra900 ; offset to ICON info ; ProductInfo table STP Quadra 950's ALIGN 4 InfoSTPQuadra950 dc.l OrwellDecoderTable-InfoSTPQuadra950 ; offset to decoder info dc.l RamInfoQuadra900-InfoSTPQuadra950 ; offset to ram bank info dc.l VideoInfoDAFB-InfoSTPQuadra950 ; DAFB built in video dc.l NuBusInfoQuadra900-InfoSTPQuadra950 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.b ProductInfoVersion ; ProductInfo version BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid ASCExists,\ ; ASCAddr is valid (means Batman in this case) <47> SWIMIOPExists,\ ; SWIMIOPAddr is valid SCCIOPExists,\ ; SCCIOPAddr is valid OrwellExists,\ ; OrwellAddr is valid CSS SONICExists,\ ; SONIC is valid <58> SCSI96_1Exists,\ ; 1st SCSI96 is valid <58> SCSI96_2Exists,\ ; 2nd SCSI96 is valid <58> PatchROMExists,\ ; Patch ROM is valid DAFBExists ; has DAFB video <58> BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockEgret)|\ ; Has Egret clock/PRAM <58> (SoundHasSoundIn)|\ ; Has 8-bit mono sound input <58> (Caboose)|\ ; Caboose firmware (SoundStereoOut)|\ ; has stereo sound output <58> (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (KeyswCaboose)|\ ; has a Caboose-flavored power keyswitch <58> (1< dc.l \ ; Flags for valid ext feature flags 32-63 (1< dc.l EgretClockPRAM-InfoSTPQuadra950 ; clock/PRAM vector table

dc.l QuadraADBTable-InfoSTPQuadra950 ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l Quadra900IntTbl-InfoSTPQuadra950 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w 0 ; no CPU ID register dc.w 0 ; spare dc.l IconInfoQuadra900-InfoSTPQuadra950 ; offset to ICON info ENDIF ; {forSTP601} IF hasJaws THEN IMPORT SndCntlPB170, JawsPmgrPrims, JawsIntTbl ALIGN 4 InfoPowerBook170 ; table for PowerBook 140 and 170 <8> dc.l JAWSTable-InfoPowerBook170 ; offset to decoder info dc.l RAMInfoJaws-InfoPowerBook170 ; offset to ram bank info dc.l VideoInfoJaws-InfoPowerBook170 ; offset to video info dc.l NuBusInfoJaws-InfoPowerBook170 ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< (ADBPwrMgr)|\ ; PowerManager ADB <5> (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (SoundStereoOut)|\ ; has stereo sound output (SoundStereoMixing)|\ ; has stereo mixing (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< djw dc.l RTCClockPRAM-InfoPowerBook170 ; clock/PRAM vector table

dc.l PMGRADBTable-InfoPowerBook170 ; ADB/DebugUtil vector table dc.l JawsPmgrPrims-InfoPowerBook170 ; Power Manager primitives dc.l JawsIntTbl-InfoPowerBook170 ; interrupt handlers table dc.l 0 ; internal modem manager dc.w 0 ; no CPU ID register dc.w 0 ; spare dc.l IconInfoTIM-InfoPowerBook170 ; offset to ICON info ALIGN 4 InfoJAWSUnknown dc.l JAWSTable-InfoJAWSUnknown ; offset to decoder info <25> dc.l RamInfoJAWS-InfoJAWSUnknown ; offset to ram bank info dc.l VideoInfoJaws-InfoJAWSUnknown ; offset to video info dc.l NuBusInfoJaws-InfoJAWSUnknown ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.b ProductInfoVersion ; ProductInfo version BitVector32 ; use default bases for this decoder BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l 0 ; use default external features for this decoder dc.l 0 ; Flags for valid ext feature flags 32-63 dc.l 0 ; Flags for valid ext feature flags 64-95 dc.b $00,$00,$00,$00 ; don't check any VIA bits dc.b $00,$00,$00,$00 ; anything with this decoder matches dc.l VIA1InitJaws-InfoJAWSUnknown ; VIA1 init info dc.l VIA2InitJaws-InfoJAWSUnknown ; VIA2 init info dc.l 0 ; no sound control vector table dc.l RTCClockPRAM-InfoJAWSUnknown ; clock/PRAM vector table

dc.l PMGRADBTable-InfoJAWSUnknown ; ADB/DebugUtil vector table dc.l JawsPmgrPrims-InfoJAWSUnknown ; Power Manager primitives dc.l JawsIntTbl-InfoJAWSUnknown ; interrupt handlers table dc.l 0 ; internal modem manager dc.w 0 ; no CPU ID register dc.w 0 ; no CPU ID register dc.l IconInfoTIM-InfoJAWSUnknown ; offset to ICON info ENDIF ; {hasJaws} IF hasVISADecoder THEN IMPORT SndCntlLC, RBVEgretIntTbl ALIGN 4 InfoMacLC dc.l VISADecoderTable-InfoMacLC ; offset to decoder info dc.l RamInfoVISA-InfoMacLC ; offset to ram bank info dc.l VideoInfoVISA-InfoMacLC ; offset to video info dc.l NuBusInfoVISA-InfoMacLC ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< (1< dc.b VISADecoder ; decoder kind dc.w $3FFF ; ROM85, New ROMs, no Power Off ability. dc.b 4 ; default ROM Resource configuration dc.b ProductInfoVersion ; ProductInfo version BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid IWMExists,\ ; IWMAddr is valid SCSIExists,\ ; SCSIAddr is valid SCSIDackExists,\ ; SCSIDackAddr is valid SCSIHskExists,\ ; SCSIHskAddr is valid ASCExists,\ ; ASCAddr is valid RBVExists,\ ; RBVAddr is valid VDACExists ; VDACAddr is valid BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockEgret)|\ ; Has Egret clock/pram (ADBEgret)|\ ; Egret ADB (Egret8)|\ ; Egret Eight firmware (1<<15> (SoundHasSoundIn)|\ ; Has 8-bit mono sound input <23> (1< (1< dc.l 0 ; Flags for valid ext feature flags 32-63 dc.l 0 ; Flags for valid ext feature flags 64-95 dc.b $56,$00,$00,$00 ; Check VIA1 PA6, PA4, PA2, PA1 dc.b $54,$00,$00,$00 ; VIA1 PA6 = 1, PA4 = 1, PA2 = 1, PA1 = 0 dc.l VIA1InitMacLC-InfoMacLC ; VIA1 init info dc.l 0 ; no VIA2 init info dc.l SndCntlLC-InfoMacLC ; sound control vector table dc.l EgretClockPRAM-InfoMacLC ; clock/PRAM vector table

dc.l EgretADBTable-InfoMacLC ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l RBVEgretIntTbl-InfoMacLC ; interrupt handlers table dc.l 0 ; internal modem manager dc.w 0 ; no CPU ID register dc.w 0 ; spare dc.l IconInfoMacLC-InfoMacLC ; offset to ICON info ALIGN 4 InfoVISAUnknown dc.l VISADecoderTable-InfoVISAUnknown ; offset to decoder info dc.l RamInfoVISA-InfoVISAUnknown ; offset to ram bank info dc.l VideoInfoVISA-InfoVISAUnknown ; offset to video info dc.l NuBusInfoVISA-InfoVISAUnknown ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.l EgretADBTable-InfoVISAUnknown ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l RBVEgretIntTbl-InfoVISAUnknown ; interrupt handlers table dc.l 0 ; internal modem manager dc.w 0 ; no CPU ID register dc.w 0 ; spare dc.l IconInfoMacLC-InfoVISAUnknown ; offset to ICON info ENDIF ; {hasVISADecoder} IMPORT VIAIntTbl InfoUnknownUnknown dc.l UnknownDecoderTable-InfoUnknownUnknown ; offset to decoder info dc.l 0 ; no ram bank info dc.l 0 ; no built in video dc.l 0 ; no NuBus info dc.w 0 ; hwCfgFlags dc.b BoxUnknown ; product kind dc.b UnknownDecoder ; decoder kind dc.w $FFFF ; ROM85 dc.b 1 ; default ROM Resource configuration <2.1> dc.b ProductInfoVersion ; ProductInfo version BitVector32 ; use default bases for this decoder BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l 0 ; use default external features for this decoder dc.l 0 ; Flags for valid ext feature flags 32-63 dc.l 0 ; Flags for valid ext feature flags 64-95 dc.b $00,$00,$00,$00 ; don't check any VIA bits dc.b $00,$00,$00,$00 ; anything with this decoder matches dc.l 0 ; no VIA1 to init dc.l 0 ; no VIA2 to init dc.l 0 ; no sound control vector table dc.l RTCClockPRAM-InfoUnknownUnknown ; clock/PRAM vector table

dc.l 0 ; no ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l VIAIntTbl-InfoUnknownUnknown ; interrupt handlers table dc.l 0 ; internal modem manager dc.w 0 ; no CPU ID register dc.w 0 ; spare dc.l 0 ; no Icon info ;——————————————————————————————————————————————————————————————————————————————————————————————— ; ; Decoder Tables ; ;——————————————————————————————————————————————————————————————————————————————————————————————— ALIGN 16 IF hasPratt THEN ;----------------------------------------------------------------------------------------- ; Pratt Decoder ;----------------------------------------------------------------------------------------- BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid IWMExists,\ ; IWMAddr is valid SCSIExists,\ ; SCSIAddr is valid SCSIDackExists,\ ; SCSIDackAddr is valid SCSIHskExists,\ ; SCSIHskAddr is valid VIA2Exists,\ ; VIA2Addr is valid ASCExists,\ ; ASCAddr is valid VDACExists,\ ; VDAC (CSC) is valid SONICExists ; SONIC is valid BitVector32 \ ; Flags for valid base addresses 32-63 SingerExists,\ ; PrattAddr is valid PrattExists ; SingerAddr is valid BitVector32 ; Default valid addresses 64-95 dc.l \ ; Default ext features 0-31 (ADBPwrMgr)|\ ; PMGR ADB (ClockPwrMgr)|\ ; PMGR clock/pram (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (Sound16Bit)|\ ; has 16-bit hardware (SoundStereoOut)|\ ; has stereo sound output (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< ;----------------------------------------------------------------------------------------- ; HMC Decoder (PDM) ;----------------------------------------------------------------------------------------- BitVector32 \ ; Default valid addresses 0-31 ROMExists,\ ; ROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid RBVExists,\ ; RBVAddr is valid SCCRdExists,\ ; SCCRdAddr may be valid SCCWrExists,\ ; SCCWrAddr may be valid ASCExists,\ ; ASC isn't valid, but say it is SCSI96_1Exists ; 1st SCSI96 is valid BitVector32 \ ; Default valid addresses 32-63 AwacsExists,\ ; AwacsAddr exists MaceExists, \ ; MACE exists AMICExists,\ ; AMIC DMA IO controller exists SWIM3Exists,\ ; SWIM3 DMA floppy controller exists BartExists ; BART (NuBus controller) may exist BitVector32 ; Default valid addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockEgret)|\ ; Has Egret clock/pram (ADBEgret)|\ ; Egret ADB (Cuda)|\ ; Cuda firmware (Sound16Bit)|\ ; Has 16-bit mono/stereo sound input (SoundStereoOut)|\ ; has stereo sound output (1< dc.l $50F14000 ; Base of AWACS dc.l $00000000 ; Base of Civic dc.l $00000000 ; Base of Sebastian dc.l $F0000000 ; Base of BART ;----------------------------------------------------------------------------------------- ; HMC Decoder (ColdFusion - differs from PDM only in SCSI & soft power) ;----------------------------------------------------------------------------------------- BitVector32 \ ; Default valid addresses 0-31 ROMExists,\ ; ROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid RBVExists,\ ; RBVAddr is valid SCCRdExists,\ ; SCCRdAddr may be valid SCCWrExists,\ ; SCCWrAddr may be valid ASCExists,\ ; ASC isn't valid, but say it is SCSI96_1Exists,\ ; Internal 53CF96 is valid SCSI96_2Exists ; External 53C96 (curio) is valid BitVector32 \ ; Default valid addresses 32-63 AwacsExists,\ ; AwacsAddr exists MaceExists, \ ; MACE exists AMICExists,\ ; AMIC DMA IO controller exists SWIM3Exists,\ ; SWIM3 DMA floppy controller exists BartExists ; BART (NuBus controller) may exist BitVector32 ; Default valid addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockEgret)|\ ; Has Egret clock/pram (ADBEgret)|\ ; Egret ADB (Cuda)|\ ; Cuda firmware (Sound16Bit)|\ ; Has 16-bit mono/stereo sound input (SoundStereoOut)|\ ; has stereo sound output (1< dc.l $50F14000 ; Base of AWACS dc.l $00000000 ; Base of Civic dc.l $00000000 ; Base of Sebastian dc.l $F0000000 ; Base of BART ENDIF ; hasHMC IF hasOrwell THEN IMPORT CheckForOrwell ;----------------------------------------------------------------------------------------- ; Orwell Decoder ;----------------------------------------------------------------------------------------- IF forSmurf THEN BitVector32 \ ; Default valid addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid ASCExists,\ ; ASCAddr is valid SCCRdExists,\ ; SCCRdAddr may be valid SCCWrExists,\ ; SCCWrAddr may be valid SWIMIOPExists,\ ; SWIMIOPAddr may be valid SCCIOPExists,\ ; SCCIOPAddr may be valid SCSI96_1Exists,\ ; 1st SCSI96 is valid OrwellExists,\ ; Orwell MCA is valid CSS SONICExists,\ ; SONIC is valid on the Smurf Card DAFBExists ; DAFB video is valid BitVector32 ; Default valid addresses 32-63 BitVector32 ; Default valid addresses 64-95 dc.l 0 ; Default ext features 0-31 dc.l \ ; Flags for valid ext feature flags 32-63 (1< CSS dc.l $00000000 ; JAWS - unused dc.l $5000A000 ; Sonic - valid <45> dc.l $5000F000 ; 1st (internal) SCSI96 - valid <58> dc.l $5000F402 ; 2nd (external) SCSI96 - valid <58> dc.l $F9800000 ; DAFB - valid dc.l $00000000 ; unused 27 dc.l $00000000 ; ROMPhysAddr - unused dc.l $E0000000 ; PatchRomAddr - valid dc.l $00000000 ; unused 30 dc.l $00000000 ; unused 31 ELSE ; {forSmurf} BitVector32 \ ; Default valid addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid ASCExists,\ ; ASCAddr is valid SCCRdExists,\ ; SCCRdAddr may be valid SCCWrExists,\ ; SCCWrAddr may be valid SWIMIOPExists,\ ; SWIMIOPAddr may be valid SCCIOPExists,\ ; SCCIOPAddr may be valid SCSI96_1Exists,\ ; 1st SCSI96 is valid SCSI96_2Exists,\ ; 2nd SCSI96 may be valid OrwellExists,\ ; Orwell MCA is valid CSS SONICExists,\ ; SONIC is valid DAFBExists ; DAFB video is valid BitVector32 ; Default valid addresses 32-63 BitVector32 ; Default valid addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (1<<47> dc.l CheckForOrwell-OrwellDecoderTable ; routine to identify this map dc.b OrwellDecoder dc.b DecoderInfoVersion ; DecoderInfo version dcb.b 2,0 dc.l $50F0E000 ; Orwell Base Address OrwellDecoderTable ; Eclipse Memory Map <13> dc.l $40800000 ; ROM - valid dc.l $58000000 ; DiagROM - valid <16> dc.l $50F00000 ; VIA1 - valid dc.l $50F0C020 ; SCC read - valid <58> dc.l $50F0C020 ; SCC write - valid <58> dc.l $50F1E000 ; IWM - valid <58> dc.l $00000000 ; PWM - unused dc.l $00000000 ; Sound - unused dc.l $00000000 ; SCSI - unused dc.l $00000000 ; SCSIDack - unused dc.l $00000000 ; SCSIHsk - unused dc.l $50F02000 ; VIA2 - valid dc.l $50F14000 ; ASC - valid dc.l $00000000 ; RBV - unused dc.l $F9800000 ; VDAC - used <58> dc.l $00000000 ; SCSIDMA - valid <58> dc.l $50F1E020 ; SWIMIOP - valid dc.l $50F0C020 ; SCCIOP - valid dc.l $00000000 ; OSS - unused dc.l $00000000 ; FMC - unused dc.l $00000000 ; RPU - unused dc.l $5000E000 ; Orwell - valid CSS dc.l $00000000 ; JAWS - unused <25> dc.l $50F0A000 ; Sonic - valid <45> dc.l $50F0F000 ; 1st (internal) SCSI96 - valid <58> dc.l $50F0F402 ; 2nd (external) SCSI96 - valid <58> dc.l $F9800000 ; DAFB - valid <58> dc.l $00000000 ; unused 27 dc.l $00000000 ; ROMPhysAddr - unused dc.l $E0000000 ; PatchRomAddr - valid dc.l $00000000 ; unused 30 dc.l $00000000 ; unused 31 ENDIF ; {forSmurf} ENDIF ; {hasOrwell} IF hasJaws THEN IMPORT CheckForJAWS ;----------------------------------------------------------------------------------------- ; JAWS Decoder ;----------------------------------------------------------------------------------------- BitVector32 \ ; Default valid addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid IWMExists,\ ; IWMAddr is valid SCSIExists,\ ; SCSIAddr is valid SCSIDackExists,\ ; SCSIDackAddr is valid SCSIHskExists,\ ; SCSIHskAddr is valid VIA2Exists,\ ; VIA2Addr is valid ASCExists,\ ; ASCAddr is valid JAWSExists ; JAWS is valid BitVector32 ; Default valid addresses 32-63 BitVector32 ; Default valid addresses 64-95 dc.l \ ; Default ext features 0-31 (ClockNoPram)|\ ; has PowerManager clock, but not PwrMgr pram (ADBPwrMgr)|\ ; PowerManager ADB (1< dc.l $50F80000 ; JAWS - valid <25> dc.l $00000000 ; Sonic - unused <45> dc.l $00000000 ; 1st (internal) SCSI96 - unused dc.l $00000000 ; 2nd (external) SCSI96 - unused dc.l $00000000 ; DAFB - unused dc.l $00000000 ; unused 27 dc.l $00000000 ; ROMPhysAddr - unused dc.l $00000000 ; unused 29 dc.l $00000000 ; unused 30 dc.l $00000000 ; unused 31 ENDIF ; {hasJaws} IF hasNiagra THEN IMPORT CheckForNiagra ;----------------------------------------------------------------------------------------- ; Niagra Decoder ;----------------------------------------------------------------------------------------- BitVector32 \ ; Default valid addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid IWMExists,\ ; IWMAddr is valid SCSIExists,\ ; SCSIAddr is valid SCSIDackExists,\ ; SCSIDackAddr is valid SCSIHskExists,\ ; SCSIHskAddr is valid VIA2Exists,\ ; VIA2Addr is valid ASCExists,\ ; ASCAddr is valid JAWSExists ; JAWS is valid BitVector32 ; Default valid addresses 32-63 BitVector32 ; Default valid addresses 64-95 dc.l \ ; Default ext features 0-31 (ClockRTC)|\ ; RTC clock/PRAM (ADBPwrMgr)|\ ; PowerManager ADB (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< dc.l $00000000 ; SCSIDMA - unused dc.l $00000000 ; SWIMIOP - unused dc.l $00000000 ; SCCIOP - unused dc.l $00000000 ; OSS - unused dc.l $00000000 ; FMC - unused dc.l $00000000 ; RPU - unused dc.l $00000000 ; Orwell - unused dc.l $50F80000 ; JAWS - valid dc.l $00000000 ; Sonic - unused dc.l $00000000 ; 1st (internal) SCSI96 - unused dc.l $00000000 ; 2nd (external) SCSI96 - unused dc.l $00000000 ; DAFB - unused dc.l $00000000 ; unused 27 dc.l $00000000 ; ROMPhysAddr - unused dc.l $00000000 ; PatchROMAddr - unused dc.l $00000000 ; unused 30 dc.l $00000000 ; unused 31 ENDIF ; {hasNiagra} IF hasMSC THEN ;----------------------------------------------------------------------------------------- ; MSC Decoder ;----------------------------------------------------------------------------------------- BitVector32 \ ; Default valid addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid IWMExists,\ ; IWMAddr is valid
SCSIExists,\ ; SCSIAddr is valid SCSIDackExists,\ ; SCSIDackAddr is valid SCSIHskExists,\ ; SCSIHskAddr is valid ASCExists,\ ; ASCAddr is valid RBVExists,\ ; RBVAddr is valid VDACExists ; VDACAddr (GSC) is valid BitVector32 ; Default valid addresses 32-63 BitVector32 ; Default valid addresses 64-95 dc.l \ ; Default ext features 0-31 (ADBPwrMgr)|\ ; PMGR ADB (ClockPwrMgr)|\ ; PMGR clock/pram (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (1< dc.l 0 ; Default ext features 32-63 dc.l 0 ; Default ext features 64-95 dc.b $00,$00,$00,$00 ; no special VIA bits to avoid changing dc.l 0 ; no identify routine - supports CPU ID reg dc.b MSCDecoder dc.b DecoderInfoVersion ; DecoderInfo version dcb.b 3,0 dc.l $FFFFFFFF ; No Base Address for this decoder MSCTable IF ROMinRAM THEN ; dc.l $00400000 ; ROM - hacked • HACK 4 Meg ELSE ; dc.l $40800000 ; ROM - valid ENDIF ; dc.l $58000000 ; DiagROM - valid dc.l $50F00000 ; VIA1 - valid dc.l $50F04000 ; SCC read - valid dc.l $50F04000 ; SCC write - valid dc.l $50F16000 ; IWM - valid
dc.l $00000000 ; PWM - unused dc.l $00000000 ; Sound - unused dc.l $50F10000 ; SCSI - valid dc.l $50F12000 ; SCSIDack - valid dc.l $50F06000 ; SCSIHsk - valid dc.l $00000000 ; VIA2 - unused dc.l $50F14000 ; ASC - valid dc.l $50F26000 ; RBV - valid dc.l $50F20000 ; VDAC - valid (GSC) dc.l $00000000 ; SCSIDMA - unused dc.l $00000000 ; SWIMIOP - unused dc.l $00000000 ; SCCIOP - unused dc.l $00000000 ; OSS - unused dc.l $00000000 ; FMC - unused dc.l $00000000 ; RPU - unused dc.l $00000000 ; Orwell - unused dc.l $00000000 ; JAWS - unused dc.l $00000000 ; Sonic - unused dc.l $00000000 ; 1st (internal) SCSI96 - unused dc.l $00000000 ; 2nd (external) SCSI96 - unused dc.l $00000000 ; DAFB - unused dc.l $00000000 ; unused 27
dc.l $00000000 ; ROMPhysAddr - unused dc.l $00000000 ; PatchROM - unused dc.l $00000000 ; unused 30 dc.l $00000000 ; unused 31 ENDIF ; {hasMSC} IF hasSonora THEN ;----------------------------------------------------------------------------------------- ; Sonora Decoder ;----------------------------------------------------------------------------------------- BitVector32 \ ; Default valid addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid IWMExists,\ ; IWMAddr is valid (Actually, SWIM2) SCSIExists,\ ; SCSIAddr is valid SCSIDackExists,\ ; SCSIDackAddr is valid SCSIHskExists,\ ; SCSIHskAddr is valid ASCExists,\ ; ASCAddr is valid RBVExists,\ ; RBVAddr is valid VDACExists,\ ; VDACAddr is valid SONICExists,\ ; SONIC is valid PatchROMExists ; PatchRomAddr is valid BitVector32 ; Default valid addresses 32-63 BitVector32 ; Default valid addresses 64-95 dc.l \ ; Default ext features 0-31 (ClockEgret)|\ ; Has Egret clock/pram (ADBEgret)|\ ; Egret ADB (SoundHasSoundIn)|\ ; Has 8-bit mono sound input (SoundStereoOut)|\ ; has stereo sound output (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (1< dc.l 0 ; Default ext features 32-63 dc.l 0 ; Default ext features 64-95 dc.b $00,$00,$00,$00 ; no special VIA bits to avoid changing dc.l 0 ; no identify routine - supports CPU ID reg dc.b SonoraDecoder dc.b DecoderInfoVersion ; DecoderInfo version dcb.b 2,0 dc.l $FFFFFFFF ; No Base Address for this decoder SonoraTable dc.l $40800000 ; √ROM - valid ;••••••••••••••••••••••••••••• ; ; NOTE: Singapore has built their board testers using $50FC0000 as the DiagROM ; address. So, I need to change it here (since Vail is a Sonora machine). They will ; use the correct address in the future. ; ; dc.l $58000000 ; √DiagROM - valid dc.l $50FC0000 ; √DiagROM - valid ;••••••••••••••••••••••••••••• dc.l $50F00000 ; √VIA1 - valid dc.l $50F04000 ; √SCC read - valid dc.l $50F04000 ; √SCC write - valid dc.l $50F16000 ; √IWM - SWIM2 address dc.l $00000000 ; PWM - unused dc.l $00000000 ; Sound - unused dc.l $50F10000 ; √SCSI - valid dc.l $50F12000 ; √SCSIDack - valid dc.l $50F06000 ; √SCSIHsk - valid dc.l $00000000 ; VIA2 - unused dc.l $50F14000 ; √ASC - valid dc.l $50F26000 ; √RBV - valid dc.l $50F24000 ; √VDAC - valid dc.l $00000000 ; SCSIDMA - unused dc.l $00000000 ; SWIMIOP - unused dc.l $00000000 ; SCCIOP - unused dc.l $00000000 ; OSS - unused dc.l $00000000 ; FMC - unused dc.l $00000000 ; RPU - unused dc.l $00000000 ; Orwell - unused dc.l $00000000 ; JAWS - unused dc.l $50F0A000 ; √Sonic - valid dc.l $00000000 ; 1st (internal) SCSI96 - unused dc.l $00000000 ; 2nd (external) SCSI96 - unused dc.l $00000000 ; DAFB - unused dc.l $00000000 ; unused 27
dc.l $00000000 ; ROMPhysAddr - unused dc.l $5FF00000 ; √PatchROM - valid dc.l $00000000 ; unused 30 dc.l $00000000 ; unused 31 ENDIF ; {hasSonora} IF hasDJMEMC THEN ;----------------------------------------------------------------------------------------- ; djMEMC Decoder •••• This info is not up to date •••• ;----------------------------------------------------------------------------------------- IF forSmurf THEN ; BitVector32 \ ; Default valid addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid ASCExists,\ ; ASCAddr is valid IWMExists,\ ; IWMAddr is valid (Actually, SWIM2) SCCRdExists,\ ; SCCRdAddr may be valid SCCWrExists,\ ; SCCWrAddr may be valid SCSI96_1Exists,\ ; 1st SCSI96 is valid SONICExists,\ ; SONIC is valid DAFBExists ; DAFB video is valid BitVector32 ; Default valid addresses 32-63 BitVector32 ; Default valid addresses 64-95 dc.l \ ; Default ext features 0-31 SoundPlayAndRecord ; can Play and Record simultaneously ; (we better know what features we have) dc.l \ ; Flags for valid ext feature flags 32-63 (1< dc.l $00000000 ; JAWS - unused dc.l $5000A000 ; Sonic - valid dc.l $50010000 ; 1st (internal) SCSI96 - valid dc.l $00000000 ; 2nd (external) SCSI96 - unused dc.l $F9800000 ; DAFB - valid dc.l $00000000 ; unused 27 dc.l $00000000 ; ROMPhysAddr - unused dc.l $5F000000 ; PatchRomAddr - valid dc.l $00000000 ; unused 30 dc.l $00000000 ; unused 31 ELSE ; {forSmurf} BitVector32 \ ; Default valid addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid ASCExists,\ ; ASCAddr is valid SCCRdExists,\ ; SCCRdAddr may be valid SCCWrExists,\ ; SCCWrAddr may be valid SCSI96_1Exists,\ ; 1st SCSI96 is valid SONICExists,\ ; SONIC is valid DAFBExists ; DAFB video is valid BitVector32 ; Default valid addresses 32-63 BitVector32 ; Default valid addresses 64-95 dc.l \ ; Default ext features 0-31 (SoundPlayAndRecord )|\ ; can Play and Record simultaneously \ ; (we better know what features we have) (1< dc.l $00000000 ; JAWS - unused dc.l $50F0A000 ; Sonic - valid dc.l $50F10000 ; 1st (internal) SCSI96 - valid dc.l $00000000 ; 2nd (external) SCSI96 - unused dc.l $F9800000 ; DAFB - valid dc.l $00000000 ; unused 27 dc.l $00000000 ; ROMPhysAddr - unused dc.l $5FF00000 ; PatchRomAddr - valid dc.l $00000000 ; unused 30 dc.l $00000000 ; unused 31 ENDIF ; {forSmurf} ENDIF ; {hasDJMEMC} IF hasYMCA THEN ; this is really YMCA now ;----------------------------------------------------------------------------------------- ; YMCA Decoder ;----------------------------------------------------------------------------------------- BitVector32 \ ; Default valid addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid VIA2Exists,\ ; VIA2Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid NewAgeExists,\ ; NewAge is valid SCSI96_1Exists,\ ; SCSI 96 is valid PSCExists ; PSC DMA is valid BitVector32 \ ; Default valid addresses 32-63 DSPExists,\ ; DSP is valid MaceExists, \ ; MACE is valid MUNIExists, \ ; MUNI is valid CivicExists,\ ; Civic video is valid SebastianExists ; Sebastian CLUT DAC is valid BitVector32 ; Default valid addresses 64-95 dc.l 0 ; Default ext features 0-31 ; (we better know what features we have) dc.l 0 ; Default ext features 32-63 dc.l 0 ; Default ext features 64-95 dc.b $00,$30,$00,$00 ; special VIA bits to avoid changing, ; VIA1 PB4=1,PB5=1, for Cuda 1/27/92 gjs dc.l 0 ; no identify routine - supports CPU ID reg dc.b YMCADecoder dc.b DecoderInfoVersion ; DecoderInfo version dcb.b 2,0 dc.l $50F30400 ; YMCA Base Address CycloneDecoderTable IF ROMinRAM THEN ; dc.l $00400000 ; ROM - hacked • HACK 4 Meg ELSE ; dc.l $40800000 ; ROM - valid ENDIF ; dc.l $58000000 ; DiagROM - valid dc.l $50F00000 ; VIA1 - valid dc.l $50F04000 ; SCC read - valid dc.l $50F04000 ; SCC write - valid dc.l $00000000 ; IWM - unused dc.l $00000000 ; PWM - unused dc.l $00000000 ; Sound - unused dc.l $00000000 ; SCSI - unused dc.l $00000000 ; SCSIDack - unused dc.l $00000000 ; SCSIHsk - unused dc.l $50F02000 ; VIA2 - valid dc.l $00000000 ; ASC - unused dc.l $00000000 ; RBV - unused dc.l $00000000 ; VDAC - valid dc.l $00000000 ; SCSIDMA - unused dc.l $00000000 ; SWIMIOP - unused dc.l $00000000 ; SCCIOP - unused dc.l $00000000 ; OSS - unused dc.l $00000000 ; FMC - unused dc.l $00000000 ; RPU - unused dc.l $00000000 ; Unused21 - valid dc.l $00000000 ; JAWS - unused dc.l $00000000 ; Sonic - unused dc.l $50F18000 ; 1st (internal) SCSI96 - unused dc.l $00000000 ; 2nd (external) SCSI96 - unused dc.l $00000000 ; Civic - valid dc.l $50F31000 ; PSC DMA - valid dc.l $00000000 ; ROMPhysAddr - unused dc.l $00000000 ; PatchROMAddr - unused dc.l $50F2A000 ; NewAge - valid dc.l $00000000 ; Unused31 dc.l $00000000 ; Singer - unused dc.l $50F31000 ; DSP (really PSC's base address) - valid dc.l $50F1C000 ; MACE - valid dc.l $50F30000 ; MUNI - valid dc.l $00000000 ; AMIC DMA controller - unused dc.l $00000000 ; Pratt decoder - unused dc.l $00000000 ; SWIM3 chip - unused dc.l $00000000 ; AWACS chip - unused dc.l $50036000 ; Civic - valid dc.l $50F30800 ; Sebastian - valid ENDIF ; IF hasVISADecoder THEN IMPORT CheckForVISADecoder ;----------------------------------------------------------------------------------------- ; VISA Decoder ;----------------------------------------------------------------------------------------- BitVector32 \ ; Default valid addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid IWMExists,\ ; IWMAddr is valid SCSIExists,\ ; SCSIAddr is valid SCSIDackExists,\ ; SCSIDackAddr is valid SCSIHskExists,\ ; SCSIHskAddr is valid ASCExists,\ ; ASCAddr is valid RBVExists,\ ; RBVAddr is valid VDACExists ; VDACAddr is valid BitVector32 ; Default valid addresses 32-63 BitVector32 ; Default valid addresses 64-95 dc.l \ ; Default ext features 0-31 (ClockEgret)|\ ; Has Egret clock/pram (ADBEgret)|\ ; Has Egret ADB (1< dc.l $50F80000 ; DiagROM - valid <12><8> dc.l $50F00000 ; VIA1 - valid dc.l $50F04000 ; SCC read - valid dc.l $50F04000 ; SCC write - valid dc.l $50F16000 ; IWM - valid dc.l $00000000 ; PWM - unused dc.l $00000000 ; Sound - unused dc.l $50F10000 ; SCSI - valid dc.l $50F12000 ; SCSIDack - valid dc.l $50F06000 ; SCSIHsk - valid dc.l $00000000 ; VIA2 - unused dc.l $50F14000 ; ASC - valid dc.l $50F26000 ; RBV - valid dc.l $50F24000 ; VDAC - valid dc.l $00000000 ; SCSIDMA - unused dc.l $00000000 ; SWIMIOP - unused dc.l $00000000 ; SCCIOP - unused dc.l $00000000 ; OSS - unused dc.l $00000000 ; FMC - unused dc.l $00000000 ; RPU - unused dc.l $00000000 ; unused 21 dc.l $00000000 ; unused 22 dc.l $00000000 ; unused 23 dc.l $00000000 ; 1st (internal) SCSI96 - unused dc.l $00000000 ; 2nd (external) SCSI96 - unused dc.l $00000000 ; DAFB - unused dc.l $00000000 ; unused 27 dc.l $00A00000 ; ROMPhysAddr - unused dc.l $00000000 ; unused 29 dc.l $00000000 ; unused 30 dc.l $00000000 ; unused 31 ENDIF ; {hasVISADecoder} IF hasGrandCentral THEN ;----------------------------------------------------------------------------------------- ; HammerHead Decoder Table ;----------------------------------------------------------------------------------------- BitVector32 \ ; Default valid addresses 0-31 ROMExists,\ ; ROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid SCSI96_1Exists,\ ; SCSI 96 bus 1 is valid SCSI96_2Exists ; SCSI 96 bus 2 is valid BitVector32 \ ; Default valid addresses 32-63 MaceExists, \ ; MACE is valid SWIM3Exists,\ ; SWIM3 is valid AwacsExists,\ ; Awacs is valid GrandCentralExists ; Grand Central DMA is valid BitVector32 ; Default valid addresses 64-95 dc.l 0 ; Default ext features 0-31 ; (we better know what features we have) dc.l 0 ; Default ext features 32-63 dc.l 0 ; Default ext features 64-95 dc.b $00,$30,$00,$00 ; special VIA bits to avoid changing, ; VIA1 PB4=1, PB5=1, for Cuda dc.l 0 ; no identify routine -- use CPU ID register dc.b HHeadDecoder dc.b DecoderInfoVersion ; DecoderInfo version dcb.b 2,0 dc.l $F8000000 ; HammerHead Base Address HHeadDecoderTable dc.l $40800000 ; ROM - valid dc.l $00000000 ; DiagROM - unused dc.l $F3016000 ; VIA1 - valid dc.l $F3012000 ; SCC read - valid dc.l $F3012000 ; SCC write - valid dc.l $00000000 ; IWM - unused dc.l $00000000 ; PWM - unused dc.l $00000000 ; Sound - unused dc.l $00000000 ; SCSI - unused dc.l $00000000 ; SCSIDack - unused dc.l $00000000 ; SCSIHsk - unused dc.l $00000000 ; VIA2 - unused dc.l $00000000 ; ASC - unused dc.l $00000000 ; RBV - unused dc.l $00000000 ; VDAC - unused dc.l $00000000 ; SCSIDMA - unused dc.l $00000000 ; SWIMIOP - unused dc.l $00000000 ; SCCIOP - unused dc.l $00000000 ; OSS - unused dc.l $00000000 ; FMC - unused dc.l $00000000 ; RPU - unused dc.l $00000000 ; Unused21 - unused dc.l $00000000 ; JAWS - unused dc.l $00000000 ; Sonic - unused dc.l $F3018000 ; 1st (internal) SCSI96 - valid dc.l $F3010000 ; 2nd (external) SCSI96 - valid dc.l $00000000 ; Civic - unused dc.l $00000000 ; PSC DMA - unused dc.l $00000000 ; ROMPhysAddr - unused dc.l $00000000 ; PatchROMAddr - unused dc.l $00000000 ; NewAge - unused dc.l $00000000 ; Unused31 dc.l $00000000 ; Singer - unused dc.l $00000000 ; DSP (really PSC's base address) - unused dc.l $F3011000 ; MACE - valid dc.l $00000000 ; MUNI - unused dc.l $00000000 ; AMIC DMA controller - unused dc.l $00000000 ; Pratt decoder - unused dc.l $F3015000 ; SWIM3 chip - valid dc.l $F3014000 ; AWACS chip - valid dc.l $00000000 ; Civic - unused dc.l $00000000 ; Sebastian - unused dc.l $00000000 ; BART - unused dc.l $F3000000 ; Grand Central - valid ENDIF ; {hasGrandCentral} ;----------------------------------------------------------------------------------------- ; Unknown Decoder ;----------------------------------------------------------------------------------------- IMPORT CheckForUnknown BitVector32 ; Default valid addresses 0-31 BitVector32 ; Default valid addresses 32-63 BitVector32 ; Default valid addresses 64-95 dc.l 0 ; Default ext features 0-31 dc.l 0 ; Default ext features 32-63 dc.l 0 ; Default ext features 64-95 dc.b $00,$00,$00,$00 ; no special VIA bits to avoid changing dc.l CheckForUnknown-UnknownDecoderTable ; routine to identify this map dc.b UnknownDecoder dc.b DecoderInfoVersion ; DecoderInfo version dcb.b 2,0 dc.l $FFFFFFFF ; No Base Address for this decoder UnknownDecoderTable dc.l $00000000 ; ROM - unused dc.l $00000000 ; DiagROM - unused dc.l $00000000 ; VIA1 - unused dc.l $00000000 ; SCC read - unused dc.l $00000000 ; SCC write - unused dc.l $00000000 ; IWM - unused dc.l $00000000 ; PWM - unused dc.l $00000000 ; Sound - unused dc.l $00000000 ; SCSI - unused dc.l $00000000 ; SCSIDack - unused dc.l $00000000 ; SCSIHsk - unused dc.l $00000000 ; VIA2 - unused dc.l $00000000 ; ASC - unused dc.l $00000000 ; RBV - unused dc.l $00000000 ; VDAC - unused dc.l $00000000 ; SCSIDMA - unused dc.l $00000000 ; SWIMIOP - unused dc.l $00000000 ; SCCIOP - unused dc.l $00000000 ; OSS - unused dc.l $00000000 ; FMC - unused dc.l $00000000 ; RPU - unused dc.l $00000000 ; unused 21 dc.l $00000000 ; JAWS - unused <25> dc.l $00000000 ; Sonic - unused <45> dc.l $00000000 ; 1st (internal) SCSI96 - unused dc.l $00000000 ; 2nd (external) SCSI96 - unused dc.l $00000000 ; DAFB - unused dc.l $00000000 ; unused 27 dc.l $00000000 ; ROMPhysAddr - unused dc.l $00000000 ; unused 29 dc.l $00000000 ; unused 30 dc.l $00000000 ; unused 31 ;——————————————————————————————————————————————————————————————————————————————————————————————— ; RAM Info Tables ;——————————————————————————————————————————————————————————————————————————————————————————————— IF hasMDU THEN ; RAMInfo2Bank1Meg ; common 2 bank RAM model: dc.l $00100000 ; 1 Meg is smallest bank dc.l $00000000,$04000000 ; 64 Meg Bank A dc.l $04000000,$08000000 ; 64 Meg Bank B dc.l $FFFFFFFF ; end of table ENDIF ; IF hasOrwell | hasYMCA THEN ; RAMInfo2Bank4Meg ; common 2 bank RAM model: dc.l $00400000 ; 4 MB is smallest bank dc.l $00000000,$04000000 ; 64 MB Bank A dc.l $04000000,$08000000 ; 64 MB Bank B dc.l $FFFFFFFF ; end of table ENDIF ; IF hasVISADecoder THEN RamInfoVISA dc.l $00100000 ; 1 MB is smallest bank dc.l $00000000,$00800000 ; 8 MB Bank A dc.l $00800000,$00A00000 ; 2 MB Bank B dc.l $FFFFFFFF ; end of table RamInfoMacLCII ; Special case 4MB on PCB for LC II dc.l $00100000 ; 1 MB is smallest bank dc.l $00000000,$00400000 ; 4 MB Bank A dc.l $00400000,$00800000 ; 4 MB Bank B dc.l $FFFFFFFF ; end of table ENDIF ; {hasVISADecoder} IF hasOrwell THEN RamInfoQuadra900 ; Quadra 900 supports 4 banks of memory dc.l $00400000 ; 4 MB is smallest bank dc.l $00000000,$04000000 ; 64 MB Bank A dc.l $04000000,$08000000 ; 64 MB Bank B dc.l $08000000,$0C000000 ; 64 MB Bank C dc.l $0C000000,$10000000 ; 64 MB Bank D dc.l $FFFFFFFF ; End of table IF forSmurf THEN RamInfoRiscQuadra ; Smurf Card supports 1 12M bank of memory dc.l $00C00000 ; 12 MB is smallest bank dc.l $00000000,$00C00000 ; 12 MB Bank dc.l $FFFFFFFF ; End of table ENDIF ; {forSmurf} ENDIF ; {hasOrwell} IF hasJaws THEN RAMInfoJaws dc.l $00080000 ; 512K is smallest bank dc.l $00000000,$00200000 ; 2 Meg Bank A dc.l $00200000,$00400000 ; 2 Meg Bank B dc.l $00400000,$00600000 ; 2 Meg Bank C dc.l $00600000,$00800000 ; 2 Meg Bank D dc.l $FFFFFFFF ; End of table ENDIF ; {hasJaws} IF hasNiagra THEN RamInfoNiagra dc.l $00080000 ; 512K is smallest bank dc.l $00000000,$00200000 ; 2 Meg Bank 0 dc.l $00200000,$00400000 ; 2 Meg Bank 1 dc.l $00400000,$00600000 ; 2 Meg Bank 2 dc.l $00600000,$00800000 ; 2 Meg Bank 3 dc.l $00800000,$00A00000 ; 2 Meg Bank 4 dc.l $00A00000,$00C00000 ; 2 Meg Bank 5 dc.l $00C00000,$00E00000 ; 2 Meg Bank 6 dc.l $00E00000,$01000000 ; 2 Meg Bank 7 (16 Meg Total) dc.l $FFFFFFFF ; End of table ENDIF ; {hasNiagra} IF hasMSC THEN RAMInfoMSC dc.l $00200000 ; 2 Meg is smallest bank allowed dc.l $00000000,$00200000 ; 2 Meg Bank A dc.l $00200000,$00400000 ; 2 Meg Bank B dc.l $00400000,$00600000 ; 2 Meg Bank C dc.l $00600000,$00800000 ; 2 Meg Bank D dc.l $00800000,$01000000 ; 8 Meg Bank E dc.l $01000000,$01800000 ; 8 Meg Bank F dc.l $01800000,$02000000 ; 8 Meg Bank G dc.l $02000000,$02800000 ; 8 Meg Bank H dc.l $FFFFFFFF ; end of table ENDIF ; {hasMSC} IF hasPratt THEN RAMInfoPratt dc.l $00200000 ; 2 Meg is smallest bank allowed dc.l $00000000,$00800000 ; 8 Meg Bank A dc.l $00800000,$01000000 ; 4 Meg Bank B dc.l $01000000,$01800000 ; 8 Meg Bank C dc.l $01800000,$02000000 ; 8 Meg Bank D dc.l $02000000,$02800000 ; 8 Meg Bank E dc.l $02800000,$03000000 ; 8 Meg Bank F dc.l $FFFFFFFF ; end of table ENDIF ; {hasPratt} IF hasPratt THEN EXPORT RamInfoPrattFlash RamInfoPrattFlash dc.l $00200000 ; 2 Meg is smallest bank allowed dc.l $00000000,$00800000 ; 8 Meg Bank A dc.l $00800000,$01000000 ; 8 Meg Bank B dc.l $01000000,$01800000 ; 8 Meg Bank C dc.l $01800000,$02000000 ; 8 Meg Bank D dc.l $FFFFFFFF ; end of table ENDIF ; {hasPratt} IF hasSonora THEN RamInfoVail dc.l $00100000 ; 1 Meg is smallest bank allowed dc.l $00000000,$01000000 ; 16 Meg Bank A/0 dc.l $01000000,$02000000 ; 16 Meg Bank B/1 dc.l $02000000,$03000000 ; 16 Meg Bank C/2 dc.l $03000000,$04000000 ; 16 Meg Bank D/3 dc.l $04000000,$05000000 ; 16 Meg Bank E/4 dc.l $FFFFFFFF ; end of table ENDIF ; {hasSonora} IF hasDJMEMC THEN RamInfoDJMEMC dc.l $00400000 ; 4 Meg is smallest bank allowed dc.l $00000000,$04000000 ; 64 Meg Bank 0 (built in) dc.l $04000000,$08000000 ; 64 Meg Bank 1 (built in) dc.l $08000000,$0C000000 ; 64 Meg Bank 2 (SIMM 0A) socket 0 dc.l $0C000000,$10000000 ; 64 Meg Bank 3 (SIMM 1A) dc.l $10000000,$14000000 ; 64 Meg Bank 4 (SIMM 0B) socket 1 dc.l $14000000,$18000000 ; 64 Meg Bank 5 (SIMM 1B) dc.l $18000000,$1C000000 ; 64 Meg Bank 6 (SIMM 2A) socket 2 dc.l $1C000000,$20000000 ; 64 Meg Bank 7 (SIMM 3A) dc.l $53616D42 ; ('SamB') End of 1st half table (Sizebanks can ; only handle 8 banks. So we must break the sizing dc.l $00400000 ; into two parts.) dc.l $20000000,$24000000 ; 64 Meg Bank 8 (SIMM 2B) socket 3 dc.l $24000000,$28000000 ; 64 Meg Bank 9 (SIMM 3B) 640 Meg! Yeah! Can you say dc.l $FFFFFFFF ; end of table long RAM test?!! IF forSmurf THEN RamInfoRiscDJMEMC ; Smurf Card supports 1 12M bank of memory dc.l $00C00000 ; 12 MB is smallest bank dc.l $00000000,$00C00000 ; 12 MB Bank dc.l $FFFFFFFF ; End of table ENDIF ; {forSmurf} ENDIF ; {hasDJMEMC} IF hasYMCA THEN ; RamInfoCyclone ; Cyclone EVT4 supports 8 banks of memory dc.l $00100000 ; 1 MB is smallest bank dc.l $00000000,$01000000 ; 16 MB Bank 0 dc.l $01000000,$02000000 ; 16 MB Bank 1 dc.l $02000000,$03000000 ; 16 MB Bank 2 dc.l $03000000,$04000000 ; 16 MB Bank 3 dc.l $04000000,$05000000 ; 16 MB Bank 4 dc.l $05000000,$06000000 ; 16 MB Bank 5 dc.l $06000000,$07000000 ; 16 MB Bank 6 dc.l $07000000,$08000000 ; 16 MB Bank 7 dc.l $FFFFFFFF ; End of table RamInfoTempest ; Tempest supports 8 banks of memory ???? dc.l $00100000 ; 1 MB is smallest bank dc.l $00000000,$01000000 ; 16 MB Bank 0 dc.l $01000000,$02000000 ; 16 MB Bank 1 dc.l $02000000,$03000000 ; 16 MB Bank 2 dc.l $03000000,$04000000 ; 16 MB Bank 3 dc.l $04000000,$05000000 ; 16 MB Bank 4 dc.l $05000000,$06000000 ; 16 MB Bank 5 dc.l $06000000,$07000000 ; 16 MB Bank 6 dc.l $07000000,$08000000 ; 16 MB Bank 7 dc.l $FFFFFFFF ; End of table ENDIF ; IF hasHMC THEN RamInfoPDM ; PDM supports .. memory (Emulator maps all into 1 bank) dc.l $10000000 ; 256 MB dc.l $00000000,$10000000 ; dc.l $FFFFFFFF ; End of table ENDIF IF hasGrandCentral THEN RamInfoTNT ; PDM supports .. memory (Emulator maps all into 1 bank) dc.l $10000000 ; 256 MB dc.l $00000000,$10000000 ; dc.l $FFFFFFFF ; End of table ENDIF ; (hasGrandCentral) ;——————————————————————————————————————————————————————————————————————————————————————————————— ; Video Info Tables ;——————————————————————————————————————————————————————————————————————————————————————————————— IF hasVISADecoder THEN ; VideoInfoVISA dc.l $50F40000 ; Physical base address of screen dc.l $50F40000 ; Logical 32 bit base address of screen dc.l $50F40000 ; Logical 24 bit base address of screen dc.b $0B ; Slot number to use for PRAM storage dc.b SmPRAMTop+(($0B-$09)*sizeSPRAMRec) ; PRAM address for RBV slot zero dc.b sRsrcBFBasedDir ; Use the BoxFlag-based sRsrc directory directory. dc.b 0 ; Use boxFlag to identify board sRsrc. dc.w 0 ; ENDIF ; IF hasJaws THEN VideoInfoJaws dc.l $FEE08000 ; Physical base address of screen dc.l $FEE08000 ; Logical 32 bit base address of screen dc.l $FEE08000 ; Logical 24 bit base address of screen <39> dc.b $0B ; Slot number to use for PRAM storage <25> dc.b SmPRAMTop+(($0B-$09)*sizeSPRAMRec) ; PRAM address for slot zero <25> dc.b sRsrcBFBasedDir ; Use the BoxFlag-based sRsrc directory directory. dc.b 0 ; Use boxFlag to identify board sRsrc. dc.w 0 ; ENDIF ; {hasJaws} IF hasDAFB THEN VideoInfoDAFB ; dc.l $F9000000 ; Physical base address of screen dc.l $F9000000 ; Logical 32 bit base address of screen dc.l 0 ; no Logical 24 bit base address for DAFB dc.b $09 ; Slot number to use for PRAM storage dc.b SmPRAMTop+(($09-$09)*sizeSPRAMRec) ; PRAM address for slot zero dc.b sRsrcBFBasedDir ; Use the BoxFlag-based sRsrc directory directory. dc.b 0 ; Use boxFlag to identify board sRsrc. dc.w drHwDAFB ; Uses the DAFB video driver. ENDIF ; {hasDAFB} IF hasNiagra THEN VideoInfoNiagra dc.l $60040000 ; Physical base address of screen dc.l $60040000 ; Logical 32 bit base address of screen dc.l $00000000 ; Logical 24 bit base address of screen dc.b $0B ; Slot number to use for PRAM storage dc.b SmPRAMTop+(($0B-$09)*sizeSPRAMRec) ; PRAM address for slot zero dc.b sRsrcBFBasedDir ; Use the BoxFlag-based sRsrc directory directory. dc.b 0 ; Use boxFlag to identify board sRsrc. dc.w drHwGSC ; Uses the GSC (DBLite) video driver. ENDIF ; {hasNiagra} IF hasMSC THEN VideoInfoMSC dc.l $60000000 ; Physical base address of screen dc.l $60000000 ; Logical 32 bit base address of screen dc.l $00000000 ; Logical 24 bit base address of screen (always access in 32-bit mode) dc.b $0B ; Slot number to use for PRAM storage dc.b SmPRAMTop+(($0B-$09)*sizeSPRAMRec) ; PRAM address for slot zero dc.b sRsrcBFBasedDir ; Use the BoxFlag-based sRsrc directory directory. dc.b 0 ; Use boxFlag to identify board sRsrc. dc.w drHwGSC ; Uses the GSC (DBLite) video driver. VideoInfoEscher dc.l $60000000 ; Physical base address of screen dc.l $60000000 ; Logical 32 bit base address of screen dc.l 0 ; No logical 24-bit address. dc.b $0B ; Slot number to use for PRAM storage dc.b SmPRAMTop+(($0B-$09)*\ ; PRAM address for slot zero sizeSPRAMRec) dc.b sRsrcCSCDir ; Use the CSC sRsrc directory directory. dc.b sRsrc_BdEscher ; Use the Escher-family board sRsrc. dc.w drHwCSC ; Uses the CSC video driver. VideoInfoYeager dc.l $60000000 ; Physical base address of screen dc.l $60000000 ; Logical 32 bit base address of screen dc.l 0 ; No logical 24-bit address. dc.b $0B ; Slot number to use for PRAM storage dc.b SmPRAMTop+(($0B-$09)*\ ; PRAM address for slot zero sizeSPRAMRec) dc.b sRsrcCSCDir ; Use the CSC sRsrc directory directory. dc.b sRsrc_BdYeager ; Use the Yeager-family board sRsrc. dc.w drHwCSC ; Uses the CSC video driver. ENDIF ; {hasMSC} IF hasPratt THEN VideoInfoPratt dc.l $60000000 ; Physical base address of screen dc.l $60000000 ; Logical 32 bit base address of screen dc.l $00000000 ; No logical 24-bit base address? dc.b $0C ; Slot number to use for PRAM storage dc.b SmPRAMTop+(($0C-$09)*sizeSPRAMRec) ; PRAM address for slot zero dc.b sRsrcCSCDir ; Use the CSC sRsrc directory directory. dc.b sRsrc_BdBlackBird ; Use the BlackBird-family board sRsrc. dc.w drHwCSC ; Uses the CSC video driver. ENDIF ; {hasPratt} IF hasSonora THEN VideoInfoVail dc.l $60B00000 ; Physical base address of screen dc.l $60B00000 ; Logical 32-bit base address of screen dc.l $00B00000 ; Logical 24-bit base address of screen dc.b $0B ; Slot number to use for PRAM storage dc.b SmPRAMTop+(($0B-$09)*sizeSPRAMRec) ; PRAM address for slot zero dc.b sRsrcSonoraDir ; Use the Sonora sRsrc directory directory. dc.b sRsrc_BDVail ; Use the Vail-Family board sRsrc. dc.w drHwSonora ; Uses the Sonora video driver. ENDIF ; {hasSonora} IF hasYMCA THEN ; VideoInfoCyclone ; dc.l $50100000 ; Physical base address of screen dc.l $50100000 ; Logical 32 bit base address of screen dc.l 0 ; No logical 24-bit base address. dc.b $09 ; Slot number to use for PRAM storage dc.b SmPRAMTop+(($09-$09)*sizeSPRAMRec) ; PRAM address for slot zero dc.b sRsrcCivicDir ; Use the Civic sRsrc directory directory. dc.b sRsrc_BDCyclone ; Use the Cyclone-Family board sRsrc. dc.w drHwCivic ; Uses the Civic video driver. VideoInfoTempest ; dc.l $50100000 ; Physical base address of screen dc.l $50100000 ; Logical 32 bit base address of screen dc.l 0 ; No logical 24-bit base address. dc.b $09 ; Slot number to use for PRAM storage dc.b SmPRAMTop+(($09-$09)*sizeSPRAMRec) ; PRAM address for slot zero dc.b sRsrcCivicDir ; Use the Civic sRsrc directory directory. dc.b sRsrc_BDTempest ; Use the Tempest-Family board sRsrc. dc.w drHwCivic ; Uses the Civic video driver. ENDIF ; IF hasHMC THEN ; VideoInfoPDM dc.l $00000000 ; Physical base address of screen dc.l $60B00000 ; Logical 32-bit base address of screen dc.l 0 ; No logical 24-bit base address. dc.b $09 ; Slot number to use for PRAM storage dc.b SmPRAMTop+(($09-$09)*sizeSPRAMRec) ; PRAM address for slot zero dc.b sRsrcSonoraDir ; Use the Sonora sRsrc directory directory. dc.b sRsrc_BdPDM ; Use the PDM-family board sRsrc. dc.w drHwSonora ; Uses the Sonora video driver. ENDIF ; IF hasGrandCentral THEN ; VideoInfoTNT dc.l $E0200000 ; Physical base address of screen dc.l $E0200000 ; Logical 32-bit base address of screen dc.l 0 ; No logical 24-bit base address. dc.b $0E ; Slot number to use for PRAM storage dc.b SmPRAMTop+(($0E-$09)*sizeSPRAMRec) ; PRAM address for slot zero dc.b sRsrcATIDir ; Use the ATI sRsrc directory directory. dc.b 1 ; Use the ATI-family board sRsrc. ; dc.b sRsrc_BdATI ; Use the PDM-family board sRsrc. dc.w drHwATI ; Uses the ATI video driver. ENDIF ; ;——————————————————————————————————————————————————————————————————————————————————————————————— ; NuBus Info Tables ;——————————————————————————————————————————————————————————————————————————————————————————————— IF hasVISADecoder THEN NuBusInfoVISA ; beginning of change <24><4> dc.b 0|(1< dc.b 0|\ ; slot B (1< dc.b 0|\ ; slot C (1< dc.b 0|\ ; slot D (1< dc.b 0|\ ; slot E (1< dc.b 0|(1< dc.b 0|(1< (1< (1< dc.b 0|\ ; slot A (1< (1< (1< (1< dc.b 0 ; slot F ENDIF ; {hasOrwell} IF hasJaws THEN NuBusInfoJaws dc.b 0|(1< (1< ENDIF ; {hasNiagra} IF hasMSC THEN NuBusInfoMSC dc.b 0|(1< (1< dc.b 0 ; slot 7 dc.b 0 ; slot 8 dc.b 0 ; slot 9 dc.b 0 ; slot A dc.b 0|(1< dc.b 0|(1< thru next dc.b 0|(1< ENDIF ; {hasDJMEMC} IF hasYMCA THEN ; NuBusInfoCyclone ; dc.b 0|(1< Built-in Video, Ethernet, etc…. dc.b 0 ; slot 1 dc.b 0 ; slot 2 dc.b 0 ; slot 3 dc.b 0 ; slot 4 dc.b 0|(1< Built-in video’s VRAM is here (Super5). dc.b 0 ; slot 6 dc.b 0 ; slot 7 dc.b 0 ; slot 8 dc.b 0|(1< Built-in Video PRAM dc.b 0|\ ; slot A (1< Physical Slot. (1< Physical Slot. (1< Physical Slot. (1< End of table (Slot Manager/VM doesn’t use). NuBusInfoTempest ; dc.b 0|(1< Built-in Video, Ethernet, etc…. dc.b 0 ; slot 1 dc.b 0 ; slot 2 dc.b 0 ; slot 3 dc.b 0 ; slot 4 dc.b 0|(1< Built-in video’s VRAM is here (Super5). dc.b 0 ; slot 6 dc.b 0 ; slot 7 dc.b 0 ; slot 8 dc.b 0|(1< Built-in Video PRAM dc.b 0|\ ; slot A (1< Physical Slot. (1< End of table (Slot Manager/VM doesn’t use). ENDIF ; {hasYMCA} IF hasHMC THEN ; NuBusInfoPDM dc.b 0|(1< Built-in Video, Ethernet, etc…. dc.b 0 ; slot 1 -> ??? dc.b 0 ; slot 2 -> ??? dc.b 0 ; slot 3 -> ??? dc.b 0 ; slot 4 -> ??? dc.b 0 ; slot 5 -> dc.b 0|\ ; slot 6 -> ??? (1< ??? dc.b 0 ; slot 8 -> ??? dc.b 0|\ ; slot 9 -> Built-in Video PRAM, Ethernet interrupts, (1< ??? dc.b 0 ; slot B -> ??? dc.b 0 ; slot C -> ??? dc.b 0 ; slot D -> ??? dc.b 0|\ ; slot E -> Physical Slot. (1< End of table (Slot Manager/VM doesn’t use). NuBusInfoCFusion dc.b 0|(1< Built-in Video, Ethernet, etc…. dc.b 0 ; slot 1 -> ??? dc.b 0 ; slot 2 -> ??? dc.b 0 ; slot 3 -> ??? dc.b 0 ; slot 4 -> ??? dc.b 0 ; slot 5 -> dc.b 0|\ ; slot 6 -> ??? (1< ??? dc.b 0 ; slot 8 -> ??? dc.b 0|\ ; slot 9 -> Built-in Video PRAM, Ethernet interrupts, (1< ??? dc.b 0|\ ; slot B -> Physical Slot. (1< Physical Slot. (1< Physical Slot. (1< Video Expansion (HPV or Plinaria). (1< End of table (Slot Manager/VM doesn’t use). ENDIF ; {hasHMC} IF hasGrandCentral THEN ; NuBusInfoTNT dc.b 0|(1< Built-in Video, Ethernet, etc…. dc.b 0|\ ; slot 1 -> ??? (1< ??? (1< ??? (1< ??? (1< ??? (1< ??? (1< ??? (1< ??? (1< ??? (1< ??? (1< ??? (1< ??? (1< ??? (1< ???. (1< End of table (Slot Manager/VM doesn’t use). ENDIF ; (hasGrandCentral) IconTable ; IF hasOSS THEN IconInfo6Slot ; Macintosh II,IIx,IIfx table dc.l DisketteIcon-IconInfo6Slot ; drive 1 logical icon, dc.l Right6SlotIcon-IconInfo6Slot ; physical icon, dc.w $0003 ; primary int removable, 800K Sony dc.l DisketteIcon-IconInfo6Slot ; drive 2 logical icon, dc.l Left6SlotIcon-IconInfo6Slot ; physical icon, dc.w $0803 ; secondary int removable, 800K Sony ENDIF IF hasMDU THEN ; IconInfo3Slot ; Macintosh IIcx/Aurora table dc.l DisketteIcon-IconInfo3Slot ; drive 1 logical icon, dc.l Int3SlotIcon-IconInfo3Slot ; physical icon (small box) dc.w $0003 ; primary int removable, 800K Sony dc.l DisketteIcon-IconInfo3Slot ; drive 2 logical icon, dc.l Ext3SlotIcon-IconInfo3Slot ; physical icon, (small box) dc.w $0103 ; primary ext removable 800K Sony IconInfoMacIIsi ; Macintosh IIsi table dc.l DisketteIcon-IconInfoMacIIsi ; drive 1 logical icon, dc.l IntMacIIsiIcon-IconInfoMacIIsi ; physical icon (small box) dc.w $0003 ; primary int removable, 800K Sony dc.l DisketteIcon-IconInfoMacIIsi ; drive 2 logical icon, dc.l ExtMacIIsiIcon-IconInfoMacIIsi ; physical icon, (small box) dc.w $0103 ; primary ext removable 800K Sony ENDIF IF hasVISADecoder | hasSonora THEN IconInfoMacLC ; Macintosh LC Table dc.l DisketteIcon-IconInfoMacLC ; drive 1 logical icon, dc.l RightMacLCIcon-IconInfoMacLC ; physical icon, dc.w $0004 ; primary int removable, SuperDrive dc.l DisketteIcon-IconInfoMacLC ; drive 2 logical icon, dc.l LeftMacLCIcon-IconInfoMacLC ; physical icon, dc.w $0804 ; secondary int removable, SuperDrive ENDIF IF hasOrwell THEN IconInfoQuadra700 ; Quadra 700 Table dc.l DisketteIcon-IconInfoQuadra700 ; drive 1 logical icon, dc.l Quadra700Icon-IconInfoQuadra700 ; physical icon, dc.w $0004 ; primary int removable, SuperDrive dc.l DisketteIcon-IconInfoQuadra700 ; drive 2 logical icon, dc.l Quadra700Icon-IconInfoQuadra700 ; physical icon, dc.w $0104 ; secondary ext removable, SuperDrive (Actually there is none...) IconInfoQuadra900 ; Quadra 900/950 Table dc.l DisketteIcon-IconInfoQuadra900 ; drive 1 logical icon, dc.l Quadra900Icon-IconInfoQuadra900 ; physical icon, dc.w $0004 ; primary int removable, SuperDrive dc.l DisketteIcon-IconInfoQuadra900 ; drive 2 logical icon, dc.l Quadra900Icon-IconInfoQuadra900 ; physical icon, dc.w $0104 ; secondary ext removable, SuperDrive (Actually there is none...) ENDIF IF hasJaws | hasNiagra | hasPratt THEN ; IconInfoTim ; Tim Table dc.l DisketteIcon-IconInfoTim ; drive 1 logical icon, dc.l TimIcon-IconInfoTim ; physical icon, dc.w $0004 ; primary int removable, SuperDrive dc.l DisketteIcon-IconInfoTim ; drive 2 logical icon, dc.l TimIcon-IconInfoTim ; physical icon, dc.w $0104 ; secondary ext removable, SuperDrive (Actually there is none...) ENDIF IF hasMSC THEN IconInfoDBLite ; DB-Lite table dc.l DisketteIcon-IconInfoDBLite ; drive 1 logical icon, dc.l DBLiteIcon-IconInfoDBLite ; physical icon, dc.w $0104 ; primary ext removable, SuperDrive dc.l DisketteIcon-IconInfoDBLite ; drive 2 logical icon, dc.l DBLiteIcon-IconInfoDBLite ; physical icon, dc.w $0904 ; secondary ext removable, SuperDrive ENDIF IF hasDJMEMC | hasYMCA | hasHMC THEN ; IconInfoLego ; Wombat (or others) in a Lego package dc.l DisketteIcon-IconInfoLego ; drive 1 logical icon, dc.l LegoIcon-IconInfoLego ; physical icon, dc.w $0004 ; primary int removable, SuperDrive dc.l DisketteIcon-IconInfoLego ; drive 2 logical icon, dc.l LegoIcon-IconInfoLego ; physical icon, dc.w $0104 ; secondary ext removable, SuperDrive (Actually there is none...) IconInfoFrigidaire ; Wombat (or others) in a Frigidaire package dc.l DisketteIcon-IconInfoFrigidaire ; drive 1 logical icon, dc.l FrigidaireIcon-IconInfoFrigidaire ; physical icon, dc.w $0004 ; primary int removable, SuperDrive dc.l DisketteIcon-IconInfoFrigidaire ; drive 2 logical icon, dc.l FrigidaireIcon-IconInfoFrigidaire ; physical icon, dc.w $0104 ; secondary ext removable, SuperDrive (Actually there is none...) IconInfoQFC ; WLCD, PDM (or others) in a QFC package dc.l DisketteIcon-IconInfoQFC ; drive 1 logical icon, dc.l QFCIcon-IconInfoQFC ; physical icon, dc.w $0004 ; primary int removable, SuperDrive dc.l DisketteIcon-IconInfoQFC ; drive 2 logical icon, dc.l QFCIcon-IconInfoQFC ; physical icon, dc.w $0104 ; secondary ext removable, SuperDrive (Actually there is none...) ENDIF ; DisketteIcon dc.w $7FFF,$FFF8,$8100,$0104,$8100,$7102,$8100,$8901 dc.w $8100,$8901,$8100,$8901,$8100,$8901,$8100,$8901 dc.w $8100,$7101,$8100,$0101,$80FF,$FE01,$8000,$0001 dc.w $8000,$0001,$8000,$0001,$8000,$0001,$8000,$0001 dc.w $8000,$0001,$8000,$0001,$87FF,$FFE1,$8800,$0011 dc.w $8800,$0011,$8800,$0011,$8800,$0011,$8800,$0011 dc.w $8800,$0011,$8800,$0011,$8800,$0011,$8800,$0011 dc.w $8800,$0011,$8800,$0011,$8800,$0011,$7FFF,$FFFE dc.w $7FFF,$FFF8,$FFFF,$FFFC,$FFFF,$FFFE,$FFFF,$FFFF dc.w $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF dc.w $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF dc.w $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF dc.w $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF dc.w $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF dc.w $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF dc.w $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$7FFF,$FFFE dc.w $0 ;old HD-20 driver drive ID string (null here) _AssumeEq (DisketteIcon-IconTable),((DisketteIcon-IconTable)>>1)<<1 IF hasOSS THEN ; Mac II Left Sony icon Left6SlotIcon dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$FFFF,$FFFF dc.w $8000,$0001,$8000,$0001,$903F,$C7F9,$8000,$0001 dc.w $8004,$0001,$800E,$0001,$801F,$0001,$8004,$0001 dc.w $8004,$0001,$8004,$0001,$8000,$0001,$FFFF,$FFFF dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$FFFF,$FFFF dc.w $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF dc.w $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF dc.w $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0 ;old HD-20 driver drive ID string (null here) _AssumeEq (Left6SlotIcon-IconTable),((Left6SlotIcon-IconTable)>>1)<<1 ; Mac II Right Sony icon Right6SlotIcon dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$FFFF,$FFFF dc.w $8000,$0001,$8000,$0001,$903F,$C7F9,$8000,$0001 dc.w $8000,$0081,$8000,$01C1,$8000,$03E1,$8000,$0081 dc.w $8000,$0081,$8000,$0081,$8000,$0001,$FFFF,$FFFF dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$FFFF,$FFFF dc.w $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF dc.w $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF dc.w $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0 ;old HD-20 driver drive ID string (null here) _AssumeEq (Right6SlotIcon-IconTable),((Right6SlotIcon-IconTable)>>1)<<1 ENDIF IF hasMDU THEN ; small box Mac II Internal Sony icon Int3SlotIcon dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0080,$0000,$0080,$0000,$0080 dc.w $0000,$0080,$0000,$03E0,$0000,$01C0,$0000,$0080 dc.w $0000,$0000,$FFFF,$FFFF,$8000,$0001,$FFFF,$FFFF dc.w $8000,$0001,$8000,$0001,$8000,$0001,$FFFF,$FFFF dc.w $8000,$0FF9,$8000,$0001,$8000,$0001,$A000,$0001 dc.w $8000,$0001,$FFFF,$FFFF,$8000,$0001,$FFFF,$FFFF dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0080,$0000,$0080,$0000,$0080 dc.w $0000,$0080,$0000,$03E0,$0000,$01C0,$0000,$0080 dc.w $0000,$0000,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF dc.w $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF dc.w $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF dc.w $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0 ;old HD-20 driver drive ID string (null here) _AssumeEq (Int3SlotIcon-IconTable),((Int3SlotIcon-IconTable)>>1)<<1 ; small box Mac II External Sony icon Ext3SlotIcon dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0010 dc.w $0000,$0010,$FFFF,$FC10,$8000,$0410,$FFFF,$FC7C dc.w $8000,$0438,$FFFF,$FC10,$8001,$F400,$A000,$05FF dc.w $8000,$0501,$FFFF,$FD7D,$8000,$0501,$FFFF,$FDFF dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0010 dc.w $0000,$0010,$FFFF,$FC10,$FFFF,$FC10,$FFFF,$FC7C dc.w $FFFF,$FC38,$FFFF,$FC10,$FFFF,$FC00,$FFFF,$FDFF dc.w $FFFF,$FDFF,$FFFF,$FDFF,$FFFF,$FDFF,$FFFF,$FDFF dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0 ;old HD-20 driver drive ID string (null here) _AssumeEq (Ext3SlotIcon-IconTable),((Ext3SlotIcon-IconTable)>>1)<<1 ; Macintosh IIsi internal drive icon. IntMacIIsiIcon dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0400,$0000,$0400,$0000,$0400 dc.w $0000,$1F00,$0000,$0E00,$0000,$0400,$0000,$0000 dc.w $1FFF,$FFF8,$1000,$0008,$1000,$7FC8,$1000,$0008 dc.w $1300,$0008,$1000,$0008,$1FFF,$FFF8,$0800,$0010 dc.w $0FFF,$FFF0,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0400,$0000,$0400,$0000,$0400 dc.w $0000,$1F00,$0000,$0E00,$0000,$0400,$0000,$0000 dc.w $1FFF,$FFF8,$1FFF,$FFF8,$1FFF,$FFF8,$1FFF,$FFF8 dc.w $1FFF,$FFF8,$1FFF,$FFF8,$1FFF,$FFF8,$0FFF,$FFF0 dc.w $0FFF,$FFF0,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0 ;old HD-20 driver drive ID string (null here) _AssumeEq (IntMacIIsiIcon-IconTable),((IntMacIIsiIcon-IconTable)>>1)<<1 ; Macintosh IIsi external drive icon. ExtMacIIsiIcon dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0010,$0000,$0010,$0000,$0010,$FFFF,$FC7C dc.w $8000,$0438,$803F,$E410,$8000,$0400,$A000,$05FF dc.w $8000,$0501,$FFFF,$FD7D,$4000,$0901,$7FFF,$F9FF dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0010,$0000,$0010,$0000,$0010,$FFFF,$FC7C dc.w $FFFF,$FC38,$FFFF,$FC10,$FFFF,$FC00,$FFFF,$FDFF dc.w $FFFF,$FDFF,$FFFF,$FDFF,$7FFF,$F9FF,$7FFF,$F9FF dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0 ;old HD-20 driver drive ID string (null here) _AssumeEq (ExtMacIIsiIcon-IconTable),((ExtMacIIsiIcon-IconTable)>>1)<<1 ENDIF IF hasVISADecoder | hasSonora THEN ; Macintosh LC left drive icon. LeftMacLCIcon dc.w $0000,$0000,$0080,$0000,$0080,$0000,$0080,$0000 dc.w $0080,$0000,$03E0,$0000,$01C0,$0000,$0080,$0000 dc.w $0000,$0000,$FFFF,$FFFF,$8000,$0001,$8FF8,$1FF1 dc.w $8000,$0001,$8000,$0001,$FFFF,$FFFF,$2000,$0004 dc.w $3FFF,$FFFC,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $01C0,$0000,$01C0,$0000,$01C0,$0000,$01C0,$0000 dc.w $0FF8,$0000,$07F0,$0000,$03E0,$0000,$01C0,$0000 dc.w $0080,$0000,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF dc.w $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$3FFF,$FFFC dc.w $3FFF,$FFFC,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0 ;old HD-20 driver drive ID string (null here) _AssumeEq (LeftMacLCIcon-IconTable),((LeftMacLCIcon-IconTable)>>1)<<1 ; Macintosh LC right drive icon. RightMacLCIcon dc.w $0000,$0000,$0000,$0100,$0000,$0100,$0000,$0100 dc.w $0000,$0100,$0000,$07C0,$0000,$0380,$0000,$0100 dc.w $0000,$0000,$FFFF,$FFFF,$8000,$0001,$8000,$1FF1 dc.w $8000,$0001,$8000,$0001,$FFFF,$FFFF,$2000,$0004 dc.w $3FFF,$FFFC,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0380,$0000,$0380,$0000,$0380,$0000,$0380 dc.w $0000,$1FF0,$0000,$0FE0,$0000,$07C0,$0000,$0380 dc.w $0000,$0100,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF dc.w $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$3FFF,$FFFC dc.w $3FFF,$FFFC,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0 ;old HD-20 driver drive ID string (null here) _AssumeEq (RightMacLCIcon-IconTable),((RightMacLCIcon-IconTable)>>1)<<1 ENDIF IF hasOrwell THEN ; Quadra 900 icon. Quadra900Icon dc.w $0000,$0000,$0FFF,$F000,$0800,$1000,$08FF,$F000 dc.w $0880,$1080,$0880,$1180,$08BF,$D3F8,$0880,$1180 dc.w $0880,$1080,$0880,$1000,$0880,$1000,$0880,$1000 dc.w $0880,$1000,$0880,$1000,$0880,$1000,$0880,$1000 dc.w $0880,$1000,$0880,$1000,$0880,$1000,$0880,$1000 dc.w $0880,$1000,$08BF,$D000,$0880,$1000,$08BF,$D000 dc.w $0880,$1000,$08BF,$D000,$0880,$1000,$08BF,$D000 dc.w $0880,$1000,$08BF,$D000,$0880,$1000,$0FFF,$F000 dc.w $0000,$0000,$0FFF,$F000,$0FFF,$F000,$0FFF,$F000 dc.w $0FFF,$F080,$0FFF,$F180,$0FFF,$F3F8,$0FFF,$F180 dc.w $0FFF,$F080,$0FFF,$F000,$0FFF,$F000,$0FFF,$F000 dc.w $0FFF,$F000,$0FFF,$F000,$0FFF,$F000,$0FFF,$F000 dc.w $0FFF,$F000,$0FFF,$F000,$0FFF,$F000,$0FFF,$F000 dc.w $0FFF,$F000,$0FFF,$F000,$0FFF,$F000,$0FFF,$F000 dc.w $0FFF,$F000,$0FFF,$F000,$0FFF,$F000,$0FFF,$F000 dc.w $0FFF,$F000,$0FFF,$F000,$0FFF,$F000,$0FFF,$F000 dc.w $0 ;old HD-20 driver drive ID string (null here) _AssumeEq (Quadra900Icon-IconTable),((Quadra900Icon-IconTable)>>1)<<1 ; Quadra 700 icon. Quadra700Icon dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $1FFF,$8000,$1000,$8000,$1000,$8000,$17A0,$8000 dc.w $1020,$8400,$17A0,$8C00,$1020,$9FC0,$17A0,$8C00 dc.w $1020,$8400,$17A6,$8000,$1026,$8000,$1780,$8000 dc.w $1000,$8000,$1780,$8000,$1000,$8000,$1780,$8000 dc.w $1000,$8000,$1780,$8000,$1000,$8000,$1780,$8000 dc.w $1000,$8000,$1780,$8000,$1000,$8000,$1782,$8000 dc.w $1000,$8000,$1782,$8000,$1000,$8000,$1FFF,$8000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $1FFF,$8000,$1FFF,$8000,$1FFF,$8000,$1FFF,$8000 dc.w $1FFF,$8400,$1FFF,$8C00,$1FFF,$9FC0,$1FFF,$8C00 dc.w $1FFF,$8400,$1FFF,$8000,$1FFF,$8000,$1FFF,$8000 dc.w $1FFF,$8000,$1FFF,$8000,$1FFF,$8000,$1FFF,$8000 dc.w $1FFF,$8000,$1FFF,$8000,$1FFF,$8000,$1FFF,$8000 dc.w $1FFF,$8000,$1FFF,$8000,$1FFF,$8000,$1FFF,$8000 dc.w $1FFF,$8000,$1FFF,$8000,$1FFF,$8000,$1FFF,$8000 dc.w $0 ;old HD-20 driver drive ID string (null here) _AssumeEq (Quadra700Icon-IconTable),((Quadra700Icon-IconTable)>>1)<<1 ENDIF IF hasJaws | hasNiagra | hasPratt THEN ; PowerBook 140/170, Dartanian/Dartanian LC icon. TimIcon dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0002,$0000,$0005,$0000,$0009 dc.w $0000,$0012,$0000,$0024,$0000,$0048,$0000,$0090 dc.w $0000,$0120,$0000,$0240,$0000,$0480,$0000,$0900 dc.w $0000,$0E00,$0000,$1C00,$00DB,$7E00,$01FF,$C210 dc.w $7F00,$4230,$803F,$427F,$8000,$4230,$FFFF,$FC10 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0002,$0000,$0007,$0000,$000F dc.w $0000,$001E,$0000,$003C,$0000,$0078,$0000,$00F0 dc.w $0000,$01E0,$0000,$03C0,$0000,$0780,$0000,$0F00 dc.w $0000,$0E00,$0000,$1C00,$00DB,$7E00,$01FF,$FE10 dc.w $7FFF,$FE30,$FFFF,$FE7F,$FFFF,$FE30,$FFFF,$FC10 dc.w $0 ;old HD-20 driver drive ID string (null here) _AssumeEq (TimIcon-IconTable),((TimIcon-IconTable)>>1)<<1 ENDIF IF hasMSC THEN ; DBLite icon. DBLiteIcon dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0002 dc.w $0000,$0005,$0000,$0009,$0000,$0012,$0000,$0024 dc.w $0000,$0048,$0000,$0090,$0000,$0120,$0000,$0240 dc.w $0000,$0480,$0000,$0900,$0000,$1E00,$006D,$9C00 dc.w $7FFF,$FE00,$8000,$0200,$8000,$0200,$7FFF,$FC00 dc.w $0000,$0000,$0000,$0000,$003F,$FE20,$0020,$0260 dc.w $0027,$F2FE,$0020,$0260,$003F,$FE20,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0002 dc.w $0000,$0007,$0000,$000F,$0000,$001E,$0000,$003C dc.w $0000,$0078,$0000,$00F0,$0000,$01E0,$0000,$03C0 dc.w $0000,$0780,$0000,$0F00,$0000,$1E00,$006D,$9C00 dc.w $7FFF,$FE00,$FFFF,$FE00,$FFFF,$FE00,$7FFF,$FC00 dc.w $0000,$0000,$0000,$0000,$003F,$FE20,$003F,$FE60 dc.w $003F,$FEFE,$003F,$FE60,$003F,$FE20,$0000,$0000 dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 dc.w $0 ;old HD-20 driver drive ID string (null here) _AssumeEq (DBLiteIcon-IconTable),((DBLiteIcon-IconTable)>>1)<<1 ENDIF IF hasDJMEMC | hasYMCA | hasHMC THEN ; Lego icon LegoIcon DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 DC.W $0000,$0080,$0000,$0080,$0000,$0080,$0000,$0080 DC.W $0000,$03E0,$0000,$01C0,$0000,$0080,$0000,$0000 DC.W $0000,$0000,$7FFF,$FFFE,$4000,$0002,$5800,$0FF2 DC.W $5800,$0002,$4000,$0002,$7FFF,$FFFE,$4004,$0002 DC.W $5554,$0002,$4004,$0002,$5554,$0002,$4004,$0002 DC.W $7FFF,$FFFE,$4000,$0002,$4000,$0002,$7FFF,$FFFE DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$01C0 DC.W $0000,$01C0,$0000,$01C0,$0000,$01C0,$0000,$07F0 DC.W $0000,$07F0,$0000,$03E0,$0000,$01C0,$0000,$0080 DC.W $0000,$0000,$7FFF,$FFFE,$7FFF,$FFFE,$7FFF,$FFFE DC.W $7FFF,$FFFE,$7FFF,$FFFE,$7FFF,$FFFE,$7FFF,$FFFE DC.W $7FFF,$FFFE,$7FFF,$FFFE,$7FFF,$FFFE,$7FFF,$FFFE DC.W $7FFF,$FFFE,$7FFF,$FFFE,$7FFF,$FFFE,$7FFF,$FFFE DC.W $0 ;old HD-20 driver drive ID string (null here) _AssumeEq (LegoIcon-IconTable),((LegoIcon-IconTable)>>1)<<1 ; Fridgidaire Sony icon FrigidaireIcon DC.W $0000,$0000,$0000,$0000,$000F,$FFC0,$0010,$0120 DC.W $0010,$0120,$0010,$0120,$0010,$0120,$021F,$FF20 DC.W $0310,$0120,$3F93,$F920,$0310,$0120,$021F,$FF20 DC.W $0010,$0120,$0010,$0120,$0010,$0120,$0010,$0120 DC.W $001F,$FF20,$0010,$0120,$0010,$0120,$0010,$0120 DC.W $0010,$0120,$0010,$0120,$0010,$0120,$0030,$01B0 DC.W $0030,$0130,$0030,$61B0,$0030,$6130,$0030,$01B0 DC.W $0030,$0130,$003F,$FFF0,$003E,$01F0,$0000,$0000 DC.W $0000,$0000,$0000,$0000,$000F,$FFC0,$001F,$FFE0 DC.W $001F,$FFE0,$001F,$FFE0,$061F,$FFE0,$071F,$FFE0 DC.W $7F9F,$FFE0,$7FDF,$FFE0,$7F9F,$FFE0,$071F,$FFE0 DC.W $061F,$FFE0,$001F,$FFE0,$001F,$FFE0,$001F,$FFE0 DC.W $001F,$FFE0,$001F,$FFE0,$001F,$FFE0,$001F,$FFE0 DC.W $001F,$FFE0,$001F,$FFE0,$001F,$FFE0,$003F,$FFF0 DC.W $003F,$FFF0,$003F,$FFF0,$003F,$FFF0,$003F,$FFF0 DC.W $003F,$FFF0,$003F,$FFF0,$003E,$01F0,$0000,$0000 DC.W $0 ;old HD-20 driver drive ID string (null here) _AssumeEq (FrigidaireIcon-IconTable),((FrigidaireIcon-IconTable)>>1)<<1 ; QFC Sony icon QFCIcon DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0040 DC.W $0000,$0040,$0000,$0040,$0000,$0040,$0000,$01F0 DC.W $0000,$00E0,$0000,$0040,$0000,$0000,$0000,$0000 DC.W $7FFF,$FFFE,$4020,$0802,$5820,$0BFA,$5820,$0802 DC.W $4020,$0802,$4820,$081A,$7FFF,$FFE6,$3FFF,$FFFC DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 DC.W $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 DC.W $7FFF,$FFFE,$7FFF,$FFFE,$7FFF,$FFFE,$7FFF,$FFFE DC.W $7FFF,$FFFE,$7FFF,$FFFE,$7FFF,$FFFE,$7FFF,$FFFE DC.W $0 ;old HD-20 driver drive ID string (null here) _AssumeEq (QFCIcon-IconTable),((QFCIcon-IconTable)>>1)<<1 ENDIF ;——————————————————————————————————————————————————————————————————————————————————————————————— ; ; VIA Initialization Value Tables ; ;——————————————————————————————————————————————————————————————————————————————————————————————— dINPUT EQU 0 dOUTPUT EQU 1 IF hasVISADecoder | hasMDU THEN VIA1InitMacIIsi VIA1InitMacLC dc.b \ ; vBufA initial value <9> (6)|\ ; sound volume level initially 1 (0< (%0<<4)|\ ; CB1 input neg active edge (ADB clock) (%001<<5) ; CB2 ind input neg active edge (ADB data) dc.b \ ; vACR initial value (%0<<0)|\ ; PA latch disable (%0<<1)|\ ; PB latch disable (%000<<2)|\ ; SR disabled (%0<<5)|\ ; T2 timed interrupt (%00<<6) ; T1 timed interrupt, PB7 disabled VIA1InitQuadra900 dc.b \ ; vBufA initial value (0< (1< (0< (0< (1< (dINPUT< (dOUTPUT< (dOUTPUT< (dOUTPUT< (%0<<4)|\ ; CB1 input neg active edge (ADB clock) <47> (%001<<5) ; CB2 ind input neg active edge (ADB data) dc.b \ ; vACR initial value (%0<<0)|\ ; PA latch disable (%0<<1)|\ ; PB latch disable (%111<<2)|\ ; SR enabled for Egret <47> (%0<<5)|\ ; T2 timed interrupt (%00<<6) ; T1 timed interrupt, PB7 disabled VIA2InitQuadra700 ; dc.b \ ; vBufA initial value (0< dc.b \ ; vDIRA initial value (dINPUT< dc.b \ ; vBufB initial value (0< (1< (0< (0< (0< (dINPUT< (dOUTPUT< (dOUTPUT< (dINPUT< (%0<<4)|\ ; CB1 input neg active edge (ASC interrupt) (%001<<5) ; CB2 ind input neg active edge (SCSI DMA IRQ interrupt) dc.b \ ; vACR initial value (%0<<0)|\ ; PA latch disable (%0<<1)|\ ; PB latch disable (%000<<2)|\ ; SR disabled (%0<<5)|\ ; T2 timed interrupt (%11<<6) ; T1 continuous interrupt, square wave output VIA2InitQuadra900 ; <13> dc.b \ ; vBufA initial value (0< (0< dc.b \ ; vDIRA initial value (dINPUT< (dINPUT< dc.b \ ; vBufB initial value (1< (1< (dINPUT< (dINPUT< (dINPUT< (dOUTPUT< (%0<<4)|\ ; CB1 input neg active edge (ASC interrupt) (%001<<5) ; CB2 ind input neg active edge (SCSI DMA IRQ interrupt) dc.b \ ; vACR initial value (%0<<0)|\ ; PA latch disable (%0<<1)|\ ; PB latch disable (%000<<2)|\ ; SR disabled (%0<<5)|\ ; T2 timed interrupt (%11<<6) ; T1 continuous interrupt, square wave output ENDIF ; {hasOrwell} IF hasJaws | hasNiagra THEN VIA1InitNiagra VIA1InitJaws ; <8> HJR dc.b \ ; vBufA initial value <25> (1)|\ ; 0 via test (0< (%0<<4)|\ ; CB1 input neg active edge (PwrMgr interrupt) (%001<<5) ; CB2 ind input neg active edge (modem snd enable) dc.b \ ; vACR initial value (%0<<0)|\ ; PA latch disable (%0<<1)|\ ; PB latch disable (%000<<2)|\ ; SR disabled (%0<<5)|\ ; T2 timed interrupt (%00<<6) ; T1 timed interrupt, PB7 disabled VIA2InitNiagra VIA2InitJaws ; <8> HJR dc.b $00 ; vBufA initial value (all zeros) dc.b $00 ; vDIRA initial value (all inputs) dc.b \ ; vBufB initial value (0< (1< (0< (1< (1< (1<< v2ModemRST ) ; 7 modem reset <25> dc.b \ ; vDIRB initial value (dOUTPUT< (dINPUT< (dOUTPUT< (dOUTPUT<< v2HMMU )|\ ; 5 HMMU <25> (dINPUT< (dOUTPUT< dc.b \ ; vPCR initial value (%0<<0)|\ ; CA1 input neg active edge (Any Slot interrupt) (%001<<1)|\ ; CA2 ind input neg active edge (SCSI DRQ interrupt) (%0<<4)|\ ; CB1 input neg active edge (ASC interrupt) (%001<<5) ; CB2 ind input neg active edge (SCSI IRQ interrupt) dc.b \ ; vACR initial value (%0<<0)|\ ; PA latch disable (%0<<1)|\ ; PB latch disable (%000<<2)|\ ; SR disabled (%0<<5)|\ ; T2 timed interrupt (%00<<6) ; T1 timed interrupt, PB7 disabled ENDIF ; {hasJaws | hasNiagra} IF hasMSC THEN VIA1InitMSC ; via1 initialization dc.b 0 ; vBufA initial value (all bits are inputs) dc.b 0 ; vDIRA initial value (all bits are inputs) dc.b 0 ; vBufB initial value (all bits are inputs) dc.b 0 ; vDIRB initial value (all bits are inputs) dc.b \ ; vPCR initial value (%0<<0)|\ ; CA1 input neg active edge (60Hz interrupt) (%001<<1)|\ ; CA2 (PG&E interrupt) (%0<<4)|\ ; CB1 (no connection) (%000<<5) ; CB2 (no connection) dc.b \ ; vACR initial value (%0<<0)|\ ; PA latch disable (%0<<1)|\ ; PB latch disable (%111<<2)|\ ; SR shifts out with CB1 (external clock) -> PMGR (%0<<5)|\ ; T2 timed interrupt (%00<<6) ; T1 timed interrupt, PB7 disabled ENDIF ; {hasMSC} IF hasPratt THEN VIA1InitPratt dc.b \ ; vBufA initial value (0< PMGR (%0<<5)|\ ; T2 timed interrupt (%00<<6) ; T1 timed interrupt, PB7 disabled VIA2InitPratt dc.b \ ; vBufA initial value (0< (0< (dOUTPUT< dc.b \ ; vDIRB initial value (dINPUT< (0< (dINPUT< (%0<<4)|\ ; CB1 input neg active edge (ADB clock) (%001<<5) ; CB2 ind input neg active edge (ADB data) ; This is here because the Proto1&2 VIA cell in BIOS does not correctly ; deal with writes to Port{A,B} before the direction bits for the that ; port are set correctly (output enables, that is). ; IF forWombat THEN ; dc.b \ ; vACR initial value ; (%0<<0)|\ ; PA latch disable ; (%0<<1)|\ ; PB latch disable ; (%111<<2)|\ ; SR disabled ; (%0<<5)|\ ; T2 timed interrupt ; (%00<<6) ; T1 timed interrupt, PB7 disabled ; ELSE dc.b \ ; vACR initial value (%0<<0)|\ ; PA latch disable (%0<<1)|\ ; PB latch disable (%000<<2)|\ ; SR disabled (%0<<5)|\ ; T2 timed interrupt (%00<<6) ; T1 timed interrupt, PB7 disabled ; ENDIF VIA2InitWombat dc.b \ ; vBufA initial value (0< ENDIF ; {hasDJMEMC} IF hasYMCA THEN ; ; Initialize the VIA1 Direction Register before the Data Register VIA1InitCyclone ; PSC VIA1 vDirA/vBufA Notes: ; ; Because ReqA and ReqB are really used for DMA, they are not wire-ORed to the vSCCWrReq bit ; as on most Macintoshes. This bit instead reads the logical OR of ReqA and ReqB, either of ; which can be masked. This allows WReqA to be used in the traditional sense even while WReqB ; is indicating DMA activity. ; ; NOTE: PSC revisions earlier than 343S1100-a do not support masking! ; For these revisions, vSCCWrReq should be reprogrammed as an ouput and latched with ; a "1" so that polling does not occur on port A due to DMA activity on port B. dc.b \ ; vDIRA initial value (dOUTPUT< (dOUTPUT< (dINPUT< dc.b \ ; vBufA initial value (0< (1< dc.b \ ; vDIRB initial value (dOUTPUT< (0< (1< (0< dc.b \ ; vBufA initial value (0< IF hasHMC THEN ; VIA1InitPDM ; dc.b \ ; vBufA initial value (0< (1< (1< dc.b \ ; vDIRB initial value (dINPUT< IF hasGrandCentral THEN ; VIA1InitTNT ; dc.b \ ; vBufA initial value (0< (1< dc.b \ ; vDIRA initial value (dOUTPUT< (dOUTPUT< (dINPUT< (1< dc.b \ ; vDIRB initial value (dINPUT< IF hasMDU THEN ; IMPORT SndCntlMacIIsi ; ALIGN 4 InfoMacIIsi dc.l MDUTable-InfoMacIIsi ; offset to decoder info dc.l RAMInfo2Bank1Meg-InfoMacIIsi ; offset to ram bank info dc.l VideoInfoMacIIsi-InfoMacIIsi ; offset to video info dc.l NuBusInfoMacIIsi-InfoMacIIsi ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.b MDUDecoder ; decoder kind dc.w $3FFF ; ROM85, New ROMs, Power Off ability. dc.b 4 ; default ROM Resource configuration dc.b ProductInfoVersion ; ProductInfo version BitVector32 \ ; Flags for valid base addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid IWMExists,\ ; IWMAddr is valid SCSIExists,\ ; SCSIAddr is valid SCSIDackExists,\ ; SCSIDackAddr is valid SCSIHskExists,\ ; SCSIHskAddr is valid ASCExists,\ ; ASCAddr is valid RBVExists,\ ; RBVAddr is valid VDACExists ; VDACAddr is valid BitVector32 ; Flags for valid base addresses 32-63 BitVector32 ; Flags for valid base addresses 64-95 dc.l \ ; Flags for valid ext feature flags 0-31 (ClockEgret)|\ ; Has Egret clock/pram (ADBEgret)|\ ; Egret ADB (Egret8)|\ ; Egret Eight firmware (SoundHasSoundIn)|\ ; Has 8-bit mono sound input <23> (SoundStereoOut)|\ ; has stereo output (SoundPlayAndRecord)|\ ; can Play and Record simultaneously (SoundStereoMixing) ; has stereo mixing dc.l 0 ; Flags for valid ext feature flags 32-63 dc.l 0 ; Flags for valid ext feature flags 64-95 dc.b $56,$00,$00,$00 ; Check VIA1 PA6, PA4, PA2, PA1 dc.b $16,$00,$00,$00 ; VIA1 PA6 = 0, PA4 = 1, PA2 = 1, PA1 = 1 dc.l VIA1InitMacIIsi-InfoMacIIsi ; VIA1 init info dc.l 0 ; no VIA2 init info dc.l SndCntlMacIIsi-InfoMacIIsi ; sound control vector table PN dc.l EgretClockPRAM-InfoMacIIsi ; clock/PRAM vector table

dc.l EgretADBTable-InfoMacIIsi ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.l RBVEgretIntTbl-InfoMacIIsi ; interrupt handlers table PN dc.w 0 ; no CPU ID register dc.w 0 ; spare dc.l IconInfoMacIIsi-InfoMacIIsi ; offset to ICON info ALIGN 4 IMPORT CheckForMDU BitVector32 \ ; Default valid addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid SCCRdExists,\ ; SCCRdAddr is valid SCCWrExists,\ ; SCCWrAddr is valid IWMExists,\ ; IWMAddr is valid SCSIExists,\ ; SCSIAddr is valid SCSIDackExists,\ ; SCSIDackAddr is valid SCSIHskExists,\ ; SCSIHskAddr is valid VIA2Exists,\ ; VIA2Addr is valid ASCExists,\ ; ASCAddr is valid RBVExists,\ ; RBVAddr is valid VDACExists ; VDACAddr is valid BitVector32 ; Default valid addresses 32-63 BitVector32 ; Default valid addresses 64-95 dc.l \ ; Default ext features 0-31 (ClockRTC)|\ ; Has RTC clock/pram (ADBXcvr) ; transceiver ADB dc.l 0 ; Default ext features 32-63 dc.l 0 ; Default ext features 64-95 dc.b $00,$00,$00,$00 ; no special VIA bits to avoid changing dc.l CheckForMDU-MDUtable ; routine to identify this map dc.b MDUDecoder dc.b DecoderInfoVersion ; DecoderInfo version dcb.b 2,0 dc.l $FFFFFFFF ; No Base Address for this decoder MDUtable dc.l $40800000 ; ROM - valid dc.l $58000000 ; DiagROM - valid dc.l $50F00000 ; VIA1 - valid dc.l $50F04000 ; SCC read - optional dc.l $50F04000 ; SCC write - optional dc.l $50F16000 ; IWM - optional dc.l $00000000 ; PWM - unused dc.l $00000000 ; Sound - unused dc.l $50F10000 ; SCSI - optional dc.l $50F12000 ; SCSIDack - optional dc.l $50F06000 ; SCSIHsk - optional dc.l $50F02000 ; VIA2 - optional dc.l $50F14000 ; ASC - valid dc.l $50F26000 ; RBV - optional dc.l $50F24000 ; VDAC - optional dc.l $50F18000 ; SCSIDMA - optional dc.l $50F1E020 ; SWIMIOP - optional dc.l $50F0C020 ; SCCIOP - optional dc.l $00000000 ; OSS - unused dc.l $00000000 ; FMC - unused dc.l $00000000 ; RPU - unused dc.l $00000000 ; unused 21 dc.l $00000000 ; JAWS - unused <25> dc.l $00000000 ; Sonic - unused <45> dc.l $00000000 ; 1st (internal) SCSI96 - unused dc.l $00000000 ; 2nd (external) SCSI96 - unused dc.l $00000000 ; DAFB - unused dc.l $00000000 ; unused 27 dc.l $00000000 ; ROMPhysAddr - unused dc.l $00000000 ; unused 29 dc.l $00000000 ; unused 30 dc.l $00000000 ; unused 31 VideoInfoMDU dc.l 0 ; Physical base address of screen dc.l $FBB08000 ; Logical 32 bit base address of screen dc.l $FBB08000 ; Logical 24 bit base address of screen dc.b $0B ; Slot number to use for PRAM storage dc.b SmPRAMTop+(($0B-$09)*sizeSPRAMRec) ; PRAM address for RBV slot zero dc.b sRsrcBFBasedDir ; Use the BoxFlag-based sRsrc directory directory. dc.b 0 ; Use boxFlag to identify board sRsrc. VideoInfoMacIIsi ; <33> dc.l 0 ; Physical base address of screen <33> dc.l $FEE08000 ; Logical 32 bit base address of screen <33> dc.l $FEE08000 ; Logical 24 bit base address of screen <40> dc.b $0E ; Slot number to use for PRAM storage <33> dc.b SmPRAMTop+(($0E-$09)*\ ; PRAM address for RBV slot zero <33> sizeSPRAMRec) dc.b sRsrcBFBasedDir ; Use the BoxFlag-based sRsrc directory directory. dc.b 0 ; Use boxFlag to identify board sRsrc. NuBusInfoMacIIsi ; slot info for Macintosh IIsi <24> dc.b 0|(1< IF 0 THEN ; ;•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• ;• • ;• This is the old CPU graveyard. All of the universal tables for the old CPUs will be put here until • ;• it's decided that they'll never be used again, at which point, they can be removed entirely. • ;• • ;•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• ProductLookup IF hasMDU THEN dc.l InfoMacIIci-* ; Macintosh IIci dc.l InfoMacIIciPGC-* ; Macintosh IIci, PGC installed ENDIF IF hasOSS THEN dc.l InfoMacIIfx-* ; Macintosh IIfx ENDIF IF hasMDU THEN dc.l InfoMDUUnknown-* ; unknown MDU based machine ENDIF IF hasOss THEN dc.l InfoOSSUnknown-* ; unknown OSS based machine ENDIF DC.L 0 DecoderLookup IF hasOSS THEN dc.l OSSFMCtable-* ; check for OSS/FMC decoder ENDIF DC.L 0 IF hasMDU THEN ALIGN 4 InfoMacIIci dc.l MDUTable-InfoMacIIci ; offset to decoder info dc.l RAMInfo2Bank1Meg-InfoMacIIci ; offset to ram bank info dc.l VideoInfoMDU-InfoMacIIci ; offset to video info dc.l NuBusInfoMacIIci-InfoMacIIci ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.l ViaADBTable-InfoMacIIci ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.w 0 ; no CPU ID register dc.w 0 ; allow room for expansion dc.l IconInfo3Slot-InfoMacIIci ; offset to ICON info ALIGN 4 InfoMacIIciPGC dc.l MDUTable-InfoMacIIciPGC ; offset to decoder info dc.l RAMInfo2Bank1Meg-InfoMacIIciPGC ; offset to ram bank info dc.l VideoInfoMDU-InfoMacIIciPGC ; offset to video info dc.l NuBusInfoMacIIci-InfoMacIIciPGC ; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.l ViaADBTable-InfoMacIIciPGC ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.w 0 ; no CPU ID register dc.w 0 ; spare dc.l IconInfo3Slot-InfoMacIIciPGC ; offset to ICON info ALIGN 4 InfoMDUUnknown dc.l MDUTable-InfoMDUUnknown ; offset to decoder info dc.l RAMInfo2Bank1Meg-InfoMDUUnknown ; offset to ram bank info dc.l VideoInfoMDU-InfoMDUUnknown ; offset to video info dc.l NuBusInfoSixSlotNoVid-InfoMDUUnknown; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.l ViaADBTable-InfoMDUUnknown ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.w 0 ; no CPU ID register dc.w 0 ; spare dc.l IconInfo3Slot-InfoMDUUnknown ; offset to ICON info NuBusInfoMacIIci dc.b 0|(1< dc.l IOPADBTable-InfoMacIIfx ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.w 0 ; no CPU ID register dc.w 0 ; allow room for expansion dc.l IconInfo6Slot-InfoMacIIfx ; offset to ICON info ALIGN 4 InfoOSSUnknown dc.l OSSFMCTable-InfoOSSUnknown ; offset to decoder info dc.l RAMInfo2Bank1Meg-InfoOSSUnknown ; offset to ram bank info dc.l 0 ; no built in video dc.l NuBusInfoSixSlotNoVid-InfoOSSUnknown; offset to NuBus info dc.w 0|\ ; hwCfgFlags (1< dc.l IOPADBTable-InfoOSSUnknown ; ADB/DebugUtil vector table dc.l 0 ; no Power Manager primitives dc.w 0 ; no CPU ID register dc.w 0 ; spare dc.l IconInfo6Slot-InfoOSSUnknown ; offset to ICON info ALIGN 4 IMPORT CheckForOSSFMC BitVector32 \ ; Default valid addresses 0-31 ROMExists,\ ; ROMAddr is valid DiagROMExists,\ ; DiagROMAddr is valid VIA1Exists,\ ; VIA1Addr is valid ASCExists,\ ; ASCAddr is valid SCSIDMAExists,\ ; SCSIDMAAddr is valid SWIMIOPExists,\ ; SWIMIOPAddr is valid SCCIOPExists,\ ; SCCIOPAddr is valid OSSExists,\ ; OSSAddr is valid FMCExists,\ ; FMCAddr is valid RPUExists ; RPUAddr is valid BitVector32 ; Default valid addresses 32-63 BitVector32 ; Default valid addresses 64-95 dc.l \ ; Default ext features 0-31 (ClockRTC)|\ ; Has RTC clock/pram (ADBIop) ; Has IOP ADB dc.l 0 ; Default ext features 32-63 dc.l 0 ; Default ext features 64-95 dc.b $00,$00,$00,$00 ; no special VIA bits to avoid changing dc.l CheckForOSSFMC-OSSFMCtable ; routine to identify this map dc.b OSSFMCDecoder dc.b DecoderInfoVersion ; DecoderInfo version dcb.b 2,0 dc.l $50F1C000 ; FMC Base Address OSSFMCtable dc.l $40800000 ; ROM - valid dc.l $58000000 ; DiagROM - valid dc.l $50F00000 ; VIA1 - valid dc.l $00000000 ; SCC read - unused dc.l $00000000 ; SCC write - unused dc.l $00000000 ; IWM - unused dc.l $00000000 ; PWM - unused dc.l $00000000 ; Sound - unused dc.l $00000000 ; SCSI - unused dc.l $00000000 ; SCSIDack - unused dc.l $00000000 ; SCSIHsk - unused dc.l $00000000 ; VIA2 - unused dc.l $50F10000 ; ASC - valid dc.l $00000000 ; RBV - unused dc.l $00000000 ; VDAC - unused dc.l $50F08000 ; SCSIDMA - valid dc.l $50F12020 ; SWIMIOP - valid dc.l $50F04020 ; SCCIOP - valid dc.l $50F1A000 ; OSS - valid dc.l $50F1C000 ; FMC - valid dc.l $50F1E000 ; RPU - (optional) dc.l $00000000 ; unused 21 dc.l $00000000 ; JAWS - unused <25> dc.l $00000000 ; Sonic - unused <45> dc.l $00000000 ; 1st (internal) SCSI96 - unused dc.l $00000000 ; 2nd (external) SCSI96 - unused dc.l $00000000 ; DAFB - unused dc.l $00000000 ; unused 27 dc.l $00000000 ; ROMPhysAddr - unused dc.l $00000000 ; unused 29 dc.l $00000000 ; unused 30 dc.l $00000000 ; unused 31 VIA1InitOSS dc.b \ ; vBufA initial value (1)|\ ; sound volume level initially 1 (0< ENDWITH ; {DecoderKinds,DecoderInfo,ProductInfo,NuBusInfo} EndProc End