mirror of
https://github.com/alfishe/amiga-bootcamp.git
synced 2026-06-13 00:26:28 +00:00
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering: - Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives - Boot sequence: cold boot through startup-sequence - Binary format: HUNK executable spec, relocation, debug info - Linking & ABI: .fd files, LVO tables, register calling conventions - Exec kernel: tasks, interrupts, memory, signals, semaphores - AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting - Graphics: planar bitmaps, Copper programming, HAM/EHB modes - Intuition: screens, windows, IDCMP, BOOPSI - Devices: trackdisk, SCSI, serial, timer, audio, keyboard - Libraries: utility, expansion, IFFParse, locale, ARexx - Networking: bsdsocket API, SANA-II, TCP/IP stack comparison - Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging - Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies - CPU & MMU: 68040/060 emulation libs, PMMU, cache management - Driver development: SANA-II, Picasso96/RTG, AHI audio All files include breadcrumb navigation. No local paths or proprietary content.
This commit is contained in:
parent
f07a368bf1
commit
21751c0025
172 changed files with 19701 additions and 0 deletions
46
00_overview/hardware_models.md
Normal file
46
00_overview/hardware_models.md
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
[← Home](../README.md) · [Overview](README.md)
|
||||
|
||||
# Amiga Hardware Models Reference
|
||||
|
||||
## Model Specification Table
|
||||
|
||||
| Model | Year | CPU | MHz | Chipset | Chip RAM | ROM | Expansion |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| A1000 | 1985 | 68000 | 7.14 | OCS | 256 KB | 256 KB | Sidecar |
|
||||
| A500 | 1987 | 68000 | 7.09 | OCS | 512 KB | 256 KB | Edge connector |
|
||||
| A2000 | 1987 | 68000 | 7.14 | OCS/ECS | 512 KB–1 MB | 256/512 KB | Zorro II, ISA, CPU slot |
|
||||
| A500+ | 1991 | 68000 | 7.09 | ECS | 1 MB | 512 KB | Edge connector |
|
||||
| A600 | 1992 | 68000 | 7.09 | ECS | 1 MB | 512 KB | PCMCIA, IDE, trapdoor |
|
||||
| A3000 | 1990 | 68030 | 16/25 | ECS | 1 MB | 512 KB | Zorro III, ISA, SCSI |
|
||||
| A1200 | 1992 | 68020 | 14.18 | AGA | 2 MB | 512 KB | PCMCIA, IDE, trapdoor |
|
||||
| A4000 | 1992 | 68030/040 | 25 | AGA | 2 MB | 512 KB | Zorro III, IDE |
|
||||
| A4000T | 1994 | 68040/060 | 25 | AGA | 2 MB | 512 KB | Zorro III, SCSI |
|
||||
| CD32 | 1993 | 68020 | 14.18 | AGA | 2 MB | 512 KB | SX-1, CD-ROM |
|
||||
|
||||
## CPU Feature Matrix
|
||||
|
||||
| CPU | Bus | Address | I-Cache | D-Cache | MMU | FPU |
|
||||
|---|---|---|---|---|---|---|
|
||||
| 68000 | 16-bit | 24-bit | — | — | — | External 68881 |
|
||||
| 68020 | 32-bit | 32-bit | 256 B direct | — | External 68851 | External 68881/2 |
|
||||
| 68030 | 32-bit | 32-bit | 256 B | 256 B | On-chip | External 68882 |
|
||||
| 68040 | 32-bit | 32-bit | 4 KB 4-way | 4 KB 4-way | On-chip | On-chip (partial) |
|
||||
| 68060 | 32-bit | 32-bit | 8 KB 4-way | 8 KB 4-way | On-chip | On-chip (partial) |
|
||||
|
||||
> [!NOTE]
|
||||
> 68040 and 68060 have on-chip FPUs that omit transcendental instructions. AmigaOS provides `68040.library` and `68060.library` to trap the missing opcodes via Line-F emulation.
|
||||
|
||||
## Kickstart ROM Sizes
|
||||
|
||||
| OS Version | ROM Size | Part | Models |
|
||||
|---|---|---|---|
|
||||
| 1.2 / 1.3 | 256 KB | Single | A500, A2000 |
|
||||
| 2.04 | 512 KB | Single | A500+, A600, A3000 |
|
||||
| 3.0 / 3.1 | 512 KB | Single | A1200, A4000 |
|
||||
| 3.1 | 512 KB + 512 KB Ext | Pair | A4000 (with ext ROM) |
|
||||
|
||||
## References
|
||||
|
||||
- Commodore *A1200 Technical Reference Manual* — `Documentation/A1200/` local archive
|
||||
- Commodore *A4000 Technical Reference Manual* — `Documentation/A4000/` local archive
|
||||
- ADCD 2.1 Hardware Manual: http://amigadev.elowar.com/read/ADCD_2.1/Hardware_Manual_guide/node0000.html
|
||||
114
00_overview/history.md
Normal file
114
00_overview/history.md
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
[← Home](../README.md) · [Overview](README.md)
|
||||
|
||||
# Amiga History & Chipset Generations
|
||||
|
||||
## Origins (1982–1985)
|
||||
|
||||
The Amiga was designed by Jay Miner's team at Amiga Corporation (originally Hi-Toro), beginning in 1982 under the codename **Lorraine**. The primary design goal was a low-cost personal computer with dedicated custom silicon handling graphics, audio, and DMA — freeing the CPU for application code. Commodore Business Machines acquired Amiga Corporation in 1984, incorporating the technology into what would ship as the **Commodore Amiga 1000** in July 1985.
|
||||
|
||||
The core insight was the **coprocessor paradigm**: three custom chips (Agnus, Denise, Paula) operate concurrently with the M68000, driven by a shared DMA bus arbitrated by Agnus. This allowed the Amiga to demonstrate colour animation, digitised speech, and multitasking simultaneously — capabilities competitors would not match for years.
|
||||
|
||||
---
|
||||
|
||||
## Chipset Generations
|
||||
|
||||
### OCS — Original Chip Set (1985–1990)
|
||||
|
||||
| Component | Part Numbers | Role |
|
||||
|---|---|---|
|
||||
| **Agnus** | MOS 8361 (PAL), 8367 (NTSC) | DMA controller, Copper, Blitter, address gen |
|
||||
| **Denise** | MOS 8362 | Display: sprites, bitplanes, colour decode |
|
||||
| **Paula** | MOS 8364 | Audio DMA (4 channels), disk I/O, serial I/O |
|
||||
|
||||
Key characteristics:
|
||||
- **1 MB Chip RAM** maximum (512 KB in early A1000/A500 configs)
|
||||
- 6 bitplanes → 64 colours (EHB mode) or 4096 (HAM)
|
||||
- 8 hardware sprites (16px wide, 2bpp)
|
||||
- Copper coprocessor: 2 registers, WAIT/SKIP/MOVE instructions
|
||||
- Blitter: 3 source channels + destination, minterm logic, line mode
|
||||
|
||||
Machines using OCS:
|
||||
- A1000 (1985) — first production Amiga
|
||||
- A500 (1987) — high-volume consumer model
|
||||
- A2000 (1987) — big-box, Zorro II expansion
|
||||
|
||||
---
|
||||
|
||||
### ECS — Enhanced Chip Set (1990–1992)
|
||||
|
||||
| Component | Part Numbers | Role |
|
||||
|---|---|---|
|
||||
| **Super Agnus** | MOS 8372A | Agnus + 2 MB chip RAM addressing, BEAMCON0 |
|
||||
| **ECS Denise** | MOS 8373 | Denise + productivity modes, BPLCON3 |
|
||||
| **Paula** | MOS 8364 (unchanged) | Same as OCS |
|
||||
|
||||
Key enhancements over OCS:
|
||||
- **2 MB Chip RAM** with Super Agnus (1 MB or 2 MB Agnus variants exist)
|
||||
- Productivity/multiscan display modes (VGA-compatible timing)
|
||||
- `BEAMCON0` register for programmable sync signals
|
||||
- `BPLCON3` for border blank, sprite control extensions
|
||||
- Super Agnus: larger copper/bitplane DMA window
|
||||
- Gary chip on A3000: bus controller, DMA, auto-config
|
||||
- **Gayle** chip on A600: IDE, PCMCIA interface, interrupt routing
|
||||
|
||||
Machines using ECS:
|
||||
- A3000 (1990) — 68030, SCSI, ECS, Zorro III
|
||||
- A500+ (1991) — enhanced A500, 1 MB chip, ECS
|
||||
- A600 (1992) — compact, IDE disk, PCMCIA, Gayle
|
||||
|
||||
---
|
||||
|
||||
### AGA — Advanced Graphics Architecture (1992–1996)
|
||||
|
||||
| Component | Part Numbers | Role |
|
||||
|---|---|---|
|
||||
| **Alice** | MOS 8374 | Super Agnus successor: 64-bit bus, FMODE |
|
||||
| **Lisa** | — | Denise successor: 8-bit palettes, chunky assist |
|
||||
| **Paula** | MOS 8364 (unchanged) | Same as OCS/ECS |
|
||||
|
||||
Key enhancements over ECS:
|
||||
- **32-bit colour registers**: 24-bit palette (256 colours, HAM8)
|
||||
- **256 colour registers** (COLOR00–COLOR255)
|
||||
- HAM8 mode: 262,144 simultaneous colours
|
||||
- **64-bit blitter bus** via `FMODE` register (1x/2x/4x word transfers)
|
||||
- **BPLCON3 / BPLCON4**: sprite palette bank, bitplane bank select
|
||||
- **DIWHIGH**: extended display window for overscan
|
||||
- `FMODE`: configures DMA fetch width for blitter and bitplanes
|
||||
- **68030/040** CPUs with MMU and FPU
|
||||
- **Gayle** chip on A1200: IDE + PCMCIA (different pinout from A600)
|
||||
- **Ramsey** chip on A4000: 32-bit SIMM controller
|
||||
|
||||
Machines using AGA:
|
||||
- A1200 (1992) — budget AGA: 68020, Gayle, PCMCIA
|
||||
- A4000 (1992) — premium AGA: 68030/040, IDE, Zorro III
|
||||
- A4000T (1994) — tower, SCSI, Zorro III
|
||||
- CD32 (1993) — game console, AGA, CD-ROM
|
||||
|
||||
---
|
||||
|
||||
## AmigaOS Version Timeline
|
||||
|
||||
```mermaid
|
||||
timeline
|
||||
title AmigaOS Kickstart Timeline
|
||||
1985 : Kickstart 1.0 (A1000)
|
||||
1986 : Kickstart 1.1
|
||||
1987 : Kickstart 1.2 (33.180)
|
||||
1988 : Kickstart 1.3 (34.5) — most cloned
|
||||
1990 : Kickstart 2.0 (36.x) — new Shell, ASL, ReAction preview
|
||||
1991 : Kickstart 2.04 (37.175) — A500+ standard
|
||||
1992 : Kickstart 3.0 (39.x) — AGA support
|
||||
1993 : Kickstart 3.1 (40.x) — final Commodore release
|
||||
2002 : Kickstart 3.9 (Hyperion/Haage&Partner)
|
||||
2021 : Kickstart 3.2 (47.x) — Hyperion new-generation
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Key References
|
||||
|
||||
- **ADCD 2.1** — Amiga Developer CD, version 2.1 (OS 3.5 era): http://amigadev.elowar.com/read/ADCD_2.1/
|
||||
- **Hardware Reference Manual** (3rd ed.): `Hardware_Manual_guide/` on ADCD
|
||||
- **AmigaMail Vol. 2**: `AmigaMail_Vol2_guide/` on ADCD — developer newsletter with deep hardware/OS articles
|
||||
- Haynie, Dave — *Amiga Hardware Reference Manual* (Addison-Wesley, 1991, ISBN 0-201-56776-8)
|
||||
- Dewar, R. & Smosna, M. — *The Amiga User Interface Style Guide* (Addison-Wesley, 1992)
|
||||
148
00_overview/os_versions.md
Normal file
148
00_overview/os_versions.md
Normal file
|
|
@ -0,0 +1,148 @@
|
|||
[← Home](../README.md) · [Overview](README.md)
|
||||
|
||||
# AmigaOS Version Matrix — 3.1 vs 3.2
|
||||
|
||||
> **Scope of this documentation:** OS 3.1 (Kickstart 40.x, Workbench 40.x) and OS 3.2 (Kickstart 47.x, Workbench 47.x).
|
||||
|
||||
## Kickstart Version Numbers
|
||||
|
||||
| OS Version | Kickstart Ver | Exec Ver | Release | Primary Platform |
|
||||
|---|---|---|---|---|
|
||||
| OS 3.0 | 39.106 | 39.x | 1992 | A1200/A4000 launch |
|
||||
| **OS 3.1** | **40.068** | **40.x** | **1993** | **All AGA, final Commodore** |
|
||||
| OS 3.5 | 45.x | 45.x | 1999 | Hyperion/H&P, WB-only |
|
||||
| OS 3.9 | 45.x | 45.x | 2000 | Hyperion/H&P, WB-only |
|
||||
| **OS 3.2** | **47.96+** | **47.x** | **2021** | **Hyperion, all 68k** |
|
||||
| OS 3.2.2 | 47.102 | 47.x | 2022 | Hyperion |
|
||||
|
||||
---
|
||||
|
||||
## OS 3.1 Feature Summary (Kickstart 40.x)
|
||||
|
||||
This is the final OS release by Commodore before their 1994 bankruptcy. It ships with all production AGA machines (A1200, A4000) and upgrade ROMs for A500/A2000/A3000.
|
||||
|
||||
**Exec (40.x):**
|
||||
- Stable SysBase layout (unchanged since 2.x in most respects)
|
||||
- `PoolAllocMem` / `PoolFreeMem` — memory pools
|
||||
- `NewMinList()` macro
|
||||
- `GetCC()` — condition codes from last instruction
|
||||
|
||||
**dos.library (40.x):**
|
||||
- `ReadArgs()` / `FreeArgs()` — template argument parsing
|
||||
- `CreateNewProc()` — new process creation API
|
||||
- `DosGetLocalVar()` / `DosSetLocalVar()` — local environment variables
|
||||
- `ChangeMode()` — shared/exclusive lock upgrade
|
||||
- `SameLock()` — lock identity comparison
|
||||
- `ExAll()` — extended directory examination
|
||||
|
||||
**graphics.library (40.x):**
|
||||
- `AllocBitMap()` / `FreeBitMap()` — dynamic bitmap allocation
|
||||
- `GetBitMapAttr()` — bitmap attribute query
|
||||
- `ObtainBestPenA()` — closest-match colour allocation
|
||||
- `SetRPAttrsA()` / `GetRPAttrsA()` — RastPort attribute tags
|
||||
- AGA full colour support: `LoadRGB32()`, 256 colour tables
|
||||
- RTG stubs present but not functional (RTG lives in 3.5+)
|
||||
|
||||
**intuition.library (40.x):**
|
||||
- BOOPSI completely stable
|
||||
- `OpenWindowTagList()` / `OpenScreenTagList()` — tag-based open calls
|
||||
- `GetScreenDrawInfo()` / `FreeScreenDrawInfo()`
|
||||
- `LockPubScreen()` / `UnlockPubScreen()`
|
||||
- `NewModifyProp()` — proportional gadget update
|
||||
|
||||
**locale.library (40.x):**
|
||||
- Complete locale/catalog system
|
||||
- `OpenCatalogA()` / `GetCatalogStr()`
|
||||
|
||||
**New in 3.1 vs 3.0:**
|
||||
- `datatypes.library` — class-based data-type system
|
||||
- Multiview application (uses datatypes)
|
||||
- `asl.library` — enhanced requesters vs `req.library`
|
||||
- PCMCIA card resource (`cardres`)
|
||||
|
||||
---
|
||||
|
||||
## OS 3.2 Delta — What Changed (Kickstart 47.x)
|
||||
|
||||
OS 3.2 is a Hyperion-developed modernisation of the 3.1 codebase, first released in 2021.
|
||||
|
||||
### Exec (47.x)
|
||||
- `AllocSysObject()` / `FreeSysObject()` — unified object allocator
|
||||
- Replaces manual `AllocMem` + init for ports, tasks, IORequests, semaphores
|
||||
- `NewCreateTask()` — extended task creation with tags
|
||||
- `IExec->` interface style (for future AOS4 parity — not mandatory on 68k)
|
||||
- Improved memory tracking and debug support
|
||||
|
||||
### dos.library (47.x)
|
||||
- `BPTR`-free variants of many path functions
|
||||
- Enhanced `ReadArgs()` template syntax
|
||||
- `Examine()` extended: `ExamineTags()` returning `ExamineData` structs
|
||||
- DOS path handling improvements (up to 1024-char paths)
|
||||
- `AddDosEntry()` / `RemDosEntry()` refined
|
||||
|
||||
### graphics.library (47.x)
|
||||
- Compositing system (alpha blending between screens)
|
||||
- `CompositeTags()` — hardware-assisted screen composition
|
||||
- Improved RTG (RastPort to VRAM) support via `cybergraphics.library` integration points
|
||||
- `AllocSpriteDataA()` extended for RTG sprites
|
||||
- Palette handling improvements
|
||||
|
||||
### intuition.library (47.x)
|
||||
- New Intuition prefs (IPrefs 47.x)
|
||||
- Better pen sharing and colour management
|
||||
- `intuition.library` opens before `graphics.library` in new boot sequence
|
||||
- Visual prefs: themes, scaled UI elements
|
||||
|
||||
### New Libraries in 3.2
|
||||
| Library | Purpose |
|
||||
|---|---|
|
||||
| `disksonar.library` | Fast disk scanning |
|
||||
| `application.library` | Application registration, task-bar |
|
||||
| `timezone.library` | Timezone database |
|
||||
| `identify.library` | Hardware identification |
|
||||
|
||||
### AHI Changes (3.2)
|
||||
- AHI (Audio Hardware Interface) integrated as standard component
|
||||
- `ahi.device` replaces direct `audio.device` use in 3.2 applications
|
||||
|
||||
---
|
||||
|
||||
## Cross-Version API Compatibility Table
|
||||
|
||||
| Function | 3.1 (40) | 3.2 (47) | Notes |
|
||||
|---|---|---|---|
|
||||
| `AllocMem` | ✓ | ✓ | Unchanged |
|
||||
| `AllocSysObject` | ✗ | ✓ | New in 3.2 |
|
||||
| `OpenLibrary` | ✓ | ✓ | Unchanged |
|
||||
| `AllocBitMap` | ✓ | ✓ | Extended in 3.2 |
|
||||
| `CompositeTags` | ✗ | ✓ | New in 3.2 |
|
||||
| `ExamineTags` | ✗ | ✓ | New in 3.2 |
|
||||
| `CreateNewProc` | ✓ | ✓ | Extended |
|
||||
| `NewCreateTask` | ✗ | ✓ | New in 3.2 |
|
||||
| `OpenCatalogA` | ✓ | ✓ | Unchanged |
|
||||
|
||||
---
|
||||
|
||||
## Version Detection in Code
|
||||
|
||||
```c
|
||||
/* Check for OS 3.2+ at runtime */
|
||||
struct Library *SysBase = *((struct Library **)4);
|
||||
if (SysBase->lib_Version >= 47) {
|
||||
/* OS 3.2 features available */
|
||||
}
|
||||
|
||||
/* Check for OS 3.1+ */
|
||||
if (SysBase->lib_Version >= 40) {
|
||||
/* AllocBitMap, datatypes etc available */
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## References
|
||||
|
||||
- NDK 3.9: `NDK39.lha` — headers define version-gated macros
|
||||
- ADCD 2.1: `AmigaMail_Vol2_guide/` — release notes per OS version
|
||||
- Hyperion OS 3.2 SDK: https://www.hyperion-entertainment.com/
|
||||
- `exec/execbase.h` — `AttnFlags` bits for CPU detection
|
||||
Loading…
Add table
Add a link
Reference in a new issue