scsi: put drives on the A3000 motherboard SCSI bus#184
Conversation
[scsi] controller = "a3000" fits drives to the Super DMAC's WD33C93 instead of a Zorro board. It is the default on a machine that has one, and it takes no boot ROM: Kickstart's own scsi.device drives it and autoboots from an RDB disk. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Adds first-class support for attaching [scsi] drive images to the Amiga A3000’s onboard SCSI (Super DMAC + WD33C93), making the A3000 profile bootable from SCSI without requiring a Zorro SCSI card or [[filesys]] mount.
Changes:
- Extend
[scsi] controllerto support"a3000"and make it the default controller on machines with a Super DMAC, while rejectingromfor onboard SCSI and rejecting"a3000"on non-A3000 profiles. - Plumb
[scsi]units into the SDMAC device when onboard SCSI is selected; keep Zorro-board plumbing unchanged. - Update the launcher SCSI picker to include “A3000 (onboard)”, hide it on non-A3000 profiles, and grey out the ROM row for onboard SCSI.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| src/video/launcher.rs | Adds A3000 onboard controller option to the UI, gates ROM emission for non-Zorro SCSI, and migrates onboard selection when switching away from A3000. |
| src/emulator.rs | Attaches [scsi] drive images to the SDMAC bus when controller is A3000; avoids building a Zorro SCSI board in that case. |
| src/config.rs | Introduces ScsiController::A3000, updates parsing/validation defaults and error messages, and adds tests for onboard SCSI behavior. |
| copperline.example.toml | Updates example documentation to describe A3000 onboard SCSI booting and how to configure it via [scsi]. |
Comments suppressed due to low confidence (1)
src/video/launcher.rs:933
rom_oddis emitted whenever an A2091 is selected, even ifscsi_romis unset. This can produce an invalid config ([scsi] rom_oddrequiresrom) if the user clears the even ROM after setting the odd half, causing validation failure on Run/reload.
// rom_odd is an A2091 split-EPROM option; the A4091 has one ROM.
raw.scsi.rom_odd = (controller == ScsiController::A2091)
.then(|| self.scsi_rom_odd.as_deref().map(path_string))
.flatten();
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
rom_odd is the odd half of a split EPROM dump, so it is meaningless alone and the config rejects it; clearing the even half left it behind. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Good catch on rom_odd - fixed in 6206c40. It is the odd half of a split even/odd EPROM dump, so it is meaningless without rom, and the config validator rejects that pair; clearing the even half in the launcher used to leave the odd half behind and fail on Run. The launcher now only writes rom_odd when rom is set. |
Registers $1A-$1E are not registers and float $FF; $1F is the auxiliary status, aliased into the file read-only. Both were plain RAM, so cdhooper's sdmac tool failed its WDC test and reported the chip as not detected. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Now we pass 100% of cdhopper's sdmac test: |
|
Both new review comments are already handled:
Also pushed d21fec0: the WD33C93 register file ends at the data register ($19). Registers $1A-$1E are not registers and float $ff, and $1F is the auxiliary status aliased in read-only. Both were plain RAM here, so cdhooper sdmac tool failed its WDC test and reported "SCSI Controller: Not detected: INVALID" - it identifies the chip by checking exactly those two properties. It now passes all three tests on an emulated A3000 and reports "WD33C93A 00-04 or 00-03 microcode 00, 8.7 MHz". |
The front panel only offered an LED to a Gayle machine or an A2091, so an A3000 (motherboard SCSI) had none -- and neither did any machine whose only controller was an A4091. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The A3000's Super DMAC and its WD33C93 landed in #180, but nothing could be
plugged into them:
[scsi]only fitted the Zorro controllers, so a big-boxmachine still needed an A2091/A4091 or a
[[filesys]]mount to boot.[scsi] controller = "a3000"now fits the drives to the SDMAC's WD33C93. It isthe default controller on a machine that has a Super DMAC, so on an A3000 a bare
is enough. Unlike the Zorro boards it takes no boot ROM - Kickstart's own
scsi.device drives it - so the config rejects
rom =there, and rejects thecontroller entirely on a machine without the silicon. A Zorro board still fits
an A3000 if you name it explicitly.
The launcher's SCSI picker gains an "A3000 (onboard)" entry, offered only where
the hardware is, with the ROM row greyed out. Switching the profile away from
the A3000 moves a fitted onboard controller back to the A2091, so the drives
survive the change rather than failing validation on Run.
The SDMAC and WD33C93 emulation needed no changes.
Tested by booting an A3000 with an RDB HDF on unit 0 and nothing else to boot
from: Kickstart selects the target, reads the RDB, mounts and autoboots to
Workbench.
🤖 Generated with Claude Code