I recently found out that MAME has a driver in early development for the famous Fairlight CMI, the world's first digital sampler. Huge thanks to Just Desserts and Phil Bennett for their phenomenal work on the driver so far!
Currently, the driver will only allow the machine to boot into diagnostic disks. Regular Fairlight System Disks don't boot as of yet.
As a big fan of MAME and this historical machine, I decided to look into the diagnostic disks for the machine and see if I can figure out what is causing the machine to not boot those System Disks. Using "QDOSDIAG.IMD" from Fairlight US's website, we have several tests we can run from this disk image.
The first one is CMITST. You can use LIST to list all the avaliable tests functions that are inside CMITST. We're going to do a couple here. Some don't work because they deal with the analog filters and other components that aren't implemented yet (to my knowledge).
The memory test (MEM) on the channel cards pass!
You maybe wondering what "Segment Random Access" means. Fairlight liked to use several unique terms for digital audio that we don't use today. Instead of letting the user have the ability to edit every single PCM audio data sample inside a Fairlight sound file (file extention *.VC), the user edits "segments" of a sound, which basically a chunk of the PCM audio data, 128 samples in length. Every VC file has 128 segments in it. If we were to look at the raw PCM audio data from a VC file, you would see that there are exactly 16384 samples in it. 128 (samples) * 128 (segments) = 16384 samples. So, in that "Segment Random Access" test, it is randomly selecting one of the 128 segments that comprise the PCM data in the channel card RAM.
The DUMP command allows us to look at one of these segments in the Channel Card RAM.
The TIM command tests the Timer on the 6840. The CMI IIx Service manual explains what the test do in detail on page 86.
The RAMP command deals with Envelope Control and actually produces sound (albeit glitchy). The VOL command also produces sound as well. This command requires you to hit the spacebar to continue with the next RAMP test.
The PIT command doesn't pass, which deals with the master pitch rate multipliers on the Channel Cards.
So with the exception of a couple of the tests, everything else seems to pass.
Then we run CMIINT, which tests all the Interrupts in the CMI. Immediately, we see something is not right.
All the Interrupts are listed as active:
Hopefully, with further testing and debugging, we can soon boot into the CMI system disks. Speaking of system disks, I loaded an earlier revision of the system disks (V12, instead of V19) and got this screen without any crashes from MAME:
We're getting close!