From 5f1150cf4ec5bbb74dd74675665dcba0c95d066f Mon Sep 17 00:00:00 2001 From: dingusdev <52434309+dingusdev@users.noreply.github.com> Date: Sun, 21 Apr 2024 08:44:03 -0700 Subject: [PATCH] Initial expansion of documentation --- CREDITS.md | 2 ++ zdocs/developers/amic.md | 14 ++++++++++++++ zdocs/developers/atirage.md | 2 +- zdocs/developers/awacs.md | 2 ++ zdocs/developers/keylargo.md | 18 ++++++++++++++++++ zdocs/developers/misc.md | 18 +++++++++++++++++- zdocs/developers/openfirmware.md | 14 ++++++++++++++ zdocs/developers/powerpc.md | 22 +++++++++++++++++++++- zdocs/developers/viacuda.md | 2 ++ zdocs/users/manual.md | 14 ++++++++++---- 10 files changed, 101 insertions(+), 7 deletions(-) create mode 100644 zdocs/developers/amic.md create mode 100644 zdocs/developers/keylargo.md diff --git a/CREDITS.md b/CREDITS.md index 046f974..0c67985 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -25,8 +25,10 @@ - AppleFritter - Archive.org - Bitsavers +- Blitter.net - Emaculation - GitHub - PenguinPPC +- The makers of Loguru, SDL2, Capstone, and CLI11 - The developers of other PowerPC Mac emulators, past and present - All those preserving the software of 68k and PowerPC Macs diff --git a/zdocs/developers/amic.md b/zdocs/developers/amic.md new file mode 100644 index 0000000..12e57fe --- /dev/null +++ b/zdocs/developers/amic.md @@ -0,0 +1,14 @@ +The AMIC is the I/O controller used in the Power Mac 6100. + +It also: + +* Controls the video timing signals + +## Subdevices + +| Subdevice | Range | +|:--------------:|:--------------------:| +| VIA Cuda | 0x0 - 0x1FFF | +| SCC | 0x4000 - 0x5FFF | +| SCSI | 0x10000 - 0x11FFF | +| DMA | 0x31000 - 0x32FFF | \ No newline at end of file diff --git a/zdocs/developers/atirage.md b/zdocs/developers/atirage.md index 0861909..109b02a 100644 --- a/zdocs/developers/atirage.md +++ b/zdocs/developers/atirage.md @@ -1,4 +1,4 @@ -The ATI Rage is a video card that comes bundled with early Power Mac G3s and New World Macs (like the first revisions of the iMac G3). +The ATI Rage is a video card that comes bundled with early Power Mac G3s and New World Macs (like the first revisions of the iMac G3). Its predecessor was the ATI Mach 64 GX, used in earlier Old World Macs. # Memory Map diff --git a/zdocs/developers/awacs.md b/zdocs/developers/awacs.md index 3264fbc..2bcd8db 100644 --- a/zdocs/developers/awacs.md +++ b/zdocs/developers/awacs.md @@ -1,5 +1,7 @@ AWACS is an audio controller present on several Old World Macs and can usually be located at IOBase (ex.: 0xF3000000 for Power Mac G3 Beige) + 0x14000. +New World Macs have a Screamer chip, which is backwards compatible with the AWACS chip, but with some additional capabilities. + # Register Maps ## NuBus Macs diff --git a/zdocs/developers/keylargo.md b/zdocs/developers/keylargo.md new file mode 100644 index 0000000..a903228 --- /dev/null +++ b/zdocs/developers/keylargo.md @@ -0,0 +1,18 @@ +The KeyLargo ASIC is an intergrated I/O controller designed for use in New World Power +Macintosh G3 and iMac computers. + +It would later be succeeded by the K2 ASIC + +## PCI configuration space registers + +| Register name | Default value | +|:-------------:|:--------------:| +| VendorID | 0x106B (Apple) | +| DeviceID | 0x0019 | +| RevisionID | 0x01 | +| Class code | 0xFF0000 | + +## Additions + +* USB support +* MPIC support diff --git a/zdocs/developers/misc.md b/zdocs/developers/misc.md index ed4fc39..d7de177 100644 --- a/zdocs/developers/misc.md +++ b/zdocs/developers/misc.md @@ -2,6 +2,10 @@ The Old World ROM is always 4 megabytes (MB). The first three MB are reserved for the 68k code, while the last MB is for the PowerPC boot-up code. +New World ROMs are 1 MB stubs containing OpenFirmware and some basic drivers, but has an additional ROM stored on the Mac's hard disk to provide Toolbox functionality. The ROMs stored on the Mac's hard disk also had updates distributed. + +Within Apple, the project to overhaul Mac OS ROM code from separate portable, low-end, and high-end branches into a single codebase was called SuperMario. + # Serial For serial, it replicates the functionality of a Zilog ESCC. There are two different ports - one located at (MacIOBase) + 0x13000 for the printer, and the other at (MacIOBase) + 0x13020 for the modem. @@ -63,6 +67,8 @@ Some New World Macs do have a SWIM 3 driver present, but this normally goes unus Mac OS relies on 8 KB of NVRAM at minimum to run properly. It's usually found at IOBase (ex.: 0xF3000000 for Power Mac G3 Beige) + 0x60000. +On a physical machine, one has to hold the Command/Apple, Option, P and R keys together. However, using DingusPPC, one can simply delete the nvram.bin file instead. + # PMU | Command Name | Number | Functionality | @@ -77,6 +83,16 @@ Mac OS relies on 8 KB of NVRAM at minimum to run properly. It's usually found at | PMUPmgrPWRoff | 0x7E | | PMUResetCPU | 0xD0 | +# USB + + + +# FireWire + +Present in several New World Macs is a FireWire controller. Mac OS Classic normally only supports FireWire 400. + # Miscellaneous -The Power Mac G3 Beige has an additional register at 0xFF000004, which is dubbed varyingly as the "cpu-id" (by Open Firmware), the ""systemReg" (display driver) or "MachineID" (platform driver). +* In order for the mouse to move, it generally needs to use the Vertical Blanking Interrupt (VBL) present on the video controller. However, the Pippin instead uses a virtual timer task to accomplish, as there is a bug that prevents the VBL from working in the Taos graphics controller. + +* The Power Mac G3 Beige has an additional register at 0xFF000004, which is dubbed varyingly as the "cpu-id" (by Open Firmware), the ""systemReg" (display driver) or "MachineID" (platform driver). diff --git a/zdocs/developers/openfirmware.md b/zdocs/developers/openfirmware.md index 6bbf4da..434c609 100644 --- a/zdocs/developers/openfirmware.md +++ b/zdocs/developers/openfirmware.md @@ -43,6 +43,20 @@ as found in various Power Macintosh models. *TBD* +## Packages + +| Package Name | Purpose | Versions | +|:--------------:|:---------------------------------------------:|:--------:| +| obp-tftp | OpenBoot PROM with tftp | 1.0.5+ | +| aix-boot | | 1.0.5+ | +| xcoff-loader | | 1.0.5+ | +| mac-files | Handle hard drives formatted with HFS | 1.0.5+ | +| mac-parts | Find a partition with a Mac OS installed | 1.0.5+ | +| fat-files | Handle hard drives formatted with FAT(16?) | 1.0.5+ | +| iso-9660-files | Handle CD ROM images formatted with ISO 9660 | 1.0.5+ | +| telnet | | 3.0+ | + + ## Open Firmware image ### Old World Macs diff --git a/zdocs/developers/powerpc.md b/zdocs/developers/powerpc.md index 737fcca..d462c88 100644 --- a/zdocs/developers/powerpc.md +++ b/zdocs/developers/powerpc.md @@ -36,8 +36,26 @@ Up to 128 instruction entries and 128 data entries can be stored at a time. | Time Base Facility (TBR) | 2 | Calculate, Store, and Load 32-bit fixed-point numbers | | Condition Register | 1 | Stores conditions based on the results of fixed-point operations | | Floating Point Condition Register | 1 | Stores conditions based on the results of floating-point operations | +| Vector Status and Control Register (VSCR) | 1 | Stores conditions based on the results of vector operations | | Machine State Register | 1 | | + +# Special Registers +| Register Name | Register Number | Purpose | :-------------------------------- | :--------------------- | :---------------------------------------------------- | +| Multiply Quotient Register (MQ) | 0 | (601 only) | +| Integer Exception (XER) | 1 | | +| RTC Upper Register (RTCU) | 4 | (601 only) | +| RTC Lower Register (RTCL) | 5 | (601 only) | +| Link Register (LR) | 8 | | +| Counter Quotient Register (CTR) | 9 | | +| Vector Save/Restore | 256 | (G4+) | +| Time Base Lower (TBL) | 268 | (603+) | +| Time Base Upper (TBU) | 269 | (603+) | +| External Access (EAR) | 282 | | +| Processor Version (PVR) | 287 | | +| Hardware Implementation 0 (HID0) | 1008 | | +| Hardware Implementation 1 (HID1) | 1009 | | + # HID 0 | Model | Bits Enabled | @@ -56,4 +74,6 @@ Up to 128 instruction entries and 128 data entries can be stored at a time. * Apple's memcpy routine uses double floating-point registers rather than general purpose registers to load and store 2 32-bit values at once. As the PowerPC usually operates on at least a 64-bit bus and floating-point processing comes with the processors by default, this saves some instructions and results in slightly faster speeds. -* As the PowerPC does not have an instruction to load an immediate 32-bit value, it's common to see a lis/ori coding pattern. \ No newline at end of file +* As the PowerPC does not have an instruction to load an immediate 32-bit value, it's common to see a lis/ori coding pattern. + +* To accomodate for early programs compiled on PowerPC 601 Macs, the classic Mac OS has to emulate the POWER instructions that were removed from later processors. \ No newline at end of file diff --git a/zdocs/developers/viacuda.md b/zdocs/developers/viacuda.md index 332acd0..2eea5f4 100644 --- a/zdocs/developers/viacuda.md +++ b/zdocs/developers/viacuda.md @@ -1,5 +1,7 @@ Using a combination of a 6522 along with some integrated circuits, the VIA Cuda is a microcontroller that heavily controls system operations. It's largely similar to Egret (used in many 68k Macs), but removes some commands. +In many New World Macs, the Cuda itself is emulated within various VLSI chips. + The usual offset for a VIA Cuda is IOBase (ex.: 0xF3000000 for Power Mac G3 Beige) + 0x16000. The registers are spaced out by 0x200 bytes on the Heathrow. # Usage diff --git a/zdocs/users/manual.md b/zdocs/users/manual.md index 1a2e964..3f6fea1 100644 --- a/zdocs/users/manual.md +++ b/zdocs/users/manual.md @@ -22,7 +22,7 @@ DingusPPC uses two windows when booted up; a command line window and a monitor w ## Commands -DingusPPC is operated using the command line interface. As such, we will list the commands as required. +DingusPPC is operated using the command line interface. As such, we will list the commands as required. These commands are separated by spaces. ``` -r, --realtime @@ -77,6 +77,12 @@ fdd_img Set the floppy disk image +``` +fdd_wr_prot=1 +``` + +Set the floppy to read-only + ``` hdd_img ``` @@ -102,8 +108,8 @@ emmo Access the factory tests ``` -serial_backend stdio -serial_backend socket +serial_backend=stdio +serial_backend=socket ``` Change where the output of OpenFirmware is directed to, either to the command line (with stdio) or a Unix socket (unavailable in Windows builds). OpenFirmware 1.x outputs here by default. @@ -133,7 +139,7 @@ Currently, ISO images are supported. However, support is not yet implemented for ### Hard Disks -Because Sheepshaver, Basilisk II, and Mini vMac operate on raw disks, it is required to a program such as BlueSCSI to make their hard disk images work in an emulator like DingusPPC. This is because the Mac OS normally requires certain values in the hard disks that these emulators don't normally +Because Sheepshaver, Basilisk II, and Mini vMac operate on raw disks, it is required to a program such as BlueSCSI to make their hard disk images work in an emulator like DingusPPC. This is because the Mac OS normally requires certain values in the hard disks that these emulators don't normally insert into the images. You may also need a third-party utility to create an HFS or HFS+ disk image. ### OS Support