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
97
01_hardware/ecs_a600_a3000/productivity_modes.md
Normal file
97
01_hardware/ecs_a600_a3000/productivity_modes.md
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
[← Home](../../README.md) · [Hardware](../README.md) · [ECS](README.md)
|
||||
|
||||
# ECS Productivity & Multiscan Display Modes
|
||||
|
||||
## Overview
|
||||
|
||||
ECS introduces **BEAMCON0** which allows the Amiga to produce non-standard display timings. The most useful are **productivity mode** (~28 kHz / 31 kHz horizontal) and **multiscan mode**, which provide flicker-free, high-resolution displays compatible with standard SVGA monitors.
|
||||
|
||||
These modes are available on A3000 and some A2000/A600 configurations with a multisync monitor.
|
||||
|
||||
## Standard OCS Timings (for reference)
|
||||
|
||||
| Mode | H rate | V rate | Resolution |
|
||||
|---|---|---|---|
|
||||
| PAL LORES | 15.625 kHz | 50 Hz | 320×256 |
|
||||
| PAL HIRES | 15.625 kHz | 50 Hz | 640×256 |
|
||||
| NTSC LORES | 15.720 kHz | 60 Hz | 320×200 |
|
||||
| NTSC HIRES | 15.720 kHz | 60 Hz | 640×200 |
|
||||
| PAL interlace | 15.625 kHz | 50 Hz (25 Hz/field) | 320×512 / 640×512 |
|
||||
|
||||
## ECS Multiscan Modes
|
||||
|
||||
| Mode | H rate | V rate | Resolution | BEAMCON0 |
|
||||
|---|---|---|---|---|
|
||||
| Productivity | ~28.6 kHz | 57 Hz | 640×480 | $0A00 |
|
||||
| Super72 | ~28.6 kHz | 72 Hz | 800×600 (approx) | varies |
|
||||
| DblPAL | 31.25 kHz | 50 Hz | 640×512 | custom |
|
||||
| DblNTSC | 31.47 kHz | 60 Hz | 640×400 | custom |
|
||||
| VGA-like | 31.47 kHz | 60 Hz | 640×480 | custom |
|
||||
|
||||
## Programming Productivity Mode
|
||||
|
||||
Productivity mode on the A3000 (PAL, 640×480):
|
||||
|
||||
```asm
|
||||
; Set BEAMCON0 for variable beam timing
|
||||
move.w #$0A00, $DFF1DC ; VARBEAMEN | VARVSYEN
|
||||
|
||||
; Program horizontal total, sync, blank (custom timing)
|
||||
move.w #$71, $DFF1C0 ; HTOTAL (horizontal total - 1)
|
||||
move.w #$0F, $DFF1C4 ; HSSTRT (H sync start)
|
||||
move.w #$19, $DFF1C6 ; HSSTOP (H sync stop)
|
||||
move.w #$09, $DFF1C8 ; HBSTRT (H blank start)
|
||||
move.w #$71, $DFF1CA ; HBSTOP (H blank stop)
|
||||
|
||||
; Vertical timing
|
||||
move.w #$0242, $DFF1E0 ; VTOTAL
|
||||
move.w #$0015, $DFF1E6 ; VSSTRT
|
||||
move.w #$001D, $DFF1E8 ; VSSTOP
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> The exact register values depend on the target monitor's sync requirements. The A3000's monitor (1084S or Commodore 1950) has a specific timing window. Always consult the monitor's datasheet.
|
||||
|
||||
## OS Support: ScreenModes
|
||||
|
||||
AmigaOS 3.1 integrates ECS productivity modes through the **screenmode** system:
|
||||
|
||||
```c
|
||||
#include <graphics/modeid.h>
|
||||
#include <libraries/asl.h>
|
||||
|
||||
/* Open a 640×480 productivity screen */
|
||||
struct Screen *scr = OpenScreenTags(NULL,
|
||||
SA_DisplayID, PRODDBL_MONITOR_ID | HIRES_KEY,
|
||||
SA_Width, 640,
|
||||
SA_Height, 480,
|
||||
SA_Depth, 4,
|
||||
TAG_DONE);
|
||||
```
|
||||
|
||||
**Key mode IDs for ECS:**
|
||||
```c
|
||||
#define MULTISCAN_MONITOR_ID 0x00041000 /* multiscan / productivity */
|
||||
#define SUPER72_MONITOR_ID 0x00081000
|
||||
#define DBLNTSC_MONITOR_ID 0x00401000
|
||||
#define DBLPAL_MONITOR_ID 0x00421000
|
||||
```
|
||||
|
||||
These IDs are returned by `BestModeID()` and accepted by `OpenScreen()` / `OpenScreenTags()`.
|
||||
|
||||
## Hardware Requirements
|
||||
|
||||
- **ECS chipset** (Super Agnus + ECS Denise) — required for BEAMCON0
|
||||
- **Multisync monitor** — standard 15 kHz PAL/NTSC monitors do not support 31 kHz
|
||||
- **A3000** — has built-in multiscan support; A2000 requires a separate scan doubler card
|
||||
|
||||
## Flicker Fixer (A2000/A500)
|
||||
|
||||
Some Zorro II cards (e.g., Flicker Fixer by MicroWay, Indivision ECS) scan-double the 15 kHz signal to 31 kHz for use with VGA monitors. These operate transparently — no BEAMCON0 programming needed.
|
||||
|
||||
## References
|
||||
|
||||
- ADCD 2.1 Hardware Manual — ECS display modes
|
||||
- AmigaMail Vol. 2 — ECS multiscan articles
|
||||
- NDK39: `graphics/modeid.h` — monitor mode IDs
|
||||
- A3000 Technical Reference Manual — display timing chapter
|
||||
Loading…
Add table
Add a link
Reference in a new issue