Catweasel Mk4
A PCI card by Individual Computers — a floppy controller for Amiga and C64 disks with a digital-joystick port — that also carries two sid sockets, so a PC can play .sid files through a real 6581 and a real 8580 and pick the chip from the tune's model flag; Stefano Tognon documented it, and the trouble he had with it, in two sidin articles of 2005–06 (sources: s-sidin08-catweasel-mk4, s-sidin09-catweasel-6581). goattracker lists the CatWeasel beside the HardSID as supported hardware.
Facts#
- Why two sockets: the HardSID "only supports one sid chip"; with a 6581 and an 8580 on one card "we can … listen to all the tunes with the right chip", and White's driver "automatically choose the right sid chip … that is specified into the sid chip model inside the tune" (sid-format). The sockets have gold contacts; a jumper per socket selects 6581 or 8580 (photos on the driver CD); a CD-ROM-style cable takes the audio to the sound card's CD or AUX input (source: s-sidin08-catweasel-mk4). The SID is mono: "chip 0 is passed into right sound card canal, while chip 1 is passed into left channel" (source: s-sidin09-catweasel-6581).
- Lineage and announced features (SIDin's news pages): the MK3 PCI/Flipper (2003-02-07) took one 6581 or 8580 with a "programmable switch to PAL and NTSC frequency"; the MK4 was announced in July 2004 with a DC-DC converter against noise from graphics cards and drives, "Cycle-exact control" through a script language and a FIFO, "Digiboost for new SID versions" (two sigma-delta converters restoring the fourth voice on 8580/6582), filter capacitors "chosen with a few jumpers" (Commodore's three values), the 8701 clock chip cloned in the FPGA with PAL/NTSC software-selectable, two SIDs for stereo and drivers for Linux, Windows and AmigaOS 4 — while the #8 editorial still said "at the moment it cannot be used for sid music :("; the MK4plus (2010-06-28) replaced the "sold out and discontinued" MK4 with better SID-socket placement, more audio filtering and an external jack. Software with Catweasel output in the same news: ACID 64 (2.0.3 promised MK4 support; 2.2–2.4 of 2008 "Increased FIFO memory on Catweasel MK4 for better playback of digi tunes"), SIDPlayer 4.3 (
--cwsid on), SIDPLAY for Mac OS X 3.1.2 (MK3) and GoatTracker 1.4 for Mac OS X (source: s-sidin-news-digest). - What a SID card must do: clock the chip at PAL/NTSC speed, write each register "at the same time the real C64 puts it into the sid", and provide C64-like filter capacitors; the Mk4 does the first and third in hardware and solves the second with a hardware buffer — a timed command list (
DELAY … / PUT value TO register …) that the card replays with its own timing, so the host OS's I/O latency no longer reaches the chip; only an empty buffer breaks the sound (source: s-sidin09-catweasel-6581). - Linux software (2005–06): Simon White's hardsid kernel module (
hardsid.sf.net; "HardSID Driver v0.17-dev", firmwarecmk4.fw0.029 loaded from/lib/firmware;/dev/sid,/proc/hardsid) in three flavours — Head (no hardware buffer), Experimental (hardware buffer; branchexperimental_cmk4) and the merged rt_async — plus libsidplay2's hardsid builder; consumers were sidplay2 (--hardsid), xsidplay (swapreSidBuilderforhardsidBuilder) and vice 1.18 (Unix; "Hardsid below Resid in the sid settings"); GoatTracker "support MK3 card" and detected the Mk4 (sources: s-sidin08-catweasel-mk4, s-sidin09-catweasel-6581). - Known problems found by Tognon: early cards with an untested DC-DC converter (low volume, dropouts, sound tied to desktop activity); the experimental driver had chip 1's timing disabled ("synchronized with chip 0") — hyper-speed playback until he patched it; the Head driver mis-detected his 6581 as an 8580 and saw a chip in the empty socket, because there are "two MK4 version and one like the mine did not have pull ups/downs in the bus" (both fixed by White); the Head driver froze his kernel; playback pauses leave the last note sounding (sources: s-sidin08-catweasel-mk4, s-sidin09-catweasel-6581).
- How it sounded (a 6581 in the card, fixed driver): Ocean Loader 4/5 "almost 99%", Tusker about 75%, Last Ninja 2 "40% right" with volume drops and silences; Nulone's low-pass-filtered voices vanished until the
$D417writes were patched out; a second 6581 (1984 vs 1986 date) behaved the same, so "there is an hardware issue regarding filter" and a separate muting problem; a friend's Mk4 with an 8580 played Last Ninja 2 correctly under Windows (source: s-sidin09-catweasel-6581). Details and the sid2midi dumps: sid, filter-programming. - CPU cost on a 266 MHz PC: xsidplay 30% with reSID (fast mode) vs 15% with the card; kernel I/O 20% without the hardware buffer vs 1% with it (source: s-sidin09-catweasel-6581).
Cheat sheet#
Linux commands and options as printed in the two articles (2005–06 software; kept as a record):
| step | command / setting |
|---|---|
| build the driver | make in the hardsid directory, make install as root; on kernel 2.6 udev creates /dev/sid (the readme's mknod /dev/sid0 c 60 0 … is obsolete) |
| firmware | copy cmk4.fw to /lib/firmware (Fedora Core 3), restart the driver; check /proc/hardsid → "Catweasel MK4 configured for port 0xe800 (firmware 0.029) / SID type 6581" |
| build the players | in each module: ./bootstrap, ./configure, make, make install |
| sidplay2 | --hardsid (shown only when a card is detected); -fd force dual SID; -ns[0|1] 8580 waveforms; -nf[filter] filter emulation; -s[l|r] stereo / one channel |
| VICE 1.18 | compiled with hardsid support auto-detected; choose Hardsid in the SID settings |
| record the card | amixer set CD cap, play through aRts, record with KRec |
(sources: s-sidin08-catweasel-mk4, s-sidin09-catweasel-6581)
Related#
sid · commodore-64 · vice · goattracker · sid-format · filter-programming · hard-restart · sidin
Sources#
s-sidin08-catweasel-mk4 · s-sidin09-catweasel-6581 · s-sidin-news-digest