supermario/base/SuperMarioProj.1994-02-09/Internal/Asm/DepVideoEqu.a
2019-06-29 23:17:50 +08:00

2800 lines
122 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;
; File: RBVDepVideoEqu.a -> DepVideoEqu.a
;
; Contains: These are the configuration ROM equates that are specific only to
; built-in video. This includes mode information, sResource IDs,
; etc., etc….
;
; Written by: David Fung/Mike Puckett, September 25, 1990.
;
; Copyright: © 1988-1994 by Apple Computer, Inc., all rights reserved.
;
; Change History (most recent first):
;
; <SM65> 2/6/94 IH Check in DAFB version info.
; <SM63> 1/24/94 rab Sync this file with DepVideoEqu.r. This fixes the video problems
; on DAFB based CPUs…
; <SM62> 1/3/94 PN Delete an extra entry in DAFBVidParams record.
; <SM61> 12/14/93 PN Change sRsrc_SCSI_Transport to $FA
; <SM60> 12/13/93 PN Roll in KAOs and Horror changes to support Malcom and AJ
; machines
; <SM59> 12-06-93 jmp Bumped DAFBs driver version so that the WaterWings extension
; doesnt reload it. Need to roll the Display Manager support
; directly into the driver in ROM.\
; <SM58> 11/10/93 fau Update from SuperMunggio <SMG2>.
; <SMG3> 10/27/93 fau Added the ID for the ATI sRsrc Directory.
; <SM57> 11/9/93 KW added some srsrc's for stp machines
; <SM56> 11/8/93 JRH boxDBLite16 is now boxPowerBookDuo250. boxDBLite20 is now
; boxPenLite.
; <SM55> 10/6/93 RC Took out PDM eVT1 support
; <SM54> 08-16-93 jmp Sorted the BFBased sRsrc-list into purely ascending order (for
; easier eye-ball comparisons with DeclData).
; <SM53> 8/13/93 KW adding two more smurf wombats
; <SM52> 8/12/93 BG Removed things related to WLCDc1 since it will never exist.
; Updated other boxflag references with "official" names.
; <SM51> 8/11/93 KW adding some new srsrc equates for some new smurf machines
; <SM50> 08-06-93 jmp Updated the timing constants used by the Display Manager for
; non-intelligent displays.
; <SM49> 08-03-93 jmp Began cleaning up the support for dynamically allocating RAM in
; PDM for video, as well as added initial support for the three
; new Apple multiscan displays.
; <SM48> 7/14/93 RC stripped out PDM debug flags
; <47> 7/2/93 IH Fix 1096920: Changed civic driver version so I can know which
; driver to patch.
; <SM46> 6/14/93 kc Roll in Ludwig.
; <LW11> 5/14/93 fau Adding PUMA Suport.
; <LW10> 4/29/93 fau #1082085: Added a bit to the Cyclone slotPRAM flags to indicate
; whether the "Boot on composite" should be NTSC or PAL.
; <SM45> 6/3/93 SAM Changed sRsrc_BdPDM to boxPDMEvt1.
; <SM44> 6/1/93 IH Add timing mode constants
; <SM43> 5/6/93 RC Cleaned up the extended sense line support for EVT2 and better
; PDMs, the code still supports EVT1 PDMs
; <SM42> 4/29/93 fau Synchronized with Ludwig:
; <LW9> 4/14/93 fau Changes due to the new way of doing video-in with Civic: New
; private control codes, new offsets, new structures, and
; renumbered/deleted some of the spID's.
; <LW8> 4/9/93 fau Moved the spOpenComponent bit to 3 so that I can give the sound
; guys bits 4-7 of SP_Flags.
; <SM41> 04-07-93 jmp Added the multiscan family mode to the Sonora/PDM sResource IDs
; to support the Display Manager.
; <SM40> 4/6/93 fau More Ludwig Synchronization.
; <LW6> 4/5/93 fau Added the private codes for Civic's driver, as well as some
; specific record definitions for those calls. Added support for
; Puma's W parameter/size/clock in the Video Parameters for Civic.
; <SM39> 4/2/93 chp Synchronize fully with Ludwig version.
; <LW5> 3/22/93 fau Added a sRsrc_BdTempest for the board id for Tempest.
; <LW4> 2/24/93 fau Added a SCSI_Transport sRsrc equate.
; <LW3> 2/16/93 fau Renumbered all the spID's for Civic, so that I could add the
; video-out modes for all Apple monitors.
; <LW2> 1/4/93 fau Added spOpenComponent bit on the SP_Flags byte of PRAM.
; <SM38> 04-01-93 jmp Added support for the no-VRAM case for Sonora/PDM.
; <SM37> 3/31/93 chp Add sRsrc_BdTempest from Ludwig.
; <SM36> 3/9/93 jmp Updated the version number for the Sonora/PDM video driver.
; <SM35> 3/5/93 CCH Added sRsrc ID for Mace on Sonora/PDM.
; <SM34> 2/20/93 SAM Second attempt at that last rev. Added SonoraSenseEnable masks
; that are different from the "read" masks. ForPDM only.
; <SM33> 2/9/93 SAM Added Evt1 changes to invert the bit order of the sense masks.
; <SM32> 01/12/93 jmp Added MiniGamma record from various PrimaryInits.
; <SM31> 01/11/93 jmp Updated various BoxFlag names and added the initial CSC equates.
; <SM30> 12/23/92 RC Added Support for Smurf on Wombat
; <SM29> 12/09/92 jmp Removed the PDM bring-up conditional.
; <SM28> 12/4/92 fau Changed sRsrc_BdCyclone to use the new BoxCyclone33, instead of
; BoxCyclone.
; <SM27> 11/11/92 fau Added support for Clifton (the low-cost clock chip) in Cyclone
; CPU's.
; <SM26> 11/6/92 jmp Added some conditional support for PDM bring-up.
; <SM25> 10/29/92 fau Added a bit in the PRAM for Civic to tell us to drive the
; composite video out.
; <SM24> 10/29/92 jmp (jmp,H48) Fixed a typo in the DAFBSpeed macro where I was using
; A0 instead of A2!
; (jmp,H47) Added support for 33 MHz WLCD.
; <SM23> 10/27/92 fau Added a new long to the Civic Video Parameters: CliftonW (for
; the new clock chip on Tempest).
; <SM22> 10/25/92 HY Added support for LCII boxflag.
; <SM21> 10/17/92 jmp Added support for PDM.
; <SM20> 09/29/92 jmp (jmp,H46) Changed a naming inconsistency in the DAFBVidParams
; data structure.
; <SM19> 09/03/92 jmp Added “68020” support for RISC emulators and updated from
; Horror: (jmp,H45) Added initial support for the AT&T CLUT/DAC
; (Antelope) to be used in Wombat/WLCD systems.
; (jmp,H44) Changed the Sonora ReadSenseLine macro so that it
; would work on the latest rev (EVT-2.3) parts.
; (SWC,H43)Updated CurDBLiteDrvrVersion to 1 to differentiate
; between the Dartanian and DBLite versions of the driver (a bug
; got fixed in the DBLite version).
; (jmp,H42) Eliminated some redundant equates.
; <SM18> 8/31/92 fau Added a couple of equates necessary for the changes made to
; Civic-based CPU's in Decldata.a <SM19>.
; <SM17> 8/9/92 CCH Added support for video on Quadras with RISC cards.
; <SM16> 07/14/92 jmp (jmp,H41) Added in support to make the DAFB part of built-in
; video work correctly among Spike, Eclipse, Zydeco, and all
; Wombat/WLCD CPUs.
; (jmp,H40) Fixed the DAFBBWrite macro to work better when being
; run via the Cub card.
; (jmp,H39) Tightened and eliminated a number of the DAFB macros.
; Also, added a pRAM bit for remembering whether AltSense was
; enabled the last reboot. (At the momment, this bit is only used
; for DAFB because it puts out the sync-on-green signal, and we
; might want to keep the same sync-on-green state even though the
; AltSense code changed. I dont think Vail or Cyclone need to
; know that AltSense was enabled last reboot, but they could use
; this bit if they ever did.)
; (jmp,H38) Made the DAFBReadSenseLines macro work better with
; Wombat DAFBs (due to the fact that the WombatDAFB is not tied to
; the 040 reset instruction like other DAFB-based CPUs are).
; (jmp,H37) Added yet another base-address constant for Wombat.
; (jmp,H36) Needed some new base-address constants for Wombat.
; (jmp,H35) Added first-pass support for the Wombat version of
; DAFB.
; (jmp,H34) Cleaned up the DAFB byte and word write macros, and a
; fixed a minor bug in the DAFBIdle macro (the way it was
; originally written, there could have been cases where the AC824A
; would NOT have put back into “compatible” mode).
; <SM15> 7/13/92 CCH Modified DAFBBWrite macro to perform byte writes.
; <SM14> 7/7/92 CSS Change references for boxApollo to boxClassisII.
; <SM13> 7/7/92 fau Moved the equ for sRsrc_BdWombat20 to the correct location as
; the boxWombat20 flag moved from 29 to 52.
; <SM12> 6/26/92 fau Remove DSP3210 sRsrc in Cyclone, since the DSP is not slot
; manager-based anymore. Added ID's for 12" and 13" monitor
; support for composite out.
; <SM11> 6/19/92 KW (fau,P23) Moved DSP srsrc from $F0 to $F8. We had reserved $40
; id's for displays with video-in disabled, but only $30 for
; displays with video-in disabled. Changed it to $35 for each, so
; video-in id's run all the way to $F7. Added id's for Goldfish
; out of composite.
; <SM10> 6/18/92 KW Rolled back in SM8
; <SM9> 6/17/92 KW Roll back to SM7
; <SM8> 6/17/92 KW (jmp,H34) Cleaned up the DAFB byte and word write macros, and a
; fixed a minor bug in the DAFBIdle macro (the way it was
; originally written, there could have been cases where the AC824A
; would NOT have put back into “compatible” mode).
; (jmp,H33) Eliminated yet even more of the old DAFBVidParams
; fields, so I adjusted the data structures accordingly.
; (jmp,H31) Updated the SonoraVidParams record to accomdate
; Omega-2 and added some new burn-in constants.
; (fau,P21) Added video-in equates for Vesuvio, Kong, Rubik, 19"
; Display and all VGA families for Civic-based CPU's.
; <SM7> 6/4/92 KW (jmp,H30) Added some new data structures for describing the
; newly-compacted DAFB vidParams.
; (BG,H29) Changed various Wombat-style BoxFlag references to
; their new, more descriptive names.
; (jmp,H28) Eliminated support for the no-vRAM case in V8-base
; systems.
; (jmp,H27) Changed the “sRsrcZydecoDir” name to the more generic
; “sRsrcBFBasedDir” (BF=BoxFlag) name.
; (jmp,H26) Added some base-address constants for V8 to eliminate
; the VideoInfo arrays in Universal.a.
; (jmp,H25) Added some new CPU board ID constants (based on
; BoxFlag), added some new DAFB constants for Wombat, and added
; some conditionals for nuking the Apollo stuff and killing the
; Slot Manager checksum of Slot $0s DeclData as its somewhat
; redundant.
; KW Removed FirstVidMode,SecondVid etc since already in VideoEqu
; <SM6> 5/21/92 RB Making changes for Cyclone
; <SM5> 5/17/92 kc Roll in Horror changes. Comments follow:
; <H24> 04/24/92 jmp Added constants to support the “switch-on-the-fly” Rubik-512 to
; Rubik-560 and vice-versa call for Sonora.
; <H23> 04/20/92 jmp Added constants to support the 640x400 mode of the HiRes
; displays.
; <H22> 3/17/92 SWC Renamed boxDBLite->boxDBLite25 and boxDBLiteLC->boxDBLite33, and
; added equates for boxDBLite16 and boxDBLite20.
; <H21> 02/20/92 jmp (jmp,Z27) Changed the DAFB clock-select equates from
; Bset/clr-oriented to Bfins/Bfext-oriented.
; <H20> 02/19/92 jmp Changed the Condor references to Wombat.
; <H19> 2/18/92 JC Changed boxCarnation to boxCarnation33 and boxVail to boxVail25.
; <H18> 2/17/92 SAM Changed boxCondor to boxWombat.
; <H17> 01/27/92 jmp Moved some equates from DepVideoEqu.a to ROMEqu.a.
; <H16> 01/22/92 jmp (jmp,Z26) Renamed all the “NoConnect” equates to “AltSense.”
; <H15> 1/14/92 SWC Updated boxFlag labels to use shipping product names.
; <H14> 01/11/92 jmp Added equates for the newly-defined extended sense codes.
; <H13> 12/19/91 jmp Added the initial support for Rubik-560 mode for Sonora.
; <H12> 12/17/91 jmp Added a new baseAddr offset for Kong & Vesuvio on DAFB.
; <H11> 12/16/91 HJR Added Dartanian sRsrc_BdDartanian equate.
; <H10> 12/12/91 jmp Added more Sonora-related equates and some new DBLiteLC equates.
; <H9> 11/27/91 jmp Added massive amounts of Sonora equates.
; <H8> 11/26/91 jmp Added some GSC and DBLite equates.
; <H7> 11/12/91 jmp Defined two new DAFBFlag bits to indicate the size of vRam.
; <H6> 11/05/91 jmp Added more 19” display equates for DAFB.
; <H5> 11/01/91 jmp Added equates for (eventually) supporting 19” displays with
; DAFB.
; <H4> 10/29/91 jmp Changed the Spike33 names to Condor.
; <H3> 10/24/91 jmp Added in constants to support the gray-scale DB-Lite (up to
; 4bpp) LCD display.
; <H2> 10/24/91 jmp Updating to Zydeco-TERROR version.
; <SM4> 4/7/92 JSM Roll-in changes from Reality:
; <2> 3/24/92 JSM Nuke more code names: boxAuroraCX25 is boxMacIIci, boxF19 is
; boxMacIIfx.
; <SM3> 3/31/92 JSM Rolled this file into Reality.
; <SM2> 2/11/92 RB Update to reflect the Zydeco changes (beta). Updated boxFlags
; <SM1> 12/29/91 RB first checked in
; ----------------------------------------------------------------------
; Zydeco History:
; <26> 01/20/92 jmp Renamed all the “NoConnect” equates to “AltSense.”
; <25> 01/09/92 jmp Added equates for the newly-defined extended sense codes.
; <24> 12/17/91 jmp Added a new baseAddr offset for Kong & Vesuvio on DAFB.
; <23> 11/08/91 jmp Defined two new DAFBFlag bits to indicate the size of vRam.
; <22> 11/05/91 jmp Added equates for supporting 19” Displays with DAFB.
; <21> 10/16/91 jmp Modified the DAFBIdle & DAFBReset macros to set & reset a flags
; register saying whether DAFB video is active or not. This was
; added to support turning video back on immediately in the event
; that the video driver was closed and needed to be opened again
; during “normal” operation of the CPU.
; <20> 09/17/91 jmp When “grounding out” the ECL clock, we also needed to make sure
; the 100 Mhz clock is shut off. This 100 Mhz clock is controlled
; by bit 9 (PIXSEL0) in the DAFB clock configuration register. I
; just added an equate for this.
; <19> 09/17/91 jmp Added support for “grounding out” the ECL clock signals in
; software using the AMD-ACDC for Zydeco/Spike33 CPUs.
; <18> 09/13/91 jmp Added support for 16pp on Rubik displays when only 512K of vRAM
; is around in preparation for Spike33s.
; <17> 8/26/91 jmp Added support for a Spike33-type box.
; <16> 8/21/91 jmp Changed all the Eclipse33 references to Zydeco.
; <15> 8/9/91 jmp Added equates to fix a problem with NTSC & PAL family modes
; where changing the amount of vRAM didnt cause DAFBs part of
; PrimaryInit to re-validate the SP_LastConfig pRAM byte. Also,
; added a boundary equate to distinguish 16bpp-capable DAFB sRsrcs
; from non-16bb-capable sRsrcs.
; <14> 8/7/91 jmp Added 16bpp support for all applicable DAFB displays.
; <13> 7/29/91 jmp Added equates for supporting Eclipse33 (Zydeco) & TIM-LC.
; <12> 7/13/91 jmp Added constants to support extending the factory burn-in
; no-connect code.
; <11> 7/11/91 jmp Added code to more intelligently handle the enabling & disabling
; of page mode.
; ———————————————————————————————————————————————————————————————————————————————————————
; Pre-Zydeco ROM comments begin here.
; ———————————————————————————————————————————————————————————————————————————————————————
; <10> 6/29/91 jmp Changed the DAFBDriver version number back to $00 from $01.
; <9> 6/27/91 jmp Added version number constants for the various DAFB revisions.
; <8> 6/26/91 jmp Rewrote the ACDC-whacking code to be more AC842A (AMD) friendly.
; <7> 6/25/91 jmp Fixed the problem where 16bpp was not sticking.
; <6> 6/24/91 jmp Added support for 16bpp Vesuvio & RGB Portrait displays.
; <5> 6/17/91 jmp Updated the base address offsets and rowbytes for NTSC, PAL,
; SuperVGA, GoldFish, Kong, and Vesuvio in order to accomodate
; Mitsubishi vRams. Also, updated the MinorLength values to
; accomodate the new base addresses and rowbytes.
; <4> 5/25/91 jmp The DAFBIdle macro was shutting off DAFB entirely. For the most
; part, this is NOT wrong; however, if we completely shut DAFB off
; at driver close time, and someone reopens the driver before the
; machine is restarted, we cant get video going again without
; going thru the entire DAFB reset cycle, which causes the screen
; to jump. So, I now just kill sync and video refresh, which does
; exactly what I need.
; <3> 5/24/91 jmp Added support for sync-on-green in DAFB and cleaned up the
; DAFBResetDelay macro.
; <2> 5/22/91 jmp Now enable/disable fast page mode depending on whether DAFB is
; configured for row interleave vRam accesses. I only added this
; to the driver version of the DAFBSpeed macro because we dont
; need to do this in PrimaryInit.
; <1> 5/22/91 jmp Changed name to DepVideoEqu.a from RBVDepVideoEqu.a to reflect
; the fact that this file is used by all built-in videos, not
; just RBV.
; <25> 5/15/91 jmp Added DB-Lite support. Also, had the wrong constant for
; indexedSenseFP; should have been 1 not 5 (5 is for
; indexedSenseRGBFP). This caused the Portrait Display to not be
; luminance-mapped when “Color” mode was turned on.
; <24> 5/10/91 jmp Added sRsrc constants for SuperVGA. Aliased IsSlow to Is16 (bit
; 11) in GFlags for supporting 25 vs. 33 MHz CPU configs. Added
; new DAFBSpeed macros for PrimaryInit & Driver. Code review
; changes: cleaned up the DAFB macros.
; <23> 4/26/91 jmp Added a new baseAddr offset constant for PAL convolved.
; <22> 4/25/91 jmp Updated dafb33MhzConfig constant to new value for 80ns VRam.
; <21> 4/23/91 jmp Added indexedSense codes for the 2P and FP displays, and fixed
; the Minor/MajorLength values for non-convolved PAL were wrong
; (i.e., they were zero).
; <20> 4/15/91 djw Add spId for functional video sRsrc's video attibutes (a data
; field).
; <19> 4/4/91 jmp My previous “optimization” caused some DAFB 1 machines to hang.
; So, I now read the DAFB test register 4 times, which could take
; as long as 480 ns. We only 320 ns DAFB reset writes (even on
; DAFB 1s), so this should be okay.
; <18> 4/3/91 jmp Reduced the number of Nops in the DAFBResetDelay macro to two
; (from eight). I determined this value empirically; before, I
; was just guessing based on Dale Adams spec.
; <17> 4/1/91 jmp SixteenBitGray & ThirtyTwoBitGray were inverted!
; <16> 3/25/91 jmp Added a record for Slot pRam.
; <15> 3/18/91 jmp Updated rowbytes constants for 32bpp PAL.
; <14> 3/8/91 jmp Added a 768 rowbytes constant, and made the defmBaseOffset
; constants for PAL & NTSC more general.
; <13> 3/4/91 jmp Added equates (spIDs) for standard and inverse gamma tables.
; Added equates for factory burn-in stuff.
; <12> 2/25/91 jmp Added DAFBSpeed macro for supporting 33Mhz DAFBs.
; <11> 2/15/91 jmp Added various comments and cleaned up file. Added
; “indexEntries” equate for the -1 modes of Get/SetEntries. Also,
; added macro for checking/setting 33Mhz operation of DAFB.
; <10> 2/10/91 jmp Updated NTSC and PAL data for 4/8bpp convolved. Added
; defmBaseOffset to screen clearing params. Added in “Misc”
; params to video params for ChkMode in driver. The Rubik gamma
; table contained the 4•8/8•24 gType id! And updated GoldFishs
; clock parameters (to match those of the Portrait Display).
; <9> 2/3/91 jmp Added the new rowbytes values (ST/FF) for PAL. Added
; MinorLength values for NTSCFF/ST a,b and PALFF/ST a. Added new
; defmBaseOffsets for NTSCST and PALST. Added sRsrc ID for 040
; CPU family. And added base address offset constant for NTSC and
; PAL.
; <8> 1/30/91 jmp Added constants and macros to support the extended sense line
; encodings. Added a macro for doing DAFB resets. Added NTSCFF
; and NTSCST data.
; <7> 1/24/91 jmp Added some constants to support extended-sense-line displays.
; <6> 1/21/91 jmp Incremental change -- added support (spIDs) for monitors that
; have both RGB and Mono-Only types.
; <5> 1/15/91 DAF Added DAFB equates (billions of them), updated SONIC equates,
; moved some slot decl ROM type equates to ROMEqu.a. Also changed
; video spIDs to new ranges.
; <4> 1/9/91 JK Added Sonic Ethernet, Eclipse and Spike support.
; <3> 12/11/90 JJ Mac LC: Change all box flag references for Mac LC to use symbol
; boxMacLC.
; <2> 12/11/90 HJR Integration of V8 and Tim video into Terror Project.
; <5> 6/12/90 JJ Add support for Elsie Apple II emulation video modes.
; <4> 4/30/90 JJ Adding multiple board sRsrc support.
; <3> 4/9/90 JJ Rolling in changes from Reality. Original comments below.
; {4} 4/3/90 DAF Added equates for support of Elsie Video features.
; {3} 4/3/90 DF Relocated driver private storage flag bit name equates here from
; RBVDriver.a. They are shared with the Elsie driver here now
; <2> 2/15/90 CV Rolling in changes from Reality. Original comments below.
; {2} 2/14/90 DAF Updated equates for integration with Elsie video code.
; <2.0> 7/16/89 GMR Rolling in changes from 'Reality'. Original 'Reality' version is
; 2.1. Original comments are below.
; <2.1> 7/11/89 DAF FOR AURORA BUILD - Added equates for 1MB RAM size and flag word
; for non-16MHz machines
; <2.0> 7/11/89 DAF FOR AURORA BUILD - Relocated a lot of equates from here to
; ROMEqu.a
; 7/10/89 DAF Relocated many equates from this file to ROMEqu.a where they
; really belong. Generally cleaned up file. Changed MinorLength
; equates to be true size of frame buffer rather than rounded
; size.
; <1.9> 6/30/89 CSL Updated CPUShift to place CPU sRsrc id's in the proper range
; <1.8> 6/30/89 DAF Added a number of new equates for the declaration ROM, including
; board and CPU IDs
; 6/30/89 DAF Corrected CPUShift to place the sRsrc directory entries in the
; appropriate order.
; 6/28/89 DAF Added equates for the monitor sense ID's. Added official board
; and drHwIDs for RBV machines. Added false board IDs for other
; CPUs. Corrected RAM lengths since MMU.a does 32K wraparounds on
; frame buffer
; <1.7> 5/27/89 DAF Updated equates for minor length in each of the different Aurora
; video modes
; <1.6> 5/16/89 DAF Updated equates to make video mode family names a superuser
; feature
; 5/16/89 DAF Added name dir shift value
; <1.5> 5/15/89 DAF Added some new equates in support of PrimaryInit and declData
; changes
; 5/6/89 DAF Added sNameDirFlags, name ResIDs
; <•1.4> 4/15/89 DAF Added sGammaDirectory equate
; 4/15/89 DAF Added sGammaDir
; <1.3> 2/27/89 DAF Removed A/UX 1.0 driver equates
; 2/27/89 DAF Removed A/UX equates, added scrnInval definition for now.
; <1.2> 2/21/89 djw deleted equates for new slot manager temporarily put in this
; file
; <1.1> 11/14/88 DAF Removed redundant hardware equates (now in HardwareEqu.a)
; <1.0> 11/11/88 DAF Adding to EASE for the first time.
; 10/31/88 DAF Integrated some equates from the old DeclData.a file
; 10/26/88 DAF New today.
; Various build flags…
;
ApolloSupported Equ 0 ; Apollo isnt really supported by Horror, so no use carrying it around.
RBVSupported Equ 0 ; We needed more space, and RBV was the logically thing to remove at this point.
TIMSupported Equ 0 ; Needed even more space.
CheckSumEnabled Equ 0 ; No need to have the SlotManager checksum us since the ROM start code does it, too!
; Driver Version Numbers…
;
CurRBVDrvrVersion Equ $0000 ; Word-sized version numbers (like 'vers' resources).
CurElsieDrvrVersion Equ $0000
CurV8DrvrVersion Equ $0001 ; LC/LCII are 0.0, LC930 is 0.1.
CurTimDrvrVersion Equ $0000
CurDAFBDrvrVersion Equ $0007 ; Spike/Eclipse are 0.0, Zydeco is 0.1/0.2.
; Wombat is 0.3.
; System Enabler 040 (v1.0) is 0.4.
; Primus/Optimus is 0.5.
; WaterWings (Pontoon Disk) is 0.6.
; SuperMario has been bumped to 0.7 even though its
; functionality (currently 12-6-93) is still at 0.3.
; Need to update it ASAP!
; Excelsior (STP/rocinante) is 0.8.
CurApolloDrvrVersion Equ $0000
CurDBLiteDrvrVersion Equ $0001
CurGSCDrvrVersion Equ $0000 ; Renamed DBLiteDriver to GSC internally!
CurSonoraDrvrVersion Equ $0001 ; LC III is 0.0, PDM is 0.1.
CurCSCDrvrVersion Equ $0001 ; 0.0 is Escher, BlackBird is 0.1, Yeager is 0.2.
CurCivicDrvrVersion Equ $0001 ; Version 0.1 has fix Display Manager
; Misc Equates…
;
kMegRAM EQU $100000 ; constant for 1Mb
k1536KvRAM Equ $180000 ; constant for 1.5Mb
k256KvRAM EQU (256*1024) ; constant for 256Kb
k512KvRAM EQU (512*1024) ; constant for 512Kb
k1MvRAM EQU (1024*1024) ; constant for 1MB
k2MvRAM EQU 2*k1MvRAM ; constant for 2MB
seSuccess EQU 1 ; sucessful sExec
ROMRevLevel Equ 5 ; Were on the 5th (major) revision of the Slot 0 DeclData.
CPUShift EQU $B0 ; add this value to board spIDs to
; create CPUspIDs
ClrDepthBitsMask EQU $F8 ; bit mask to clear V8 and Ariel control register screen
; depth bits (top 5 bits)
indexEntries Equ -1 ; -1 mode for Get/SetEntries.
alphaEntries Equ -2 ; -2 mode for Get/SetEntries (uses alpha channel in CLUT)
burnInSiz Equ $0004 ; Number of bytes in pRAM for burn-in signature.
burnInLoc Equ $00FC ; Where burn-in signature starts in pRAM.
burnInSig Equ 'RNIN' ; The burn-in signature.
burnInSigAlt Equ 'SRNN' ; The alternate burn-in signature.
burnInSig12 Equ 'RN12' ; These are the new burn-in signatures. They
burnInSig13 Equ 'RN13' ; define all the Apple-produced displays.
burnInSig15 Equ 'RN15' ; We could define similar signatures for
burnInSig16 Equ 'RN16' ; things like VGA, NTSC, and PAL, but the
burnInSig19 Equ 'RN19' ; factory probably couldnt use them anyway.
burnInSig21 Equ 'RN21'
; Timing mode constants for Display Manager MultiMode support
; Corresponding .h equates are in DisplaysPriv.h
; .a equates are in DepVideoEqu.a
; .r equates are in DepVideoEqu.r
timingInvalid Equ 0 ; Unknown timing… force user to confirm.
timingApple12 Equ 130 ; 512x384 (60 Hz) Rubik timing.
timingApple12x Equ 135 ; 560x384 (60 Hz) Rubik-560 timing.
timingApple13 Equ 140 ; 640x480 (67 Hz) HR timing.
timingApple13x Equ 145 ; 640x400 (67 Hz) HR-400 timing.
timingAppleVGA Equ 150 ; 640x480 (60 Hz) VGA timing.
timingApple15 Equ 160 ; 640x870 (75 Hz) FPD timing.
timingApple15x Equ 165 ; 640x818 (75 Hz) FPD-818 timing.
timingApple16 Equ 170 ; 832x624 (75 Hz) GoldFish timing.
timingAppleSVGA Equ 180 ; 800x600 (56 Hz) SVGA timing.
timingApple1Ka Equ 190 ; 1024x768 (60 Hz) VESA 1K-60Hz timing.
timingApple1Kb Equ 200 ; 1024x768 (70 Hz) VESA 1K-70Hz timing.
timingApple19 Equ 210 ; 1024x768 (75 Hz) Apple 19" RGB.
timingApple21 Equ 220 ; 1152x870 (75 Hz) Apple 21" RGB.
timingAppleNTSC_ST Equ 230 ; 512x384 (60 Hz, interlaced, non-convolved).
timingAppleNTSC_FF Equ 232 ; 640x480 (60 Hz, interlaced, non-convolved).
timingAppleNTSC_STconv Equ 234 ; 512x384 (60 Hz, interlaced, convolved).
timingAppleNTSC_FFconv Equ 236 ; 640x480 (60 Hz, interlaced, convolved).
timingApplePAL_ST Equ 238 ; 640x480 (50 Hz, interlaced, non-convolved).
timingApplePAL_FF Equ 240 ; 768x576 (50 Hz, interlaced, non-convolved).
timingApplePAL_STconv Equ 242 ; 640x480 (50 Hz, interlaced, non-convolved).
timingApplePAL_FFconv Equ 244 ; 768x576 (50 Hz, interlaced, non-convolved).
; Various extra Control/Status calls used by built-in video
;
cscV8GoodBye Equ 128 ; Used by V8Driver for graying the screen at reset time.
cscRubik560 Equ 129 ; Used by the SonoraDriver to toggle the Rubik-560 mode.
cscSyncOnGreen Equ 128 ; Used by DAFBDriver for enabling/disabling sync on green.
csc16bpp Equ 129 ; Used by DAFBDriver for allowing/blocking 16bpp when AC842A is around.
cscPageMode Equ 130 ; Used by DAFBDriver for enabling/disabling page mode.
cscAltSense Equ 131 ; Used by for enabling sRsrcs via the alternate sense pRAM byte (Sonora/DAFB).
cscPowerSelect Equ 132 ; Turn on/off power to the video circuitry (VSC/Jet/Keystone).
cscSleepWake Equ 134 ; Sleep/Wake the video circuitry (in some cases, could be the same as cscPowerSelect).
powerSelSig Equ 'powr' ; Signature returned in csData by the cscPowerSelect status call.
sleepWakeSig Equ 'slwk' ; Signature returned in csData by the cscSleepWake status call.
; Cyclone specific private calls
cscSetCompositeOut Equ 133 ; Used by CivicDriver for setting/clearing the PRAM flag for composite out
cscSetRGBBypass Equ 135 ; Used by CivicDriver for bypassing RGB outputs (enabling composite-out) on Civic.
cscSetVideoIn Equ 136 ; Used by CivicDriver for enabling/disabling video-in.
cscSetVidInMode Equ 137 ; Used by CivicDriver for selecting the video-in mode.
cscSetVidInRect Equ 138 ; Used by CivicDriver for specifying the destination Rect for Video-in.
cscGetCompositeOut Equ 133 ; Used by CivicDriver for getting the status of the PRAM flag for composite out
cscGetRGBBypass Equ 135 ; Used by CivicDriver for getting the status of the RGB outputs.
cscGetVideoIn Equ 136 ; Used by CivicDriver for getting the video-in status.
cscGetVidInMode Equ 137 ; Used by CivicDriver for getting the video-in mode.
cscGetVidInRect Equ 138 ; Used by CivicDriver for getting the destination Rect for Video-in.
cscGetCompCapab Equ 139 ; Used by CivicDriver for getting the available composite capabilities for the current monitor
; Slot pRAM
;
; Slot pRam is used in various ways. The first two bytes are used by the Slot Manager to record
; the slots boardID. The remaining bytes are left undefined by the Slot Manager. Built-in
; video uses Slot pRam as follows:
;
SP_Params Record 0
SP_BoardID Ds.w 1 ; BoardID.
SP_Depth Ds.b 1 ; spID of Depth (Mode). (vendorUse1)
SP_LastConfig Ds.b 1 ; spID of last boot-up configuration. (vendorUse2)
SP_DfltConfig Ds.b 1 ; spID of default configuration… (vendorUse3)
SP_MonID Ds.b 1 ; Sense code of last display. (vendorUse4)
SP_Flags Ds.b 1 ; Various flags. (vendorUse5)
SP_AltSense Ds.b 1 ; Alternate senseID byte. (vendorUse6)
SP_Size Equ *
EndR
; Slot pRAM flag bits
;
spSyncOnGreen Equ 0 ; True if were supposed to put sync on green (DAFB).
spHas16bppACDC Equ 1 ; True if AC842A is around on DAFB.
spAllow16bpp Equ 2 ; True if were allowing 16bpp to be used on DAFB.
spPageMode Equ 3 ; True if were enabling DAFBs PageMode.
spHas16bppSRsrc Equ 4 ; True if weve actually using a 16bpp sRsrc on DAFB.
spAltSenseEnb Equ 5 ; True if AltSense was used before (for keeping SOG state).
spVRAMBit0 Equ 0 ; These two bits are used to encode the amount of
spVRAMBit1 Equ 1 ; vRAM available in Sonara-based CPUs.
numSPVRamBits Equ 2 ; Width for Bfins/Bfext of spVRAMBits
spVRAMBits Equ 31-spVRAMBit1 ; Offset for Bfins/Bfext.
spKbdNMI Equ 2 ; True if were enabling Keyboard NMI (Sonora).
spFamilyChanged Equ 2 ; True if the family mode changed on PDM; always reset in PrimayrInit.
spNoVRAM Equ 3 ; True if video RAM is not VRAM-based.
spVideoIn Equ 0 ; True if were supposed to enable video-in (Civic).
spCompOut Equ 1 ; True if we should drive out composite even if no monitor connected (CIVIC)
spCompOutPAL Equ 2 ; If spCompOut is set, then this tells us (if true), to drive PAL. (CIVIC)
spOpenComponent Equ 3 ; True if Open call to a component is for registering purposes only! (Civic)
; Note: In Cyclone, the Built-in sound sifter will use bits 4-7 of the SP_Flags byte of the Slot 0 PRAM
spSampleRate Equ 4 ; The built-in sound sifter's hardware output sample rate ( 0 => SampleRate 24 or 48, 1 => SampleRate 22.05 or 44.1)
spClockRate Equ 5 ; The built-in sound sifter's hardware output clock rate ( 0 = Selects the first clock input to the PLL, 1 selects 2nd clock)
spPlayThrough Equ 6 ; Specifies whether sound-playthrough for the whole system (0 = noPlayThrough)
spMikeOrCDInput Equ 7 ; Specifies the source for the sound input (External Mike = 0, Internal CD = 1)
; Slot pRAM alternate senseID masks
;
spAltSenseValidMask Equ $40 ; Upper two bits must be valid in order to use lower six.
spAltSenseMask Equ $3F ; Lower six bits are the indexed (mapped) sense code.
spAltSenseDisable Equ $80 ; Bits used for temporarily disabling the alternate senseID.
; Definition of each of the entries in the scrn resource.
;
ScrnRecord Record 0
srDrvrHW Ds.w 1 ; Hardware id of video card.
srSlot Ds.w 1 ; Slot number.
srDCtlDevBase Ds.l 1 ; DCtlDevBase (baseAddr) from AuxDCE.
srMode Ds.w 1 ; Mode (spID) of depth.
srFlagMask Ds.w 1 ; ????
srFlags Ds.w 1 ; GDevice flags.
srColorTable Ds.w 1 ; RsrcID of desired clut.
srGammaTable Ds.w 1 ; RsrcID of desicred gama.
srRect Ds.w 4 ; GDevice rectangle.
srCtlCount Ds.w 1 ; ????
ScrnRecSize Equ *
Endr
; Definition for the “mini” gamma table used by many of the various PrimaryInits.
;
MiniGamma Record 0 ; Entries for mini gamma table used in DAFBInit.
blackRed Ds.b 1 ; Red
whiteRed Ds.b 1 ;
blackGreen Ds.b 1 ; Green
whiteGreen Ds.b 1 ;
blackBlue Ds.b 1 ; Blue
whiteBlue Ds.b 1 ;
Ds.b 2 ; <pad>
GT_Size Equ *
Endr
; Definition for the Cyclone Private Records
VDVidInRect RECORD 0
csRect DS.W 4 ; Rect - (long) rectangle containg bounds of video in
csPage DS.W 1 ; INTEGER - (word) page to switch in
csBaseAddr DS.L 1 ; Ptr - (long) base address of page
ENDR
VDCompositeOut RECORD 0
csMode DS.b 1 ; BYTE - (byte) enable/disable flag
csStandard DS.b 1 ; BYTE - (byte) NTSC/PAL flag
csConv Ds.b 1 ; BYTE - (byte) NonConv/Conv flag
ENDR
VDInternalInfo RECORD 0
csMode DS.b 1 ; BYTE - spID to get info on
csNTSCID DS.b 1 ; BYTE - spID of corresponding NTSC-capable parameters
csNTSCIDConv DS.b 1 ; BYTE - spID of corresponding NTSC Conv-capable parameters
csPALID DS.b 1 ; BYTE - spID of corresponding PAL-capable parameters
csPALIDConv DS.b 1 ; BYTE - spID of corresponding PAL Conv-capable parameters
ENDR
; Various DAFB Equates…
;
; The screen clearing code for DAFB is pretty straight forward with a couple of minor wrinkles. The
; wrinkles come about because NTSC and PAL support both “safe title” (ST) and “full frame” (FF) display
; areas. Since the ST mode is always smaller in area than a displays FF area, the “non-viewable” area
; in the ST mode must be “blacked out.” But, in order to keep the code general, we always try to
; draw the border. In order to do this, we must carry around the FF vs. ST information. The following
; SC_Params record is where that information is housed.
;
SC_Params Record 0
SC_ActiveWidth Ds.w 1 ; Number of doublelongs-1 (per row) for active part of screen.
SC_BorderHeight Ds.w 1 ; Number of rows for Top/Bottom section of border.
SC_BorderWidth Ds.w 1 ; Number of longs-1 for Top/Bottom section of border.
SC_BorderSide Ds.w 1 ; Number of longs for Left/Right section of border (in Middle).
SC_SkipFactor Ds.w 1 ; Difference between rowbytes and cleared part of screen.
SC_Size Equ *
EndR
DAFBBppParams Record 0,Increment ; This structure is used for switching depths.
dbpRowWords Ds.w 1 ; Framebuffer params.
dbpClkCfg Ds.w 1 ;
dbpConfig Ds.w 1 ;
dbpHSerr Ds.w 1 ; Horizontal timing params.
dbpHlfLn Ds.w 1 ;
dbpHEq Ds.w 1 ;
dbpHSP Ds.w 1 ;
dbpHBWay Ds.w 1 ;
dbpHBrst Ds.w 1 ;
dbpHBP Ds.w 1 ;
dbpHAL Ds.w 1 ;
dbpHFP Ds.w 1 ;
dbpHPix Ds.w 1 ;
dbpTimingAdj Ds.w 1 ;
dbpACDCPCBR Ds.w 1 ; ACDC (CLUT/DAC) PCBR.
dbpTimingAdjAMD Ds.w 1 ; Alternate AMD parameters
dbpHALAMD Ds.w 1 ;
dbpHFPAMD Ds.w 1 ;
DBPSize Equ *
Endr
DAFBVidParams Record 0,Increment ; This structure is used for programming DAFB.
dvpNSC8531 Ds.b 10 ; The NSC-8531 programmable clock parameters.
dvpNSC8534 Ds.w 3 ; The NSC-8534 programmable clock parameters.
DVPMaxModeBase Equ *
dvpMaxModeA Ds.b 1 ; Maximum mode (depth) for A-sized sRsrc.
dvpMaxModeB Ds.b 1 ; Maximum mode (depth) for B-sized sRsrc.
dvpBadDepth Ds.b 1 ; Index of depth having “bad” AMD param; 0 if okay.
dvpFudge Ds.b 1 ; Fudge factor to add to bad AMD param.
dvpNumRows Ds.w 1 ; Number of rows-1 for active (QD) part of screen.
dvpVHLine Ds.w 1 ; Vertical timing params.
dvpVSync Ds.w 1 ;
dvpVBPEq Ds.w 1 ;
dvpVBP Ds.w 1 ;
dvpVAL Ds.w 1 ;
dvpVFP Ds.w 1 ;
dvpVFPEq Ds.w 1 ;
DVPHdrSize Equ * ;
dvpRowWords Ds.w 1 ; Keep up-to-date with DAFBBppParams.
dvpClkCfg Ds.w 1 ; (Used for 1bpp in PrimaryInit.)
dvpConfig Ds.w 1 ;
dvpHSerr Ds.w 1 ;
dvpHlfLn Ds.w 1 ;
dvpHEq Ds.w 1 ;
dvpHSP Ds.w 1 ;
dvpHBWay Ds.w 1 ;
dvpHBrst Ds.w 1 ;
dvpHBP Ds.w 1 ;
dvpHAL Ds.w 1 ;
dvpHFP Ds.w 1 ;
dvpHPix Ds.w 1 ;
dvpTimingAdj Ds.w 1 ;
dvpACDCPCBR Ds.w 1 ;
dvpTimingAdjAMD Ds.w 1 ;
dvpHALAMD Ds.w 1 ;
dvpHFPAMD Ds.w 1 ;
Endr
; Versions of the DAFB chip (accessed on the DAFBTest register).
;
DAFB1Vers Equ $00 ; DAFB 1: Original hardware release.
DAFB2Vers Equ $01 ; DAFB 2: Fix for NTSC & PAL 1,2 bpp modes.
DAFB3Vers Equ $02 ; DAFB 3: Support for AC842A (16bpp ACDC).
DAFB4Vers Equ $03 ; DAFB 4: The Wombat DAFB.
; Instead of burning valuable pRAM to communicate between PrimaryInit/SecondaryInit and the video
; driver, we use a conviently unused DAFB 12-bit register.
;
DAFBFlags Equ Swatch_Test ; A conveniently unused DAFB 12-bit register.
rvBeenHere Equ 0 ; The “beenHere” flag for the Remote Video Switch.
rvChanged Equ 1 ; Says whether the remote video switch has changed states.
rvRemoteState Equ 2 ; The “beenHere” state of remote video.
isWombat Equ 3 ; If this bit is set, weve got a WombatDAFB.
RadiusTPDBit Equ 4 ; If this bit is set, a Radius TPD is attached.
RadiusDevType Equ 5 ; RadiusTPD DevType: 0=monochrome, 1=color.
wLin16Bpp Equ 6 ; For Wombat, set if using the linear 16bpp CLUT/DAC.
w40MHz Equ 7 ; For Wombat, set if running at 40Hz.
vRamBit0 Equ 9 ; These two bits say whether there is 512K, 1Meg, or
vRamBit1 Equ 10 ; 2Megs of vRAM associated with DAFB.
numVRamBits Equ 2 ; Width for Bfins/Bfext of the vRamBits.
vRamBits Equ 31-vRamBit1 ; Offset for Bfins/Bfext.
videoEnabled Equ 11 ; Set if video is actually turned on.
; DAFB supports a large number of displays, some of which do NOT share the same base address as
; the others. The reason for this is due to hardware constraints (e.g., in order to clock the
; data out fast enough for some large displays and convolved modes, it is necessary to interleave
; and align vRam).
;
DAFBStdOffset EQU $1000 ; Active video offset from base of frame buffer vRAM for most displays.
DAFB2POffset Equ $0A00 ; Active video offset for Kong & Vesuvio (1-16bpp).
DAFB2POffsetW Equ $0080 ; Acivie video offset for Wombat (1-8bpp).
DAFBBSOffset EQU $0E00 ; Active video offset for GoldFish & SuperVGA (1-32bpp).
DAFBBSOffsetW Equ $0080 ; Active video offset for Wombat BS, 1-32bpp.
DAFBNTSCOffset Equ $1020 ; Active video offset for NTSC Displays.
DAFBNTSCConvOff Equ $1400 ; Active video offset for NTSC convolved Displays.
DAFBPALOffset Equ $0E20 ; Active video offset for PAL Displays.
DAFBPALOffsetW Equ $0700 ; Acitve video offset for PAL on Wombat.
DAFBPALConvOff Equ $1420 ; Active video offset for PAL convolved Displays.
; DAFB supports several displays that are in the “extended” sense line range. Since the raw
; values that come back from doing the extended sense-line algorithm do not map into a nice
; tablular form like the “normal” sense line codes do, we map the few extended-sense-line displays
; that we support into the bottom of the normal sense line table.
;
; Notes: The “normal” sense displays fall in the range of 0..7, where 7 means “go try the
; extended sense codes.” So, we map the extended sense codes from 8 (yeah, we have
; blank entry).
;
; Radius exploits the fact that the extended sense algorithm is generally only tried
; when a 7 is read back. That is, for their two TPD displays (one color, the other
; monochrome), they use 3 as the trigger for doing the extended sense algorithm. To
; distinguish the two displays from each other, they just reverse the polarity of the
; the diode on sense lines b & c. (Note: This technique could be used for sense
; codes 5 and 6, too.)
;
; So, it should be noted, that there are four types of extended sense codes. We
; just use types 3, 6, and 7; type 5 is reserved.
;
extended2P Equ $35 ; Raw Extended Sense for the Two-Page Display.
extended2PRdRGB Equ $31 ; Raw Extended Sense for Radius Color TPD.
extended2PRdMono Equ $34 ; Raw Extended Sense for Radius Mono TPD.
extendedRGBFP Equ $1E ; Raw Extended Sense for the RGB Full-Page Display.
extendedHR Equ $2B ; Raw Extended Sense for the Hi-Res Display (type-6 extended sense).
extendedMSB1 Equ $03
extendedMSB2 Equ $0B
extendedMSB3 Equ $23
extendedNoConnect Equ $3F ; Raw Extended Sense for no connect.
extendedSensePALBox Equ $00 ; Raw Extended Sense for PAL Encoder.
extendedSenseNTSC Equ $14 ; Raw Extended Sense for NTSC Encoder.
extendedSenseVGA Equ $17 ; Raw Extended Sense for VGA.
extendedSenseLP Equ $2D ; Raw Extended Sense for GoldFish.
extendedSenseGF Equ $2D ; Raw Extended Sense for GoldFish.
extendedSensePAL Equ $30 ; Raw Extended Sense for PAL.
extendedSense19 Equ $3A ; Raw Extended Sense for Third-Party 19” Displays.
indexedSenseRGB2P Equ 0 ; For switching to 16bpp.
indexedSenseFP Equ 1 ; For Mono-Only configs.
indexedSenseRubik Equ 2 ; For factory burn-in testing.
indexedSense2P Equ 3 ; For Mono-Only configs.
indexedSenseNTSC Equ 4 ; To Map NTSC encoder boxes to NTSC displays.
indexedSenseRGBFP Equ 5 ; For switching to 16bpp.
indexedSenseHR Equ 6 ; DAF said we should do HR for the factory.
indexedNoConnect Equ 7 ; (Here for consistency only.)
indexedSenseVGA Equ 8 ; Mapped Sense For VGA.
indexedSensePAL Equ 9 ; Mapped Sense For PAL.
indexedSenseLP Equ 10 ; Mapped Sense For GoldFish.
indexedSenseGF Equ 10 ; Mapped Sense For GoldFish.
indexedSense19 Equ 11 ; Mapped Sense For 19" Displays.
pIndexRdMono Equ 12 ; Pseudo Index for Radius Mono TPD. (DAFB)
indexedSenseMSB1 Equ 12 ; Mapped Sense For Band-1 Multiscan Displays.
indexedSenseMSB2 Equ 13 ; Mapped Sense For Band-2 Multiscan Displays.
indexedSenseMSB3 Equ 14 ; Mapped Sense For Band-3 Multiscan Displays.
dafbSenseLineA Equ 2 ; Numbers for bit-I/O on DAFB senselines.
dafbSenseLineB Equ 1 ;
dafbSenseLineC Equ 0 ;
dafbAMask Equ 3 ; Masks for reading/writing DAFB senselines.
dafbBMask Equ 5 ;
dafbCMask Equ 6 ;
tristateDAFBSense Equ 7 ; Value for tri-stating DAFB senselines.
; Resetting the DAFB is a process that requires 5 steps. First, the Swatch is released from
; its reset state. Then the Swatch reset mode is reassertd and re-released. Finally,
; the vRam and video refresh state machines are reset. The following equates are the masks
; for setting the right bits in the DAFB reset register.
;
dafbReleaseSwatch Equ 3 ; See comments above.
dafbReassertSwatch Equ 7 ;
dafbReleaseVRamSM Equ 2 ;
dafbReleaseVideoSM Equ 0 ;
dafbResetIdle Equ 7 ; Value to idle DAFB reset register.
dafbDisableSwatch Equ $FF1 ; Value to disable Swatch.
dafbEnableSwatch Equ $FF2 ; Value to enable Swatch.
; In order for the ACDC and for the Clock to be programmed correctly, the DAFB_Config
; register must be set up for the right CPU clock speed (which just means turning
; on the WriteAccess bit in the DAFBConfig register).
;
; DAFB supports the fast page mode operation of the VRams. However, the only place where it
; really makes sense to turn this mode on (all the time) is when the VRams are configured
; for the row-interleave access (which is generally 640x480 @ 32bpp). Bit 1 of the
; DAFBConfig register is RowInterleave enable/disable bit; it is bit 30 for bit-field
; extraction & insertion, and thats how we use it.
;
; Update to above: It really makes more sense to just turn page mode OFF when the VRams are
; configured for word-interleave.
;
; Wombat info: The WombatDAFB doesnt support either word or row interleaving of VRam, so
; we just mask out those bits on Wombat in the DAFBSpeed macros.
;
dafb33MHzConfig Equ $00000800 ; Mask for 33MHz setup (non-Wombat).
dafb33MHzConfigW Equ $00000200 ; Mask for Wombat 33MHz setup.
dafb40MHzConfigW Equ $00000A00 ; Mask for Wombat 40MHz setup.
dafbWaitConfig Equ $00000F00 ; Mask for turning on ALL wait-states.
dafbNoInterleave Equ $00000FFC ; Mask to clear interleave bits.
dafbRowIntBit Equ 30 ; Bfins/Bfext-style numbers.
dafbWrdIntBit Equ 31
; On the WombatDAFB, the enable/disable for the sync-on-green signal bit 9 (PIXSEL0) of the Clock
; configuration register. In order to do this without disturbing the other bit-fields in this
; register, we use the bit-field insertion instruction; so, bit 9 is bit 22 for Bfins.
;
dafbSyncOnGreen Equ 22 ; Bfins/Bfext-style number.
; Originally, we used the “real” VBL interrupt line for doing VBL interrupts. However, it
; turned out VBL was generated at vSync, and this was way too late in the cycle. So,
; to resolve this problem, we actually use the cursor interrupt line, which we can
; program ourselves.
dafbIntStatusBit Equ 2
dafbDisableVInts Equ $0
dafbEnableVInts Equ $4
; With the AMD-ACDC (AC842A), the ECL clock signals can be enabled and disabled in software. The
; only time we want to disable the ECL clock signals is when the PIXSEL1 (bit 10) of the DAFB clock
; configuration register is zero. In AC842A, bit 4 in PCBR1 selects whether the ECL or LD clock
; signals are used. (Note: When we do set the acdcPCS, we must also ensure that PIXSEL0 (bit 9)
; is set so that the 100Mhz clock is not passed thru DAFB, but instead uses the programmable
; clock generator.)
acdcPCS Equ 31-4 ; Bfins/Bfext-style numbers.
dafbPixSel0 Equ 31-9
dafbPixSel1 Equ 31-10
;
; Macros to support various “weird” ways hardware must be accessed on the DAFB.
;
Macro
DAFBWWrite &dafbParam,&dafbReg ; A1->DAFBVidParams/DAFBBppParams,A2->DAFBBase.
Move.w &dafbParam(A1),&dafbReg+2(A2) ; Write out word.
EndMacro
Macro
DAFBBWrite &dafbParam,&dafbReg ; A1->DAFBVidParams/DAFBBppParams,A2->DAFBBase.
Clr.w -(Sp) ; Make sure hi-bits are clear.
Move.b &dafbParam(A1),1(Sp) ; Get byte from params.
Move.w (Sp)+,&dafbReg+2(A2) ; Write it out.
EndMacro
Macro
DAFBSetVidBaseAddr &baseOffset ; A2->DAFBBase, trashes D0.
Move.l &baseOffset,D0 ; Get baseOffset into a D0.
Andi.l #$001FFFFF,D0 ; VidBaseAddr is only be 21-bits:
Lsr.l #5,D0 ; Bits [4:0] are always zero,
Move.l D0,DAFB_VidBaseLo(A2) ; VidBaseLo = [8:5],
Andi.l #$0000000F,DAFB_VidBaseLo(A2) ; (eliminate the unused bits),
Lsr.l #4,D0 ; Shift out VidBaseLo,
Move.l D0,DAFB_VidBaseHi(A2) ; VidBaseHi = [20:9].
EndMacro
Macro
DAFBSpeedPI ; A2->DAFBBase,A6->PrimFrame.
Tst.b IsSlowClock(A6) ; If CPU is running “slow,”
Bne.s @EndDAFBSpeedPI ; then leave things alone.
Tst.b wombatDAFB(A6) ; If were on a Wombat,
Bne.s @WombatSpeedPI ; then do the Wombat setup.
Ori.l #dafb33MHzConfig,DAFB_Config(A2) ; Otherwise, setup for 33MHz operation.
Bra.s @EndDAFBSpeedPI ; (Skip Wombat setup.)
@WombatSpeedPI Andi.l #dafbNoInterleave,DAFB_Config(A2) ; For Wombat, vRAM interleaving is not possible.
Ori.l #dafb33MHzConfigW,DAFB_Config(A2) ; Set up for at least 33MHz operation.
Subq #2,Sp ; Make some room on the stack.
Move.w DAFBFlags+2(A2),(Sp) ; Get the DAFBFlags.
Andi.w #(1<<w40MHz),(Sp)+ ; If the 40MHz bit is not set,
Beq.s @EndDAFBSpeedPI ; then just go on.
Ori.l #dafb40MHzConfigW,DAFB_Config(A2) ; Otherwise, set up for 40MHz operation.
@EndDAFBSpeedPI
EndMacro
Macro
DAFBSpeedDR &dafbBase ; A2->DAFBBase,A3->DAFBVidPrivates,D0 trashed.
Tst.b wombatFlag(A3) ; If were not on a Wombat,
Beq.s @EndDAFBIntDR ; then just go on.
Andi.l #dafbNoInterleave,DAFB_Config(A2) ; Otherwise, clear the interleave bits.
@EndDAFBIntDR Move.l DAFB_Config(A2),D0 ; Read the DAFBConfig register.
Bfextu D0{dafbWrdIntBit:1},D0 ; If word-interleave is on,
Bne.s @DisablePageMode ; then ALWAYS disable page mode.
Tst.b pageModeSet(A3) ; If were not supposed to enable page mode,
Beq.s @DisablePageMode ; just go on.
Moveq #1,D0 ; Otherwise, set up to enable page mode,
Bra.s @HitPageMode ; and do it.
@DisablePageMode Moveq #0,D0 ; Set up to disable page mode, and
@HitPageMode Move.l D0,DAFB_PgMdEn(A2) ; and do it.
Btst #IsSlow,GFlags(A3) ; If CPU is running “slow,”
Bne.s @EndDAFBSpeedDR ; then leave alone.
Tst.b wombatFlag(A3) ; If were on a Wombat,
Bne.s @WombatSpeedDR ; then do the Wombat setup.
Ori.l #dafb33MHzConfig,DAFB_Config(A2) ; Otherwise, setup for 33MHz operation.
Bra.s @EndDAFBSpeedDR ; (Skip Wombat setup.)
@WombatSpeedDR Ori.l #dafb33MHzConfigW,DAFB_Config(A2) ; Set up for at least 33MHz operation.
Subq #2,Sp ; Make some room on the stack.
Move.w DAFBFlags+2(A2),(Sp) ; Get the DAFBFlags.
Andi.w #(1<<w40MHz),(Sp)+ ; If the 40MHz bit is not set,
Beq.s @EndDAFBSpeedDR ; then just go on.
Ori.l #dafb40MHzConfigW,DAFB_Config(A2) ; Otherwise, set up for 40MHz operation.
@EndDAFBSpeedDR
EndMacro
Macro
DAFBIdle ; A2->DAFBBase.
Andi.l #~(1<<videoEnabled),DAFBFlags(A2) ; Reset the video-is-enabled bit.
Move.l #dafbDisableSwatch,Swatch_Mode(A2) ; Shut off Swatch.
EndMacro
Macro
DAFBUnIdle ; A2->DAFBBase.
Ori.l #(1<<videoEnabled),DAFBFlags(A2) ; Set the video-is-enabled bit.
Move.l #dafbEnableSwatch,Swatch_Mode(A2) ; Turn Swatch on.
EndMacro
Macro
DAFBResetDelay
Tst.b ([VIA]) ; Wait a microsecond…
Tst.b ([VIA]) ; …or two…
Tst.b ([VIA]) ; …or three.
EndMacro ;
Macro
DAFBReset ; A2->DAFBBase.
Move.l #dafbReleaseSwatch,DAFB_Reset(A2) ; Release Swatch from reset.
DAFBResetDelay ; Wait.
Move.l #dafbReassertSwatch,DAFB_Reset(A2) ; Reset Swatch again.
DAFBResetDelay ; Wait.
Move.l #dafbReleaseSwatch,DAFB_Reset(A2) ; Release swatch from reset.
DAFBResetDelay ; Wait.
Move.l #dafbReleaseVRamSM,DAFB_Reset(A2) ; Reset VRam state machine.
DAFBResetDelay ; Wait.
Move.l #dafbReleaseVideoSM,DAFB_Reset(A2) ; Reset Video refresh state machine.
DAFBResetDelay ; Wait.
EndMacro
Macro
DAFBResetSenseLines ; A2->DAFBBase.
Move.l #tristateDAFBSense,DAFB_SENSE(A2) ; Tristate DAFB sense lines.
DAFBResetDelay ; Wait.
EndMacro
Macro
DAFBReadSenseLines &senseLines ; A2->DAFBBase.
Clr.l -(Sp) ; Senseline scratch on stack.
Move.l DAFB_Sense(A2),(Sp) ; Read the sense lines.
Not.b 3(Sp) ; Invert the lines…
Andi.b #7,3(Sp) ; …and extract lo 3-bits.
Move.b 3(Sp),&senseLines ; Return them to caller.
Tst.l (Sp)+ ; Restore stack.
DAFBResetSenseLines ; Reset lines & Wait.
EndMacro
;
; Various GSC Equates…
;
; Switching depths on GSCs is pretty straight forward. The following equates are for the GSCGrayScale register.
; They are Bfins/Bfext-type equates, so the bit-number is reverse of normal.
;
GSCLevelWidth Equ 3 ; Number of bits in level field.
GSCLevelBit0 Equ 0 ; The GSC-level bits.
GSCLevelBit1 Equ 1
GSCLevelBit2 Equ 2
GSCLevelBits Equ 31-GSCLevelBit2 ; For use with Bfins/Bfext.
GSCBlankCtl Equ 5 ; For enabling/disabling the blank shade.
GSCBlankBit Equ 31-GSCBlankCtl ; For use with Bfins/Bfext.
;
; Various CSC Equates…
;
; The following record describes the video parameters for CSC built-in video. The first
; few parameters are for graying the screen, setting up sRsrcs, etc…. The rest of
; the parameters are the actual values that are programmed into the CSC registers.
CSCBppParams Record 0,Increment
cscbpFRCControl Ds.b 1 ;
cscbpPolyMAdj Ds.b 1 ;
cscbpPolyNAdj Ds.b 1 ;
cscbpGFRCControl Ds.b 1 ;
cscbpGPolyMAdj Ds.b 1 ;
cscbpGPolyNAdj Ds.b 1 ;
CSCBppSize Equ *
Endr
CSCVidParams Record 0,Increment
cscvpMaxModeBase Equ *
cscvp512KMax Ds.b 1 ; Max Depths: 512K,
cscvp1MegMax Ds.b 1 ; 1Meg.
cscvpNumRows Ds.w 1 ; Number of rows (-1).
cscvpPanelType Ds.b 1 ; Panel Setup Control.
cscvpPanelSetup Ds.b 1 ;
cscvpHSkewHi Ds.b 1 ; H/V Timing Params.
cscvpHSkewLo Ds.b 1 ;
cscvpVSkewHi Ds.b 1 ;
cscvpVSkewLo Ds.b 1 ;
cscvpACDClkHi Ds.b 1 ; Clocking Control.
cscvpACDClkLo Ds.b 1 ;
cscvpLPStart Ds.b 1 ;
cscvpLPWidth Ds.b 1 ;
cscvpFLMControl Ds.b 1 ;
cscvpDataOutForm Ds.b 1 ; Panel type.
CSCVPHdrSize Equ *
cscvpFRCControl Ds.b 1 ; Keep up to date with CSCBppParams.
cscvpPolyMAdj Ds.b 1 ; (Just used for 1bpp PrimaryInit).
cscvpPolyNAdj Ds.b 1 ;
cscvpGFRCControl Ds.b 1 ;
cscvpGPolyMAdj Ds.b 1 ;
cscvpGPolyNAdj Ds.b 1 ;
CSCVPSize Equ *
Endr
;
; The interrupt flags and enable bits are housed within the DisplayStatus register. The
; following equates are setting and clearing CSC VBL interrupts. The DisplayStatus
; register also controls “panel shading.” The CSCUnBlank equate is for taking
; the display from an “off” state (blanked) to an “on” state (unblanked).
;
CSCDSIER Equ 0 ; The Interrupt Enable bit.
CSCDSIFR Equ 1 ; The Interrupt Flag bit.
CSCDSRBlankCtl Equ 2 ; When set, these registers enable
CSCDSRBlankSts Equ 3 ; “normal” palette operation.
CSCUnblank Equ $0C ; Mask enabling BlankCtl/Sts.
;
; Misc CSC bits/masks for various CSC registers…
;
CSCPnlPwr Equ 3 ; PanelSetup: Power on/off panel.
CSCPnlDataInv Equ 2 ; PanelSetup: Toggle to invert panel data.
CSCPaletteBypass Equ 1 ; PanelType: Power on/off palette.
CSCInvertVRAM Equ 3 ; GTweak: Toggle to invert VRAM data.
CSCBetterDither Equ 0 ; GTweak: Whether dither is H or V oriented.
;
; Unlike most CLUT/DACs used in the various Macintosh CPUs, the CSC CLUT/DAC is called a
; Palette and is completely contained within the CSC itself. One of the Palette
; registers (called the PaletteMask) is used for logically removing video. We actually
; want all video data to be displayed, so we set the mask register to all 1s (i.e.,
; the PaletteMask is ANDd with the video data).
;
CSCNoMask Equ $FF ; Enable all 8-bits of video data.
;
; The CSC is a reasonably programmable LCD controller. And, as a result, it supports several
; sizes and styles of LCDs. The list below is the set of panel IDs that identify the
; various LCDs that could potentially be supported by CPUs using the CSC.
;
; Note: In order to keep things sane (I think), we have allowed each of the products using
; CSC to have its own set of panel IDs.
;
; Escher/Yeager List…
;
isC_S_TFT_640x480 Equ $00 ; Color, Single-Drive, TFT, 640x480. [Sharp]
isG_S_TFT_640x400 Equ $04 ; Gray, Single-Drive, TFT, 640x400. [Hosiden]
isG_D_STN_640x400 Equ $06 ; Gray, Dual-Drive, STN, 640x400. [Sharp]
; BlackBird List…
;
isC_S_TFT_640x480a Equ $00 ; Color, Single-Drive, TFT, 640x480. [Sharp]
isC_D_STN_640x480 Equ $01 ; Color, Dual-Drive, STN, 640x480. [Sharp]
isC_S_TFT_640x480b Equ $02 ; Color, Single-Drive, TFT, 640x480. [NEC]
isC_S_TFT_640x480c Equ $03 ; Color, Single-Drive, TFT, 640x480. [Hosiden]
isC_S_TFT_640x480d Equ $04 ; Color, Single-Drive, TFT, 640x480. [Toshiba]
isG_D_STN_640x480 Equ $05 ; Gray, Dual Drive, STN, 640x480. [Sharp]
isG_S_TFT_640x480 Equ $06 ; Gray, Single-Drive, TFT, 640x480 [Hosiden]
isNoConnect Equ $07 ; Indicates there is no panel connected.
tristateCSC Equ $07 ; PanelControl: Make senselines inputs.
;
; Macros to support various “weird” ways hardware must be accessed on CSC.
;
Macro
_CSCMaxDelay ; Trashes D0.
Moveq #0,D0 ; Clear both halves of D0.
Move.w #2-1,D0 ; Were going to do two loops.
@OuterLoop Swap D0 ; Move outer counter to hiword.
Move.w #25000-1,D0 ; Move inner counter to loword.
@InnerLoop Tst.b ([VIA]) ; Wait a µs…
Dbra D0,@InnerLoop ; …or 50,000.
Swap D0 ;
Dbra D0,@OuterLoop ;
Endm
Macro
_CSCMinDelay
Tst.b ([VIA]) ; Wait a µs…
Tst.b ([VIA]) ; …or two…
Tst.b ([VIA]) ; …or three.
Endm
;
; Various Sonora Equates…
;
; The following record describes the video parameters for Sonora built-in video. The first
; set of parameters are for the Omega (clock generator) chip. The monitor code value
; tells Sonora the type of sync and h/v “line” values to use. The other parameters are
; for graying the screen, setting up sRsrcs, etc….
;
SonoraOmega Record 0,Increment
SOmegaN Ds.b 1 ; Omega N,D,P values.
SOmegaD Ds.b 1
SOmegaP Ds.b 1
Ds.b 1
SOmegaSize Equ *
Endr
SonoraVidParams Record 0,Increment
svpOmega1 Ds.b SonoraOmega.SOmegaSize ; Omega1 Values.
svpOmega2 Ds.b SonoraOmega.SOmegaSize ; Omega2 Values.
SVPOmegaSize Equ *
svpMonitorCode Ds.b 1 ; Monitor code value.
Ds.b 1 ; <pad>
svpMaxModeBase Equ *
svp256Max Ds.b 1 ; Max depths: 256K,
svp512Max Ds.b 1 ; 512K,
svp768Max Ds.b 1 ; 768K.
Ds.b 1 ; <pad>
svpNoRAMMaxBase Equ * ;
svp600Max Ds.b 1 ; Max depths: 600K,
svp300Max Ds.b 1 ; 300K,
svp068Max Ds.b 1 ; 68K.
Ds.b 1 ; <pad>
svpNumRows Ds.w 1 ; Number of rows (-1).
SVPHdrSize Equ *
svp1bppRowLongs Ds.w 1 ; 1bpp rowlongs-1.
svp2bppRowLongs Ds.w 1 ; 2bpp rowlongs-1.
svp4bppRowLongs Ds.w 1 ; 4bpp rowlongs-1.
svp8bppRowLongs Ds.w 1 ; 8bpp rowlongs-1.
svp16bppRowLongs Ds.w 1 ; 16bpp rowlongs-1.
SVPSize Equ *
Endr
OmegaNBits Equ 7 ; Number of bits in Omega N field.
OmegaDBits Equ 7 ; Number of bits in Omega D field.
OmegaPBits Equ 2 ; Number of bits in Omega P field.
ndpHR Equ $6EE50000 ; N,D,P value for 30.24 MHz (HRs dot clock).
; Once we determine how much vRAM is actually installed into a Sonora System, we have to
; tell Sonora how much is there. Currently, Sonora Systems are limited to 768K, but
; 1024K is possible, so well support it anyway.
;
Sonora256K Equ 0 ; Bank0=256K,Bank1=0.
Sonora512Ka Equ 1 ; Bank0=256K,Bank1=256K.
Sonora512Kb Equ 4 ; Bank0=512K,Bank1=0.
Sonora768Ka Equ 2 ; Bank0=256K,Bank1=512K.
Sonora768Kb Equ 5 ; Bank0=512K,Bank1=256K.
Sonora1024K Equ 6 ; Bank0=512K,Bank1=512K.
SonoraWrap Equ 512 ; Where Sonora wraps vRAM. Why?
; The senselines for Sonora-based systems are very similar to DAFB. The main difference is that
; the Sonora uses the top nybble of the senseline regiters for input and the bottom nybble for
; output.
;
sonoraSenseLineA Equ 2 ; Numbers for bit-I/O on Sonora senselines.
sonoraSenseLineB Equ 1 ;
sonoraSenseLineC Equ 0 ;
sonoraEnableAMask Equ 3 ; Masks for writing Twisted Sonora senselines.
sonoraEnableBMask Equ 5 ;
sonoraEnableCMask Equ 6 ;
sonoraAMask Equ 3 ; Masks for reading/writing Sonora senselines.
sonoraBMask Equ 5 ;
sonoraCMask Equ 6 ;
tristateSonoraSense Equ 7 ; Value for tri-stating Sonora senselines.
; Miscellenous Sonora equates…
;
SonoraVidBlnkBit Equ 7 ; Bit 7 of the SonoraVdModeReg.
;
; Macros to support various “weird” ways hardware must be accessed on Sonora.
;
Macro
SonoraDelay ; (D2 trashed.)
Move.w #550,D2 ; It takes approximately 500 µs for
@WaitLoop Tst.b ([VIA]) ; for the Omega programming to
Dbra D2,@WaitLoop ; propage thru DFAC, Egret, etc….
EndMacro ;
Macro
SonoraReadSenseLines &senseLines ; A2->SonoraVdCtlBase, D2 trashed.
SonoraDelay ; Wait.
Moveq #0,D2 ; D2 used as senseline scratch.
Move.b SonoraVdSenseRg(A2),D2 ; Read the lines into scratch.
Lsr.b #4,D2 ; Get inputs out of upper nybble.
Move.b D2,&senseLines ; Return seselines to caller.
move.b $0cb3,D2 ; check boxflag to see if...
cmp.b #$44, D2 ; is it EVT1 - PDM
bne.s @notEVTone ; no, not EVT1
Move.b #0,SonoraVdSenseRg(A2) ; Tristate Sense lines on Evt1 board
bra.s @next
@notEVTone Move.b #tristateSonoraSense,SonoraVdSenseRg(A2) ; Tristate the sense lines.
@next SonoraDelay ; Wait.
Endm
;
; Various Civic Equates…
;
fCivicVidIn Equ 0 ; cvpFlags bit flag -> true if sRsrc is a video-in sRsrc.
mCivicGrBpp Equ 7 ; mask to determine the graphics bpp depth from Sebast PCBR
mspVideoIn Equ 1 ; mask to ANDI into SP_Flags to isolate the video in flag.
fCivicVidInBpp Equ 3 ; SebastPCBR's video-in bpp bit (0 based)
fCivicVidInEnb Equ 4 ; SebastPCBR's convolution enable bit
fCivicConvEnb Equ 5 ; SebastPCBR's convolution enable bit
fCivicVidinCLUT Equ 6 ; SebastPCBR's CLUT Select Bit: (0 selects graphics CLUT, 1 selects Video-in CLUT)
fCivicVidInOvly Equ 7 ; SebastPCBR's overlay enable bit (0-based)
vCivicGr16Bpp Equ 4 ; SebastPCBR's value for 16bpp graphics on D2-D0
vCivicVidInBase Equ $50200800 ; The Video-in VRAM's base address
LoadCliftonControl Equ $1E05 ; Word to load the Control Register in Clifton
LoadCliftonProgram Equ $1E04 ; Word to load the Program Register in Clfton
LoadCliftonMuxRef Equ $1E00 ; Word to enable the mux reference in Clfton
ControlWordSize Equ 14 ; Size in bits of the Clifton control/program word
ReadPUMAID Equ $1E24 ; Word to load set PUMA to read the ID register <LW11> #PUMA
PUMAVer1Id Equ %00101010 ; PUMA ID for Version 1 <LW11> #PUMA
CivicEntry Record 0,Increment ; Defines the entries in the CivicRecord (below).
offset Ds.w 1
width Ds.w 1
CESize Equ *
Endr
CivicRecord Record 0,Increment ; This structure is used to read/write Civic registers.
VBLInt Ds.l 1 ; $00
Enable Ds.l 1 ; $04
VDCInt Ds.l 1 ; $08
VDCClr Ds.l 1 ; $0C
VDCEnb Ds.l 1 ; $10
VidInSize Ds.l 1 ; $14
VDCClk Ds.l 1 ; $18
ScanCtl Ds.l 1 ; $1C
GSCDivide Ds.l 1 ; $20
VSCDivide Ds.l 1 ; $24
VRAMSize Ds.l 1 ; $28
RefreshCtl Ds.l 1 ; $2C
BusSize Ds.l 1 ; $30
SpeedCtl Ds.l 1 ; $34
ConvEnb Ds.l 1 ; $38
SenseCtl Ds.l 1 ; $3C
Sense0 Ds.l 1 ; $40
Sense1 Ds.l 1 ; $44
Sense2 Ds.l 1 ; $48
Tristate Ds.l 1 ; $4C
SyncClr Ds.l 1 ; $50
ReadSense Ds.l 1 ; $54
RowWords Ds.l 1 ; $58
BaseAddr Ds.l 1 ; $5C
VLDB Ds.l 1 ; $60
VHLTB Ds.l 1 ; $64
VActHi Ds.l 1 ; $68
Reset Ds.l 1 ; $6C
VBLEnb Ds.l 1 ; $70
HLDB Ds.l 1 ; $74
HHLTB Ds.l 1 ; $78
HActHi Ds.l 1 ; $7C
VBLClr Ds.l 1 ; $80
AdjF2 Ds.l 1 ; $84
AdjF1 Ds.l 1 ; $88
TestEnb Ds.l 1 ; $8C
CntTest Ds.l 1 ; $90
HSerr Ds.l 1 ; $94
VInHAL Ds.l 1 ; $98
VInHFPD Ds.l 1 ; $9C
VInHFP Ds.l 1 ; $A0
HlfLn Ds.l 1 ; $A4
HEq Ds.l 1 ; $A8
HSP Ds.l 1 ; $AC
HBWay Ds.l 1 ; $B0
HAL Ds.l 1 ; $B4
HFP Ds.l 1 ; $B8
HPix Ds.l 1 ; $BC
PipeD Ds.l 1 ; $C0
VHLine Ds.l 1 ; $C4
VSync Ds.l 1 ; $C8
VBPEq Ds.l 1 ; $CC
VBP Ds.l 1 ; $D0
VAL Ds.l 1 ; $D4
VInVAL Ds.l 1 ; $D8
VInVFP Ds.l 1 ; $DC
VFP Ds.l 1 ; $E0
VFPEq Ds.l 1 ; $E4
CurLine Ds.l 1 ; $E8
VInDoubleLine Ds.l 1 ; $EC (Civic II register)
Endr
CivicBppParams Record 0,Increment ; This structure is used for switching depths.
cbpBusSize Ds.w 1 ; Framebuffer Params.
cbpGSCDivide Ds.w 1 ;
cbpRowWords Ds.w 1 ;
cbpAdjF1 Ds.w 1 ;
cbpAdjF2 Ds.w 1 ;
cbpPipeD Ds.w 1 ;
cbpSebastPCBR Ds.w 1 ; Sebastion (CLUT/DAC) PCBR.
cbpHSerr Ds.w 1 ; Horizontal timing params.
cbpHlfLn Ds.w 1 ;
cbpHEq Ds.w 1 ;
cbpHSP Ds.w 1 ;
cbpHBWay Ds.w 1 ;
cbpHAL Ds.w 1 ;
cbpHFP Ds.w 1 ;
cbpHPix Ds.w 1 ;
CBPSize Equ *
Endr
CivicVidParams Record 0,Increment ; This structure is used to program Civic.
CVPMaxModeBase Equ *
cvpMaxGraphMode Ds.b 1 ; Max Graphics mode
cvpMaxVidInMode Ds.b 1 ; Max Video-in mode
cvpFlags Ds.b 1 ; Misc Flags byte.
cvpConvEnb Ds.b 1 ; Only set if cvpScanCtl = interlaced.
cvpNTSCid1Meg Ds.b 1 ; spID of NTSC timing for this resolution w/ 1 Meg VRAM
cvpNTSCid2Meg Ds.b 1 ; spID of NTSC timing for this resolution w/ 2 Meg VRAM
cvpPALid1Meg Ds.b 1 ; spID of PAL timing for this resolution w/ 1 Meg VRAM
cvpPALid2Meg Ds.b 1 ; spID of PAL timing for this resolution w/ 2 Meg VRAM
cvpConvNTSCid Ds.b 1 ; spID of NTSC Convolution timing for this resolution
cvpConvPALid Ds.b 1 ; spID of PAL Convolution timing for this resolution
cvpEndeavorM Ds.b 1 ; Endeavor (VidClk) params.
cvpEndeavorN Ds.b 1 ;
cvpEndeavorClk Ds.b 1 ;
cvpScanCtl Ds.b 1 ; Progressive/Interlaced.
cvpCliftonW Ds.l 1 ; Clifton's W Parameter <SM23>
cvpCliftonWSize Ds.b 1 ; Size of W Parameter
cvpCliftonClk Ds.b 1 ; Clock Source for Clifton
cvpPumaW Ds.l 1 ; Puma's W Parameter <SM23>
cvpPumaWSize Ds.b 1 ; Size of W Parameter
cvpPumaClk Ds.b 1 ; Clock Source for Puma
cvpVHLine Ds.w 1 ; Vertical timing params.
cvpVSync Ds.w 1
cvpVBPEq Ds.w 1
cvpVBP Ds.w 1
cvpVAL Ds.w 1
cvpVFP Ds.w 1
cvpVFPEq Ds.w 1
cvpNumRows Ds.w 1 ; Number of rows - 1.
CVPHdrSize Equ *
cvpBusSize Ds.w 1 ; Keep up-to-date with CivicBppParams.
cvpGSCDivide Ds.w 1 ; (Used for 1bpp in PrimaryInit.)
cvpRowWords Ds.w 1
cvpAdjF1 Ds.w 1
cvpAdjF2 Ds.w 1
cvpPipeD Ds.w 1
cvpSebastPCBR Ds.w 1
cvpHSerr Ds.w 1
cvpHlfLn Ds.w 1
cvpHEq Ds.w 1
cvpHSP Ds.w 1
cvpHBWay Ds.w 1
cvpHAL Ds.w 1
cvpHFP Ds.w 1
cvpHPix Ds.w 1
Endr
; The senselines for Civic-based systems are completely unlike the DAFB- and Sonora-base systems.
; However, by strategic use of the Civic sense-line macros, Civic-based systems are made to
; look like the DAFB- and Sonora-base systems. Neat, huh?
;
civicSenseLineA Equ 2 ; Numbers for bit-I/O on Civic senselines.
civicSenseLineB Equ 1 ;
civicSenseLineC Equ 0 ;
civicAMask Equ 3 ; Masks for reading/writing Sonora senselines.
civicBMask Equ 5 ;
civicCMask Equ 6 ;
;
; Macros to support various “weird” ways hardware must be accessed on Civic.
;
Macro ; Trashes D0-D1/A0, nothing returned.
pWrite_Civic &theData,&theReg
Move.w &theReg,D0
Bsr pGetCivicReg
Move.w &theData,D0
Bsr pWriteCivic
Endm
Macro ; Trashes D0-D1/A0, nothing returned.
dWrite_Civic &theData,&theReg
Move.w &theReg,D0
Bsr dGetCivicReg
Move.w &theData,D0
Bsr dWriteCivic
Endm
Macro ; Trashes D0-D1/A0, returns theData.
pRead_Civic &theReg,&theData
Move.w &theReg,D0
Bsr pGetCivicReg
Bsr pReadCivic
Move.w D0,&theData
Endm
Macro ; Trashes D0-D1/A0, returns theData.
dRead_Civic &theReg,&theData
Move.w &theReg,D0
Bsr dGetCivicReg
Bsr dReadCivic
Move.w D0,&theData
Endm
Macro
CivicResetDelay ; Let pull-up resistors settle.
pRead_Civic #CntTest,D0
pRead_Civic #CntTest,D0
pRead_Civic #CntTest,D0
EndMacro
Macro
CivicResetSenseLines ; Reset the senselines:
pWrite_Civic #0,#SenseCtl ; Turn off output-enables,
pWrite_Civic #0,#Sense2 ; Reset 'A',
pWrite_Civic #0,#Sense1 ; Reset 'B',
pWrite_Civic #1,#Sense0 ; Reset 'C',
CivicResetDelay ; Wait.
Endm
Macro
CivicReadSenseLines &senseLines ; Read the senselines:
CivicResetDelay ; Wait,
pRead_Civic #ReadSense,&senseLines ; Read them,
CivicResetSenseLines ; Reset them.
Endm
Macro
CivicDriveA ; Drive senseline 'A'.
pWrite_Civic #1,#Sense2
pWrite_Civic #0,#Sense1
pWrite_Civic #1,#Sense0
Endm
Macro
CivicDriveB ; Drive senseline 'B'.
pWrite_Civic #0,#Sense2
pWrite_Civic #1,#Sense1
pWrite_Civic #1,#Sense0
Endm
Macro
CivicDriveC ; Drive senseline 'C'.
pWrite_Civic #0,#Sense2
pWrite_Civic #0,#Sense1
pWrite_Civic #0,#Sense0
Endm
;
; Internal equates shared by all built-in video drivers and PrimaryInits.
;
; Flags within GFlags word
GrayFlag EQU 15 ; luminance mapped if GFlags(GrayFlag) = 1
IntDisFlag EQU 14 ; interrupts disabled if GFlags(IntFlag) =1
IsMono EQU 13 ; true if monochrome only display (Portrait/Kong)
UseSeq EQU 12 ; true if sequence mode SetEntries
UseTrans Equ 12 ; True if were supposed to translate 5-bit into 8 (DAFB 16bpp).
Is16 EQU 11 ; true if 16Mhz (Slow) CPU
IsSlow Equ 11 ; True if Slow CPU (for DAFB, 20/25Mhz is slow, 33/40MHz is not).
IsSleeping Equ 11 ; True if CPU is sleeping (PowerBook/LCDs).
HasAlpha Equ 11 ; True if writing the alpha bits to the CLUT (Civic).
IsDirect EQU 10 ; true if direct video mode, else chunkyIndexed
PsuedoIndex EQU 9 ; true if SetEntries request was mapped to indexed from sequential
; (due to screen depth hardware requirements)
Has16bppSRsrc Equ 9 ; True if FifthVidMode is 16bpp instead of 32bpp (DAFB).
SyncOnGreen Equ 8 ; True if were supposed to put sync on green (DAFB).
InRubik560Mode Equ 8 ; True if we started up in Rubik-560 mode (Sonora).
InBlanking Equ 8 ; True if were supposed to be blanking the LCD (GSC/CSC).
videoInEnb Equ 8 ; True if video-in is enabled (i.e., 32-bit wide graphics/video bus, Civic).
CompositeSyncOn Equ 7 ; True if driving out of Composite port (Civic)
NTSCTimingOn Equ 6 ; True if driving out NTSC out of Composite port (Civic)
ConvolutionOn Equ 5 ; True if driving out with AppleConvolution out of Composite port (Civic)
;---------------------------------------------------
;
; Rowbytes, page count, and bounds constants
;
;---------------------------------------------------
; rowbytes constants for the Mac II Hi-Res monitor/VGA monitor and LCD panels
;
OBMHRRB EQU 80 ; rowbytes for one-bit mode
TBMHRRB EQU 160 ; rowbytes for two-bit mode
FBMHRRB EQU 320 ; rowbytes for four-bit mode
EBMHRRB EQU 640 ; rowbytes for eight-bit mode
D16BMHRRB Equ 1280 ; rowbytes for sixteen-bit mode
; rowbytes constants for the Mono/RGB Full-Page Display
;
OBMFPRB EQU 80 ; rowbytes for one-bit mode
TBMFPRB EQU 160 ; rowbytes for two-bit mode
FBMFPRB EQU 320 ; rowbytes for four-bit mode
EBMFPRB Equ 640 ; rowbytes for eight-bit mode
; rowbytes constants for the noninterlaced Apple // GS (Rubik) Monitor
;
OBMGSRB EQU 64 ; rowbytes for one-bit mode
TBMGSRB EQU 128 ; rowbytes for two-bit mode
FBMGSRB EQU 256 ; rowbytes for four-bit mode
EBMGSRB EQU 512 ; rowbytes for eight-bit mode
D16BMGSRB Equ 1024 ; rowbytes for sixteen-bit mode
; rowbytes constants for the noninterlaced Apple // GS (Rubik) Monitor in 560 mode
;
OBMGS560RB EQU 70 ; rowbytes for one-bit mode
TBMGS560RB EQU 140 ; rowbytes for two-bit mode
FBMGS560RB EQU 280 ; rowbytes for four-bit mode
EBMGS560RB EQU 560 ; rowbytes for eight-bit mode
D16BMGS560RB Equ 1120 ; rowbytes for sixteen-bit mode
; rowbytes constants for an SE-sized monitor
;
OBMSERB EQU 64 ; rowbytes for one-bit mode
TBMSERB EQU 128 ; rowbytes for two-bit mode
FBMSERB EQU 256 ; rowbytes for four-bit mode
EBMSERB EQU 512 ; rowbytes for eight-bit mode
; rowbytes constants for the GoldFish Display
;
OBMGFRB Equ 104 ; rowbytes for one-bit mode
TBMGFRB Equ 208 ; rowbytes for two-bit mode
FBMGFRB Equ 416 ; rowbytes for four-bit mode
EBMGFRB Equ 832 ; rowbytes for eight-bit mode
; rowbytes for Tim/DB-Lite LCD display
;
OBMLCDRB EQU 80 ; rowbytes for one-bit mode
TBMLCDRB Equ 160 ; rowbytes for two-bit mode
FBMLCDRB Equ 320 ; rowbytes for four-bit mode
EBMLCDRB Equ 640 ; rowbytes for eight-bit mode
D16BMLCDRB Equ 1280 ; rowbytes for sixteen-bit mode
; rowbytes for Apollo display
;
OBMApolloRB Equ 64 ; rowbytes for one-bit mode
; rowbytes for V8 hardware
;
V8_512_RB EQU 512
V8_1024_RB EQU 1024
; rowbytes for DAFB hardware
;
DAFB_512_RB EQU 512
DAFB_576_RB EQU 576
DAFB_832_RB EQU 832
DAFB_1024_RB EQU 1024
DAFB_1152_RB EQU 1152
DAFB_1664_RB Equ 1664
DAFB_2048_RB EQU 2048
DAFB_2304_RB EQU 2304
DAFB_3328_RB EQU 3328
DAFB_4096_RB EQU 4096
; rowbytes/base addresses for Civic hardware
;
Civic_256_RB Equ 256
Civic_512_RB Equ DAFB_512_RB
Civic_576_RB Equ DAFB_576_RB
Civic_832_RB Equ DAFB_832_RB
Civic_1024_RB Equ DAFB_1024_RB
Civic_1152_RB Equ DAFB_1152_RB
Civic_1280_RB Equ 1280
Civic_1536_RB Equ 1536
Civic_1664_RB Equ DAFB_1664_RB
Civic_2048_RB Equ DAFB_2048_RB
Civic_2304_RB Equ DAFB_2304_RB
Civic_2560_RB Equ 2560
Civic_3328_RB Equ DAFB_3328_RB
Civic_256_Base Equ 256
Civic_1280_Base Equ 1280
Civic_1536_Base Equ 1536
Civic_1792_Base Equ 1792
Civic_2048_Base Equ 2048
Civic_2560_Base Equ 2560
Civic_3584_Base Equ 3584
Civic_4096_Base Equ 4096
; page counts for all (maybe one of these days well support more than one page?)
;
OBMPagesHR EQU 1
TBMPagesHR EQU 1
FBMPagesHR EQU 1
EBMPagesHR EQU 1
D16BMPagesHR Equ 1
OBMPagesFP EQU 1
TBMPagesFP EQU 1
FBMPagesFP EQU 1
EBMPagesFP Equ 1
OBMPagesGS EQU 1
TBMPagesGS EQU 1
FBMPagesGS EQU 1
EBMPagesGS EQU 1
D16BMPagesGS EQU 1
OBMPagesGF EQU 1
TBMPagesGF EQU 1
FBMPagesGF EQU 1
EBMPagesGF EQU 1
OBMPagesSE EQU 1
TBMPagesSE EQU 1
FBMPagesSE EQU 1
EBMPagesSE EQU 1
OBMPagesA2Em EQU 1
TBMPagesA2Em EQU 1
FBMPagesA2Em EQU 1
EBMPagesA2Em EQU 1
OBMPagesLCD EQU 1
TBMPagesLCD Equ 1
FBMPagesLCD Equ 1
defPagesLCD Equ 1
OBMPagesApollo Equ 1
; since they are all 1 page anyway…
defPages_DAFB EQU 1
defPages_Sonora Equ 1
defPages_Civic Equ 1
;
; Bounds constants
;
; for the Mac II Hi-Res Monitor
;
defmBounds_THR EQU 0 ; top
defmBounds_LHR EQU 0 ; left
defmBounds_BHR EQU 480 ; bottom
defmBounds_RHR EQU 640 ; right
defmBounds_THR400 EQU 0 ; top
defmBounds_LHR400 EQU 0 ; left
defmBounds_BHR400 EQU 400 ; bottom
defmBounds_RHR400 EQU 640 ; right
defmBounds_THRMAZ EQU 0 ; top
defmBounds_LHRMAZ EQU 0 ; left
defmBounds_BHRMAZ EQU 512 ; bottom
defmBounds_RHRMAZ EQU 704 ; right
; for the Full Page Display
;
defmBounds_TFP EQU 0 ; top
defmBounds_LFP EQU 0 ; left
defmBounds_BFP EQU 870 ; bottom
defmBounds_RFP EQU 640 ; right
defmBounds_TFPb EQU 0 ; top
defmBounds_LFPb EQU 0 ; left
defmBounds_BFPb EQU 818 ; bottom
defmBounds_RFPb EQU 640 ; right
; for the noninterlaced Apple // GS Monitor
;
defmBounds_TGS EQU 0 ; top
defmBounds_LGS EQU 0 ; left
defmBounds_BGS EQU 384 ; bottom
defmBounds_RGS EQU 512 ; right
; for the Mac SE-Type monitor
;
defmBounds_TSE EQU 0 ; top
defmBounds_LSE EQU 0 ; left
defmBounds_BSE EQU 342 ; bottom
defmBounds_RSE EQU 512 ; right
; for the Apple // emulation mode on the Rubik display
;
defmBounds_TA2Em EQU 0 ; top
defmBounds_LA2Em EQU 0 ; left
defmBounds_BA2Em EQU 384 ; bottom
defmBounds_RA2Em EQU 560 ; right
defmBounds_TGS560 Equ 0 ; top
defmBounds_LGS560 Equ 0 ; left
defmBounds_BGS560 Equ 384 ; bottom
defmBounds_RGS560 Equ 560 ; right
; for VGA-compatible displays
;
defmBounds_TVGA EQU 0 ; top
defmBounds_LVGA EQU 0 ; left
defmBounds_BVGA EQU 480 ; bottom
defmBounds_RVGA EQU 640 ; right
; for SuperVGA-compatible displays
;
defmBounds_TSVGA Equ 0 ; top
defmBounds_LSVGA Equ 0 ; left
defmBounds_BSVGA Equ 600 ; bottom
defmBounds_RSVGA Equ 800 ; right
; for Landscape Page (Goldfish) displays
;
defmBounds_TLP EQU 0 ; top
defmBounds_LLP EQU 0 ; left
defmBounds_BLP EQU 624 ; bottom
defmBounds_RLP EQU 832 ; right
defmBounds_TGF EQU 0 ; top
defmBounds_LGF EQU 0 ; left
defmBounds_BGF EQU 624 ; bottom
defmBounds_RGF EQU 832 ; right
; for 19” displays
;
defmBounds_T19 Equ 0 ; top
defmBounds_L19 Equ 0 ; left
defmBounds_B19 Equ 768 ; bottom
defmBounds_R19 Equ 1024 ; right
; for 2-Page displays
;
defmBounds_T2P EQU 0 ; top
defmBounds_L2P EQU 0 ; left
defmBounds_B2P EQU 870 ; bottom
defmBounds_R2P EQU 1152 ; right
; For NTSC (Full Frame) displays
;
defmBounds_TNTSCFF Equ 0 ; top
defmBounds_LNTSCFF Equ 0 ; left
defmBounds_BNTSCFF Equ 480 ; bottom
defmBounds_RNTSCFF Equ 640 ; right
; For NTSC (Safe Title) displays
;
defmBounds_TNTSCST Equ 0 ; top
defmBounds_LNTSCST Equ 0 ; left
defmBounds_BNTSCST Equ 384 ; bottom
defmBounds_RNTSCST Equ 512 ; right
; For PAL (Full Frame) displays
;
defmBounds_TPALFF Equ 0 ; top
defmBounds_LPALFF Equ 0 ; left
defmBounds_BPALFF Equ 576 ; bottom
defmBounds_RPALFF Equ 768 ; right
; For PAL (Safe Title) displays
;
defmBounds_TPALST Equ 0 ; top
defmBounds_LPALST Equ 0 ; left
defmBounds_BPALST Equ 480 ; bottom
defmBounds_RPALST Equ 640 ; right
; for the TIM/DB-Lite LCD display
;
defmBounds_TLCD EQU 0 ; top
defmBounds_LLCD EQU 0 ; left
defmBounds_BLCD EQU 400 ; bottom
defmBounds_RLCD EQU 640 ; right
; for the VGA-sized (“Big”) LCD display
;
defmBounds_TBigLCD Equ 0 ; top
defmBounds_LBigLCD Equ 0 ; left
defmBounds_BBigLCD Equ 480 ; bottom
defmBounds_RBigLCD Equ 640 ; right
defmBounds_THR399 EQU 0 ; top
defmBounds_LHR399 EQU 0 ; left
defmBounds_BHR399 EQU 399 ; bottom
defmBounds_RHR399 EQU 640 ; right
; for the Apollo display
;
defmBounds_TApollo Equ 0 ; top
defmBounds_LApollo Equ 0 ; left
defmBounds_BApollo Equ 342 ; bottom
defmBounds_RApollo Equ 512 ; right
;
; screen resolution in dpi (fixed format)
;
HResHR EQU $480000 ; 72 HPixels/inch
VResHR EQU $480000 ; 72 VPixels/inch
HResFP EQU $500000 ; 80 HPixels/inch
VResFP EQU $500000 ; 80 VPixels/inch
HResGS EQU $480000 ; 72 HPixels/inch
VResGS EQU $480000 ; 72 VPixels/inch
HResSE EQU $480000 ; 72 HPixels/inch
VResSE EQU $480000 ; 72 VPixels/inch
HResA2Em EQU $480000 ; 72 HPixels/inch
VResA2Em EQU $480000 ; 72 VPixels/inch
HRes2P EQU $4D0000 ; 77 HPixels/inch
VRes2P EQU $4D0000 ; 77 VPixels/inch
HResLP EQU $480000 ; 72 HPixels/inch
VResLP EQU $480000 ; 72 VPixels/inch
HResGF EQU $480000 ; 72 HPixels/inch
VResGF EQU $480000 ; 72 VPixels/inch
HRes19 Equ $480000 ; 72 HPixels/inch
VRes19 Equ $480000 ; 72 VPixels/inch
HResNTSC Equ $480000 ; 72 HPixels/inch
VResNTSC Equ $480000 ; 72 VPixels/ince
HResPAL Equ $480000 ; 72 HPixels/inch
VResPAL Equ $480000 ; 72 HPixels/inch
HResLCD EQU $480000 ; 72 HPixels/inch
VResLCD EQU $480000 ; 72 VPixels/inch
HResApollo Equ $480000 ; 72 HPixels/inch
VResApollo Equ $480000 ; 72 VPixels/inch
;---------------------------------------------------
;
; Miscellaneous constants
;
;---------------------------------------------------
IndexedBlack Equ -1 ; black for indexed modes
DirectBlack Equ 0 ; black for direct modes
IndexedWhite Equ 0 ; white for indexed modes
DirectWhite Equ -1 ; white for direct modes
OneBitGray EQU $AAAAAAAA
TwoBitGray EQU $CCCCCCCC
FourBitGray EQU $F0F0F0F0
EightBitGray EQU $FF00FF00
SixteenBitGray EQU $0000FFFF
ThirtyTwoBitGray EQU $00000000 ; need to do this twice (2nd time NOTd)
GrayPatSize Equ 4
defVersion EQU 0 ; Version = 0
defPixelType EQU 0 ; pixeltype=chunky
ChunkyDirect EQU 16 ; pixelType=ChunkyDirect
defCmpCount EQU 1 ; Number of components in pixel
defmPlaneBytes EQU 0 ; Offset from one plane to the next
defmDevType EQU clutType ; clutType = 0
defMinorBase EQU 0 ; Video RAM Offset is 0
;
; Each different video configuration has a different RAM length field. These are the
; length requirements for each RBV configuration, varying from one-bit only to up to eight
; bit modes. The MMU allocation table's rounding factor is 32K, so these values are
; rounded to that size. The size table that this is based on is included in the
; GetRBVSize routine in StartInit.a. The [a,b,c,d] assignment reflects the way that
; the spIDs were assigned ('a' is the normal default, 'b' was the 1MB main RAM default,
; 'c' and 'd' were assigned if those modes were possible).
;
MinorLengthHRa EQU (defmBounds_RHR*defmBounds_BHR*8)/8 ; RAM for up to 8-bit mode
MinorLengthHRb EQU (defmBounds_RHR*defmBounds_BHR*1)/8 ; RAM for up to 1-bit mode
MinorLengthHRc EQU (defmBounds_RHR*defmBounds_BHR*4)/8 ; RAM for up to 4-bit mode
MinorLengthHRd EQU (defmBounds_RHR*defmBounds_BHR*2)/8 ; RAM for up to 2-bit mode
MinorLengthGSa EQU (defmBounds_RGS*defmBounds_BGS*8)/8 ; RAM for up to 8-bit mode
MinorLengthGSb EQU (defmBounds_RGS*defmBounds_BGS*1)/8 ; RAM for up to 1-bit mode
MinorLengthGSc EQU (defmBounds_RGS*defmBounds_BGS*4)/8 ; RAM for up to 4-bit mode
MinorLengthGSd EQU (defmBounds_RGS*defmBounds_BGS*2)/8 ; RAM for up to 2-bit mode
MinorLengthSEa EQU (defmBounds_RSE*defmBounds_BSE*8)/8 ; RAM for up to 8-bit mode
MinorLengthSEb EQU (defmBounds_RSE*defmBounds_BSE*1)/8 ; RAM for up to 1-bit mode
MinorLengthSEc EQU (defmBounds_RSE*defmBounds_BSE*4)/8 ; RAM for up to 4-bit mode
MinorLengthSEd EQU (defmBounds_RSE*defmBounds_BSE*2)/8 ; RAM for up to 2-bit mode
MinorLengthFPa EQU (defmBounds_RFP*defmBounds_BFP*4)/8 ; RAM for up to 4-bit mode
MinorLengthFPb EQU (defmBounds_RFP*defmBounds_BFP*1)/8 ; RAM for up to 1-bit mode
MinorLengthFPc EQU (defmBounds_RFP*defmBounds_BFP*2)/8 ; RAM for up to 2-bit mode
;
; Here are the minor lengths for V8 configurations. Each depth has the same rowbytes for
; a particular vRAM configuration, so there aren't as many permutations as for the RBV.
; As in the declaration structures, 'a' configuration is the 512K flavor, and 'b' is the 256K
; vRAM configuration.
;
MinorLength_V8_HRa EQU (1024*defmBounds_BHR)
MinorLength_V8_HRb EQU ( 512*defmBounds_BHR)
MinorLength_V8_GSa EQU (1024*defmBounds_BGS)
MinorLength_V8_GSb EQU ( 512*defmBounds_BGS)
MinorLength_V8_VGAa EQU (1024*defmBounds_BVGA)
MinorLength_V8_VGAb EQU ( 512*defmBounds_BVGA)
MinorLength_V8_A2Ema EQU (1024*defmBounds_BA2Em) ; RAM for any depth on V8 w/512K vRAM
MinorLength_V8_A2Emb EQU ( 512*defmBounds_BA2Em) ; RAM for any depth on V8 w/256K vRAM
;
; Here are the minor lengths for the DAFB configurations. These reflect the frame
; buffer size at the greatest screen depth for a given memory configuration. Note
; that rowbytes is constant for a given depth and display (i.e., you may change
; rowbytes on a depth-to-depth change, but 4-bit Hi-Res mode ALWAYS has the same
; rowbytes regardless if you have 0.5M,1.0M, or 2.0M of vRAM).
;
MinorLength_DAFB_FPa EQU (DAFB_512_RB*defmBounds_BFP)
MinorLength_DAFB_FPb EQU (DAFB_1024_RB*defmBounds_BFP)
MinorLength_DAFB_2Pa EQU (DAFB_576_RB*defmBounds_B2P)
MinorLength_DAFB_2Pb EQU (DAFB_1152_RB*defmBounds_B2P)
MinorLength_DAFB_LPa EQU (DAFB_832_RB*defmBounds_BLP)
MinorLength_DAFB_LPax EQU (DAFB_1664_RB*defmBounds_BLP)
MinorLength_DAFB_LPb EQU (DAFB_3328_RB*defmBounds_BLP)
MinorLength_DAFB_GSa EQU (DAFB_1024_RB*defmBounds_BGS)
MinorLength_DAFB_GSb EQU (DAFB_2048_RB*defmBounds_BGS)
MinorLength_DAFB_HRa EQU (DAFB_1024_RB*defmBounds_BHR)
MinorLength_DAFB_HRax EQU (DAFB_2048_RB*defmBounds_BHR)
MinorLength_DAFB_HRb EQU (DAFB_4096_RB*defmBounds_BHR)
MinorLength_DAFB_VGAa EQU (DAFB_1024_RB*defmBounds_BVGA)
MinorLength_DAFB_VGAax EQU (DAFB_2048_RB*defmBounds_BVGA)
MinorLength_DAFB_VGAb EQU (DAFB_4096_RB*defmBounds_BVGA)
MinorLength_DAFB_NTSCFFa EQU (DAFB_1024_RB*defmBounds_BNTSCFF)
MinorLength_DAFB_NTSCFFax EQU (DAFB_2048_RB*defmBounds_BNTSCFF)
MinorLength_DAFB_NTSCFFb EQU (DAFB_4096_RB*defmBounds_BNTSCFF)
MinorLength_DAFB_NTSCconvFF EQU (DAFB_1024_RB*defmBounds_BNTSCFF)
MinorLength_DAFB_NTSCSTa EQU (DAFB_1024_RB*defmBounds_BNTSCST)
MinorLength_DAFB_NTSCSTax EQU (DAFB_2048_RB*defmBounds_BNTSCST)
MinorLength_DAFB_NTSCSTb EQU (DAFB_4096_RB*defmBounds_BNTSCST)
MinorLength_DAFB_NTSCconvST EQU (DAFB_1024_RB*defmBounds_BNTSCST)
MinorLength_DAFB_PALFFa EQU (DAFB_832_RB*defmBounds_BPALFF)
MinorLength_DAFB_PALFFax EQU (DAFB_1664_RB*defmBounds_BPALFF)
MinorLength_DAFB_PALFFb EQU (DAFB_3328_RB*defmBounds_BPALFF)
MinorLength_DAFB_PALconvFF EQU (DAFB_1024_RB*defmBounds_BPALFF)
MinorLength_DAFB_PALSTa EQU (DAFB_832_RB*defmBounds_BPALST)
MinorLength_DAFB_PALSTax EQU (DAFB_1664_RB*defmBounds_BPALST)
MinorLength_DAFB_PALSTb EQU (DAFB_3328_RB*defmBounds_BPALST)
MinorLength_DAFB_PALconvST EQU (DAFB_1024_RB*defmBounds_BPALST)
MinorLength_DAFB_SVGAa Equ (DAFB_832_RB*defmBounds_BSVGA)
MinorLength_DAFB_SVGAax Equ (DAFB_1664_RB*defmBounds_BSVGA)
MinorLength_DAFB_SVGAb Equ (DAFB_3328_RB*defmBounds_BSVGA)
MinorLength_DAFB_FPbx Equ (DAFB_2048_RB*defmBounds_BFP)
MinorLength_DAFB_2Pbx Equ (DAFB_2304_RB*defmBounds_B2P)
MinorLength_DAFB_19a Equ (DAFB_512_RB*defmBounds_B19)
MinorLength_DAFB_19b Equ (DAFB_1024_RB*defmBounds_B19)
MinorLength_DAFB_19bx Equ (DAFB_2048_RB*defmBounds_B19)
; Here is the minor lengths for LCD-based CPUs.
;
MinorLengthLCD EQU (defmBounds_RLCD*defmBounds_BLCD*1)/8 ; RAM for 1-bit mode .
MinorLengthGSCLCD Equ (defmBounds_RLCD*defmBounds_BLCD*4)/8 ; RAM for 4-bit mode.
MinorLengthGSC480 Equ (defmBounds_RBigLCD*defmBounds_BBigLCD*4)/8 ; RAM for 4-bit mode.
MinorLength_640x400 Equ (defmBounds_RLCD*defmBounds_BLCD*16)/8 ; RAM for 16-bit mode.
MinorLength_640x480 Equ (defmBounds_RBigLCD*defmBounds_BBigLCD*8)/8 ; RAM for 8-bit mode.
; VSC
;
MinorLength_VSC_FPa Equ (FBMHRRB*defmBounds_BFP)
MinorLength_VSC_FPb Equ (EBMHRRB*defmBounds_BFP)
MinorLength_VSC_GS Equ (EBMHRRB*defmBounds_BGS)
MinorLength_VSC_HR Equ (EBMHRRB*defmBounds_BHR)
; Here is the minor length for Apollo.
;
MinorLengthApollo Equ (defmBounds_RApollo*defmBounds_BApollo*1)/8 ; RAM for 1-bit mode.
; Here are the minor lengths for Sonora CPUs.
;
MinorLength_Sonora_FP Equ (OBMFPRB*defmBounds_BFP) ; Also used by RGBFP.
MinorLength_Sonora_FPa Equ (TBMFPRB*defmBounds_BFP)
MinorLength_Sonora_FPb Equ (FBMFPRB*defmBounds_BFP)
MinorLength_Sonora_FPc Equ (EBMFPRB*defmBounds_BFP)
MinorLength_Sonora_GS Equ (OBMGSRB*defmBounds_BGS)
MinorLength_Sonora_GSa Equ (EBMGSRB*defmBounds_BGS)
MinorLength_Sonora_GSb Equ (D16BMGSRB*defmBounds_BGS)
MinorLength_Sonora_GS560a Equ (EBMGS560RB*defmBounds_BGS560)
MinorLength_Sonora_GS560b Equ (D16BMGS560RB*defmBounds_BGS560)
MinorLength_Sonora_HR Equ (OBMHRRB*defmBounds_BHR) ; Also used by VGA.
MinorLength_Sonora_HRa Equ (FBMHRRB*defmBounds_BHR)
MinorLength_Sonora_HRb Equ (EBMHRRB*defmBounds_BHR)
MinorLength_Sonora_HRc Equ (D16BMHRRB*defmBounds_BHR)
MinorLength_Sonora_HR400a Equ (EBMHRRB*defmBounds_BHR400)
MinorLength_Sonora_HR400b Equ (D16BMHRRB*defmBounds_BHR400)
MinorLength_Sonora_GF Equ (OBMGFRB*defmBounds_BGF)
MinorLength_Sonora_GFa Equ (TBMGFRB*defmBounds_BGF)
MinorLength_Sonora_GFb Equ (EBMGFRB*defmBounds_BGF)
; Here are the minor lengths for Civic CPUs.
;
MinorLength_Civic_FPa Equ (Civic_1024_RB*defmBounds_BFP)
MinorLength_Civic_FPb Equ (Civic_2048_RB*defmBounds_BFP)
MinorLength_Civic_viFPa Equ (Civic_512_RB*defmBounds_BFP)
MinorLength_Civic_viFPb Equ (Civic_1024_RB*defmBounds_BFP)
MinorLength_Civic_GS Equ (Civic_2048_RB*defmBounds_BGS)
MinorLength_Civic_GS560 Equ (Civic_2560_RB*defmBounds_BGS560)
MinorLength_Civic_2Pa Equ (Civic_1152_RB*defmBounds_B2P)
MinorLength_Civic_vi2Pa Equ (Civic_576_RB*defmBounds_B2P)
MinorLength_Civic_2Pb Equ (Civic_2304_RB*defmBounds_B2P)
MinorLength_Civic_NTSCFFa Equ (Civic_2048_RB*defmBounds_BNTSCFF)
MinorLength_Civic_NTSCFFb Equ (Civic_2560_RB*defmBounds_BNTSCFF)
MinorLength_Civic_NTSCST Equ (Civic_2048_RB*defmBounds_BNTSCST)
MinorLength_Civic_NTSCFFConv Equ (Civic_1024_RB*defmBounds_BNTSCFF)
MinorLength_Civic_NTSCSTConv Equ (Civic_1024_RB*defmBounds_BNTSCST)
MinorLength_Civic_HRa Equ (Civic_2048_RB*defmBounds_BHR)
MinorLength_Civic_HRb Equ (Civic_2560_RB*defmBounds_BHR)
MinorLength_Civic_HR400 Equ (Civic_2560_RB*defmBounds_BHR400)
MinorLength_Civic_HRMAZa Equ (Civic_1664_RB*defmBounds_BHRMAZ)
MinorLength_Civic_HRMAZb Equ (Civic_3328_RB*defmBounds_BHRMAZ)
MinorLength_Civic_viHRa Equ (Civic_1024_RB*defmBounds_BHR)
MinorLength_Civic_viHRb Equ (Civic_2048_RB*defmBounds_BHR)
MinorLength_Civic_viHR400 Equ (Civic_1280_RB*defmBounds_BHR400)
MinorLength_Civic_viHRMAZa Equ (Civic_832_RB*defmBounds_BHRMAZ)
MinorLength_Civic_viHRMAZb Equ (Civic_1664_RB*defmBounds_BHRMAZ)
MinorLength_Civic_PALFFa Equ (Civic_1664_RB*defmBounds_BPALFF)
MinorLength_Civic_PALFFb Equ (Civic_3328_RB*defmBounds_BPALFF)
MinorLength_Civic_PALSTa Equ (Civic_1024_RB*defmBounds_BPALST)
MinorLength_Civic_PALSTb Equ (Civic_2048_RB*defmBounds_BPALST)
MinorLength_Civic_PALFFConv Equ (Civic_1024_RB*defmBounds_BPALFF)
MinorLength_Civic_PALSTConv Equ (Civic_1024_RB*defmBounds_BPALST)
MinorLength_Civic_viPALFF Equ (Civic_1664_RB*defmBounds_BPALFF)
MinorLength_Civic_VGAa Equ (Civic_2048_RB*defmBounds_BVGA)
MinorLength_Civic_VGAb Equ (Civic_2560_RB*defmBounds_BVGA)
MinorLength_Civic_SVGAa Equ (Civic_1664_RB*defmBounds_BSVGA)
MinorLength_Civic_SVGAb Equ (Civic_3328_RB*defmBounds_BSVGA)
MinorLength_Civic_GFa Equ (Civic_1664_RB*defmBounds_BGF)
MinorLength_Civic_GFb Equ (Civic_3328_RB*defmBounds_BGF)
MinorLength_Civic_19a Equ (Civic_1024_RB*defmBounds_B19)
MinorLength_Civic_19b Equ (Civic_2048_RB*defmBounds_B19)
; Misc…
;
defmBaseOffset EQU 0 ; Offset to base of video RAM
Civic_M512_Offset EQU -512 ; Offset to base of video RAM for some Civic modes
Civic_1280_Offset EQU 1280 ; Offset to base of video RAM for some Civic modes
Civic_1792_Offset EQU 1792 ; Offset to base of video RAM for some Civic modes
Civic_2048_Offset EQU 2948 ; Offset to base of video RAM for some Civic modes
; For NTSC, we have two sizes: “Safe Title” (ST) and “Full Frame” (FF), where ST is the
; smaller size. Because QuickDraw doesnt support a changing base address, we have to
; “lie” to it about where the base address really is. So, we do this with an offset.
; To calculate the offset, we do the following. First, we calculate the horizontal offset.
; We know that there are 1024 “real” pixels and 640 viewable pixels for NTSCFF. So, we
; have (with 512 viewable pixels for NTSCST):
;
; 640 - 512 = 128 (difference between FF and ST).
; 128/2 = 64 (calculate the center).
;
; To calculate the vertical offset, we know there are 480 viewable rows for NTSCFF and
; 384 for NTSCST:
;
; 480 - 384 = 96 (difference between FF and ST).
; 96/2 = 48 (calculate the center).
;
; In order to calculate the base offset, we now just multiply the vertical dimension
; by rowbytes (1024 in 1-8bb, and 4096 in 32bpp), and add in the number of pixels
; we want per depth (for 1-8bb 64/bpp and 64*4 for 32bpp for rowbytes).
;
; Similar logic was used to derive the PAL base address offsets.
;
;
NTSC_RB Equ DAFB_1024_RB ; Rowbytes for the indexed modes for NTSC
PAL_RB Equ DAFB_832_RB ; and PAL.
PAL_RB_Conv Equ DAFB_1024_RB ;
NTSC_Mid_RB Equ DAFB_2048_RB ; Rowbytes for the direct modes for NTSC
NTSC_Big_RB Equ DAFB_4096_RB ; and PAL.
PAL_Mid_RB Equ DAFB_1664_RB ;
PAL_Big_RB Equ DAFB_3328_RB ;
defmNTSCSTBase Equ (NTSC_RB*48) ; Offset to NTSCST base, 1-8bpp.
defmNTSCSTB1 Equ defmNTSCSTBase+(64/8) ; defmNTSCSTBase + 64 pixels (by depth).
defmNTSCSTB2 Equ defmNTSCSTBase+(64/4) ;
defmNTSCSTB4 Equ defmNTSCSTBase+(64/2) ;
defmNTSCSTB8 Equ defmNTSCSTBase+(64/1) ;
defmNTSCSTB16 Equ (NTSC_Mid_RB*48)+(64*2) ; 16bpp defmNTSCSTBase + 64 pixels.
defmNTSCSTB32 Equ (NTSC_Big_RB*48)+(64*4) ; 32bpp defmNTSCSTBase + 64 pixels.
defmPALSTBase Equ (PAL_RB*48) ; Offset to PALST base, 1-8bb.
defmPALSTB1 Equ defmPALSTBase+(64/8) ; defmPALSTBase + 64 pixels (by depth).
defmPALSTB2 Equ defmPALSTBase+(64/4) ;
defmPALSTB4 Equ defmPALSTBase+(64/2) ;
defmPALSTB8 Equ defmPALSTBase+(64/1) ;
defmPALSTB16 Equ (PAL_Mid_RB*48)+(64*2) ; 16bpp defmPALSTBase + 64 pixels.
defmPALSTB32 Equ (PAL_Big_RB*48)+(64*4) ; 32bpp defmPALSTBase + 64 pixels.
defmPALSTBConv Equ (PAL_RB_Conv*48) ; Offset to PALST base convolved, 1-8bb.
defmPALSTB1Conv Equ defmPALSTBConv+(64/8) ; defmPALSTBConv + 64 pixels (by depth).
defmPALSTB2Conv Equ defmPALSTBConv+(64/4) ;
defmPALSTB4Conv Equ defmPALSTBConv+(64/2) ;
defmPALSTB8Conv Equ defmPALSTBConv+(64/1) ;
bSlot0rbv EQU 6 ; bit # of slot zero interrupt enable
; in RBV slot interrupt enable register
bEnable EQU 7 ; bit # that writes ones when
; talking to interrupts register
;
; These are the monitor ID's as seen by the RBV sense register
;
FPIdMono EQU 1 ; full page monitor, monochrome
GSId EQU 2 ; 512*384
FPIdColor EQU 5 ; full page monitor, color
HRId EQU 6 ; 640*480
SEId EQU 7 ; 512*342
;
; Because we ran out of contiguous functional sRsrc IDs in the Zydeco time-frame,
; we came up with a method of having sRsrc directory directories, or super
; sRsrc directories. The method of choosing which super sRsrc directory
; is applicable is the responsibility of a new piece of code called a
; SuperInit. For CPUs done in the Zydeco (or Zydeco-near) time frame,
; the sRsrcBFBasedDir is used. For unknown CPUs, a minimal sRsrc directory
; is selected. All other CPUs can have their own sRsrc directories.
;
sRsrcUnknownDir Equ 1 ; sRsrc Directory for unknown CPUs.
sRsrcUnknownBd Equ 1 ; Unknown board sRsrc.
sRsrcBFBasedDir Equ $7F ; CPUs supported in the BoxFlag-based sRsrc directory.
sRsrcSonoraDir Equ $7E ; CPUs supported in the Sonora sRsrc directory.
sRsrcCivicDir Equ $7D ; CPUs supported in the Civic sRsrc directory.
sRsrcCSCDir Equ $7C ; CPUs supported in the CSC sRsrc directory.
sRsrcATIDir Equ $7B ; CPUs supported in the ATI sRsrc directory.
;---------------------------------------------------------------------
; General and sRsrc IDs in the sRsrcZydecoDir Directory
;---------------------------------------------------------------------
;
; These are the local definitions for the sRsrcIDs in the slot zero (RBV) video config
; ROM. The naming convention is pretty simple:
;
; sRsrcID = sRsrc_VidXxxYYz, where
;
; Xxx = built-in video CPU name, Rbv for Mac IIci and Erickson
; Els for Elsie
; Ecl for Eclipse
; Por for Waimea
; YY = display type, HR for High-Resolution Display (640*480)
; FP for Portrait Display (640*870)
; GS for Rubik Display (512*384)
; SE for SE-link 9" monitor (512*342)
; z = memory allocation configuration - each sRsrc list supports
; a different set of screen depths. This part of the name
; just makes each configuration unique. There's no 16 vs. 25
; MHz identifier now, since all screen depth combinations are
; enumerated.
;
; PrimaryInit handles these configurations differently depending on the amount of
; RAM available in the CPU. By default, if more than 1MB of RAM is available in
; the system, then the full capacity sRsrc for this monitor is selected. If only
; 1MB is available, then the 1-bit only sRsrc is selected. This default can be over-
; ridden by the user in Monitors.
;
; Here's how the sRsrc IDs are assigned:
;
; Bit 7 = always set for video sRsrc IDs (by convention)
; Bit 6 = with bit 5, identifies the type of CPU. 00=ci/Erickson
; Bit 5 = 01=Elsie
; Bit 4 = option bit 2, set for 16Mhz default configurations
; Bit 3 = option bit 1, set for 1MB default configurations
; Bit 2 = RBV monitor ID bit
; Bit 1 = RBV monitor ID bit
; Bit 0 = RBV monitor ID bit
;
; The low-order bits are shifted over from what's read in the RBV monitor ID register.
; They are shifted down to make it easier to make decisions about screen size, etc
; later. The high bit is always set to distinguish function sRsrc lists from
; system-defined lists. The two option bits describe alternate sRsrc lists which
; differ in the different available screen depths. There are up to four combinations
; of the bits - 1-bit only, 1- and 2-bit only, 1-,2-, and 4-bit, and (for some
; monitors) 1-,2-,4-, and 8-bit modes. The actual combinations are arbitrary, but
; are contrived so that the defaults for different CPU configurations (clock speed
; and memory) can be generated by setting a single bit. The other combinations are
; valid, but must be selected via the video family selector in Monitors. For
; example, a 5MB Aurora 25 w/HR monitor sets is spID $86. This same combo with
; 1MB of RAM is $8E, and so on.
;
; The IDs for the multiple board sRsrcs are based directly on the boxFlag identifier.
; These sRsrcs are tagged as inactive at startup. Only the Aurora25 board resource
; is active at start, so it determines the system configuration and installs the
; appropriate board sRsrc list.
;
;
; The PrimaryInit code DEPENDS on never allowing $80 to be a valid video sRsrc spID.
;
;
; The sRsrcID for each board resource is equal to it's boxflag+shift value. The shift is required
; since the Mac II box flag is 0, but 0 is an illegal spID value to the Slot Manager
;
BoardspIDShift EQU 1 ; board spID shift value
sRsrc_BdMacII EQU boxMacII+BoardspIDShift ; (0+BoardspIDShift)
sRsrc_BdMacIIx EQU boxMacIIx+BoardspIDShift ; (1+BoardspIDShift)
sRsrc_BdMacIIcx EQU boxMacIIcx+BoardspIDShift ; (2+BoardspIDShift)
sRsrc_BdMacSE30 EQU boxSE30+BoardspIDShift ; (3+BoardspIDShift)
sRsrc_BdMacIIci EQU boxMacIIci+BoardspIDShift ; (5+BoardspIDShift)
sRsrc_BdMacIIfx EQU boxMacIIfx+BoardspIDShift ; (7+BoardspIDShift)
sRsrc_BdErickson EQU boxMacIIsi+BoardspIDShift ; (12+BoardspIDShift)
sRsrc_BdElsie EQU boxMacLC+BoardspIDShift ; (13+BoardspIDShift)
sRsrc_BdEclipse EQU boxQuadra900+BoardspIDShift ; (14+BoardspIDShift)
sRsrc_BdTIM EQU boxPowerBook170+BoardspIDShift ; (15+BoardspIDShift)
sRsrc_BdSpike EQU boxQuadra700+BoardspIDShift ; (16+BoardspIDShift)
sRsrc_BdApollo Equ boxClassicII+BoardspIDShift ; (17+BoardspIDShift) <H49>
sRsrc_BdTIMLC Equ boxPowerBook140+BoardspIDShift ; (19+BoardspIDshift)
sRsrc_BdZydeco Equ boxQuadra950+BoardspIDShift ; (20+BoardspIDShift) <H49>
sRsrc_BdDBLite25 Equ boxPowerBookDuo210+BoardspIDShift; (23+BoardspIDShift) <H49>
sRsrc_BdWombat25 Equ boxCentris650+BoardspIDShift ; (24+BoardspIDShift) <SM52>
sRsrc_BdDBLite33 Equ boxPowerBookDuo230+BoardspIDShift; (26+BoardspIDshift) <H49>
sRsrc_BdDartanian Equ boxPowerBook180+BoardspIDShift ; (27+BoardsplDshift) <H49>
sRsrc_BdDartanianLC Equ boxPowerBook160+BoardspIDShift ; (28+BoardspIDShift) <H49>
sRsrc_BdWombat33F Equ boxQuadra800+BoardspIDShift ; (29+BoardspIDShift) <SM52>
sRsrc_BdWombat33 Equ boxQuadra650+BoardspIDShift ; (30+BoardspIDShift) <SM52>
sRsrc_BdLCII Equ boxMacLCII+BoardspIDShift ; (31+BoardspIDshift) <SM22>
sRsrc_BdDBLite16 Equ boxPowerBookDuo250+BoardspIDShift ; (32+BoardspIDshift) <SM56>
sRsrc_BdDBLite20 Equ boxDBLite20+BoardspIDShift ; (33+BoardspIDshift) <SM56>
sRsrc_BdWombat40 Equ boxWombat40+BoardspIDShift ; (45+BoardspIDShift)
sRsrc_BdWLCD20 Equ boxCentris610+BoardspIDShift ; (46+BoardspIDShift) <SM52>
sRsrc_BdWLCD25 Equ boxQuadra610+BoardspIDShift ; (47+BoardspIDShift) <SM52>
sRsrc_BdWombat20 Equ boxWombat20+BoardspIDShift ; (52+BoardspIDshift)
sRsrc_BdWombat40F Equ boxWombat40F+BoardspIDShift ; (53+BoardspIDshift)
sRsrc_BdRiscQuadra700 Equ boxRiscQuadra700+BoardspIDShift ; (55+BoardspIDShift) <SM51>
sRsrc_BdWLCD33 Equ boxWLCD33+BoardspIDShift ; (57+BoardspIDshift)
sRsrc_BdRiscCentris650 Equ boxRiscCentris650+BoardspIDShift; (76+BoardspIDshift) <SM51>
sRsrc_BdRiscQuadra900 Equ boxRiscQuadra900+BoardspIDShift ; (98+BoardspIDShift) <SM51>
sRsrc_BdRiscQuadra950 Equ boxRiscQuadra950+BoardspIDShift ; (99+BoardspIDShift) <SM51>
sRsrc_BdRiscCentris610 Equ boxRiscCentris610+BoardspIDShift; (100+BoardspIDshift) <SM51>
sRsrc_BdRiscQuadra800 Equ boxRiscQuadra800+BoardspIDShift ; (101+BoardspIDshift) <SM51>
sRsrc_BdRiscQuadra610 Equ boxRiscQuadra610+BoardspIDShift ; (102+BoardspIDshift) <SM53>
sRsrc_BdRiscQuadra650 Equ boxRiscQuadra650+BoardspIDShift ; (103+BoardspIDshift) <SM53>
sRsrc_BdSTPQ700 Equ boxSTPQ700+BoardspIDShift ; (110+BoardspIDshift) <SM57>
sRsrc_BdSTPQ900 Equ boxSTPQ900+BoardspIDShift ; (111+BoardspIDshift) <SM57>
sRsrc_BdSTPQ950 Equ boxSTPQ950+BoardspIDShift ; (112+BoardspIDshift) <SM57>
sRsrc_BdSTPC610 Equ boxSTPC610+BoardspIDShift ; (113+BoardspIDshift) <SM57>
sRsrc_BdSTPC650 Equ boxSTPC650+BoardspIDShift ; (114+BoardspIDshift) <SM57>
sRsrc_BdSTPQ610 Equ boxSTPQ610+BoardspIDShift ; (115+BoardspIDshift) <SM57>
sRsrc_BdSTPQ650 Equ boxSTPQ650+BoardspIDShift ; (116+BoardspIDshift) <SM57>
sRsrc_BdSTPQ800 Equ boxSTPQ800+BoardspIDShift ; (117+BoardspIDshift) <SM57>
; -------- RBV System sRsrc IDs --------
sRsrc_VidRbvHRa EQU $86 ; Mac II High-Res Display (1,2,4,8)
sRsrc_VidRbvHRb EQU $96 ; Mac II High-Res Display (1,2,4)
sRsrc_VidRbvHRc EQU $9E ; Mac II High-Res Display (1,2)
sRsrc_VidRbvHRd EQU $8E ; Mac II High-Res Display (1 only)
sRsrc_VidRbvFPa EQU $81 ; Page Display (1,2,4)
sRsrc_VidRbvFPb EQU $91 ; Page Display (1,2)
sRsrc_VidRbvFPc EQU $89 ; Page Display (1 only)
sRsrc_VidRbvGSa EQU $82 ; nonInterlaced GS Display (1,2,4,8)
sRsrc_VidRbvGSb EQU $92 ; nonInterlaced GS Display (1,2,4)
sRsrc_VidRbvGSc EQU $9A ; nonInterlaced GS Display (1,2)
sRsrc_VidRbvGSd EQU $8A ; nonInterlaced GS Display (1 only)
sRsrc_VidRbvSEa EQU $87 ; Mac SE display (1,2,4,8)
sRsrc_VidRbvSEb EQU $97 ; Mac SE display (1,2,4)
sRsrc_VidRbvSEc EQU $9F ; Mac SE display (1,2)
sRsrc_VidRbvSEd EQU $8F ; Mac SE display (1 only)
; -------- Elsie V8 sRsrc IDs --------
; in this set of IDs, the bits are assigned by feature:
;
; Bit 7 = always on for functional sRsrcIDs
; Bit 6-5 = 01 for Elsie/V8
; Bit 4 = 0 if vRAM video, 1 if no vRAM with Jersey, 1 if A2 mode with Rubik
; Bit 3 = 0 if 512K vRAM, 1 if 256K vRAM
; Bit 2-0 = monitor ID bits (010 = Rubik, 110 = Hi-Res RGB, 011 = VGA). These
; sense combinations are similar to the RBV, but the V8 doesn't support
; the portrait display. The VGA has an extended sense combination that
; looks like the portrait code if the lines aren't driven. So we effectively
; share that code.
;
sRsrc_NeverMatch EQU $A0 ; This sRsrc is NEVER implemented! It's
; used to allow sRsrc pruning to work
; with no connected display.
; It is used by all slot zero configurations.
sRsrc_Vid_V8_GSa EQU $A2 ; 512K VRAM V8 + Rubik (1,2,4,8,16)
sRsrc_Vid_V8_GSb EQU $AA ; 256K VRAM V8 + Rubik (1,2,4,8)
sRsrc_Vid_V8_A2Ema EQU $B2 ; 512K VRAM V8 + A// (1,2,4,8)
sRsrc_Vid_V8_A2Emb EQU $BA ; 256K VRAM V8 + A// (1,2,4)
sRsrc_Vid_V8_HRa EQU $A6 ; 512K VRAM V8 + Hi-Res (1,2,4,8)
sRsrc_Vid_V8_HRb EQU $AE ; 256K VRAM V8 + Hi-Res (1,2,4)
sRsrc_Vid_V8_VGAa EQU $A3 ; 512K VRAM V8 + VGA (1,2,4,8)
sRsrc_Vid_V8_VGAb EQU $AB ; 256K VRAM V8 + VGA (1,2,4)
; -------- DB-Lite LCD sRsrc IDs ------
;
sRsrc_Vid_GSC_LCD Equ $BB ; GSC (640x400) built-in LCD display. <H63 - changed from BC>
; -------- DAFB sRsrc IDs --------
sRsrc_Vid_DAFB_19a Equ $BE ; 19” 1,2,4 (Ugh: Theres no where
sRsrc_Vid_DAFB_19b Equ $BF ; 19” 1,2,4,8 else to put these!)
; -------- DAFB sRsrc IDs --------
; In this group of spIDs, the assignment is much more arbitrary than the others
; where properties are associated with bits. Generally, there are two sets of
; modes - a full capability with more memory and a reduced capability with less RAM.
; The mapping of these two flavors on top of the three vRAM sizes is dependent on the
; type of display and isn't obvious.
;
; Progressive scan ID's - $C0-$CF, where even IDs are the lower functionality
; and full function = lower function+1
; Interlaced scan ID's - $D0-$DF, with the same relationship between evens
; and odds as the progressive scan displays.
; Also, convolved modes (which only work with
; 2MB RAM) are the higher functionality
; ID+8 (even if the higher func. mode is a
; 1MB mode)
;
; Zydeco update: Because the Zydeco (Eclipse 33) has the AC842A (16bpp-capable ACDC), we
; needed a few more sResources. Note that the even sRsrcs are still the lesser capable
; sRsrc IDs.
sRsrc_Vid_DAFB_FPa EQU $C0 ; Full-Page 1,2,4
sRsrc_Vid_DAFB_FPb EQU $C1 ; Full-Page 1,2,4,8
sRsrc_Vid_DAFB_GSa EQU $C2 ; Rubik 1,2,4,8
sRsrc_Vid_DAFB_GSb EQU $C3 ; Rubik 1,2,4,8,32
sRsrc_Vid_DAFB_2Pa EQU $C4 ; Two-Page 1,2,4
sRsrc_Vid_DAFB_2Pb EQU $C5 ; Two-Page 1,2,4,8
sRsrc_Vid_DAFB_LPa EQU $C6 ; GoldFish 1,2,4,8
sRsrc_Vid_DAFB_LPb EQU $C7 ; GoldFish 1,2,4,8,32
sRsrc_Vid_DAFB_HRa EQU $C8 ; HiRes 1,2,4,8
sRsrc_Vid_DAFB_HRb EQU $C9 ; HiRes 1,2,4,8,32
sRsrc_Vid_DAFB_VGAa EQU $CA ; VGA 1,2,4,8
sRsrc_Vid_DAFB_VGAb EQU $CB ; VGA 1,2,4,8,32
sRsrc_Vid_DAFB_RGBFPa EQU $CC ; RGBPort 1,2,4
sRsrc_Vid_DAFB_RGBFPb EQU $CD ; RGBPort 1,2,4,8
sRsrc_Vid_DAFB_RGB2Pa EQU $CE ; Vesuvio 1,2,4
sRsrc_Vid_DAFB_RGB2Pb EQU $CF ; Vesuvio 1,2,4,8
sRsrc_Vid_DAFB_NTSCSTa EQU $D0 ; NTSC ST 1,2,4,8
sRsrc_Vid_DAFB_NTSCSTb EQU $D1 ; NTSC ST 1,2,4,8,32
sRsrc_Vid_DAFB_NTSCFFa EQU $D2 ; NTSC FF 1,2,4,8
sRsrc_Vid_DAFB_NTSCFFb EQU $D3 ; NTSC FF 1,2,4,8,32
sRsrc_Vid_DAFB_PALSTa EQU $D4 ; PAL ST 1,2,4,8
sRsrc_Vid_DAFB_PALSTb EQU $D5 ; PAL ST 1,2,4,8,32
sRsrc_Vid_DAFB_PALFFa EQU $D6 ; PAL FF 1,2,4,8
sRsrc_Vid_DAFB_PALFFb EQU $D7 ; PAL FF 1,2,4,8,32
sRsrc_Vid_DAFB_NTSCconvSTx EQU $D8 ; NTSC ST conv 1,2,4,8 (dif ID only for 16bpp)
sRsrc_Vid_DAFB_NTSCconvST EQU $D9 ; NTSC ST conv 1,2,4,8
sRsrc_Vid_DAFB_NTSCconvFFx EQU $DA ; NTSC FF conv 1,2,4,8 (dif ID only for 16bpp)
sRsrc_Vid_DAFB_NTSCconvFF EQU $DB ; NTSC FF conv 1,2,4,8
sRsrc_Vid_DAFB_PALconvSTx EQU $DC ; PAL ST conv 1,2,4,8 (dif ID only for 16bpp)
sRsrc_Vid_DAFB_PALconvST EQU $DD ; PAL ST conv 1,2,4,8
sRsrc_Vid_DAFB_PALconvFFx EQU $DE ; PAL FF conv 1,2,4,8 (dif ID only for 16bpp)
sRsrc_Vid_DAFB_PALconvFF EQU $DF ; PAL FF conv 1,2,4,8
; -------- TIM LCD sRsrc IDs ----------
;
sRsrc_Vid_Tim_LCD EQU $E0 ; TIM built-in LCD display
; -------- Apollo sRsrc IDs -----------
;
sRsrc_Vid_Apollo Equ $E1 ; Apollo built-in video
; ------- Extra DAFB sRsrc IDs -------
;
MinDAFB16bppSRsrc Equ $E2 ; DAFB 16bpp-capable sRsrc boundry.
sRsrc_Vid_DAFB_HRax Equ $E2 ; HiRes 1,2,4,8,16
sRsrc_Vid_DAFB_HRbx Equ $E3 ; HiRes 1,2,4,8,16,32
sRsrc_Vid_DAFB_VGAax Equ $E4 ; VGA 1,2,4,8,16
sRsrc_Vid_DAFB_VGAbx Equ $E5 ; VGA 1,2,4,8,16,32
sRsrc_Vid_DAFB_LPax Equ $E6 ; GoldFish 1,2,4,8,16
sRsrc_Vid_DAFB_LPbx Equ $E7 ; GoldFish 1,2,4,8,16,32
sRsrc_Vid_DAFB_SVGAax Equ $E8 ; SuperVGA 1,2,4,8,16
sRsrc_Vid_DAFB_SVGAbx Equ $E9 ; SuperVGA 1,2,4,8,16,32
sRsrc_Vid_DAFB_SVGAa Equ $EA ; SuperVGA 1,2,4,8
sRsrc_Vid_DAFB_SVGAb Equ $EB ; SuperVGA 1,2,4,8,32
sRsrc_Vid_DAFB_GSx Equ $EC ; Rubik 1,2,4,8,16,32
sRsrc_Vid_DAFB_GSz Equ $EE ; Rubik 1,2,4,8,16 (note that its out of order here)
sRsrc_Vid_DAFB_RGBFPbx Equ $ED ; RGBPort 1,2,4,8,16
sRsrc_Vid_DAFB_RGB2Pbx Equ $EF ; Vesuvio 1,2,4,8,16
sRsrc_Vid_DAFB_NTSCSTax Equ $F0 ; NTSC ST 1,2,4,8,16
sRsrc_Vid_DAFB_NTSCSTbx Equ $F1 ; NTSC ST 1,2,4,8,16,32
sRsrc_Vid_DAFB_NTSCFFax Equ $F2 ; NTSC FF 1,2,4,8,16
sRsrc_Vid_DAFB_NTSCFFbx Equ $F3 ; NTSC FF 1,2,4,8,16,32
sRsrc_Vid_DAFB_PALSTax Equ $F4 ; PAL ST 1,2,4,8,16
sRsrc_Vid_DAFB_PALSTbx Equ $F5 ; PAL ST 1,2,4,8,16,32
sRsrc_Vid_DAFB_PALFFax Equ $F6 ; PAL FF 1,2,4,8,16
sRsrc_Vid_DAFB_PALFFbx Equ $F7 ; PAL FF 1,2,4,8,16
sRsrc_Vid_DAFB_Reserved Equ $F8 ; Reserved for future use.
sRsrc_Vid_DAFB_19bx Equ $F9 ; 19” 1,2,4,8,16
pSRsrc_Vid_DAFB_2PRdRGB Equ $FD ; Psuedo-sRsrcID for Radius ColorTPD (1,2,4,8[,16]).
pSRsrc_Vid_DAFB_2PRdMono Equ $FE ; Psuedo-sRsrcID for Radius MonoTPD (1,2,4,8).
;
; The following sRsrcs are non-video sRsrcs. As much as it makes sense, we should attempt to use
; the same sRsrc IDs in directories other than the Zydeco sRsrc directory.
;
; -------- CPU Resource IDs -----------
;
sRsrc_CPUMacIIci EQU $FA ; Used for 030 (and Mac LC) CPU sRsrcs.
sRsrc_CPUMac030 Equ $FA ; Just an alias for the “IIci” CPU sRsrc.
sRsrc_CPUMac040 Equ $FB ; CPU sRsrc for 040 machines.
sRsrc_Reserved1 Equ $FC ; Reserved for future use.
; -------- Onboard Ethernet ID --------
;
sRsrc_Sonic EQU $FD ; Sonic onboard Ethernet chip.
sRsrc_Ethernet Equ $FD ; Just an alias for future non-Sonic Ethernet chips.
sRsrc_Reserved2 Equ $FE ; Reserved for future use except in the Zydeco sRsrc dir.
; -------- SCSI Transport ID --------
;
sRsrc_SCSI_Transport Equ $FA ; SCSI Transport sRsrc for 4.3SCSI Mgr
;
; Double Exposure related stuff. This card should have a config ROM on it, but doesn't so
; we have a double exposure functional sRsrc that could potentially be plumbed in. This
; spID is set to be higher than all video functional sRsrcs.
;
sRsrc_DoubleExposure EQU $FE ; special functional resource for Double
; Exposure functional sRsrc
CPU_FlagsID EQU $80
hasPixelClock EQU 0 ; bit indicating that card provides a pixel clock
hasIWM EQU 1 ; card has an IWM
hasJoystick EQU 2 ; card has a joystick port
hasDERegs EQU 15 ; card uses the initial DE register set
CPU_Flags EQU 0|\ ; has pixel clock, IWM, joystick, and DE register set
(1<<hasPixelClock)|\
(1<<hasIWM)|\
(1<<hasJoystick)|\
(1<<hasDERegs)
; Double Exposure hardware regs
;
A2eAdrsReg Equ $1c
A2eDataReg Equ $10
;---------------------------------------------------------------------
; sRsrc IDs in the sRsrcSonoraDir Directory
;---------------------------------------------------------------------
; Define the board sRsrc strategy for the sRsrcSonraDir. We just use the boxFlag for
; covenience. Unlike the Zydeco directory, we dont need to add 1 because none
; of the Sonora-based CPUs can have a boxFlag of zero.
;
sRsrc_BDVail Equ boxLCIII ; Board sResource ID for the Vail CPU. <SM52>
sRsrc_BdPDM Equ boxPDM80F ; Board sResrouce ID for PDM. <SM45> <sm55>
; -------- Vail/PDM sRsrc IDs ----------
;
sRsrc_Vid_Sonora_FP Equ $80 ; Full-Page 1 (PDM)
sRsrc_Vid_Sonora_FPa Equ $81 ; Full-Page 1,2
sRsrc_Vid_Sonora_FPb Equ $82 ; Full-Page 1,2,4
sRsrc_Vid_Sonora_FPc Equ $83 ; Full-Page 1,2,4,8
sRsrc_Vid_Sonora_GS Equ $84 ; Rubik 1 (PDM)
sRsrc_Vid_Sonora_GSa Equ $85 ; Rubik 1,2,4,8
sRsrc_Vid_Sonora_GSb Equ $86 ; Rubik 1,2,4,8,16
sRsrc_Vid_Sonora_GSM Equ $87 ; GSM=GSb
sRsrc_Vid_Sonora_GS560a Equ $88 ; Rubik-560 1,2,4,8 (Vail)
sRsrc_Vid_Sonora_GS560b Equ $89 ; Rubik-560 1,2,4,8,16 (Vail)
sRsrc_Vid_Sonora_RGBFP Equ $8A ; RGB Full-Page 1 (PDM)
sRsrc_Vid_Sonora_RGBFPa Equ $8B ; RGB Full-Page 1,2
sRsrc_Vid_Sonora_RGBFPb Equ $8C ; RGB Full-Page 1,2,4
sRsrc_Vid_Sonora_RGBFPc Equ $8D ; RGB Full-Page 1,2,4,8
sRsrc_Vid_Sonora_HR Equ $8E ; HiRes 1 (PDM)
sRsrc_Vid_Sonora_HRa Equ $8F ; HiRes 1,2,4
sRsrc_Vid_Sonora_HRb Equ $90 ; HiRes 1,2,4,8
sRsrc_Vid_Sonora_HRc Equ $91 ; HiRes 1,2,4,8,16
sRsrc_Vid_Sonora_MSB1 Equ $92 ; MSB1 -> HRc
sRsrc_Vid_Sonora_HR400a Equ $93 ; HiRes-400 1,2,4,8 (Vail)
sRsrc_Vid_Sonora_HR400b Equ $94 ; HiRes-400 1,2,4,8,16 (Vail)
sRsrc_Vid_Sonora_VGA Equ $95 ; VGA 1 (PDM)
sRsrc_Vid_Sonora_VGAa Equ $96 ; VGA 1,2,4
sRsrc_Vid_Sonora_VGAb Equ $97 ; VGA 1,2,4,8
sRsrc_Vid_Sonora_VGAc Equ $98 ; VGA 1,2,4,8,16
sRsrc_Vid_Sonora_GF Equ $99 ; GoldFish 1 (PDM)
sRsrc_Vid_Sonora_GFa Equ $9A ; GoldFish 1,2
sRsrc_Vid_Sonora_GFb Equ $9B ; GoldFish 1,2,4,8
sRsrc_Vid_Sonora_MSB2 Equ $9C ; MSB2 -> MSB3 -> GFb
sRsrc_Sonora_Mace Equ $EF ; Mace Ethernet on Sonora <SM12>
sRsrc_Sonora_NeverMatch Equ $FE ; The “null” Sonora sRsrc.
;---------------------------------------------------------------------
; sRsrc IDs in the sRsrcCSCDir Directory
;---------------------------------------------------------------------
; Define the board sRsrc strategy for the sRsrcCSCDir.
;
sRsrc_BdEscher Equ $01 ; Board sResource ID for Eschers.
sRsrc_BdBlackBird Equ $02 ; Board sResource ID for BlackBirds.
sRsrc_BdYeager Equ $03 ; Board sResource ID for Yeagers.
; -------- CSC sRsrc IDs ----------
;
sRsrc_Vid_CSC_640x400a Equ $80 ; 1,2,4,8,16 [Color, TFT, Single-Drive, 640x480, Sharp]
sRsrc_Vid_CSC_640x400b Equ $81 ; 1,2,4,8
sRsrc_Vid_CSC_640x480a Equ $82 ; 1,2,4,8,16 [Color, TFT, Single-Drive, 640x480, Sharp]
sRsrc_Vid_CSC_C_S_TFT_399 Equ $80 ; 1,2,4,8,16 [Color, TFT, Single-Drive, 640x480, Sharp]
sRsrc_Vid_CSC_C_S_TFT_480 Equ $81 ; 1,2,4,8
sRsrc_Vid_CSC_C_S_TFT_399a Equ $82 ; 1,2,4,8,16 [Color, TFT, Single-Drive, 640x480, Sharp]
sRsrc_Vid_CSC_C_S_TFT_480a Equ $83 ; 1,2,4,8
sRsrc_Vid_CSC_C_D_STN_480 Equ $85 ; 1,2,4,8 [Color, STN, Dual-Drive, 640x480, Sharp]
sRsrc_Vid_CSC_C_S_TFT_399b Equ $86 ; 1,2,4,8,16 [Color, TFT, Single-Drive, 640x480, NEC]
sRsrc_Vid_CSC_C_S_TFT_480b Equ $87 ; 1,2,4,8
sRsrc_Vid_CSC_C_S_TFT_399c Equ $88 ; 1,2,4,8,16 [Color, TFT, Single-Drive, 640x480, Hosiden]
sRsrc_Vid_CSC_C_S_TFT_480c Equ $89 ; 1,2,4,8
sRsrc_Vid_CSC_C_S_TFT_399d Equ $8A ; 1,2,4,8,16 [Color, TFT, Single-Drive, 640x480, Toshiba]
sRsrc_Vid_CSC_C_S_TFT_480d Equ $8B ; 1,2,4,8
sRsrc_Vid_CSC_G_D_STN_400 Equ $8D ; 1,2,4 [Gray, STN, Dual-Drive, 640x400, Sharp-Escher]
sRsrc_Vid_CSC_G_S_TFT_400 Equ $8F ; 1,2,4 [Gray, TFT, Single-Drive, 640x400, Hosiden-Escher]
sRsrc_Vid_CSC_G_D_STN_480 Equ $90 ; 1,2,4 [Gray, STN, Dual-Drive, 640x480, Sharp]
sRsrc_Vid_CSC_G_S_TFT_480 Equ $91 ; 1,2,4 [Gray, TFT, Single-Drive, 640x400, Hosiden]
sRsrc_Vid_CSC_C_S_TFT_399y Equ $92 ; 1,2,4,8,16 [Color, TFT, Single-Drive, 640x480, Sharp-Yeager]
sRsrc_Vid_CSC_C_S_TFT_480y Equ $93 ; 1,2,4,8
sRsrc_Vid_CSC_G_D_STN_400y Equ $94 ; 1,2,4 [Gray, STN, Dual-Drive, 640x400, Sharp-Yeager]
sRsrc_Vid_CSC_G_S_TFT_400y Equ $95 ; 1,2,4 [Gray, TFT, Single-Drive, 640x400, Hosiden-Yeager]
sRsrc_CSC_NeverMatch Equ $FE ; The “null” CSC sRsrc.
; -------- VSC sRsrc IDs ----------
;
sRsrc_Vid_VSC_FPb Equ $80
sRsrc_Vid_VSC_FPa Equ $81
sRsrc_Vid_VSC_GS Equ $82
sRsrc_Vid_VSC_RGBFPb Equ $80
sRsrc_Vid_VSC_RGBFPa Equ $81
sRsrc_Vid_VSC_HR Equ $82
;---------------------------------------------------------------------
; sRsrc IDs in the sRsrcCivicDir Directory
;---------------------------------------------------------------------
; Define the board sRsrc strategy for the sRsrcCivicDir. We just use the boxFlag for
; covenience. Unlike the Zydeco directory, we dont need to add 1 because none
; of the Cyclone-based CPUs can have a boxFlag of zero.
;
sRsrc_BdCyclone Equ boxQuadra840AV ; Board sRsrc ID for the Cyclone family of CPUs. <SM52>
sRsrc_BdTempest Equ boxCentris660AV ; Board sRsrc ID for the Tempest family of CPUs. <SM52>
; -------- Cyclone sRsrc IDs ----------
;
; The functional sRsrcs in Cyclone are distributed as follows:
;
; $80 - $EF are the video sRsrcs IDs
;
; $F0 - $FD are for misc. sRsrc IDs (e.g, Mace, DSP, etc…).
;
; $FE is reserved as the “null” sRsrc ID.
sRsrc_Vid_Civic_NTSCFFConva Equ $80 ; NTSC FF Conv 1,2,4,8
sRsrc_Vid_Civic_NTSCSTConv Equ $81 ; NTSC ST Conv 1,2,4,8
sRsrc_Vid_Civic_PALFFConva Equ $84 ; PAL FF Conv 1,2,4,8
sRsrc_Vid_Civic_PALSTConva Equ $85 ; PAL ST Conv 1,2,4,8
; ------ Video-in ID's
sRsrc_Vid_Civic_vi2PRGBa Equ $88 ; Vesuvio 1,2,4
sRsrc_Vid_Civic_vi2PRGBb Equ $89 ; Vesuvio 1,2,4,8
sRsrc_Vid_Civic_vi2PRGB512 Equ $8A ; Vesuvio (512x384) 1,2,4,8,16
sRsrc_Vid_Civic_vi2PRGB640a Equ $8B ; Vesuvio (640x480) 1,2,4,8
sRsrc_Vid_Civic_vi2PRGB640b Equ $8C ; Vesuvio (640x480) 1,2,4,8,16
sRsrc_Vid_Civic_vi2PRGB768a Equ $8D ; Vesuvio (768x576) 1,2,4,8
sRsrc_Vid_Civic_vi2PRGB768b Equ $8E ; Vesuvio (768x576) 1,2,4,8,16
sRsrc_Vid_Civic_viFPa Equ $91 ; Full-Page 1,2,4
sRsrc_Vid_Civic_viFPb Equ $92 ; Full-Page 1,2,4,8
sRsrc_Vid_Civic_viFP512 Equ $93 ; Full-Page (512x384) 1,2,4,8
sRsrc_Vid_Civic_viFP640 Equ $94 ; Full-Page (640x480) 1,2,4,8
sRsrc_Vid_Civic_viGS Equ $97 ; Rubik 1,2,4,8,16
sRsrc_Vid_Civic_viGS560 Equ $98 ; Rubik-560 1,2,4,8,16
sRsrc_Vid_Civic_vi2Pa Equ $9B ; Two-Page 1,2,4
sRsrc_Vid_Civic_vi2Pb Equ $9C ; Two-Page 1,2,4,8
sRsrc_Vid_Civic_vi2P512 Equ $9D ; Two-Page (512x384) 1,2,4,8
sRsrc_Vid_Civic_vi2P640 Equ $9E ; Two-Page (640x480) 1,2,4,8
sRsrc_Vid_Civic_vi2P768 Equ $9F ; Two-Page (768x576) 1,2,4,8
sRsrc_Vid_Civic_viNTSCFFa Equ $A2 ; NTSC FF 1,2,4,8
sRsrc_Vid_Civic_viNTSCFFb Equ $A3 ; NTSC FF 1,2,4,8,16
sRsrc_Vid_Civic_viNTSCST Equ $A4 ; NTSC ST 1,2,4,8,16
sRsrc_Vid_Civic_viNTSCFFConva Equ $A5 ; NTSC FF Conv 1,2,4,8 (Actually Non-Conv)
sRsrc_Vid_Civic_viNTSCFFConvb Equ $A6 ; NTSC FF Conv 1,2,4,8,16 (Actually Non-Conv)
sRsrc_Vid_Civic_viNTSCSTConv Equ $A7 ; NTSC ST Conv 1,2,4,8,16 (Actually Non-Conv)
sRsrc_Vid_Civic_viFPRGBa Equ $AA ; Full-Page RGB 1,2,4
sRsrc_Vid_Civic_viFPRGBb Equ $AB ; Full-Page RGB 1,2,4,8
sRsrc_Vid_Civic_viHRa Equ $B0 ; HiRes 1,2,4,8
sRsrc_Vid_Civic_viHRb Equ $B1 ; HiRes 1,2,4,8,16
sRsrc_Vid_Civic_viHRNTSCST Equ $B2 ; HiRes (512x384) 1,2,4,8,16
sRsrc_Vid_Civic_viHR400 Equ $B3 ; HiRes (640x400) 1,2,4,8,16
sRsrc_Vid_Civic_viHRMAZa Equ $B4 ; HiRes (704x512) 1,2,4,8
sRsrc_Vid_Civic_viHRMAZb Equ $B5 ; HiRes (704x512) 1,2,4,8,16
sRsrc_Vid_Civic_viPALFFa Equ $B8 ; PAL FF 1,2,4,8
sRsrc_Vid_Civic_viPALFFb Equ $B9 ; PAL FF 1,2,4,8,16
sRsrc_Vid_Civic_viPALSTa Equ $BA ; PAL ST 1,2,4,8
sRsrc_Vid_Civic_viPALSTb Equ $BB ; PAL ST 1,2,4,8,16
sRsrc_Vid_Civic_viPALFFConva Equ $BC ; PAL FF Conv 1,2,4,8 (Actually, non-Conv)
sRsrc_Vid_Civic_viPALFFConvb Equ $BD ; PAL FF Conv 1,2,4,8,16 (Actually, non-Conv)
sRsrc_Vid_Civic_viPALSTConva Equ $BE ; PAL ST Conv 1,2,4,8 (Actually, non-Conv)
sRsrc_Vid_Civic_viPALSTConvb Equ $BF ; PAL ST Conv 1,2,4,8,16 (Actually, non-Conv)
sRsrc_Vid_Civic_viVGAa Equ $C2 ; VGA 1,2,4,8
sRsrc_Vid_Civic_viVGAb Equ $C3 ; VGA 1,2,4,8,16
sRsrc_Vid_Civic_viSVGA56a Equ $C7 ; SVGA (56Hz) 1,2,4,8
sRsrc_Vid_Civic_viSVGA56b Equ $C8 ; SVGA (56Hz) 1,2,4,8,16
sRsrc_Vid_Civic_viSVGA72a Equ $CC ; SVGA (72Hz) 1,2,4,8
sRsrc_Vid_Civic_viSVGA72b Equ $CD ; SVGA (72Hz) 1,2,4,8,16
sRsrc_Vid_Civic_viSxVGA60a Equ $D1 ; SxVGA (60Hz) 1,2,4
sRsrc_Vid_Civic_viSxVGA60b Equ $D2 ; SxVGA (60Hz) 1,2,4,8
sRsrc_Vid_Civic_viSxVGA70a Equ $D6 ; SxVGA (70Hz) 1,2,4
sRsrc_Vid_Civic_viSxVGA70b Equ $D7 ; SxVGA (70Hz) 1,2,4,8
sRsrc_Vid_Civic_viGFa Equ $DB ; GoldFish 1,2,4,8
sRsrc_Vid_Civic_viGFb Equ $DC ; GoldFish 1,2,4,8,16
sRsrc_Vid_Civic_viGFNTSCST Equ $DD ; Goldfish (512x384) 1,2,4,8,16
sRsrc_Vid_Civic_viGFNTSCFFa Equ $DE ; Goldfish (640x480) 1,2,4,8
sRsrc_Vid_Civic_viGFNTSCFFb Equ $DF ; Goldfish (640x480) 1,2,4,8,16
sRsrc_Vid_Civic_viGFPALFFa Equ $E0 ; Goldfish (768x576) 1,2,4,8
sRsrc_Vid_Civic_viGFPALFFb Equ $E1 ; Goldfish (768x576) 1,2,4,8,16
sRsrc_Vid_Civic_vi19a Equ $E4 ; 19" 1,2,4
sRsrc_Vid_Civic_vi19b Equ $E5 ; 19" 1,2,4,8
; ------
sRsrc_Civic_NeverMatch Equ $FE ; The “null” sRsrc ID