According to the NetBSD/macppc FAQ, Open Firmware “is part of the boot ROMs in most PowerPC-based Macintosh systems, and we use it to load the kernel from disk or network.”
Turns out, “most PowerPC-based Macintosh systems” happens to include the Pippin. If you have the rare keyboard/tablet (or an ADB keyboard via the AppleJack dongle) attached and hold down Command-Option-O-F at startup, the Pippin boots to an Open Firmware prompt. However, you won’t see anything on screen because it outputs to a serial console by default; specifically, all console I/O is handled through the GeoPort. My Mac Plus happens to sit next to my Pippin, so tonight I temporarily switched my ImageWriter II’s cable over, booted both machines, and fired up ZTerm.
The following is what I discovered.
Open Firmware, PipPCI.
To continue booting the MacOS type:
BYE
To continue booting from the default boot device type:
BOOT
ok
0 > dev / ls
FF829230: /PowerPC,603@0
FF829B28: /chosen@0
FF829C58: /memory@0
FF829DA0: /openprom@0
FF829E60: /AAPL,ROM@FFC00000
FF82A088: /options@0
FF82A528: /aliases@0
FF82A6F0: /packages@0
FF82A778: /deblocker@0,0
FF82AF78: /disk-label@0,0
FF82B4B8: /obp-tftp@0,0
FF82D8F8: /mac-files@0,0
FF82E0F0: /mac-parts@0,0
FF82E850: /aix-boot@0,0
FF82ECC8: /fat-files@0,0
FF830298: /iso-9660-files@0,0
FF830BE0: /xcoff-loader@0,0
FF8315A0: /terminal-emulator@0,0
FF831638: /aspen@F2000000
FF832900: /gc@10
FF832D38: /scc@13000
FF832E90: /ch-a@13020
FF833540: /ch-b@13000
FF833BF0: /awacs@14000
FF833CD8: /swim3@15000
FF834DE0: /via-cuda@16000
FF835970: /adb@0,0
FF835A60: /keyboard@0,0
FF8361B0: /mouse@1,0
FF836260: /pram@0,0
FF836310: /rtc@0,0
FF8367D8: /power-mgt@0,0
FF836898: /mesh@18000
FF838418: /sd@0,0
FF839048: /st@0,0
FF839CC8: /nvram@1D000
FF839DA0: /taos@F0800000
FF839EC8: /aspenmemory@F8000000
ok
0 > dev /openprom ok
0 > .properties
name openprom
model Open Firmware, PipPCI.
relative-addressing
ok
0 > printenv auto-boot?
auto-boot? true true
ok
0 > printenv use-nvramrc?
use-nvramrc? false false
ok
0 > printenv real-base
real-base -1 -1
ok
0 > printenv load-base
load-base 4000 4000
ok
0 > printenv boot-device
boot-device /AAPL,ROM /AAPL,ROM
ok
0 > printenv boot-file
boot-file
ok
0 > printenv input-device
input-device ttya ttya
ok
0 > printenv output-device
output-device ttya ttya
ok
0 > printenv nvramrc
nvramrc
ok
0 > printenv boot-command
boot-command boot boot
ok
0 > bye
This dump was generated on my @WORLD Pippin with ROM 1.2. Some observations:
- OF doesn't report a version number, instead reporting "PipPCI" in its place. Searching the ROM for strings reveals "June 28, 1996" as the latest date I could find, so whatever Apple was using in its Power Macs at that time I imagine is what is running here.
- The ROM is located at 0xFFC00000, which follows what I've seen from hardcoded addresses I've found.
- "taos" is the video hardware starting at 0xF0800000. I'm not sure offhand if that address is the base of video memory, but I do know from the Pegasus Prime code that taos does allow for writing directly to VRAM.
- There is a TFTP package(!)—wonder how it works?
- The Pippin has a SWIM III chip onboard. There is an official floppy drive expansion dock and an unofficial floppy drive expansion board, both of which appear to be "dumb" hardware that merely connect a drive directly to pins of the Pippin's X-PCI connector on the underside of the system. The drive itself is powered and controlled entirely by hardware already built in to the Pippin. However, as far as I know, the SWIM II and later floppy controllers (including the SWIM III) lack the low-level access necessary for HD20 support, so large drives emulated by hardware such as the Floppy Emu will not work.