I have not posted anything about this recently, this is one of the other projects I have been playing with. The goal is to create a PCMCIA soundcard that has the following featureset:

  • Yamaha OPL3 on the expected 388h address (this is done and working)
  • MPU-401 with full intelligent mode on the expected 330h (this is done and working)
  • Onboard Dream.fr wavetable general midi chip connected to the output of the MPU-401 (tested and working)
  • Option to disable onboard wavetable and only use external midi dongle
  • Gameport on the expected 200h – 207h (working but needs to be optional to enable/disable).
  • Digital audio via fully soundblaster compatible interface.

There are very few cards that ever existed that provided SoundBlaster support (IBM 3D Sound PCMCIA), and they are near impossible to find for purchase, so it lead me down the path to make one.

The learning curve has been steep as this project covers multiple areas all of which I was unfamiliar with at the start (and am now slightly familiar with). I got a general proof of concept working pretty quickly but spent too much time playing with wav files and large transfers (i.e. sbdiag tada.wav).       

My recent reworking of how I was hooking interruptsĀ  solved some other issues I was having with protected mode games so I started to do some better testing on Doom,Duke3D etc and this is when I came to realize that they only use 4k or smaller buffers and the actual transfers are 128 bytes or 256 bytes per autoinit cycle. This totally makes sense given the realtime nature of sound effects during unpredictable gameplay.

I currently refill the 4K DSP every time it drops below half-full.  This is not going to work. So I need to think about a better way to handle this.

I was avoiding modifying the DSP code,  but for no good reason really.  I think it is time I modify the DSP code so that my TSR can have complete visibility into how many bytes are being expected during autoinit mode.  I am going to think about it a bit.

I am still alive and working on the project, mainly I have been messing around with this idea for the keyboard light, and generally just trying to optimize the 3D model for the bezel.

Something I have noticed is that I can hear a slight buzz from the onboard speaker and headphones when volume is turned up to full and no sound is playing which is most likely originating from the DC-DC converters. I am going to look into that some more and try to cancel that out with some better filtering on the power supply side of things. It seems that even an unmodified PC110 has this noise when the volume is turned all the way up, even with no inverter connected at all.

The BIOS patch is about ready, it works properly I have just been working on proper safeguards (making sure on a/c power and battery is charged etc).

Here is the current revision of the board. I was not paying attention and I ran those traces too close to that mounting hole, not a major issue as the screw goes into plastic and is not tight enough to damage the solder mask, but still not proper I will move it. DC-DC converts of course are on the back as seen in some other photos.

Here is the keyboard light in action, on one of them is working as I broke the other one and I was lazy to deal with it. Maybe only one LED is needed (if any really).

And here is the 3D printed bezel poorly painted just to see if it would block the light (it does). Feels strange without the IBM logo.

And here are just some random pictures working of 3D model progress.