Initial expansion of documentation

This commit is contained in:
dingusdev 2024-04-21 08:44:03 -07:00
parent 5022ac89b4
commit 5f1150cf4e
10 changed files with 101 additions and 7 deletions

View File

@ -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

14
zdocs/developers/amic.md Normal file
View File

@ -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 |

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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).

View File

@ -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

View File

@ -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.
* 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.

View File

@ -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

View File

@ -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