I have an ATMega328p-based board I created for another project, which streams 44 KHz WAV files from an SD card and pipes them through a DAC, amp, and then a small speaker. By stripping out some stuff it doesn't need (like an on-board high precision RTC) and changing it to fit whatever DC power is readily available inside the Altair case, I could easily redesign it to be an inexpensive audio module that plays disk drive WAV samples.
I only have one question: what signal is available on the Altair Clone that can communicate information about the disk drive? Is it a one-pin solution, or can something more complicated (two-wire) be available?
It'll have to be a one-wire signal to choose between head load, unload, and step. I can incorporate this into a future release of the Clone firmware. I'll try to spend some time and define this interface soon.
+12v is available off the power supply or at the fan connector on the PCB. The fan connector is switched with the front panel and various in-line and "Y" fan connectors are readily available.
Does anyone have any recordings of the sounds to be used? I have my breadboard up and running with a nice and loud amp (TPA2005D1), and ready to test.
I have two 8" floppy drives on my S-100 bus computer, but I've been having intermittent failures with both of them, and very rarely can I even get into CP/M. I also wonder if it'd be possible to disconnect the drive motor to get the recordings, as it'd add a lot of unwanted noise, as Mike said.
If the HLDA signal/pin is potentially being cannibalized for this project... and if it is the last I/O that could possibly be used for something... I wonder it would not be a good idea to implement a 1-Wire interface on this pin. Then multiple (255?) devices could be addressed by signals on this pin. For example something like this DS2408 could be used to provide parallel I/O. Perhaps to control a sound generator. There are probably better chips than the 2408 but I couldn't find one real quick. There should be something like a shift register that is fed by 1-Wire protocol. It'd be really cool if this could be used to simlulate (emulate?) a 88_4PIO.
No real idea how hard a 1-Wire interface is to implement. Many microcontrollers have 1-Wire in hardware for a couple pins. No idea about this pin on this microcontroller. I imagine it is a lot of work for Mike in the firmware. But just dreamin' and figured I'd toss it out there.
That'd be great, if it's basically an expansion port for future projects. I wonder how many clock cycles are available to address multiple devices, however.
For my part, I improved my project to now play the sound of a 8" disk motor for an arbitrary amount of time, and then audio samples can be played on top of it, mixed in software. I also managed to record my 8" drive and got some samples that I think are clean enough to work with.
I'll probably store them in an SD card (which makes them easy to change out), but they could also be stored with some soldered-on flash memory.
Unfortunately, none of the unused function blocks in the PIC can be assigned to the pin that drives HLDA and there is not enough CPU time left to do any sort of significant data transfer over the pin by bit fiddling - especially input. I'm afraid we're not going to squeeze much additional functionality out of the pin.