343 lines
16 KiB
C
343 lines
16 KiB
C
/*******************************************************************
|
|
* Pilot Software
|
|
*
|
|
* Copyright (c) 1994-1997, Palm Computing Inc., All Rights Reserved
|
|
*
|
|
*-------------------------------------------------------------------
|
|
* FileName:
|
|
* globals.h
|
|
*
|
|
* Description:
|
|
* Structure definition of Pilot globals
|
|
*
|
|
* History:
|
|
* 10/26/94 RM - Created by Ron Marianetti
|
|
* 4/13/95 VMK Added Sound Manager globals
|
|
*
|
|
*******************************************************************/
|
|
|
|
#ifdef NON_PORTABLE // So app's don't mistakenly include this
|
|
|
|
#ifndef __GLOBALS_H__
|
|
#define __GLOBALS_H__
|
|
|
|
#include <M68KHwr.h>
|
|
|
|
// The following indicates how much space in low memory we've reserved for
|
|
// the UI globals. The UI initialization code makes sure that we don't
|
|
// overrun this space by comparing the size of the structure UIGlobalsType
|
|
// with this constant.
|
|
#define sysUIRsvGlobalsSize 0xB0
|
|
|
|
|
|
|
|
/************************************************************
|
|
* Structure of Fixed System Globals
|
|
*************************************************************/
|
|
typedef struct FixedGlobalsType {
|
|
|
|
// Memory Manager Globals
|
|
Byte memCardSlots; // number of memory card slots
|
|
Byte dbgWasEntered; // set true the first time debugger is entered
|
|
Ptr memCardInfoP; // pointer to array of CardInfoTypes stored
|
|
DWord memSemaphoreID; // Memory Manager semaphore
|
|
Word memDebugMode; // Current debug mode of Memory Manager
|
|
|
|
// Data Manager Globals
|
|
Ptr dmOpenList; // Linked list of open databases (DmOpenInfoPtr)
|
|
|
|
// Debugger/System Shared globals
|
|
Byte dbgInDebugger; // true if in debugger
|
|
Byte dbgTracing; // tracing in debugger
|
|
Ptr dbgGlobalsP; // pointer to dbgGlobals
|
|
Ptr dbgSerGlobalsP; // pointer to Debugger Serial globals
|
|
|
|
|
|
// System Manager Globals
|
|
Ptr sysAppInfoP; // pointer to SysAppInfoType for system
|
|
Ptr sysKernelDataP; // pointer to Kernel data
|
|
Ptr* sysDispatchTableP; // pointer to dispatch table
|
|
DWord sysOwnerIDsInUse; // 1 bit for each owner ID in use
|
|
Ptr sysAMXAppInfoP; // SysAppInfoType for AMX app.
|
|
DWord sysClockFreq; // processor clock frequency
|
|
DWordPtr sysHardKeyCreators; // ptr to array of App Creator types
|
|
|
|
SWord sysBatteryCheckTimer; // # of ticks left before we check battery again
|
|
Byte sysBatteryMinThreshold; // System will shut down if battery falls below this
|
|
Byte hwrBatteryLevel; // current battery level
|
|
SWord sysNextBatteryAlertTimer; // # of ticks till next battery warning
|
|
Byte sysBatteryWarnThreshold; // If battery below this level, post low battery keyboard event
|
|
|
|
Byte sysDispatchTableRev; // incremented every time a trap is patched. Used
|
|
// by host debugger to invalidate it's cache.
|
|
Word sysDispatchTableSize; // # of entries in dispatch table
|
|
Ptr sysLibTableP; // (SysLibTblEntryPtr) pointer to Library entries
|
|
Word sysLibTableEntries; // size of library table
|
|
Ptr sysConsoleStackChunkP; // pointer to console task stack chunk
|
|
Ptr sysUIShellAppInfoP; // AppInfoPtr for UIAppShell
|
|
|
|
DWord sysTimerID; // TimerID of timer used for periodic system stuff
|
|
ULong sysAutoOffEvtTicks; // Ticks of last event - used to support auto-off
|
|
Word sysAutoOffSeconds; // Auto-sleep timeout in seconds.
|
|
|
|
Long sysRandomSeed; // Random # seed
|
|
|
|
|
|
|
|
// Other Manager's globals
|
|
Ptr slkGlobalsP; // pointer to serial link globals
|
|
Ptr serGlobalsP; // pointer to serial manager globals
|
|
Ptr scrGlobalsP; // pointer to screen driver globals
|
|
Ptr fplGlobalsP; // pointer to Floating Point Library globals
|
|
Ptr penGlobalsP; // Pen manager globals ptr
|
|
Ptr sysEvtMgrGlobalsP; // System Event Manager Globals
|
|
Ptr sndGlobalsP; // Sound Manager globals
|
|
Ptr timGlobalsP; // Time Manager globals
|
|
Ptr almGlobalsP; // Alarm Manager globals
|
|
Ptr ftrGlobalsP; // pointer to feature manager globals
|
|
Ptr grfGlobalsP; // pointer to Graffiti globals
|
|
Ptr keyGlobalsP; // Key manager globals
|
|
|
|
// UI Globals
|
|
Byte uiGlobals[sysUIRsvGlobalsSize]; // Basic UI Globals
|
|
Ptr uiExtensionsP; // for future use...
|
|
|
|
|
|
// Globals used by UIAppShell in order to manage the launching of UI Apps.
|
|
Ptr curUIAppInfoP; // SysAppInfoPtr of current UI App
|
|
DWord nextUIAppDBID; // Database LocalID of next UI App to launch
|
|
Word nextUIAppCmd; // Cmd for next UI App
|
|
Ptr nextUIAppCmdPBP; // Cmd ParamBlock Ptr for next UI App
|
|
Byte nextUIAppCardNo; // Card number of next UI App to launch
|
|
|
|
|
|
// Hardware Manager Globals
|
|
SByte hwrDataWELevel; // if > 0, Data area is write enabled
|
|
Word hwrWakeUp; // Bit mask of which peripherals need to be
|
|
// enabled when system wakes
|
|
Byte hwrCPUDutyCycle; // Desired Duty cycle of CPU in 31ths.
|
|
Byte hwrPenDown; // last state of pen-down
|
|
DWord hwrCurTicks; // Current hardware tickCount -
|
|
// maintained separately from AMX ticks for performance reasons.
|
|
DWord hwrTotalRAMSize; // total RAM Size, used by HwrMemWritable
|
|
DWord hwrDozeSubTicks; // # of subTicks we've dozed for since reset
|
|
// a sub-tick is 1/4096 seconds.
|
|
|
|
// Pad server
|
|
Ptr padGlobalsP; // PAD Server globals
|
|
|
|
// New System globals
|
|
Byte sysResetFlags; // Reset flags sysResetFlagXXXX
|
|
Byte sysBatteryKind; // SysBatteryKind enumerated type
|
|
|
|
// New Memory Manager global for recording minimum heap free - used for debugging only
|
|
DWord memMinDynHeapFree; // Minimum free space in dynamic heap
|
|
|
|
|
|
// System Preferences flags
|
|
Word sysPrefFlags; // System Pref flags: sysPrefFlagXXXX
|
|
|
|
|
|
// This is a pointer to the System Manager variable size globals
|
|
Ptr sysGlobalsP; // pointer to System Globals
|
|
|
|
// Miscellaneous System flags
|
|
Word sysMiscFlags; // System Misc flags: sysMiscFlagXXX
|
|
|
|
|
|
//-----------------------------------------------------------------------
|
|
// New Globals added after 1.0 release...
|
|
//-----------------------------------------------------------------------
|
|
Word sysLibNet; // refnum of TCP/IP library
|
|
VoidPtr netPktFreeQ; // global needed by Net Library
|
|
|
|
|
|
// EventGroupID used by the System Event Manager for blocking on user input
|
|
// and by the Net Library for implementing NetLibSelect()
|
|
DWord sysEvGroupID; // AMX EventGroup ID.
|
|
|
|
|
|
Ptr irq3GlobalsP; // IRQ3 handler globals
|
|
|
|
// Tick count last time we displayed a low battery warning. This is used by
|
|
// the system timer procedure in AMXHardwareTD1.c to insure that it doesn't
|
|
// display low battery warnings more than once/minute.
|
|
DWord sysLastBatteryWarning; // tickcount of last warning.
|
|
|
|
// Checksum of exception vector area of low memory. Used when ROM built for full
|
|
// error checking to make sure no apps overwrite low memory by using null pointers.
|
|
DWord sysLowMemChecksum; // checksum of low memory.
|
|
|
|
// Hardware rev. This is determined during bootup time. The first shipping rev
|
|
// is 1.
|
|
Word hwrHardwareRev; // hardware rev.
|
|
|
|
|
|
// Handle to list of protected databases
|
|
Handle dmProtectListH; // handle to array of protected
|
|
// databases (DmProtectEntryType)
|
|
// Miscellaneous hardware flags
|
|
Word hwrMiscFlags; // Hardware Misc Flags: hwrMiscFlagXXX
|
|
|
|
// Support for profiling
|
|
DWord sysProfileRefcon; // Refcon value for profiler function
|
|
Ptr sysProfileProcP; // Profiler procedure, called if non-zero
|
|
// during tick interrupt (100/sec).
|
|
|
|
// NewFloatMgr's MWSFPE (MetroWerks Software Floating Point Emulator)
|
|
// needs a global to keep track of its status and control.
|
|
// This global (__SoftFPSCR__) is referenced by the 68K code located at
|
|
// Pilot:Libraries:NewFloatMgr:mc68ksfpe.s
|
|
DWord flpSoftFPSCR;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Put New globals here...
|
|
//-----------------------------------------------------------------------
|
|
// type newGlobal;
|
|
|
|
} FixedGlobalsType;
|
|
|
|
|
|
/************************************************************
|
|
* This structure defines the start of the Low Memory Area.
|
|
* The complete structure of LowMemory is defined in SystemPrv.h
|
|
* and includes this low memory header followed by some variable
|
|
* size globals that may change from rev to rev of the System Software.
|
|
*
|
|
* When emulating under Windows, this structure ends up at some random
|
|
* place in memory and the global variable GlobalsP points to it.
|
|
*
|
|
* When running in the native environment, this structure starts at
|
|
* address sysGlobalsOffset.
|
|
*
|
|
* In order to simplify the source code, macros are defined for
|
|
* accessing commonly used globals in the optimim manner for
|
|
* each environment.
|
|
*************************************************************/
|
|
typedef struct LowMemHdrType {
|
|
//---------------------------------------------------------------------------
|
|
// Processor exception table
|
|
//---------------------------------------------------------------------------
|
|
M68KExcTableType vectors; // Exception vectors,
|
|
// or Card header for RAM only cards
|
|
|
|
//---------------------------------------------------------------------------
|
|
// System Globals
|
|
//---------------------------------------------------------------------------
|
|
FixedGlobalsType globals; // System Globals
|
|
|
|
} LowMemHdrType;
|
|
|
|
|
|
|
|
#if EMULATION_LEVEL == EMULATION_NONE
|
|
#define PilotGlobalsP 0
|
|
#else
|
|
extern Ptr PilotGlobalsP; // pointer to start of Memory card 0
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
/************************************************************
|
|
* Macros for accessing globals.
|
|
* When emulating, the globals are allocated in a memory chunk and our
|
|
* global variable Card0P points to this chunk.
|
|
* In native mode, Card0P is defined to be 0 at all times.
|
|
*************************************************************/
|
|
#define GMemCardSlots (((LowMemHdrType*)PilotGlobalsP)->globals.memCardSlots)
|
|
#define GMemCardInfoP (((LowMemHdrType*)PilotGlobalsP)->globals.memCardInfoP)
|
|
#define GMemSemaphoreID (((LowMemHdrType*)PilotGlobalsP)->globals.memSemaphoreID)
|
|
#define GMemDebugMode (((LowMemHdrType*)PilotGlobalsP)->globals.memDebugMode)
|
|
#define GMemMinDynHeapFree (((LowMemHdrType*)PilotGlobalsP)->globals.memMinDynHeapFree)
|
|
|
|
#define GDmOpenList (((LowMemHdrType*)PilotGlobalsP)->globals.dmOpenList)
|
|
#define GDmProtectListH (((LowMemHdrType*)PilotGlobalsP)->globals.dmProtectListH)
|
|
|
|
#define GDbgWasEntered (((LowMemHdrType*)PilotGlobalsP)->globals.dbgWasEntered)
|
|
#define GDbgInDebugger (((LowMemHdrType*)PilotGlobalsP)->globals.dbgInDebugger)
|
|
#define GDbgTracing (((LowMemHdrType*)PilotGlobalsP)->globals.dbgTracing)
|
|
#define GDbgGlobalsP (((LowMemHdrType*)PilotGlobalsP)->globals.dbgGlobalsP)
|
|
|
|
#define GSysAppInfoP (((LowMemHdrType*)PilotGlobalsP)->globals.sysAppInfoP)
|
|
#define GSysKernelDataP (((LowMemHdrType*)PilotGlobalsP)->globals.sysKernelDataP)
|
|
#define GSysDispatchTableP (((LowMemHdrType*)PilotGlobalsP)->globals.sysDispatchTableP)
|
|
#define GSysDispatchTableSize (((LowMemHdrType*)PilotGlobalsP)->globals.sysDispatchTableSize)
|
|
#define GSysDispatchTableRev (((LowMemHdrType*)PilotGlobalsP)->globals.sysDispatchTableRev)
|
|
#define GSysOwnerIDsInUse (((LowMemHdrType*)PilotGlobalsP)->globals.sysOwnerIDsInUse)
|
|
#define GSysAMXAppInfoP (((LowMemHdrType*)PilotGlobalsP)->globals.sysAMXAppInfoP)
|
|
#define GSysClockFreq (((LowMemHdrType*)PilotGlobalsP)->globals.sysClockFreq)
|
|
#define GSysHardKeyCreators (((LowMemHdrType*)PilotGlobalsP)->globals.sysHardKeyCreators)
|
|
#define GSysNextBatteryAlertTimer (((LowMemHdrType*)PilotGlobalsP)->globals.sysNextBatteryAlertTimer)
|
|
#define GSysBatteryCheckTimer (((LowMemHdrType*)PilotGlobalsP)->globals.sysBatteryCheckTimer)
|
|
#define GSysBatteryWarnThreshold (((LowMemHdrType*)PilotGlobalsP)->globals.sysBatteryWarnThreshold)
|
|
#define GHwrBatteryLevel (((LowMemHdrType*)PilotGlobalsP)->globals.hwrBatteryLevel)
|
|
#define GSysBatteryMinThreshold (((LowMemHdrType*)PilotGlobalsP)->globals.sysBatteryMinThreshold)
|
|
#define GSysBatteryKind (((LowMemHdrType*)PilotGlobalsP)->globals.sysBatteryKind)
|
|
#define GSysConsoleStackChunkP (((LowMemHdrType*)PilotGlobalsP)->globals.sysConsoleStackChunkP)
|
|
#define GSysUIShellAppInfoP (((LowMemHdrType*)PilotGlobalsP)->globals.sysUIShellAppInfoP)
|
|
#define GSysTimerID (((LowMemHdrType*)PilotGlobalsP)->globals.sysTimerID)
|
|
#define GSysAutoOffEvtTicks (((LowMemHdrType*)PilotGlobalsP)->globals.sysAutoOffEvtTicks)
|
|
#define GSysAutoOffSeconds (((LowMemHdrType*)PilotGlobalsP)->globals.sysAutoOffSeconds)
|
|
#define GSysRandomSeed (((LowMemHdrType*)PilotGlobalsP)->globals.sysRandomSeed)
|
|
#define GSysResetFlags (((LowMemHdrType*)PilotGlobalsP)->globals.sysResetFlags)
|
|
#define GSysPrefFlags (((LowMemHdrType*)PilotGlobalsP)->globals.sysPrefFlags)
|
|
#define GSysMiscFlags (((LowMemHdrType*)PilotGlobalsP)->globals.sysMiscFlags)
|
|
#define GSysGlobalsP (((LowMemHdrType*)PilotGlobalsP)->globals.sysGlobalsP)
|
|
#define GSysLibNet (((LowMemHdrType*)PilotGlobalsP)->globals.sysLibNet)
|
|
#define GSysEvGroupID (((LowMemHdrType*)PilotGlobalsP)->globals.sysEvGroupID)
|
|
#define GSysLastBatteryWarning (((LowMemHdrType*)PilotGlobalsP)->globals.sysLastBatteryWarning)
|
|
#define GSysLowMemChecksum (((LowMemHdrType*)PilotGlobalsP)->globals.sysLowMemChecksum)
|
|
#define GSysProfileRefcon (((LowMemHdrType*)PilotGlobalsP)->globals.sysProfileRefcon)
|
|
#define GSysProfileProcP (((LowMemHdrType*)PilotGlobalsP)->globals.sysProfileProcP)
|
|
|
|
#define GNetPktFreeQ (((LowMemHdrType*)PilotGlobalsP)->globals.netPktFreeQ)
|
|
|
|
|
|
#define GSlkGlobalsP (((LowMemHdrType*)PilotGlobalsP)->globals.slkGlobalsP)
|
|
#define GSerGlobalsP (((LowMemHdrType*)PilotGlobalsP)->globals.serGlobalsP)
|
|
#define GSer681GlobalsP (((LowMemHdrType*)PilotGlobalsP)->globals.irq3GlobalsP)
|
|
#define GScrGlobalsP (((LowMemHdrType*)PilotGlobalsP)->globals.scrGlobalsP)
|
|
#define GFplGlobalsP (((LowMemHdrType*)PilotGlobalsP)->globals.fplGlobalsP)
|
|
#define GPenGlobalsP (((LowMemHdrType*)PilotGlobalsP)->globals.penGlobalsP)
|
|
#define GSysEvtMgrGlobalsP (((LowMemHdrType*)PilotGlobalsP)->globals.sysEvtMgrGlobalsP)
|
|
#define GSndGlobalsP (((LowMemHdrType*)PilotGlobalsP)->globals.sndGlobalsP)
|
|
#define GTimGlobalsP (((LowMemHdrType*)PilotGlobalsP)->globals.timGlobalsP)
|
|
#define GAlmGlobalsP (((LowMemHdrType*)PilotGlobalsP)->globals.almGlobalsP)
|
|
#define GFtrGlobalsP (((LowMemHdrType*)PilotGlobalsP)->globals.ftrGlobalsP)
|
|
#define GGrfGlobalsP (((LowMemHdrType*)PilotGlobalsP)->globals.grfGlobalsP)
|
|
#define GKeyGlobalsP (((LowMemHdrType*)PilotGlobalsP)->globals.keyGlobalsP)
|
|
#define GPADGlobalsP (((LowMemHdrType*)PilotGlobalsP)->globals.padGlobalsP)
|
|
|
|
#define GUIGlobalsP (((LowMemHdrType*)PilotGlobalsP)->globals.uiGlobals)
|
|
|
|
#define GNextUIAppDBID (((LowMemHdrType*)PilotGlobalsP)->globals.nextUIAppDBID)
|
|
#define GNextUIAppCardNo (((LowMemHdrType*)PilotGlobalsP)->globals.nextUIAppCardNo)
|
|
#define GNextUIAppCmd (((LowMemHdrType*)PilotGlobalsP)->globals.nextUIAppCmd)
|
|
#define GNextUIAppCmdPBP (((LowMemHdrType*)PilotGlobalsP)->globals.nextUIAppCmdPBP)
|
|
#define GCurUIAppInfoP (((LowMemHdrType*)PilotGlobalsP)->globals.curUIAppInfoP)
|
|
|
|
#define GHwrDataWELevel (((LowMemHdrType*)PilotGlobalsP)->globals.hwrDataWELevel)
|
|
#define GHwrWakeUp (((LowMemHdrType*)PilotGlobalsP)->globals.hwrWakeUp)
|
|
#define GHwrCPUDutyCycle (((LowMemHdrType*)PilotGlobalsP)->globals.hwrCPUDutyCycle)
|
|
#define GHwrPenDown (((LowMemHdrType*)PilotGlobalsP)->globals.hwrPenDown)
|
|
#define GHwrCurTicks (((LowMemHdrType*)PilotGlobalsP)->globals.hwrCurTicks)
|
|
#define GHwrTotalRAMSize (((LowMemHdrType*)PilotGlobalsP)->globals.hwrTotalRAMSize)
|
|
#define GHwrDozeSubTicks (((LowMemHdrType*)PilotGlobalsP)->globals.hwrDozeSubTicks)
|
|
#define GHwrHardwareRev (((LowMemHdrType*)PilotGlobalsP)->globals.hwrHardwareRev)
|
|
#define GHwrMiscFlags (((LowMemHdrType*)PilotGlobalsP)->globals.hwrMiscFlags)
|
|
|
|
#define GSysLibTableP (((LowMemHdrType*)PilotGlobalsP)->globals.sysLibTableP)
|
|
#define GSysLibTableEntries (((LowMemHdrType*)PilotGlobalsP)->globals.sysLibTableEntries)
|
|
#define GDbgSerGlobalsP (((LowMemHdrType*)PilotGlobalsP)->globals.dbgSerGlobalsP)
|
|
|
|
|
|
#endif //__GLOBALS_H__
|
|
|
|
#endif // NON_PORTABLE
|
|
|
|
|
|
|
|
|