PRAM Used By ROM


The 68k Mac system ROM uses some values in PRAM, this attempts to document the ones I find.

Address (hex)LengthDescription
043First 3 bytes of ROM password
0B1bitfield:
  1. ROM in RAM
  2. unknown
  3. menu blink bit 1
  4. menu blink bit 2
  5. startup disk
  6. cache active
  7. mouse scaling
  8. color desktop pattern
0E1ROM password checksum
0F1ROM password flags
1010xA8 (pram validity flag)
142Modem serial port settings (speed?)
162Printer serial port settings (speed?)
184Alarm time in seconds since mac epoch
1C2Default font
1E1Top nibble = key repeat threshold, bottom nibble = key repeat rate
203240th byte of .netBOOT storage
406Used by A/UX
4630Slot Manager (6 slots * 8bytes/slot). Note that portables overload this space
701Sleep timeout. 0 = nosleep. Overlaps with Slot Manager.
711Disk Sleep timeout. 0 = nosleep. Overlaps with Slot Manager.
721Low Battery warning. Overlaps with Slot Manager.
731Dead Battery warning. Overlaps with Slot Manager.
741High Temp warning. Overlaps with Slot Manager.
751PCMCIA card. Overlaps with Slot Manager.
761Used by Start Manager to validate PRAM contents
771Set/GetOSDefault
784Set/GetDefaultStartup. 1byte drive ID, 1 byte partition, 2 bytes driver reference number.
7C2'snd ' resource ID for default alert sound
7E1Delay for hierarchical menus
7F1Delay for dragging?
802Default video device
826Default highlight color
8B32.netBOOT server name
AB3First 3 bytes of .netBOOT storage (machineID, protocol, errors).
AB3Last 4 bytes of ROM password. Overlaps with .netBOOT
AF1.EDisk RAM disk size
BC14th byte of .netBOOT storage (flags)
BD21AppleTalk Zone
DE2Last AppleTalk network number
E04Default AppleTalk device
FC4Initialize display without monitor (for machines with onboard video)

ROM in RAM

Byte 11, bit 1. If set, the ROM will copy its self into RAM and run from there. Seems to be AV ROMs and higher.

NetBOOT Driver Controls

The netboot driver stores quite a bit of information stored across several different PRAM locations. This is the general structure:
struct netboot {
        char machineID; /* this is used as part of the boot protocol */
        char protocol;
        char errors;
        char flags; /* Used to enable netbooting, and allow guest netbooting */
        char intervalCount; /* high nibble is the retry count, low nibble is the interval between retries */
        char timeout;
        unsigned long signature[4];
        char userName[31];
        char password[8];
        short serverID; /* the value here will be translated to ascii encoded hex and used as the server 
name to boot from. */

        char unused[7];
};
Which is stored broken up over the following locations:
LocationLength
44
0xAB3
0xBC1
0x2032
0x8B32

Init Display w/o Monitor

Normally, if no monitor is attached to the builtin video card, the video is disabled. However, if you set this PRAM value, some builtin cards will enable video even if no monitor is connected. Location 0xFC set to 4 byte value 0x524E494E or the four-character constant 'RNIN'. On some machines this will initialize as if a 12" Apple monitor were attached (512x384), and on others, as if a 13" Apple monitor were attached (640x480).

Updated November 11 2012