Skip to content

Releases: A4091/a4091-software

A4091 / A4092 Release v42.35

07 Dec 07:30

Choose a tag to compare

Highlights

  • Fully supporting the new A4092 SCSI controller. On the A4092 you can change DIP switches by clicking on them in the boot menu (right mouse button at boot time).
  • ZX0 Compression - Replaced RNC ProPack with Salvador (ZX0) for 24% smaller ROM headers and 5-7% better compression
  • Quick Interrupts - Zorro III quick interrupt support for lower latency SCSI operations
  • A4092 SPI Flash - Complete SPI flash support with integration into bootmenu and a4092flash utility.
  • Zorro II Bounce Buffers - Full compatibility with systems using only Chip RAM and Zorro II Fast RAM

New Features

ZX0 Compression (Replaces RNC ProPack)

Switched from RNC ProPack to Salvador (ZX0) compression for all ROM and driver images. ZX0 provides better compression ratios with a simpler, more maintainable implementation.

  • ROM header reduced by 24%
  • Compressed binary sizes improved by 5-7%
  • Custom header format with magic bytes ZX0, version, and size fields

Zorro II DMA Bounce Buffer

A Zorro III device like the A4091 cannot perform DMA transfers directly to the 24-bit address space of Zorro II RAM. This release implements a bounce buffer mechanism to work around this hardware
limitation.

  • Automatic detection of Zorro II memory range (0x200000-0xA00000)
  • Bounce buffers allocated from DMA-capable Chip RAM
  • Buffers capped at 256KB (MAX_BOUNCE_SIZE) with automatic request splitting
  • Serialized allocation prevents Chip RAM exhaustion

Zorro III Quick Interrupt Support

Quick interrupts provide lower latency by using optimized interrupt vectors that bypass the normal Exec interrupt chain.

  • Runtime configurable via bootmenu (disabled by default)
  • Settings persisted in battery-backed memory
  • Workaround for unpatched A4091 boards (redirects to INT2)
  • New -Q option in a4091 test utility

A4092 SPI Flash Support

Full support for SPI flash devices on A4092 boards alongside parallel flash.

  • Automatic flash type detection (SPI probed first)
  • New spiutil command-line tool for flash management
  • Support for W25X10, W25X20, W25X40, W25X80, and W25Q40 chips
  • Conditional compilation: FLASH_SPI and FLASH_PARALLEL flags

Flash-Based NVRAM for A4092

  • Settings stored directly in flash instead of battmem.resource
  • Interactive DIP switch editing (click or press keys 1-8)
  • Deferred write with Nvram_CommitDirty() for reliability

Artwork Editor

New Python-based editor for customizing bootscreen artwork (artwork/editor.py).


Bug Fixes

Component Description
sd.c Fixed overflow for drives >2TB (TD_GETGEOMETRY returned 0 instead of 0xFFFFFFFF)
bootmenu Fixed About screen text pushed out of bounding box

Build System

Automated Versioning

Device version is now derived from git tags instead of hardcoded version.h:

  # Version calculated from: git describe --tags --always --dirty
  # e.g., v42.34-47-g98d194c-dirty for dev builds, v42.35 for releases

Workflow Improvements

  • Added all ROMs and KICK modules to build artifacts (A4092 ROMs were previously skipped)
  • Fixed version string handling for non-release builds
  • Fetch full git history to ensure tags are available

Compiler Compatibility

Fixed warnings for gcc 6.5.0 compatibility (downgrade from gcc 13.3 was necessary due to miscompilation issues):

  • Added GCC_VERSION macro for version detection
  • Guarded -Wcast-function-type pragma (introduced in gcc 8)
  • Fixed printf format specifiers (PRIu32/PRIx32 instead of %lu/%lx)

Performance Optimizations

Reduced Library Dependencies

printf.c - Dropped libdebug and libgcc dependencies:

  • Custom udiv64_32() using shift-and-subtract (avoids 68060 divul.l trap)
  • Direct RawPutChar calls via inline assembly
  • Code size reduced: 45,516 → 41,960 bytes (-3,556 bytes)

cmdhandler.c - Eliminated libgcc in 64-bit block calculations:

  • Refactored to use explicit 32-bit intermediate values
  • Driver size reduced: 116 bytes saved

User Interface Improvements

A4091/A4092 disk

  • Clear screen before displaying ASCII banner
  • Centered logo with separate version/copyright lines
  • Copyright year auto-updated from build date
  • Added system-configuration generator for consistent 80-column display

Bootmenu

  • Improved DIP switch gadget with 3D appearance
  • Notification messages changed to white for better visibility
  • "Settings saved" message repositioned to fit submenu box
  • Error message displayed when flash write fails
  • Full version string shown (e.g., v42.34-53-g9e5f6ec-dirty)

Miscellaneous

  • Removed Zorro III "magic speed hack" easter egg
  • Added optional external add-on script support in disk creation
  • Extended device recognition to include a4092.device, scsi710.device, scsi770.device
  • Updated salvador submodule to 12a13b6f
  • Updated devtest submodule to v1.7

Upgrade Notes

  • Quick interrupts are disabled by default; enable via bootmenu if desired
  • A4091 mini boards lack hardware for quick interrupts (detection not possible, so left as menu option)
    DO NOT ENABLE quick interrupts on A4091 mini.
  • Existing RNC-compressed ROMs are still recognized by romtool

Full Changelog: release_42.34...release_42.35

a4091.device v42.34

02 Sep 00:36

Choose a tag to compare

Highlights

This is a quick fix release.

What's Changed

Full Changelog: release_42.33...release_42.34

a4091.device v42.33

18 Aug 01:56

Choose a tag to compare

Highlights

  • The 42.32 release's CDROM boot was broken, this version fixes CDROM boot again
  • Probing for devices in the boot menu now handles non-standard host controller addresses, LUN probing and wide scsi addresses properly
  • Boot menu can now be used with keyboard shortcuts
  • Added the new a4092flash utility for updating the A4092 variant which has a software updateable autoboot ROM
  • CDVDFS updated to fix GCC 13 optimization issues.
  • Phase 5 Wide SCSI ID handling scheme now supported.
  • Fix last Coverity CID

What's Changed

Full Changelog: release_42.32...release_42.33

a4091.device v42.32

06 Aug 21:04

Choose a tag to compare

Highlights

This is a release packed with improvements! Make sure to update your A4091 cards, and please test on A4000T / saft6luck A4000D machines as well.

  • Better support for CDROM/DVD drives (esp. with ACARD adapters)
  • A4000T support (inc. bootmenu and CD boot support)

What's Changed

  • Mounter: Move mounter to separate repositoryhttps://github.com/A4091/mounter
  • Mounter: fix CheckPVD string comparison
  • Mounter: CheckPVD should only check sector 16 for the PVD
  • Mounter: Check if CD is a Data CD
  • Mounter: Issue a CMD_START and TD_CHANGESTATE to the unit
  • Update CDVDFS, propack, devtest and libcodesets
  • Fix outstanding Coverity issues
  • romtool: Fix memory tracking
  • Add option to enable SCSI device quirks (disabled in official builds)
  • Don't use 6-byte-commands on CDROMs and WORMs
  • a4091 utility: Fix A4000T DIP switch decoding
  • a4091 utility: Fix Enable LUN decoding
  • Add support for A4000T in device driver
  • Improve relocation code and make it ROMable
  • Add kick/build_rom.sh and "make kickstart" target to build AmigaOS 3.2.3 images for A4000T
  • siop: Fix 68030 cache write-allocate workaround implementation
  • Various fixes for compiling with gcc 13.x
  • Initial support for NCR53C770 UW SCSI host controller chips (from NetBSD)

Full Changelog: release_42.31...release_42.32

a4091.device v42.31

27 Feb 16:27
a431db0

Choose a tag to compare

What's Changed

  • mounter: Fix bug in filesystem.resource parsing
  • bootmenu now can be invoked with DEL key
  • romfile: Don't add duplicate filesystems to filesystem.resource
  • siop_poll(): Turn interrupts on before exiting to prevent performance degradation
  • Properly count CDROM drives
  • Allow booting from WORM and optical disks

Full Changelog: release_42.30...release_42.31

a4091.device v42.30

25 Aug 22:07

Choose a tag to compare

What's Changed

  • Fully integrate CDVDFS with A4091 ROMs and use it as default CDFilesystem
  • Add CDFS rom to release LHA
  • Add romtool to release LHA
  • a4091 -t6 enhancements
  • Coverity fixes for various potential code issues
  • Upgrade devtest to v1.6

Full Changelog: release_42.29...release_42.30

a4091.device v42.29

03 Jan 03:20

Choose a tag to compare

What's Changed

  • reloc.S: Fix memory corruption with compressed files
  • mounter: Fix use after free memory corruption
  • battmem: Fix handling of RDBFF_LAST setting
  • bootmenu: Don't configure joystick pullups
  • README.md: Update supported CD Filesystems
  • Leave a hint on how to add fat95

Full Changelog: release_42.28...release_42.29

a4091.device v42.28

01 Jan 22:00

Choose a tag to compare

This is a quick fix release to prevent some machines to always enter the A4091 boot menu upon booting.
If that does not happen to you with 42.27, there is no benefit in updating to 42.28.

Full Changelog: release_42.27...release_42.28

a4091.device v42.27

21 Dec 04:46

Choose a tag to compare

What's Changed

  • Changed a4091 -t Device access test to ignore ROM version by @cdhooper in #16
  • a4091 -t improvements for bus test failure output by @cdhooper in #17
  • Add compression support by @reinauer in #18
  • Automatically check out submodules by @reinauer in #19
  • Dynamically determine block size in mounter by @reinauer in #20
  • Disable drive motor after probing by @reinauer in #21
  • Improve CDFileSystem support by @reinauer in #22
  • Document basics of the a4091 tool by @tkurbad in #24
  • a4091 test fixes (-l, -c, ISTAT, ROM check) by @cdhooper in #25
  • bootmenu: Open libraries on demand only by @reinauer in #27
  • Mounter: checksum must pay attention to SummedLongs by @LIV2 in #28
  • MBR and GPT support by @reinauer in #26
  • Mounter: fix offset calculation in readblock() by @LIV2 in #29
  • mounter.c: Fixes from Olaf Barthel by @reinauer in #30
  • Fix "a4091 -l " invalid input checking by @cdhooper in #31

Full Changelog: release_42.26...release_42.27

a4091.device v42.26

01 Nov 04:19
6898846

Choose a tag to compare

Note

This is a major update to the a4091.device driver and tools and it comes packed with a ton of improvements. Please update!

What's Changed

  • Mounter: Fix creation of FileSystem.resource by @LIV2 in #3
  • Add menu option to ignore RDBFF_LAST by @reinauer in #5
  • Timer fixes
  • HDInstTool fixes
  • Use dip switch to determine LIN probing
  • Use dip switch to determine spinup times
  • Improved error handling
  • Short/Long Spinup by @reinauer in #4
  • Don't probe for SCSI targets on other cards by @reinauer in #6
  • Added change requested by Dorken to drive SC0 during bus request - This does not fix anything without future GAL changes (not yet implemented) by @cdhooper in #7
  • a4091.device interrupt handling change SIOP DSTAT and SSTAT0 registers are read simultaneously to work around interrupt loss issue described in 53C710 DMA Status (DSTAT) documentation. by @cdhooper in #8
  • CD Boot: Check PVD for correct system id by @LIV2 in #11
  • Make disk bootable by @tkurbad in #10
  • Trim spaces in boot screen by @reinauer in #12
  • Update disk contents by @reinauer in #13
  • Improve A4091 AmigaGuide documentation
  • Update devtest to 1.4
  • Add RDBFlags to tools * Improved A4091 test utility
  • Fix compilation with gcc 13.1

New Contributors

Full Changelog: release_42.25...release_42.26