About the Start Manager
About the Start Manager Working with the Start Manager
The Start Manager coordinates system initialization and startup procedures
for newer Macintosh-family members. Since it is directed entirely by the
operating system, an understanding of the Start Manager is essential only if
you want to use an OS other than that which normally comes with the Mac.
Initialization consists of hardware and system software diagnostics,
memory tests, processor identification, initalization of global variables, mode
selection, system heap creation, identifying any expansion cards that may be
present and turning on basic ROM and RAM functions that are essential to all
subsequent operations.
System startup comes next, and includes additional identifying and
power-up procedures for internal and external drives, generalized software
packages like the Resource Manager and the Font Manager are initialized,
a startup screen is displayed, ROM patches, 'INIT' resources, 'ADBS'
resources and debuggers are loaded, device drivers are installed, system heap
size and default folder identification are established and either the startup
application or the Finder is launched.
Boot Data
System startup information must reside in boot blocks (logical blocks 0 and
1) in each initialized volume. It includes such information as the version
number of the boot data, debugger identification, name of system resource code
file, system shell name, startup screen name, program to run on startup, the
scrap file's name on disk, number of file control blocks, number of events in
the event queue and initial size of the system heap.
Heap Request
One of the things that varies between systems is the amount of space that
'INIT' resources need to occupy in the system heap zone. These varying space
requirements are accommodated by the 'INIT' 31 resource since it looks for a
resource of type 'sysz' with an ID = 0 whenever it opens an 'INIT' or a 'RDEV'
file. The first long word of the 'sysz' is the amount of system heap space
needed by the 'INIT' resources in your 'RDEV' or 'INIT' files. From there on,
'INIT' 31 calls the SetApplBase procedure to apportion as much space as
needed, with a guaranteed minimum of 16K bytes of contiguous heap space.
Timing
The global variables used for timing, and initialized at system startup
include:
TimeDBRA--executions per millisecond for the DBRA instruction
TimeSCCDB--SCC accesses per millisecond
TimeSCSIDB--SCSI access per millisecond
Both the SCSI access and the SCC access consist of two instructions:
@1 BTST #0, (A0)
DBRA D0, @1
In both cases, register A0 points at the chips' base address.