mirror of
https://github.com/dingusdev/dingusppc.git
synced 2025-01-09 06:30:51 +00:00
Documentation started for hardware
This commit is contained in:
parent
cbb46e8f30
commit
07badbb1b3
2
zdocs/aboutthis.md
Normal file
2
zdocs/aboutthis.md
Normal file
@ -0,0 +1,2 @@
|
||||
This folder contains hardware and software documentation, much of which the developers
|
||||
used during the development of DingusPPC.
|
5
zdocs/atirage.md
Normal file
5
zdocs/atirage.md
Normal file
@ -0,0 +1,5 @@
|
||||
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).
|
||||
|
||||
#Memory Map
|
||||
|
||||
The ATI Rage can usually be located at IOBase (ex.: 0xF3000000 for Power Mac G3 Beige) + 0x9000. However, the video memory appears to be at 0x81000000.
|
11
zdocs/awacs.md
Normal file
11
zdocs/awacs.md
Normal file
@ -0,0 +1,11 @@
|
||||
# Memory Map
|
||||
|
||||
AWACS can usually be located at IOBase (ex.: 0xF3000000 for Power Mac G3 Beige) + 0x14000.
|
||||
|
||||
# Registers
|
||||
|
||||
Sound Control Register
|
||||
Codec Control Register
|
||||
Codec Status Register
|
||||
Clipping Count Register
|
||||
Byte Swapping Register
|
15
zdocs/grackle.md
Normal file
15
zdocs/grackle.md
Normal file
@ -0,0 +1,15 @@
|
||||
The MPC106, codenamed "Grackle", is a memory controller and PCI host bridge. Its predecessor was the MPC105, codenamed "Bandit".
|
||||
|
||||
Unlike the CPU, the Grackle runs in little-endian mode in compliance with the PCI standard. This usually means that to get the result in the correct endian, the PowerPC must load and store byte-reversed inputs and results.
|
||||
|
||||
By default, Grackle operates on Address Map B.
|
||||
|
||||
CONFIG_ADDR can be found at any address in the range 0xFEC00000–0xFEDFFFFF, while CONFIG_DAT can be found at any address in the range 0xFEE00000–0xFEEFFFFF
|
||||
|
||||
PCI Config addresses work as follows:
|
||||
|
||||
bus << 16 | device << 11 | function << 8 | offset
|
||||
|
||||
#Revisions
|
||||
|
||||
Revisions under 4.0 could allow up to 75 MHz, whereas 4.0 and newer can allow up to 83 MHz.
|
5
zdocs/heathrow.md
Normal file
5
zdocs/heathrow.md
Normal file
@ -0,0 +1,5 @@
|
||||
The Heathrow is an I/O subsystem and a DMA controller.
|
||||
|
||||
It contains a feature control register, an auxiliary control register, and some registers to save states for the DBDMA and the VIA Cuda.
|
||||
|
||||
It also contains the emulations for the VIA Cuda, SWIM 3 floppy drive, ESCC, and MESH components.
|
23
zdocs/misc.md
Normal file
23
zdocs/misc.md
Normal file
@ -0,0 +1,23 @@
|
||||
# ROM
|
||||
|
||||
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.
|
||||
|
||||
# Serial
|
||||
|
||||
For serial, it replicates the functionality of a Zilog ESCC. There are two different ports - one located at 0xF3013000 for the printer, and the other at 0xF3013020 for the modem.
|
||||
|
||||
# DBDMA
|
||||
|
||||
The Description-Based Direct Memory Access relies on memory-based descriptions, minimizing CPU interrupts.
|
||||
|
||||
# SWIM 3
|
||||
|
||||
The SWIM 3 (Sanders-Wozniak integrated machine 3) is the floppy drive.
|
||||
|
||||
# NVRAM
|
||||
|
||||
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.
|
||||
|
||||
# Miscellaneous
|
||||
|
||||
The Power Mac G3 Beige has an additional register at 0xFF000004, which is dubbed varyingly as the "cpu-id" (by OpenFirmware), the ""systemReg" (display driver) or "MachineID" (platform driver).
|
5
zdocs/openfirmware.md
Normal file
5
zdocs/openfirmware.md
Normal file
@ -0,0 +1,5 @@
|
||||
OpenFirmware is a standard to defined a firmware's interfaces. It primarily uses the Forth programming language.
|
||||
|
||||
When using an Old World PCI Power Mac, it gets relocated from 0xFF800000 to 0x00400000 during boot-up, then instruction and data translations are enabled.
|
||||
|
||||
It gets compiled to native PowerPC code during boot-up.
|
35
zdocs/powerpc.md
Normal file
35
zdocs/powerpc.md
Normal file
@ -0,0 +1,35 @@
|
||||
The PowerPC is the main processor behind Power Macs.
|
||||
|
||||
# General Notes
|
||||
|
||||
All instructions are 32 bits wide, regardless of whether the PowerPC is in 32-bit or 64-bit mode.
|
||||
|
||||
Code execution generally begins at 0xFFF00100, which the reset exception vector.
|
||||
|
||||
# BATs
|
||||
|
||||
The 601 BATs are emulated by the OpenFirmware.
|
||||
|
||||
# Processor Revisions
|
||||
|
||||
| Model | PVR Number | Notable Aspects |
|
||||
| :------------ | :---------- | :-------------------------- |
|
||||
| 601 | 0x00010001 | Supports POWER instructions |
|
||||
| 603 | 0x00030001 | Software-controlled TLBs |
|
||||
| 604 | 0x00040103 | Ability for Multiprocessing |
|
||||
| 603E | 0x00060101 | |
|
||||
| 750 (G3) | 0x00080200 | Built-in L2 data cache |
|
||||
| 7400 (G4) | 0x000C0101 | AltiVec/VMX support added |
|
||||
|
||||
# Registers
|
||||
|
||||
| Register Type | Number | Purpose |
|
||||
| :-------------------------------- | :--------------------- | :---------------------------------------------------- |
|
||||
| General Purpose (GPR) | 32 | Calculate, Store, and Load 32-bit fixed-point numbers |
|
||||
| Floating Point (FPR) | 32 | Calculate, Store, and Load 32-bit or 64-bit floating-point numbers |
|
||||
| Special Purpose (SPR) | Up to 1024 (in theory) | Store and load specialized 32-bit fixed-point numbers |
|
||||
| Segment (SR) | 16 | Calculate, Store, and Load 32-bit fixed-point numbers |
|
||||
| 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 |
|
||||
| Machine State Register | 1 | |
|
66
zdocs/viacuda.md
Normal file
66
zdocs/viacuda.md
Normal file
@ -0,0 +1,66 @@
|
||||
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.
|
||||
|
||||
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
|
||||
|
||||
The VIA Cuda is emulated in all Power Macs through an interrupt controller. Early Power Macs also used the Parameter RAM.
|
||||
|
||||
Additionally, nodes are included for ADB peripherals, Parameter RAM, Real-Time Clocks, and Power Management.
|
||||
|
||||
It can be run either synchronously or asynchronously.
|
||||
|
||||
However, the CUDA is also slower than the CPU, thus causing a delay that the OS expects.
|
||||
|
||||
# Packet Types
|
||||
|
||||
| Hex | Packet Type |
|
||||
|:-------------:|:----------------------:|
|
||||
| 0x00 | ADB |
|
||||
| 0x01 | Pseudo |
|
||||
| 0x02 | Error |
|
||||
| 0x03 | Timer |
|
||||
| 0x04 | Power |
|
||||
| 0x05 | Mac II |
|
||||
|
||||
|
||||
# Device Commands
|
||||
|
||||
| Hex | Device Command |
|
||||
|:-------------:|:----------------------:|
|
||||
| 0x00 | Reset Bus |
|
||||
| 0x01 | Flush ADB |
|
||||
| 0x08 | Write ADB |
|
||||
| 0x0C | Read ADB |
|
||||
|
||||
# Pseudo Commands
|
||||
|
||||
| Hex | Command Name |
|
||||
|:-------------:|:----------------------:|
|
||||
| 0x00 | WARM_START |
|
||||
| 0x01 | START_STOP_AUTO_POLL |
|
||||
| 0x02 | GET_6805_ADDRESS |
|
||||
| 0x03 | GET_REAL_TIME |
|
||||
| 0x07 | GET_PRAM |
|
||||
| 0x08 | SET_6805_ADDRESS |
|
||||
| 0x09 | SET_REAL_TIME |
|
||||
| 0x0A | POWER_DOWN |
|
||||
| 0x0B | SET_POWER_UPTIME |
|
||||
| 0x0C | SET_PRAM |
|
||||
| 0x0D | MONO_STABLE_RESET |
|
||||
| 0x0E | SEND_DFAC |
|
||||
| 0x10 | BATTERY_SWAP_SENSE |
|
||||
| 0x11 | RESTART_SYSTEM |
|
||||
| 0x12 | SET_IPL_LEVEL |
|
||||
| 0x13 | FILE_SERVER_FLAG |
|
||||
| 0x14 | SET_AUTO_RATE |
|
||||
| 0x16 | GET_AUTO_RATE |
|
||||
| 0x19 | SET_DEVICE_LIST |
|
||||
| 0x1A | GET_DEVICE_LIST |
|
||||
| 0x1B | SET_ONE_SECOND_MODE |
|
||||
| 0x21 | SET_POWER_MESSAGES |
|
||||
| 0x22 | GET_SET_IIC |
|
||||
| 0x23 | ENABLE_DISABLE_WAKEUP |
|
||||
| 0x24 | TIMER_TICKLE |
|
||||
| 0X25 | COMBINED_FORMAT_IIC |
|
||||
| 0x26 | (UNDOCUMENTED!) |
|
Loading…
Reference in New Issue
Block a user