; ; File: PowerPrivEqu.a ; ; Contains: Equates used by the Power Manager ; ; Written by: Helder J. Ramalho ; ; Copyright: © 1990-1994 by Apple Computer, Inc. All rights reserved. ; ; This file is used in these builds: ROM ; ; Change History (most recent first): ; ; 1/14/94 ged Added ModemSndReq/State bits to the PmgrFlags3 field for modem ; sound support. ; 12/13/93 PN Roll in KAOs and Horror changes to support Malcom and AJ ; machines ; 9/2/93 SKH Completely replace the old SuperMario PowerPrivEqu.a with one ; which has the many horror changes. ; ; 6/2/93 SWC Added a modem type vector to the modem primitive table. ; 05-31-93 jmp Added yet-another-field to the PmgrRec called “fadeVars” -- it ; will be used to fade screens (usually CRT) during dimming. ; 5/31/93 RLE change set/getmachineid to set/getmachineattr (this way PG&E ; won't need to be updated for each and every new machine) ; 5/28/93 SWC Moved the absolute battery level selector from the private ; dispatch to the public one. Removed the PowerMgrDispatch record ; so additions won't force major rebuilds. All that information ; can now be found in PowerMgrDispatchEqu.a. ; 5/27/93 RLE add PrimChargerAttr field to PrimInfoTble ; 05-19-93 jmp Added a warning about the use of the PmgrFlags1 field and the ; PmgrExtVidOn bit as it relates to the original DeclROMs of the ; Duo/MiniDocks. ; 5/17/93 RLE move ignoreClamshell variable to PmgrFlags3 ; 5/4/93 SWC Moved all PowerMgrDispatch stuff to PowerMgrDispatchEqu.a. Added ; a primitive routine to dynamically set full/reduced CPU speed. ; Added space to the globals to hold copies of the TimeDBRA ; constants for full and reduced speed modes. ; 4/23/93 SWC Made some additions to sync up with the gibbly. ; 4/21/93 SWC Added a selector to _PowerDispatch to return a bitmap of private ; Power Manager features so software like the PowerBook control ; panel can get this without having to be rev'd for each CPU. ; Added the definition of bits returned by the public modem info ; selector. Added a bit to disable hard disk spindown. ; 4/19/93 SWC Added some more feature bits and selectors to _PowerMgrDispatch. ; 4/16/93 SWC Added a new field to the HDQueueElement record so a user will ; have some place to stash their variables. ; 4/15/93 SWC Added variables, etc., to support the public Power Manager ; dispatch trap. ; 4/14/93 RLE add commands to set and get cutoff voltage ; 4/8/93 RLE add charger control to power1 commands ; 3/24/93 RLE add power manager commands SetMachineID and GetMachineID ; 8/18/92 djw Define 2 new PmgrFlag2 bits ; 7/13/92 ag Added constants to the info tables for delay time before shorted ; battery dialog and delta battery warn level if external monitor ; is being used. Added two new fields in the globals to handle ; shorted battery delay software. ; 7/13/92 HJR Changed polarity of PmgrExtVidOn. ; 7/11/92 ag Changed SecondaryInitDisp to PMgrHookDisp. The selector is now a ; general purpose selector with data passed in the upper word of ; d0. Defined "scsidiskmodeon" bit. ; 7/11/92 HJR Change the name of WakeScrnPtr to ScreenRedrawPtr. ; 7/10/92 ag Adding table definition for modem primitives table. ; 7/9/92 ag Adding vector location in PmgrPrimInfoRec for modem primitives ; subtable. ; 7/7/92 ag Adding vector location for softshutdown routine. ; 6/24/92 SWC Changed the ‘clamshellShutdown’ bit to ‘ignoreClamshell’ since ; it turned out that there were lots of problems associated with ; trying to shutdown (gracefully) when the clamshell was closed. ; The default state of the bit will now put the system to sleep as ; before, and if the bit is turned on, we'll ignore the clamshell ; switch. ; 6/18/92 SWC Added a vector for the PMgrOp exceptions, and a flag to let us ; know that we're going to sleep because of a low power condition. ; 6/10/92 HJR Added saveGDflags to PmgrRec. ; 6/2/92 djw Add PmgrFlags1 bit PmgrAvoidUsrMsg to disable user warning ; messages ; 6/1/92 HJR Added NoVidSTRPtr, NoChrgrSTRPtr, UNmQEntry to PmgrRec. Added ; PmgrExtVidOn, PmgrExtVidAlrt to PmgrFlags field names. ; 5/19/92 HJR Added new selector to PowerDispatchRec, DimScreen. Change ; HdSpinDown to RunIdleRoutines. Added PmgrDimReq and ; PmgrDimState to PmgrFlags1. ; 5/15/92 SWC Added BatteryVBLPtr and SoundVBLPtr to PmgrPrimitives. ; 09-03-92 jmp Added some equates from Horror that I needed. ; 6/4/92 KW Rolled in more Horror changes. ; 5/12/92 ag Added Dart SPI bit in PMGRFlags1 ; 5/12/92 ag Adding "Secondary Init" selector to powerdispatch selectors. ; 5/8/92 HJR Added WakeScrnPtr to PmgrPrimitives. ; 5/7/92 SWC Added PowerDispatch selector and primitive table vector for ; returning scaled battery, warning levels (for Battery DA). ; 5/7/92 ag Added new flags to globals (we ran out again). ; 5/17/92 kc Roll in Horror Changes. Comments follow: ; 4/21/92 SWC Added new power control/status commands. ; 3/16/92 SWC Added CPUSpeed20MHz cuz it looks like we might need it. ; 3/11/92 SWC Renamed JAWSPwrCycREG to PowerCycleReg since there's more than ; one way to do power cycling. Added a VBL task record for ; monitoring the clamshell switch. Added an entry in the ; primitives table to return the address of the power cycle ; register so we won't need a chain of TestFor's in InitPmgrVars. ; 3/9/92 SWC Added SetModemInts ($71) and ReadModemInts ($79) commands. ; 2/27/92 SWC Moved the clamshell flag from bit 3 to 5 since bits 3-4 have ; been used in the past (these are now documented as well). ; 2/21/92 HJR Added power cycling routines in the PmgrPrimsRec, added Pmgr ; wake level in PrimsInfoRec, changed PmgrRec by adding ; SleepSaveFlag and SleepSaveCrsr while removing ; NoVidRamSleepSave, set the default PwrCycProgMax to $c0 to ; prevent the watch cursor from coming up in finder. ; 2/17/92 SWC Changed pmFree2 to dockFlags so we can keep track of related ; docking attributes. ; 2/10/92 SWC Added SCSI Disk Mode internal HD to PmgrOtherFlags. Added ; BasePRAMDisp to PowerDispRec. ; 2/7/92 SWC Added default low power and dead battery warning levels to the ; primitive info table so we can initialize them if necessary. ; 2/7/92 SWC Added more bits to PmgrStatusFlags/SleepFlags. Added definition ; of EconoBit so it's in one place. Added a GetLevel entry to the ; primitives table since it looks like we'll have more than one ; way to characterize the current battery level. ; 2/5/92 SWC Added new battery commands to the list. Removed since ; there's actually a command to directly return the low warning ; and cutoff battery levels. ; 2/4/92 SWC Added sleep and wakeup table entries to the primitives record. ; 2/3/92 HJR Added PRAMbase and VPmgrPrimitives to PmgrGlobals. Added Power ; Manager Primitives table to support new structure. ; 1/30/92 SWC Added low and dead battery bytes to the PRAM record since ; there's currently no place these go for PMGR-based PRAM models ; (TIM didn't have to worry because they used a RTC for real PRAM ; and the PMGR for those 2 bytes). ; 1/27/92 SWC Added two new commands to read the clamshell switch and the ; connector bar sense on DBLite. ;
12/3/91 SWC Added CPUSpeed33MHz in case we ever get a fast DB-Lite going. ;
8/15/91 SWC Rolled out the SetOneSecInt command ($70) from , since we're ; not going to selectively enable and disable its interrupt ; sources. ;

8/14/91 SWC Added vectors for the PMgr send and receive count tables so we ; can make changes/additions more easily. ;

8/14/91 SWC Added oneSecIntFlag to the list of interrput sources for the ; PMgr interrupt (command $78). ;

8/5/91 SWC Added NoVRAMVidRam to PMgrGlobals as an alternate place to save ; state when VRAM is not kept powered across sleep. ; ——————————————————————————————————————————————————————————————————————————————————————— ; Pre-HORROR ROM comments begin here. ; ——————————————————————————————————————————————————————————————————————————————————————— ; <16> 7/11/91 HJR Added MdmSndVect to PMgrGlobals. ; <15> 7/11/91 HJR Added SleepHook and WakeUpHook to PMgrGlobals. ; <14> 7/8/91 HJR Added CPUSpeedDisp to PowerDispRec. ; <13> 6/25/91 HJR Changed PwrCycProgMaxDef to $600 approximately 13 seconds. ; <12> 6/25/91 ag added hysteresis low power value to power manager globals. ; <11> 6/24/91 ag fix some commenting. ; <10> 6/24/91 HJR Added Autoslpdisable, a counting semaphore, to PmgrRec. ; <9> 6/24/91 HJR Changed sleepq and pmCommand to records. Added PwrCycProg and ; PwrCycRestore to PmgrRec. ; <8> 6/24/91 djw Add new PmgrFlags for hard drive, low power dialog disable, and ; bad battery detected condition. ; <7> 6/12/91 ag added network warning override bit in PmgrFlags. ; <6> 6/11/91 HJR Added PwrCycProgGrow and PwrCycProgMax in order to parameterize ; the progressive power cycling scheme. ; <5> 6/9/91 HJR Added IdleDelay to the PowerDispRec. Added PwrCycDelay to the ; PMgrRec and added some default equates for Power Cycling. ; <4> 6/5/91 djw Add hard drive delay fields to fix 40mb Conner's drive problem ; <3> 5/31/91 djw Add new power mgr command equate for DB-Lite to set 1 sec ; interrupt ; <2> 5/23/91 HJR Clean up header. ; <1> 5/23/91 HJR first checked in ; IF &TYPE('__PowerPrivEqu__') = 'UNDEFINED' THEN __PowerPrivEqu__ SET 1 ;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— ; ; Power Dispatch Record ; ; Equates for the list of routines that can be called from the [private] _PowerDispatch trap. ; ;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— PowerDispRec RECORD 0,Increment ; Record for the Power Dispatch Trap PmgrTrapDisp DS.B 1 ; Selector #0 IdleUpdateDisp DS.B 1 ; Selector #1 IdleDelayDisp DS.B 1 ; Selector #2 IdleMindDisp DS.B 1 ; Selector #3 IdleReadDisp DS.B 1 ; Selector #4 IdleEnableDisp DS.B 1 ; Selector #5 IdleDisableDisp DS.B 1 ; Selector #6 CPUSpeedDisp DS.B 1 ; Selector #7 BasePRAMDisp DS.B 1 ; Selector #8 ScaledBattDisp DS.B 1 ; Selector #9 PMgrHookDisp DS.B 1 ; Selector #10 DimScreen DS.B 1 ; Selector #11 FactoryDisp DS.B 1 ; Selector #12 PrivFeatureDisp DS.B 1 ; Selector #13 GetCCRecordDisp DS.B 1 ; Selector #14 GetBtnValDisp DS.B 1 ; Selector #15 SetHDStateDisp DS.B 1 ; Selector #16 ENDR ;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— ; ; IdleUpdate Type ; ; Enumeration of the different types of activity. ; ;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— OverallAct EQU 0 ; general type of activity UsrActivity EQU 1 ; user specific type of activity NetActivity EQU 2 ; network specific activity HDActivity EQU 3 ; Hard Drive activity MACRO _IdleUpdateDispatch MOVE.L #(OverallAct<<16)|\ (PowerDispRec.IdleUpdateDisp),D0 _PowerDispatch ENDM MACRO _UsrIdleUpdate MOVE.L #(UsrActivity<<16)|\ (PowerDispRec.IdleUpdateDisp),D0 _PowerDispatch ENDM MACRO _NetIdleUpdate MOVE.L #(NetActivity<<16)|\ (PowerDispRec.IdleUpdateDisp),D0 _PowerDispatch ENDM MACRO _HDIdleUpdate MOVE.L #(HDActivity<<16)|\ (PowerDispRec.IdleUpdateDisp),D0 _PowerDispatch ENDM ;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— ; ; PMgrHookDisp Record ; ; Equates for the list of routines that can be called from the PMgrHookDisp trap. ; ;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— PMgrHookDispRec RECORD 0,Increment ; Record for the PMgrHookDisp Trap PSecondaryInit DS.B 1 ; Selector #0 PScsiDiskMode DS.B 1 ; Selector #1 PExternalVidOn DS.B 1 ; Selector #2 PModemType DS.B 1 ; Selector #3 ENDR ;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— ; ; GetBtnValsDisp Record ; ; Equates for the list of routines that can be called from the GetBtnValsDisp trap. ; ;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— GetBrightnessButtonSelector EQU 0 ; BrightnessSelector GetContrassButtonSelector EQU 1 ; Contrass Selector MACRO _GetBrightnessButton MOVE.L #(GetBrightnessButtonSelector<<16)|\ (PowerDispRec.GetBtnValDisp),D0 _PowerDispatch ENDM MACRO _GetContrassButton MOVE.L #(GetContrassButtonSelector<<16)|\ (PowerDispRec.GetBtnValDisp),D0 _PowerDispatch ENDM ;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— ; ; SetHDStateDisp Record ; ; Equates for the list of routines that can be called from the SetHDStateDisp trap. ; ;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— SpinDownHDSelector EQU 0 ; Spin down hard drive selector SpinUpHDSelector EQU 1 ; Spin up the hard drive selector MACRO _SpinDownHardDrive MOVE.L #(SpinDownHDSelector<<16)|\ (PowerDispRec.SetHDStateDisp),D0 _PowerDispatch ENDM MACRO _SpinUPHardDrive MOVE.L #(SpinUpHDSelector<<16)|\ (PowerDispRec.SetHDStateDisp),D0 _PowerDispatch ENDM ;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— ; ; Modem Type ; ; Enumeration of the different types of internal modems available. ; ;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— ModemTypeUnk EQU -1 ; modem installed but type unknown ModemTypeNone EQU 0 ; no modem installed ModemTypeSerial EQU 1 ; original serial modem ModemTypeDUO EQU 2 ; rockwell data pump modem (RC144DPL) ModemTypeDUOPlus EQU 3 ; rockwell data pump modem (RC144DPL) + 6805 controller ModemTypeHardRock EQU 4 ; BlackBird Modem ;•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• ;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— ; ; Power Manager Primitive Table ; ; Records to describe the structure of Power Manager Primitives. ; ;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— PmgrPrimitivesRec RECORD {PmgrRoutineTbl},Increment ; Record for Power Manager Primitives table PmgrPrimsFlags DS.L 1 ; miscellaneous flags PmgrPrimsCount DS.L 1 ; Size of primitives record PmgrRoutineTbl DS.L 1 ; offset to table of basic power manager routines PrimInfoTblPtr DS.L 1 ; offset to table of primitives IdleMindTblPtr DS.L 1 ; offset to table IdleMind of routines SleepTblPtr DS.L 1 ; offset to table of routines to be run when going to sleep WakeTblPtr DS.L 1 ; offset to table of routines to be run when waking up PMgrOpExcepTbl DS.L 1 ; offset to table of exceptions for PMgrOp ModemTblPtr DS.L 1 ; offset to table of routines to handle the internal modem PwrDispatchTbl DS.L 1 ; offset to table of dispatch vectors PmgrHookTbl DS.L 1 ; offset to table of Hook vectors PmgrCommTblPtr DS.L 1 ; offset to table of comms power vectors PMgrOpTblPtr DS.L 1 ; offset to table of PmgrOp Routines BklightTblPtr DS.L 1 ; offset to table of backlight information ENDR PmgrRoutineRec RECORD {PowerCycPtr},Increment ; Record for PMgr Routines PgmrRoutineFlags DS.L 1 ; miscellaneous flags PmgrRoutineCount DS.L 1 ; Size of primitives record PowerCycPtr DS.L 1 ; offset to routine for powering down cpu PowerCycResPtr DS.L 1 ; offset to routine for powering up cpu BatteryVBLPtr DS.L 1 ; offset to VBL task to check the battery level GetLevelPtr DS.L 1 ; offset to routine to determine current battery level ScaledBattPtr DS.L 1 ; offset to routine to return scaled battery,warning levels EnvIntPtr DS.L 1 ; offset to routine to handle environment interrupts CPUSpeedPtr DS.L 1 ; offset to machine specific cpu speed routine SoundVBLPtr DS.L 1 ; offset to VBL task to check for sound usage ScreenRedrawPtr DS.L 1 ; offset to routine which refreshes the screen after wake AbsoluteBattPtr DS.L 1 ; offset to routine to return absolute battery voltage BatteryTimePtr DS.L 1 ; offset to routine to return info about battery times SpeedChangePtr DS.L 1 ; offset to routine to set full/reduced processor speed ENDR PrimInfoTbleRec RECORD {PrimPRAMBase},Increment ; Machine specific info PrimInfoFlags DS.L 1 ; miscellaneous flags PrimInfoCount DS.L 1 ; size of primitives record PrimPRAMBase DS.B 1 ; Base address of PRAM PrimDefHyst DS.B 1 ; default hysteresis PrimLowWarn DS.B 1 ; default low power warning level PrimCutOff DS.B 1 ; default dead battery warning level PrimWakeLvl DS.B 1 ; default pmgr wake battery level PrimBatWarnCt DS.B 1 ; Number-1 of shorted bat int's before displaying dialog PrimExtVidCor DS.B 1 ; External video correction to low power warning (10's mvolt) PrimChargerAttr DS.B 1 ; bitmap of charger features <15> PowerCycRegAddr DS.L 1 ; address of power cycling register PrimPubFeatures DS.L 1 ; bitmap of public Power Manager features PrimPrivFeatures DS.L 1 ; bitmap of private Power Manager features PrimBatteryCount DS.W 1 ; number of batteries supported PrimPMgrCommType DS.B 1 ; 0=parallel interface, 2=serial interface PrimInfoPad1 DS.B 1 ;•padding, for now PrimExtChrgTime DS.L 1 ; minutes to extend bulk charge time of the battery PrimCycRegValue DS.B 1 ; value for power cycling register to cycle power PrimSlpRegValue DS.B 1 ; value for sleep register to set machine to sleep PrimInfoPad2 DS.B 1 ;•padding, for now PrimInfoPad3 DS.B 1 ;•padding, for now ENDR SleepTableRec RECORD {SleepTableStart},INCREMENT ; record for list of routines called before sleeping SleepTableFlags DS.L 1 ; miscellaneous flags SleepTableCount DS.L 1 ; size of primitives record SleepTableStart DS.L 0 ; offset to first sleep routine ENDR WakeTableRec RECORD {WakeTableStart},INCREMENT ; record for list of routines called before waking WakeTableFlags DS.L 1 ; miscellaneous flags WakeTableCount DS.L 1 ; size of primitives record WakeTableStart DS.L 0 ; offset to first wake routine ENDR IdleMindTblRec RECORD {CountDownTimer},Increment ; Record for the IdleMind call IdleMindFlags DS.L 1 ; miscellaneous flags IdleMindCount DS.L 1 ; size of primitives record CountDownTimer DS.L 1 ; offset to routine for checking countdown condition RunIdleRoutines DS.L 1 ; offset to routine for checking hard drive spindown SleepTimeOut DS.L 1 ; offset to routine for checking sleep timeout CheckIdle DS.L 1 ; offset to routine for checking idle CalcProgPwrCyc DS.L 1 ; offset to routine for calculating progressive value CyclePower DS.L 1 ; offset to routine for power cycling ENDR PMgrOpTblRec RECORD {PMgrOpTrapPtr},Increment ; Record for the PmgrOp Trap PMgrOpTblFlags DS.L 1 ; miscellaneous flags PMgrOpTblCount DS.L 1 ; size of primitive record PMgrOpTrapPtr DS.L 1 ; offset to Pmgr Trap $A085 IdleUpdatePtr DS.L 1 ; offset to Pmgr Trap $A285 IdleStatePtr DS.L 1 ; offset to Pmgr Trap $A485 SerialPowerPtr DS.L 1 ; offset to Pmgr Trap $A685 ENDR PwrDispatchRec RECORD {PmgrTrapPtr},Increment ; Record for the PowerDispatch Trap PwrDispFlags DS.L 1 ; miscellaneous flags PwrDispCount DS.L 1 ; size of primitive record PmgrTrapPtr DS.L 1 ; offset to PmgrTrap IdleUpdatePtr DS.L 1 ; offset to IdleUpdate IdleDelayPtr DS.L 1 ; offset to IdleDelay IdleMindPtr DS.L 1 ; offset to IdleMind IdleReadPtr DS.L 1 ; offset to IdleRead IdleEnablePtr DS.L 1 ; offset to IdleEnable IdleDisablePtr DS.L 1 ; offset to IdleDisable CPUSpeedPtr DS.L 1 ; offset to CPUSpeed BasePRAMPtr DS.L 1 ; offset to BasePRAM ScaledBatteryPtr DS.L 1 ; offset to ScaledBattery PowerMgrHookPtr DS.L 1 ; offset to PowerMgrHook PDimScreensPtr DS.L 1 ; offset to PDimScreens FactoryDispPtr DS.L 1 ; offset to FactoryDispatch AbsoluteBatteryPtr DS.L 1 ; offset to AbsoluteBattery PrivateFeaturesPtr DS.L 1 ; offset to PrivateFeatures ENDR PMgrHookRec RECORD {SecondaryInitPtr},Increment ; Record for the PmgrHook Dispatch PMgrHookFlags DS.L 1 ; miscellaneous flags PmgrHookCount DS.L 1 ; size of primitive record SecondaryInitPtr DS.L 1 ; offset to Selector #0 routine ScsiDiskModePtr DS.L 1 ; offset to Selector #1 routine ExternaVideoOnPtr DS.L 1 ; offset to Selector #2 routine ModemTypePtr DS.L 1 ; offset to Selector #3 routine ENDR ModemTblRec RECORD {PowerOnModem},Increment ; Record for the modem call ModemPrimsFlags DS.L 1 ; miscellaneous flags ModemPrimsCount DS.L 1 ; Size of primitives record PowerOnModem DS.L 1 ; offset to routine to powerup modem hardware PowerOffModem DS.L 1 ; offset to routine to powerdown modem hardware GetModemType DS.L 1 ; offset to routine to return the modem type (if any) ENDR CommsPwrTblRec RECORD {PowerOnB},Increment ; Record for the comms power call CommsPwrFlags DS.L 1 ; miscellaneous flags CommsPwrCount DS.L 1 ; Size of primitives record PowerOnB DS.L 1 ; offset to routine to power up SCC port B PowerOnA DS.L 1 ; offset to routine to power up SCC port A PowerOnC DS.L 1 ; offset to routine to power up SCC port C PowerOnEnet DS.L 1 ; offset to routine to power up onboard ethernet PowerOffB DS.L 1 ; offset to routine to power down SCC port B PowerOffA DS.L 1 ; offset to routine to power down SCC port A PowerOffC DS.L 1 ; offset to routine to power down SCC port C PowerOffEnet DS.L 1 ; offset to routine to power down onboard ethernet ENDR ;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— ; Table Types and mask bits 0-1 PrimsTypeMask EQU %0000000000000111 ; Mask for this feature PrimsTypeTable EQU %0000000000000000 ; Table of Tables PrimsTypePtr EQU %0000000000000001 ; Table of pointer PrimsTypeInfo EQU %0000000000000010 ; Table of information PrimsTypePMgrEx EQU %0000000000000011 ; Table is Power Manager Exceptions PrimsTypeExp1 EQU %0000000000000100 ; Table is for expansion PrimsTypeExp2 EQU %0000000000000101 ; Table is for expansion PrimsTypeExp3 EQU %0000000000000110 ; Table is for expansion PrimsTypeExp4 EQU %0000000000000111 ; Table is for expansion ;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— ; Definition of bits in bitfield in PrimInfoTbleRec.PrimPrivFeatures hasExtdBattInfo EQU 0 ; 1=extended battery status call is supported by PMGR hasBatteryID EQU 1 ; 1=battery ID call is supported by PMGR canSwitchPower EQU 2 ; 1=switch AC power on/off call is supported by PMGR privBitsInvalid EQU 31 ; reserved: negative value indicates PowerDispatch call not supported ; definition of bits in PrimChargerAttr hasSleepLED EQU 0 ; supports sleep LED hasForcedDischarge EQU 1 ; supports forced discharge mode hasDBCharger EQU 2 ; should use DB charging tables hasEscherCharger EQU 3 ; should use Escher charging tables ;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— ; Handy little macro for using with the Primitive Table MACRO LoadTbl &Table,&GlobalReg,&Reg MOVEA.L vPMgrPrimitives(&GlobalReg),&Reg MOVEA.L &Table(&Reg),&Reg TST.L &Reg ENDM MACRO JsrPrimTbl &Routine,&Tbl TST.L ([&Routine,&Tbl]) BEQ.S *+2+6 JSR ([&Routine,&Tbl]) ENDM MACRO JmpPrimTbl &Routine,&Tbl TST.L ([&Routine,&Tbl]) BEQ.S *+2+6 JMP ([&Routine,&Tbl]) RTS ENDM MACRO JsrRoutine &Routine,&GlobalsReg,&Reg MOVEA.L vPMgrPrimitives(&GlobalsReg),&Reg MOVEA.L PmgrRoutineTbl(&Reg),&Reg TST.L ([&Routine,&Reg]) BEQ.S *+2+6 JSR ([&Routine,&Reg]) ENDM MACRO JmpRoutine &Routine,&GlobalsReg,&Reg MOVEA.L vPMgrPrimitives(&GlobalsReg),&Reg MOVEA.L PmgrRoutineTbl(&Reg),&Reg TST.L ([&Routine,&Reg]) BEQ.S *+2+6 JMP ([&Routine,&Reg]) RTS ENDM ;•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• ;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— ; ; Power Manager Local Storage ; ; The Following are the records used for the power manager. The PmgrRec is a superset of the original power ; manager globals and maintains the first 158 bytes appropriately. PowerCycleRec was added to facilitate ; power cycling and sleep. VidRamSaveRec was added to replace some hard-coded addresses thus making it more ; universal. PMgrScratchRec helps maintain the integrity of the original Pmgr globals. ; ;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— PMgrScratchRec RECORD 0,Increment ; Local Scratch storage ProgLastAct DS.L 1 ; Progressive Power Cycling Last Activity ProgCounter DS.W 1 ; Progressive Power Cycling Counter SyncCounter DS.W 1 ; Sync Idle Patch Counter SaveBusErrVect DS.L 1 ; Saved bus error vector pmgrFree DS.W 2 ; Free Storage PMgrScratchSz EQU *-PMgrScratchRec; 16 bytes now ENDR ;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— PowerCycleRec RECORD 0,Increment ; Global storage for power cycling and sleep PCRHasMMUFlag DS.W 1 ; Saved MMU Flag PCROldStackPtr DS.L 1 ; Stack Ptr PCRSRsave DS.W 1 ; Status Register PCRNMIsave DS.L 1 ; NMI Vector PCRMMUTCsave DS.L 1 ; MMU TC PCRMMUCRPsave DS.L 2 ; MMU CRP PCRMMUTT1save DS.L 1 ; MMU TT1 PCRMMUTT0save DS.L 1 ; MMU TT0 PCRSize EQU *-PowerCycleRec ; 32 bytes right now ENDR ;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— CPUStateRec RECORD 0,Increment ; Global storage for power cycling and sleep NMIStkFrame DS.W 4 ; Save 4 words in case of stack frame CPUMMUCRPsave EQU * ; MMU 030 CPU Root Pointer (2 Longs) CPUMMUURPsave DS.L 1 ; MMU 040 User Root Pointer CPUMMUSRPsave DS.L 1 ; MMU 040 Supervisor Root Pointer CPUMMUTCsave DS.L 1 ; MMU 030/040 TC CPUMMUTT0save EQU * ; MMU 030 TT0 CPUMMUDTT0save DS.L 1 ; MMU 040 Data TT0 CPUMMUTT1save EQU * ; MMU 030 TT1 CPUMMUDTT1save DS.L 1 ; MMU 040 Data TT1 CPUMMUITT0save DS.L 1 ; MMU Instruction TT0 CPUMMUITT1save DS.L 1 ; MMU Instruction TT1 CPUCACRsave DS.L 1 ; Cache Control Register CPUVBRsave DS.L 1 ; Vector Base Register CPUUSPsave DS.L 1 ; User Stack Pointer CPUMSPsave DS.L 1 ; Master Stack Pointer CPUISPsave DS.L 1 ; Interrupt Stack Pointer CPUCAARsave DS.L 1 ; Cache Address Register '030 only CPUNMIsave DS.L 1 ; NMI Vector CPUSRsave DS.W 1 ; Status Register CPUUnused DS.W 1 ; currently unused CPUStateSize EQU *-CPUStateRec ; 68 bytes right now ENDR CelsiusCycleRec RECORD 0,Increment CCDeferredTask DS.B 20 ; ($00) Deferred Task Queue Element CCVBLTask DS.B 14 ; ($14) VBL task queue element CCCurTemp DS.B 1 ; ($22) Current temperature CCMaxTemp DS.B 1 ; ($27) Maximum seen so far CCLevel1Temp DS.B 1 ; ($23) Lvl1 °C threshold, more effecient pwr cycling CCLevel2Temp DS.B 1 ; ($24) Lvl2 °C threshold, deferred task cycling CCLevel3Temp DS.B 1 ; ($25) Lvl3 °C threshold, user warning dialog CCLevel4Temp DS.B 1 ; ($26) Lvl4 °C threshold, turn off computer CCRate1 DS.B 1 ; ($28) Cycling rate curve values CCRate2 DS.B 1 ; ($29) Cycling rate curve values CCRate3 DS.B 1 ; ($2A) Cycling rate curve values CCRate4 DS.B 1 ; ($2B) Cycling rate curve values CCLastCycTicks DS.L 1 ; ($2C) Last tick time we power cycled CCVBLFreq DS.W 1 ; ($30) Adjustable VBL Frequency CCExtraWord DS.W 1 ; ($32) This space for rent CCExtraLongs DS.L 3 ; ($34) For later use CCRecSize EQU *-CelsiusCycleRec ; ($40) PmgrRec RECORD 0,Increment SleepTime DS.B 1 ; (00) Copies of sleep time out values HDTime DS.B 1 ; (01) Hard disk time out SleepQHdr DS.W 0 ; (02) sleep queue header SlpQFlags DS.W 1 ; (02) Sleep queue flags SlpQHead DS.L 1 ; (04) First sleep queue entry SlpQTail DS.L 1 ; (08) last sleep queue entry SysTaskFlag DS.B 1 ; (0C) SystemTask been called flag LastLevel DS.B 1 ; (0D) Previous normalized power level SaveSpeedo DS.B 1 ; (0E) save the speedometer reading here Charger DS.B 1 ; (0F) charger status flag SleepFlags DS.B 1 ; (10) misc status flags TOdirtyFlag DS.B 1 ; (11) time outs are dirty flag WakeVector DS.L 1 ; (12) wake up vector HDvector DS.L 1 ; (16) vector to spin down proc LastAct DS.L 1 ; (1A) Last user activity LastHd DS.L 1 ; (1E) Last hard disk activity LowWarn DS.B 1 ; (22) Low power warning threshold Cutoff DS.B 1 ; (23) Power manager cutoff voltage BNmQEntry DS.L 9 ; (24) Low power alert BatQ DS.B 8 ; (48) Battery level circular queue lpMSGvalid DS.B 1 ; (50) Low power message pending flag IdleFlagCnt DS.B 1 ; (51) Idle flag set/clear counter BatAvg DS.B 1 ; (52) Average of BatQ NTSCcopy DS.B 1 ; (53) Copy of NTSC byte, only used from restart to drawbeepscreen PmgrFlags DS.B 1 ; (54) general power manager bit flags PRAMbase DS.B 1 ; (55) Base address of PRAM RAMwatchPtr DS.L 1 ; (56) Pointer to system disk watch cursor ROMwatchPtr DS.L 1 ; (5A) Pointer to rom watch cursor watchCrsr DS.B 1 ; (5E) Flag indicating the watch cursor in use BatQIndex DS.B 1 ; (5F) Index into circular battery averaging queue SleepNetHook DS.L 1 ; (60) Hook for calling pre-closeATalk vBatInt DS.L 1 ; (64) Vector to battery interrupt handler vEnvInt DS.L 1 ; (68) Vector to environment interrupt handler WakeWarn DS.B 1 ; (6C) AppleTalk services closed Level4Cnt DS.B 1 ; (6D) Must sleep now counter lpSICNHndl DS.L 1 ; (6E) Low power icon handle lpSTR0Ptr DS.L 1 ; (72) Low power messages storage lpSTR1Ptr DS.L 1 ; (76) lpSTR2Ptr DS.L 1 ; (7A) lpSTR3Ptr DS.L 1 ; (7E) BatVBLTask DS.B 14 ; (82) Battery monitor task SwVBLTask DS.B 14 ; (90) Sound watch task PowerCycleReg DS.L 1 ; (9E) address of power cycling register PhysVidRamPtr DS.L 1 ; (A2) Pointer to Physical Video Ram for PwrCycling & Sleep PmgrVarPhysPtr DS.L 1 ; (A6) Pointer to physical address of the PMgrGlobals PwrCycSyncCount DS.W 1 ; (AA) Interval between SyncIdle Calls to power cycle PwrCycWaitTime DS.W 1 ; (AC) Time we wait till entering power cycling PwrCycCounter DS.W 1 ; (AE) Counter for times it will power cycle PwrCycDelay DS.W 1 ; (B0) Delay time used by IdleDelay PMgrScratch DS.B PMgrScratchRec ; (B2) Local Scratch area for the Power Manager PwrCycSave DS.B PowerCycleRec ; (C2) Save area for Power Cycling PwrCycProgGrow DS.W 1 ; (E2) Increment by which progressive power cycling grows PwrCycProgMax DS.W 1 ; (E4) Maximum setting for progressive power cycling PwrCycProc DS.L 1 ; (E6) Pointer to power down code of power cycling PwrCycRestore DS.L 1 ; (EA) Pointer to restore code for power cycling BBSTR0Ptr DS.L 1 ; (EE) First Bad Battery message BBSTR1Ptr DS.L 1 ; (F2) Second Bad Battery message Hysteresis DS.W 1 ; (F6) low power hysteresis (10mv) AutoSlpDisable DS.B 1 ; (F8) Counting semaphor to disable sleep dockFlags DS.B 1 ; (F9) docking flags (inhibit sleep/power cycling, etc.) SleepHook DS.L 1 ; (FA) Hook in going to sleep code WakeUpHook DS.L 1 ; (FE) Hook in wake-up code MdmSndVect DS.L 1 ; (102) Vector for modem sound routine vSendCountTbl DS.L 1 ; (106) pointer to PMgr send count table

vRecvCountTbl DS.L 1 ; (10A) pointer to PMgr receive count table

vPMgrPrimitives DS.L 1 ; (10E) pointer to PMgr Primitives SleepSaveFlag DS.L 1 ; (112) warm start constant saved here SleepSaveCrsr DS.L 1 ; (116) pointer to cursor ClamshellVBLTask DS.B 14 ; (11A) VBL queue element for clamshell switch monitoring PmgrFlags1 DS.B 1 ; (128) general power manager bit flags (extended) •• Please see note on PmgrFlags1 below •• PmgrFlags2 DS.B 1 ; (129) general power manager bit flags (extended) PmgrFlags3 DS.B 1 ; (12A) general power manager bit flags (extended) PmgrFlags4 DS.B 1 ; (12B) general power manager bit flags (extended) NoVidSTRPtr DS.L 1 ; (12C) handle to no external video message string NoChrgrSTRPtr DS.L 1 ; (130) handle to no external video w/o charger message string UNmQEntry DS.L 9 ; (134) notification mgr entry for user warning messages saveGDFlags DS.W 1 ; (158) saved flags for power dimming pmgrOpExceptions DS.L 1 ; (15A) pointer to table of PMgrOp exceptions vSoftShutdown DS.L 1 ; (15E) pointer to soft shutdown routine BatteryWarnDly DS.W 1 ; (162) value to reload into BatteryWarnCnt BatteryWarnCnt DS.W 1 ; (164) count down timer for battery interrupt HardDiskQHdr DS.W 0 ; (166) hard disk spindown queue header hdQFlags DS.W 1 ; (166) hard disk queue flags hdQHead DS.L 1 ; (168) first hard disk queue entry hdQTail DS.L 1 ; (16C) last hard disk queue entry vPublicDispatch DS.L 1 ; (170) pointer to table used by PowerMgrDispatch trap fullSpeedDBRAs DS.W 4 ; (174) full speed TimeDBRA values lowSpeedDBRAs DS.W 4 ; (17C) reduced speed TimeDBRA values fadeVars DS.L 1 ; (184) used by fade-in/fade-out screens code LastUsrAct DS.L 1 ; (188) last user level activity LastNetAct DS.L 1 ; (18C) last network level activity DimmingWaitTime DS.L 1 ; (190) time to wait before dimming DimmingDisable DS.B 1 ; (194) Counting semaphor to disable dimming PwrCycRegValue DS.B 1 ; (195) Value for Power Cycling Register to kill power HardRockDMAFlag DS.W 1 ; (196) Flags for HardRock DMA SaveCPUState DS.B CPUStateRec ; (198) record for Power Cycling and Sleep CCRecord DS.B CelsiusCycleRec ; (1DC) Celsius Cycling Record HDSpinUpVector DS.L 1 ; (21C) vector for spinning up the hard drive PmgrVarSize EQU *-PmgrRec ; (21C) Total ENDR ; Define fields in SleepFlags (PMGR globals) / PmgrStatusFlags (PRAM) IdleBit EQU 0 ; 1 = Do not idle ChargeSleep EQU 1 ; 1 = Do not sleep or spin down while charging UseIntrnlModem EQU 2 ; 1 = Do not use internal modem RingWakeup EQU 3 ; 1 = wakeup on modem ring (only on Portable, PowerBook 100) TimerWakeup EQU 4 ; 1 = wakeup on timer (only on Portable, PowerBook 100) ; define fields in PmgrOtherFlags (PRAM) EconoBit EQU 1 ; 1 = econo-mode enabled DiskModeAddr EQU 5 ; bits 5-7 contain SCSI Disk Mode "address" of internal HD ; Define fields in PmgrFlags InSleep EQU 0 ; 1 = In sleep code, don't re-enter AvoidNetDiag EQU 1 ; 1 = skip network dialog warning HDPowerOn EQU 2 ; 1 = hard drive is powered and spun up AvoidLowPMsg EQU 3 ; 1 = skip low power messages BadBatDet EQU 4 ; 1 = bad battery already detected PmgrWakeLvlSet EQU 5 ; 1 = currently with wakeup PmgrWake Level Set ClamshellClosed EQU 6 ; 1 = detected clamshell close ScsiDiskModeOn EQU 7 ; 1 = cpu operating in scsi disk mode ; Define fields in PmgrFlags1 ; ; Note: In the original DuoDock and MiniDock DeclROMs, the location of the PmgrFlags1 ; field and the bit number of the PmgrExtVidOn flag were hard coded as ; $128 and 5 respectively. If you plan on changing either of these, then ; the potential for problems arises. ; PmgrShutdownEnb EQU 0 ; 1 = allow soft shutdown PmgrShutdownReq EQU 1 ; 1 = user requested to shutdown PmgrDartSPI EQU 2 ; 1 = use SPI port for modem PmgrDimReq EQU 3 ; 1 = change state of screen PmgrDimState EQU 4 ; 1 = Power Dowm screens PmgrExtVidOn EQU 5 ; 1 = Ext Video is on PmgrExtVidAlrt EQU 6 ; 1 = Alert user that Video On without charger PmgrAvoidUsrMsg EQU 7 ; 1 = skip user warning messages ; Define fields in PmgrFlags2 LowPowerSleep EQU 0 ; 1 = going to sleep because of low power condition QuickHDSpinDwn EQU 1 ; 1 = use quick hard drive spindown time PmgrDimStatus EQU 2 ; 1 = currently dimmed ShutHelderDown EQU 3 ; 1 = don't Helder, go straight to shutdown SerPortAPwr EQU 4 ; 1 = port A powered SerPortBPwr EQU 5 ; 1 = port B powered SerPortCPwr EQU 6 ; 1 = port C powered HDSpinDownDisable EQU 7 ; 1 = disable hard disk spindown ; Define fields in PmgrFlags3 ignoreClamshell EQU 0 ; 1 = ignore clamshell close, 0 = sleep when clamshell is closed ignoreTemperature EQU 1 ; 1 = ignore temperature, 0 = pwr cycle when hot <20> EnetPwr EQU 2 ; 1 = onboard ethernet chip powered ModemSndReq EQU 3 ; 1 = change the current state of modem sound ModemSndState EQU 4 ; 1 = modem sound currently on, 0 = currently off ; sleep queue commands ; Moved to PowerEqu.a ; Structure of sleep queue record ; Moved to PowerEqu.a ; Sleep Queue Flags - SleepqFlags ; Moved to PowerEqu.a ; ChooserBits definition noChoos EQU 7 ; don't change printer now noATChg EQU 6 ; ATalk in use bit ; AppleTalk warnings ClosedMPP EQU 1 ; MPP was closed ClosedXPP EQU 2 ; XPP was closed ClosedSvr EQU 3 ; Server was closed ClearedChsr EQU 4 ; Magic chooser bit cleared ;•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• ;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— ; ; PMgrOp Equates ; ; Equates that deal with the Power Manager Micro specifically. ;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— pmCommandRec RECORD 0,Increment ; Power manager command pmCommand DS.W 1 ; Command pmLength DS.W 1 ; Length pmSBuffer DS.L 1 ; Send Buffer pmRBuffer DS.L 1 ; Receive Buffer pmData DS.L 1 ; Data pmBlkSize EQU *-pmCommandRec ENDR ; Power Manager Commands powerCntl EQU $10 ; power plane/clock control power1Cntl EQU $11 ; more power control (DBLite) powerRead EQU $18 ; power plane/clock status power1Read EQU $19 ; more power status (DBLite) pMgrADB EQU $20 ; send ADB command pMgrADBoff EQU $21 ; turn ADB auto-poll off readADB EQU $28 ; Apple Desktop Bus pMgrADBInt EQU $2F ; get ADB interrupt data (Portable only) timeWrite EQU $30 ; write the time to the clock chip pramWrite EQU $31 ; write the original 20 bytes of PRAM (Portable only) xPramWrite EQU $32 ; write extended PRAM byte(s) timeRead EQU $38 ; read the time from the clock chip pramRead EQU $39 ; read the original 20 bytes of PRAM (Portable only) xPramRead EQU $3A ; read extended PRAM byte(s) contrast EQU $40 ; set screen contrast modemSet EQU $50 ; internal modem control modemClrFIFO EQU $51 ; clear modem fifo's modemSetFIFOIntMask EQU $52 ; set the mask for fifo interrupts modemWriteData EQU $54 ; write data to modem modemSetDataMode EQU $55 ; modemSetFloCtlMode EQU $56 ; modemDAACnt EQU $57 ; modemRead EQU $58 ; internal modem status modemDAAID EQU $59 ; modemGetFIFOCnt EQU $5A ; modemSetMaxFIFOSize EQU $5B ; modemReadFIFOData EQU $5C ; modemExtend EQU $5D ; setBattWarning EQU $60 ; set low power warning and cutoff battery levels (PowerBook 140/170, DBLite) setCutoff EQU $61 ; set hardware cutoff voltage batteryRead EQU $68 ; read battery/charger level and status batteryNow EQU $69 ; read battery/charger instantaneous level and status readBattWarning EQU $6A ; read low power warning and cutoff battery levels (PowerBook 140/170, DBLite) readExtBatt EQU $6B ; read extended battery/charger level and status (DBLite) readBatteryID EQU $6C ; read the battery ID readBatteryInfo EQU $6D ; return battery parameters readCutoff EQU $6F ; return hardware cutoff voltage SetModem1SecInt EQU $70 ; SetModemInts EQU $71 ; turn modem interrupts on/off readINT EQU $78 ; get PMGR interrupt data ReadModemInts EQU $79 ; read modem interrupt status PmgrPWRoff EQU $7E ; turn system power off sleepReq EQU $7F ; put the system to sleep sleepSig EQU 'MATT' ; sleep/power off signature sleepAck EQU $70 ; sleep acknowledge timerSet EQU $80 ; set the wakeup timer timerRead EQU $88 ; read the wakeup timer setting soundSet EQU $90 ; sound power control SetDFAC EQU $91 ; set DFAC register (DBLite) soundRead EQU $98 ; read sound power state ReadDFAC EQU $99 ; read DFAC register (DBLite) modemWriteReg EQU $A0 ; Write Modem Register modemClrRegBits EQU $A1 ; Clear Modem Register Bits modemSetRegBits EQU $A2 ; Set Modem Register Bits modemWriteDSPRam EQU $A3 ; Write DSP RAM modemSetFilterCoeff EQU $A4 ; Set Filter Coefficients modemReset EQU $A5 ; Reset Modem modemUNKNOWN EQU $A6 ; modemReadReg EQU $A8 ; Read Modem Register modemReadDSPRam EQU $AB ; Read DSP RAM resetCPU EQU $D0 ; reset the CPU readAtoD EQU $D8 ; read A/D channel readButton EQU $D9 ; read button values on Channel 0 = Brightness, Channel 1 = Contrast 0-31 readExtSwitches EQU $DC ; read external switch status (DBLite) writePmgrRAM EQU $E0 ; write to internal PMGR RAM setMachineAttr EQU $E3 ; set machine id readPmgrRAM EQU $E8 ; read from internal PMGR RAM readPmgrVers EQU $EA ; read the PMGR version number readMachineAttr EQU $EB ; read the machine id PmgrSelfTest EQU $EC ; run the PMGR selftest DBPMgrTest EQU $ED ; DON'T USE THIS!! FactoryTest EQU $EE ; hook for factory requests PmgrSoftReset EQU $EF ; soft reset of the PMGR ; power control/status equates (commands $10 and $18) pIWM EQU 0 ; IWM power pSCC EQU 1 ; SCC power pHD EQU 2 ; internal hard disk power pModem EQU 3 ; internal modem power pSerDrvr EQU 4 ; serial driver chip power pASC EQU 5 ; sound power pMinus5V EQU 6 ; -5 volt power pTurnOn EQU 7 ; turn on/off devices corresponding to 1's in bits 0-6 iwmOff EQU (0< ; external switch status bits (command $DC) clamshell EQU 0 ; 1 = clamshell is closed dockingBar EQU 1 ; 1 = docking bar is connected ; battery/charger status bits HasCharger EQU 0 ;Charger connected ShortedBat EQU 2 ;Shorted battery condition LowBattery EQU 4 ;Low battery condition ChrgState EQU 5 ;Charger connection state change OverTemp EQU 6 ;High temperature condition ; modem command bits ; ModemPwr EQU 0 ;Modem power control (1=true) ModemAorB EQU 1 ;Modem connection to port A or B (1=A) RingWakeEnable EQU 2 ;Modem ring detect wake up enable (1=true) ModemInstalled EQU 3 ;Modem in the slot (1=true) RingDetect EQU 4 ;Modem ring detect pin (1=ringing) ModemHook EQU 5 ;Modem on/off hook (1=off hook) ; SerialPower bits and bytes BypassModem EQU 0 ;Ignore pram internal modem designation (1=ignore) PortAorB EQU 2 ;Port A or Port B (1=port A) SerialOff EQU 7 ;Power on/off selector bit PortAPower EQU 4 ;Power port A command (byte version of PortAorB) PortBPower EQU 0 ;Power port B command ;•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• ;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— ; ; Power Manager Misc. ; ;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— PmgrPramBase EQU $70 ; Start of Power Manager PRam on PowerBook 140/170, Dartanian ; PRAM Record of individual bytes PmgrPramRec RECORD 0,Increment SlpTimeOut DS.B 1 ; Sleep time-out, in seconds/15 HDTimeOut DS.B 1 ; Hard disk time-out, in seconds/15 PmgrStatusFlags DS.B 1 ; Power Manager Flags (get copied to SleepFlags) PmgrOtherFlags DS.B 1 ; yet more Power Manager flags Brightness DS.B 1 ; Brightness level VidMode DS.B 1 ; Video Mode PmgrPramSize EQU * ENDR ; Basic Pmgr Defaults DfltHDTime EQU 4*60/15 ; Default number of minutes before hd spin down time out (4 min) DfltSlpTime EQU 8*60/15 ; Default number of minutes before sleep time out (8 min) PwrCycWaitTmDef EQU 2*60 ; Default value for PwrCycWaitTime (2 seconds) PwrCycSynCntDef EQU 3 ; Default value for PwrCycSyncCount PwrCycleDef EQU 10 ; Default value for PwrCycCounter PwrCycDelayDef EQU 15*60 ; Default value for PwrCycDelay (15 seconds) PwrCycProgGrowDef EQU 10 ; Default value for PwrCycProgGrow PwrCycProgMaxDef EQU $C0 ; Default value for PwrCycProgMax ; CPU Speeds idlespeed EQU 1 ; Idle is at 1Mhz CPUSpeed8MHz EQU 8 ; 8 MHz CPU Speed CPUSpeed16MHz EQU 16 ; 16 MHz CPU Speed CPUSpeed20MHz EQU 20 ; 20 MHz CPU Speed CPUSpeed25MHz EQU 25 ; 25 MHz CPU Speed CPUSpeed33MHz EQU 33 ; 33 MHz CPU Speed CPUSpeed40MHz EQU 40 ; 40 MHz CPU Speed ; Power Manager loopcounts wait8us EQU $40 ;For software loop, remove later BootDevTicks EQU 2*60*60 ; Wait for boot device before sleep, in ticks. ; Power Manager Power Voltages DefHysteresis EQU 20 ; default to 200mv DefLowWarn EQU 585-512 ; default low battery warning level DefCutoff EQU 560-512 ; default dead battery warning level PMGRWARNLEVEL EQU 585 ; set low power level PGMRWAKELEVEL EQU 609 ; set hysteresis for 6.09(max allowed) volts for wake PMGRCUTOFF EQU 560 ; set 68k shutdown to 5.60(min allowed) STDOFFSET EQU 512 ; base offset of voltages ; Power Manager Misc Equates MaxHDTime EQU 60*60/15 ; Maximum number of minutes before hd spin down time out (60 min) MaxSlpTime EQU 60*60/15 ; Maximum number of minutes before sleep time out (60 min) SndWFreq EQU 60*10 ; Sound watch VBL is called very 10 seconds BatFreq EQU 60*1 ; Battery level monitor every second ClamshellVBLFreq EQU 60*2 ; check for clamshell closed every 2 seconds SleepWait EQU 10 ; Delay from last alert to auto sleep pram2ticks EQU 60*15 ; Convert pram count to ticks CelsiusVBLFreq EQU 60*10 ; Monitor temperature every 10 seconds <20> MaxTempCelsius EQU 72 ; Maximum internal temperature before shutdown <20> WarnTempCelsius EQU 68 ; Temperature that requires a user warning <20> MinTempCelsius EQU 65 ; Minimum temperature to start deferred task pwr cycling <20> NeverCelsiusCycl EQU $FF ; Temperature at which we will never cycle <20> InitialTmpCycl EQU (NeverCelsiusCycl<<24) | \ ; normal pwr cycling is ok <20> (MinTempCelsius<<16) | \ ; start cycling at this temp <20> (WarnTempCelsius<<8) | \ ; warn the user it's getting hot <20> (MaxTempCelsius<<0) ; turn off the maching <20> InitialCycRates EQU $0A050302 ; Initial cycle rate curves <20> jModemSnd EQU Lvl1DT+4*ifCB2 ; addr of VIA1 DT CB2 vector (modem sound) ENDIF ; ...already included