AmigaOS driver and utility package for the MNT ZZ9000 Zorro II/III card. It includes RTG graphics, SANA-II networking, ZZ9000AX audio, Poseidon USB, SD-card boot support, firmware-update tooling, diagnostics, and a Commodore Installer drawer for end-user releases.
This repository contains the Amiga-side drivers and tools. Matching FPGA logic and ARM firmware live in zz9000-firmware.
This is an independent BlitterStudio-maintained fork of the original MNT ZZ9000 AmigaOS driver sources. It is maintained by Dimitris Panokostas and is not affiliated with, endorsed by, or supported by MNT Research GmbH. The ZZ9000 hardware itself is designed and manufactured by MNT Research GmbH.
Hardware questions belong with MNT Research. Driver, installer, and fork-specific issues belong in this repository's issue tracker.
Upstream pre-fork source: https://source.mnt.re/amiga/zz9000-drivers
The original MNT drivers provided the essential AmigaOS connection to the ZZ9000. This independent BlitterStudio fork keeps that foundation and builds a complete end-user package around it. The most important differences are:
| Improvement | What an Amiga owner gets |
|---|---|
| One guided installer | A standard Commodore Installer puts the graphics, network, audio, USB and SD drivers in the right places, installs icons and tools, updates Picasso96 settings, and offers the correct extras for the detected CPU. Upgrades are handled without asking users to copy a collection of files by hand. |
| ZZTop as the card's control centre | ZZTop shows firmware and board status, edits ZZ9000.CFG directly on the card, changes scanlines and native-video settings, performs live picture calibration, and can install or restore firmware without removing the microSD card. |
| Better native and RTG video | The current stack offers clear native-output choices, full-detail 1280x1024 capture, the optional 1280x1024 image centered in a 1920x1080 signal at 50 or 60 Hz, 1920x1080x32 RTG modes on Zorro III, improved acceleration, monitor sleep/DPMS, modern scanlines, and numerous correctness fixes. |
| ZZPlay media playback | The installed ZZPlay Workbench application uses the ZZ9000's ARM processors to decode MPEG-1 video and MP3/MP2 audio. Video can appear in a hardware-scaled Workbench window or on a dedicated screen. |
| Hardware-assisted AmiSSL | The installer can add a CPU-matched AmiSSL library with ZZ9000 acceleration built in. Supported TLS handshakes and encrypted data are offloaded automatically for existing AmiSSL applications; unsupported operations remain in software. |
| A broader matched driver set | The package includes maintained SANA-II networking, ZZ9000AX AHI/MHI audio, capability-gated Poseidon USB, SD-card boot support, firmware update/recovery, and focused board and network diagnostics. |
| Useful acceleration on Zorro II too | Matched 2 MB and 4 MB releases safely expose a small shared service area for images, archives, audio and AmiSSL. A 4 MB card can additionally provide one bounded ZZPlay picture-in-picture source; 2 MB cards deliberately do not advertise PIP. |
| Repeatable releases | Every component is built with pinned toolchains in CI, assembled into one installer drawer, and checked so stale local binaries cannot accidentally enter a release. |
The installer also brings in the matching SDK runtime: zz9k.library,
mpega.library, the optional accelerated picture DataType, command-line tools,
and the ZZPlay application. For best results, use drivers, firmware and SDK
payloads from the same release—particularly on Zorro II.
For normal installation, use the latest GitHub Release zip:
- Download
zz9000-drivers-<tag>.zipfrom Releases. - Unpack it on the Amiga.
- Double-click
ZZ9000Installer/Install ZZ9000. - Reboot after installing or replacing drivers.
The installer handles driver placement, tool installation, icons,
Picasso96 settings, the optional Roadshow NetInterface template, and
network setup prompts. Current releases also install ZZTop, which can
edit the SD-card ZZ9000.CFG file for MAC, INT2, native-video,
scanline, and boot-HDF settings. The installer also installs the SDK
runtime (zz9k.library, mpega.library, and the picture datatype) and
the per-CPU accelerated amissl.library (auto-detecting the CPU,
installing the matching build, and backing up the stock library once).
- Target OS/toolchain:
m68k-amigaos - Hardware: MNT ZZ9000 Zorro II or Zorro III card
- Optional hardware: ZZ9000AX daughterboard for AHI/MHI/AX tools
- RTG stack: Picasso96
- Networking: any SANA-II capable stack, such as Roadshow, Miami DX, or AmiTCP
- USB: Poseidon, with a matching firmware USB mailbox implementation
Several features require current ZZ9000 firmware. In particular,
ZZFwUpdate needs firmware with FWUP protocol support, and USB interrupt/ISO
support requires the matched firmware 2.9 and zzusbhw.device 2.2 pair;
Picasso96 DPMS needs firmware 2.7+ with a matching rebuilt bitstream, and
zzsd.device is packed into BOOT.bin rather than installed as a normal
AmigaOS file.
SDK offload services are bounded, but no longer audio-only, on Zorro 2.
Current matched firmware, bitstream, SDK runtime, and drivers negotiate and
acknowledge the exact board layout before exposing a shared CPU-visible host
heap. The layout has two generations: generation 1 (previous matched sets and
older FPGA/firmware pairs) provides a 64 KiB heap; generation 2 shrinks it to
16 KiB on the 2 MiB and 4 MiB profiles and reserves the freed 48 KiB for the
Z2 audio direct-ring grant. Both generations keep negotiating — a driver
update alone never disables RTG on a generation-1 board. mpega.library,
mhizz9000.library, ZZPlay standalone MP3, streamed zz9k-view,
zz9k-picture.datatype, streamed archive work, and the accelerated
amissl.library use compact host-window/card-only layouts on both shipped
2 MiB and 4 MiB profiles. The 4 MiB profile additionally provides one 224 KiB
PIP source for video frames that fit; the 2 MiB profile has no PIP.
Keep firmware, bitstream, SDK payloads, and drivers from the same release on Zorro 2. Invalid or unacknowledged descriptors deliberately fail closed. Descriptor-absent legacy 4 MiB compatibility instead retains the historical fixed 64 KiB host window only; legacy 2 MiB and unknown sizes reject it. The negotiated heap is shared across clients, so concurrent image, archive, audio, DataType, and TLS work can contend. Not every low-level SDK diagnostic has been converted from the legacy default shared heap. See the SDK's Zorro II service matrix for exact client limits and fallback behavior. An 8 MiB software profile exists for future work, but no 8 MiB bitstream variant is shipped.
| Area | Artifact | Installed to | Notes |
|---|---|---|---|
| RTG graphics | ZZ9000.card |
Libs:Picasso96/ |
Picasso96 RTG driver using the native BT_MNT_ZZ9000 board identity, accelerated VRAM/PIP paths, and firmware-gated DPMS monitor power management. |
| P96 settings | Picasso96Settings / Picasso96Settings-Z3 |
Devs:Picasso96Settings |
Installer backs up an existing file to Devs:Picasso96Settings.pre-ZZ9000-2.4, advertises Standby/Suspend/Active Off DPMS support, and offers a Zorro III high-memory profile with 1920x1080x32 enabled. |
| Networking | ZZ9000Net.device |
Devs:Networks/ |
SANA-II Ethernet driver. |
| Network template | ZZ9000Net |
Devs:NetInterfaces/ |
Optional Roadshow DHCP template installed by the installer. |
| Network diagnostics | ZZNetStats |
C: |
Dumps SANA-II counters plus firmware RX backlog/drop registers. |
| Board diagnostics | ZZDiag |
C: |
Dumps board identity, firmware, VideoCap, USB, SD, AX/audio, and Ethernet diagnostic registers. |
| AHI audio | zz9000ax.audio |
Devs:AHI/ |
ZZ9000AX playback and stereo RCA recording driver. Runtime setup and tunables are documented in ahi/README.md. |
| AHI mode | ZZ9000AX |
Devs:AudioModes/ |
AudioMode file generated by the AHI build. |
| MHI audio | mhizz9000.library |
Libs:MHI/ |
Exposes the AX hardware MP3 decoder to MHI-aware players. |
| USB | zzusbhw.device |
Devs:USBHardware/ |
Capability-gated Poseidon USB hardware driver. See usb-poseidon/README.md and the qualification matrix. |
| SD boot | zzsd.device |
Firmware BOOT.bin |
Size-constrained boot driver for FAT32-hosted HDF boot. See sd-boot/README.md. |
| Configuration | ZZTop |
SYS:Utilities/ZZ9000/ |
GUI for hardware readback, firmware update/restore, and ZZ9000.CFG settings. The Settings menu opens Scandoubler…, Audio… and Other Settings…; the Project menu carries Update Firmware…, Restore Backup…, the Audio Debug Log toggle, About… and Quit. The main window also has a Scandoubler button directly above Audio. The capability-gated Scandoubler window owns native-video Output/Refresh selection, advanced capture framing, scanlines, and live calibration; the Audio window owns scenes, meters, Paula/AX baseline and measured per-card ceilings. Edits apply live, and each window's Save persists its keys. |
| Scanlines | ZZScanlines |
C: |
CLI for scanline V1/V2 modes. |
| Firmware update | ZZFwUpdate |
C: |
Pushes BOOT.bin or another root-level file to the ZZ9000 FAT32 microSD card over Zorro. |
| SDK services | zz9k.library |
Libs: |
AmigaOS gateway to the SDK v2 firmware services (image/video decode, audio, compression, crypto). Built from the pinned zz9000-sdk ref by sdk/build.sh. |
| MP3 decode | mpega.library |
Libs: |
ARM-accelerated drop-in MPEGA replacement (from zz9000-sdk). |
| Picture datatype | zz9k-picture.datatype |
SYS:Classes/DataTypes/ |
Hardware-accelerated picture datatype; JPEG/PNG descriptors staged inactive in SYS:Storage/DataTypes (from zz9000-sdk). |
| SDK tools | zz9k-info, zz9k-services, zz9k-view, zz9k-mp3, zz9k-cryptobench, zz9k-archive |
C: |
Board/service introspection and release smoke check, plus accelerated image viewer, MP3 player, crypto-offload benchmark, and archive extractor (from zz9000-sdk). |
| ZZPlay | ZZPlay + ZZPlay.info |
SYS:Utilities/ZZ9000/ |
MPEG-1 video and MP3 media player (from zz9000-sdk). See the ZZ9000 drawer. |
| TLS offload | amissl_v362.library |
Libs:AmiSSL/ |
AmiSSL 5.27 core with the ZZ9000 crypto-offload provider compiled in; accelerates supported TLS handshake and record crypto for all AmiSSL applications. Built per CPU (68020-40 for 68020/030/040 and 68060); the installer auto-detects the CPU and installs the matching build. Requires an existing AmiSSL 5.27 install. |
| Installer | ZZ9000Installer |
Release zip root | Commodore Installer drawer used for end-user deployment. |
ZZTop and ZZPlay are the two ZZ9000 tools with a Workbench interface, so
from v2.8 they share one drawer instead of being split between SYS:Tools
and C::
SYS:Utilities/ZZ9000/ZZTop
SYS:Utilities/ZZ9000/ZZPlay
In Expert mode the installer asks where to create the drawer. It also
offers to add that drawer to the command path, because AmigaOS path
entries are not recursive — SYS:Utilities being on the path does not
make a drawer inside it searchable, and both tools have a CLI. Answering
yes writes a Path ... ADD line into a ;BEGIN ZZ9000 block in
S:User-Startup, which re-running the installer updates in place.
Upgrading from an earlier release, the installer offers to delete the old
SYS:Tools/ZZTop so you are not left running a stale copy.
ZZTop's fixed-size windows use Intuition Smart Refresh to preserve their contents when uncovered while a secondary window or requester is open. This uses additional display memory for obscured areas; it does not make the modal dialogs non-modal or change the background readout update rate.
Firmware 2.3+ reads an optional ZZ9000.CFG file from the root of the
ZZ9000's FAT32 microSD card at cold boot (documented in the
zz9000-firmware README).
ZZTop's Settings → Scandoubler…, Settings → Audio… and
Settings → Other Settings… windows (plus the main window's Scandoubler and
Audio buttons) read and write it directly from AmigaOS, so the card
never needs to leave the slot. Each window applies only its own edits and
ENV overrides, preserving supported values from the other sections.
Absent native-video keys stay inactive during a general Settings save;
only Scandoubler Save activates its displayed native settings.
The unsupported-centered-profile fallback described below applies to every
save. Saves preserve all eight audio scenes, including their names and
calibration values. Generated files use compact formatting to
stay within the firmware's 4 KiB configuration limit; explanatory
per-setting comments are not retained. A generation failure leaves the
existing SD file untouched.
The Other Settings… window contains INT2, MAC, HDF, offscreen bitmaps and video overlay; native-video controls are only in Scandoubler. The main Scandoubler… button sits directly above Audio…, without an extra button row. Use the Settings menu on screens where those buttons are off-screen.
The drivers in this repo consult it too:
ZZ9000.cardtakes its native-video defaults from the firmware's parsed configuration. ZZTop presents the storedvideocap_profileas two dependent selectors in the Scandoubler window — Output (1280x1024 - full detail,1920x1080 - centered,800x600 / 720x480 - filtered,720x576 / 720x480 - filtered) and Refresh (50Hz,60Hz,Match Amiga,50Hz PAL, 60Hz NTSC,PAL Amiga clock,NTSC Amiga clock) — offering only the combinations the installed stack supports; changing the output keeps the refresh when the pair still exists, otherwise visibly selects a valid one. Native Amiga chipset video normally defaults tofiltered_60(PAL 800x600 or NTSC 720x480 at nominal 60 Hz); the nonstandard-sync firmware variant defaults to PAL timing. Use ZZTop to choose another combination and save it toZZ9000.CFGfor the next cold boot. Capture… opens sampling, framing and calibration controls from the Scandoubler window. Framing defaults to Automatic: full-rate/full-width capture uses280/40, while filtered and Denise-adapter paths retain188/26. Custom values remain literal per-machine overrides. Firmware 2.8 with the profile capability stores this asvideocap_profile; ZZTop transparently writes the equivalent legacy key combination for older firmware, including 2.8 RC1.- With a matching v2.8-RC2-or-newer full-rate bitstream and firmware
capability bit 3,
centered_1080p_60places the unchanged 1280x1024 native content at(320,28)inside a 1920x1080 active raster. The content rectangle is[320,1600) x [28,1052)and every surrounding pixel stays black. This is native Amiga chipset video, not the separate Picasso96 1920x1080x32 RTG screen mode. Its fixed 148.5714286 MHz clock and 2200x1125 totals produce approximately 60.02886 Hz. - On stacks that also advertise the source-sync capability bit (bit 5,
which implies bits 3 and 4), the experimental
centered_1080p_matchcenters the same unchanged 1280x1024 content and locks the output cadence to the captured Amiga raster instead of free-running: refresh follows the input (PAL or NTSC, progressive or interlaced), so no fixed rate applies. It needs bitstream, firmware,ZZ9000.cardand ZZTop from the same build; during acquisition the picture stays hidden until the capture/read phase is safe. Install matching firmware, bitstream,ZZ9000.card, and ZZTop. ZZTop gates centered choices on the firmware capability register: bit 3 for centered 60 Hz, both bits 3 and 4 for centered 50 Hz, and all of bits 3-5 forcentered_1080p_match. Current ZZTop substitutesfull_60for an unsupported stored centered profile, including when another configuration window saves. This is separate from the normalfiltered_60default. Older firmware can ignore an unknown profile token, so hand-editing that token is not a substitute for a matched update. Unrelated MAC and INT2 ENV overrides preserve a supported centered choice, while legacy native-video ENV overrides intentionally select their legacy fallback. Centered 60 Hz and 1920x1080 RTG share hardware preset 5, so the RTG clock callbacks and both stockPicasso96Settingstemplates now use 148571429 Hz too. Back up custom settings rather than blindly replacing them with a stock template. ZZ9000Net.device,zz9000ax.audioandmhizz9000.libraryhonorint2 = on;ZZ9000Net.deviceadopts the firmware'smac.ZZ9000.cardalso readsoffscreen_bitmapsandvideo_overlay, the kill switches for card-side off-screen bitmaps and the P96 video window. Both default to on; ZZTop's Settings window edits them.
The existing 1280x1024 / Match Amiga pair (full_exact) selects fixed
PAL/NTSC approximations of about 49.93/59.95 Hz; the label does not imply
input genlock. Centered output offers fixed 50 Hz and 60 Hz, plus the
experimental genlocked centered_1080p_match above on matched stacks.
The selectors map to the following saved profiles. Only supported pairs are offered; the centered rows require the capabilities described above.
| Output | Refresh | videocap_profile |
|---|---|---|
| 1280x1024 - full detail | 60Hz | full_60 |
| 1280x1024 - full detail | Match Amiga | full_exact |
| 1920x1080 - centered | 60Hz | centered_1080p_60 |
| 1920x1080 - centered | 50Hz | centered_1080p_50 |
| 1920x1080 - centered | Match Amiga (experimental) | centered_1080p_match |
| 800x600 / 720x480 - filtered | 60Hz | filtered_60 |
| 720x576 / 720x480 - filtered | 50Hz PAL,60Hz NTSC | filtered_pal |
| 720x576 / 720x480 - filtered | PAL Amiga clock | filtered_pal_exact |
| 720x576 / 720x480 - filtered | NTSC Amiga clock | filtered_ntsc_exact |
Output and Refresh are staged for the next cold boot: choose the pair, press Save, then power-cycle. Scanline mode and parity changes apply live, but also need Save to survive a power cycle. Capture/calibration previews have the separate accept/restore rules below.
ZZTop 2.8 can calibrate Custom native-video framing without the old guess/save/power-cycle loop. It requires matched firmware 2.8-or-newer and a protocol-1 live-calibration bitstream. ZZTop checks an explicit firmware live-control bit as well as the exact RTL capability, so either half of an older/mixed install—including 2.8 RC1 firmware—leaves the existing Automatic and numeric Custom controls available but keeps Calibrate disabled.
In Settings → Scandoubler…, leave the staged Output/Refresh path matching the currently applied path, then choose Capture… → Calibrate…. ZZTop opens an explicit native PAL or NTSC Hires screen—never an RTG fallback—so its edge, safe-area, and centre guides pass through the physical capture path being adjusted.
- Arrow keys move the visible picture in the named direction, one crop unit at a time. Hold either Shift key for 16-unit steps.
- Values change on screen only after the FPGA applies the complete H/V control word at a capture-frame boundary and acknowledges it.
- Enter accepts the displayed pair as explicit Custom values and returns to the Capture window. It does not write the SD card.
- Escape restores and acknowledges the exact state from calibration entry, including independent per-axis Automatic flags, before the native screen closes.
- Done in Capture stages an accepted preview in Scandoubler; Save is
the only action that writes
ZZ9000.CFG. A cold boot later reproduces the saved pair.
Capture Cancel, Scandoubler Reload, and closing the Scandoubler window restore their owning live snapshots before discarding an unsaved preview; the general Settings window is never blocked by video-calibration state. If an acknowledgement times out, ZZTop keeps the relevant window open and reports that the state is unknown; retry the restore when native frames return, or cold-boot to recover the persisted CFG state. If another live writer wins the same request sequence, ZZTop detects the different applied raw word and asks for a retry or exact restore rather than claiming success. A Custom pair is tied to the applied capture-path signature (sample mode plus full-width state). If staged settings select a different path, Calibrate and Custom Save remain unavailable until the path is restored, or framing is set to Automatic, saved, cold-booted, and calibrated on the newly active path.
Precedence is always: ENV: variable (and RTG tooltypes) first, then
the config file, then the built-in default — so existing setups keep
working, but a lingering ENV variable also hides the config value.
Remove the ENV variables (ZZ9K_INT2, ZZ9K_MAC,
ZZ9000-VCAP-800x600, ZZ9000-NS-VSYNC[-NTSC], ZZ9000-NO-OFFSCREEN,
ZZ9000-NO-PIP) when migrating to the config file. On firmware older than 2.3 the drivers silently fall back
to the ENV variables.
Activation follows the existing configuration lifecycle. ZZTop Save writes the staged file, which is read at the next cold boot; valid runtime native-mode writes take effect at the next stable vblank. The centered profile does not add a monitor hot-plug or HDMI mode-switch guarantee.
ZZ9000.card 2.11 uses custom progressive timings when the firmware
advertises ZZ_FW_CAP_CUSTOM_MODE (capability bit 7). Install the matched
firmware and card driver; older firmware continues to use fixed presets
and rejects unknown dimensions.
Create a mode in P96Prefs/Picasso96Mode and use its temporary Test display before saving. Custom timings require:
- Width 320–2560, aligned to 8 pixels; height at least 200.
- Positive front porch, sync width, and back porch; totals no greater than 4095 on either axis.
- A requested pixel clock from 25 to 165 MHz. The driver reports the nearest achievable clock, with at most 0.5% error. Requests with no legal PLL clock inside that tolerance are rejected.
- Progressive scan without doubled-clock/doubled-scan flags, and equal HSync/VSync polarity. Mixed polarity requires an FPGA change.
For an initial 960x720 test, use 53.000 MHz, horizontal total 1184, front porch 48 and sync width 96; vertical total 746, front porch 3 and sync width 4; both syncs negative. This resolves to approximately 60.00471 Hz. Monitor acceptance still needs hardware verification.
Back up LIBS:Picasso96/ZZ9000.card and your P96 settings. Do not replace
your configured settings with a stock template. Exact packaged numeric
timings preserve the old fixed-preset path, including its historical
polarity handling; changing only their polarity flags does not create a
custom modeline. Timing or clock edits use the custom path instead.
A rejected mode does not replace the accepted BoardInfo.ModeInfo.
Subsequent panning is blocked until a mode is successfully applied, so a
failed mode switch cannot independently replace the scanout's layout.
ZZFwUpdate copies a file from AmigaOS to the ZZ9000 FAT32 microSD card
without removing the card. The usual firmware update flow is:
ZZFwUpdate RAM:BOOT.bin
Power-cycle the Amiga after replacing BOOT.bin so the ZZ9000 boots
the new firmware.
By default, the destination filename on the SD card is the source basename. To write a different root-level filename, pass it as the optional second argument:
ZZFwUpdate SYS:Storage/zz9000-fw.bin BOOT.bin
The destination name must be 1-64 characters and contain only A-Z,
a-z, 0-9, ., _, or -.
When you replace BOOT.bin, the firmware automatically keeps the
previous image as BOOT.bak. If a new firmware boots but misbehaves,
you can roll back to that backup without removing the card:
ZZFwUpdate RESTORE
This promotes BOOT.bak to the active BOOT.bin (discarding the
replaced image, so no backup remains afterwards) after a confirmation
prompt. Pass -y to skip the prompt, or a name to restore something
other than BOOT.bin. Restore talks to the running firmware, so it
recovers a booting-but-misbehaving update; a fully non-booting card
still needs the microSD removed and restored on another computer.
Requires firmware with RESTORE (FWUP cmd 5) support.
ZZNetStats opens ZZ9000Net.device, requests SANA-II global stats,
and prints firmware RX queue/backpressure/drop counters:
ZZNetStats
ZZNetStats DEVICE=Networks/ZZ9000Net.device UNIT=0
ZZNetStats Networks/ZZ9000Net.device 0
Run it before and after a throughput test to see whether drops are happening in the Amiga-side driver or firmware RX path.
ZZDiag dumps the most useful hardware-facing diagnostics in one
place:
ZZDiag
ZZDiag 3 50
The optional arguments are sample count and AmigaDOS delay ticks between samples. The VideoCap section includes the detailed video-capture and genlock diagnostic registers when the running firmware exposes them.
ZZScanlines controls the scanline bitstream modes exposed by recent
firmware/bitstream builds:
ZZScanlines 0
ZZScanlines 1 0
ZZScanlines 2 1
ZZScanlines 3 0
Modes are 0=off, 1=classic, 2=soft, 3=gradient; parity is
0=odd dark, 1=even dark.
Like ZZTop's Scandoubler window, ZZScanlines changes the live FPGA
state; to make scanlines survive a power cycle, save them to
ZZ9000.CFG (firmware 2.3+, ZZTop Scandoubler window's Save button).
GitHub Actions is the source of truth for release builds. Every push and
pull request builds each component inside
sacredbanana/amiga-compiler:m68k-amigaos; tag builds assemble the
release zip.
The same image can be used locally with Docker or Podman:
IMAGE=sacredbanana/amiga-compiler:m68k-amigaosTop-level helpers mirror the CI build and package flow:
make build-all
make rtg-tests
make package-local
make check-release
make qualityComponent build.sh wrappers also use the same Docker image when the
Amiga cross-toolchain is not already on PATH.
For exact commands for every artifact, use
tools/build-all.sh and
.github/workflows/ci.yml.
sd-boot/zzsd.device has a hard size ceiling of 7424 bytes because it
must fit in the FPGA-decoded boot ROM window. CI enforces this limit.
Release binaries are built by CI and should not be tracked in the source tree unless there is a documented exception; see docs/BINARY_POLICY.md.
Pushing a tag matching v* builds all artifacts and publishes a GitHub
Release zip:
git tag -a v2.3.0 -m "ZZ9000 drivers 2.3.0"
git push origin v2.3.0The release bundle layout is:
zz9000-drivers-<tag>/
README.md
ZZ9000Installer.info
ZZ9000Installer/
The release job populates ZZ9000Installer/ with fresh CI-built
binaries before zipping it. Binaries are not duplicated as loose files
at the zip root. The release zip's README.md is copied from
installer/README.md, which is focused on the
installer drawer layout and local installer testing.
Tags containing -, such as v2.3.0-rc1, are marked as pre-releases.
GitHub release notes are generated automatically.
| Path | Purpose |
|---|---|
.github/workflows/ci.yml |
CI, artifact builds, release assembly. |
installer/ |
End-user Commodore Installer drawer, icons, templates, and release packaging docs. |
rtg/ |
Picasso96 RTG driver. |
net/ |
SANA-II network driver and ZZNetStats. |
ZZDiag/ |
Consolidated board and firmware diagnostics CLI. |
ahi/ |
ZZ9000AX AHI driver, AudioMode file, and audio runtime documentation. |
mhi/ |
ZZ9000AX MHI library. |
usb-poseidon/ |
Poseidon USB hardware driver and setup notes. |
sd-boot/ |
SD-card boot driver and boot-ROM integration notes. |
ZZTop/ |
Configuration GUI. |
ZZScanlines/ |
Scanline control CLI. |
ZZFwUpdate/ |
Firmware/file push CLI using the FWUP protocol. |
common/ |
Shared FWUP protocol client (fwup_client.c, fwup_amiga.c) and ZZ9000.CFG client (zzcfg_amiga.c) linked by ZZFwUpdate and ZZTop. |
sdk/ |
Pulls the pinned zz9000-sdk ref and collects its end-user payloads (libraries, datatype, diagnostics). |
amissl/ |
Builds the ZZ9000-accelerated amissl.library (adtools toolchain image + zz9000-sdk integration). |
- RTG optimization work, scanline tooling, ZZTop V2/Settings updates, USB Poseidon driver, SD-card boot driver, firmware update/restore tool, network diagnostics, SDK runtime packaging, accelerated AmiSSL packaging, CI/release packaging, and installer modernization: Dimitris Panokostas (midwan).
- Scanline bitstream V1 and V2: Xanxi. V2 adds multi-mode patterns with odd/even parity, gated to AGA scandoubled modes and RTG resolutions below 350 lines.
- Network driver base: Henryk Richter henryk.richter@gmx.net (2018).
- Original upstream driver sources: MNT Research pre-fork repository listed above.
Per-file copyright notices are preserved in source files.
SPDX-License-Identifier: GPL-3.0-or-later