• Please review our updated Terms and Rules here

XT compatible Sound Blaster 16 models

aitotat

Experienced Member
Joined
Aug 13, 2009
Messages
351
Location
Finland
I remember reading somewhere (maybe here) that Sound Blaster 16 can be used on XT systems. Of course only 8-bit features work so that would mean SB16 on XT is basically the same as Sound Blaster Pro 2.

Most interesting SB16 model in my opinion is CT2290. That is because it is the only non-PnP SB16 with real IDE interface. XTIDE Universal BIOS now has 8-bit mode for 16-bit IDE Controllers (only for Microdrives and CF cards) so that would make CT2290 best sound card for XT-systems. Good news: the IDE interface on CT2290 works. Bad news is that sound does not. That is because diagnose.exe freezes. Most likely it requires 286 instructions and does not work on 8088.

The oldest SB16 models (CT17xx) do not require diagnose.exe to initialize the card since all settings are set with jumpers. So I tried CT1740. There seemed to be some hardware conflict since XTIDE Universal BIOS did not find any drives (not from XT-CF or 16-bit Multi I/O card) when CT1740 was installed. I tried one by one all different ports, interrups and low DMA channels and the problem remained.

Finally I decided to remove high DMA channel jumpers completely. I didn't think those mattered since it was on 8-bit bus but it did. Without the high DMA jumpers everything finally worked, drive was detected and I could hear FM music and sound effects from Prince of Persia. CT1740 is definitely XT compatible.

But it is the CT2290 I'd like to get working. Is there 8088 compatible version of diagnose.exe or has someone made an alternative to it?
 
About the CT1740, it has a proprietary CDROM port, the 44 pin header is not a standard IDE port.

There are more non-PnP SB 16 models with real IDE interface like the CT2910 (it doesn't require diagnose.exe) or the CT2800 VIBRA (i specially like this one because it is small)

I did successfully configure a CT2290 in a XT using the debug dos utility instead of diagnose.exe. Let me find where I put the text file with the orders...

EDIT: Here it is:
Code:
o 224 80
o 225 02
o 224 81
o 225 02
q

If I remember well, this configures A220 I5 D1
 
Last edited:
Those worked and CT2290 produces sound!

I did noticed one other thing. This is unrelated to getting SB16 to work in XT systems but I might as well ask here. What I noticed is that CT2290 maps tertiary and quaternary IDE Control Block Registers to 370h, exactly where Secondary IDE Control Block registers are.

I'm not entirely sure where those should be (there are not many controllers with Tertiary and Quaternary IDE) so I've assumed base port + 200h (like Primary and Secondary IDE). Bochs maps them to 3E0h and 360h but that's just about all the info I have (and that does not apply to CT2290). XTIDE Universal BIOS does not use Control Block Registers at the moment but I need Alternative Status Register for port and controller auto detection.
 
aitotat, great research! The SoundBlaster IDE channel was actually the reason for exploring the 16-bit-IDE-controller-in-an-XT idea!

Diagnose I think does run on a V20, whether it could be hacked to run on an 8088 came up before, but perhaps now there is a really compelling reason for some ASM expert to have a crack at it :D

Diagnose.exe was apparently written in C, and it's clear enough for some disassemblers to easily decode the C routines. On the other hand, this makes it a bit more difficult to spot the low-level stuff since all of that is basically hidden under several extra layers of structure created by the compiler.
 
Cool, I think I'll have a go at it later too. I've got a few SB16 models around. I could make a tiny utility that sets the address, IRQ, and DMA automatically at boot-time too based on nestor's data.
 
The file pearce_jj sent is DIAGNOSE.EXE which, on cursory examination, appears to have been written in MSC v6.0 or v7.0. It most definitely uses the following 80286-isms:

ENTER/LEAVE
IMUL reg,reg,immed

(Ironically, it does NOT use REP INS/OUTS or SHx/ROx reg,immed or PUSHA/POPA like most 286 programs I have seen.) There are also a few large chunks of what looks like sound sample data stuck into the .exe.

The above instructions are used hundreds of times and it would take me at least a few weeks with no guarantee of success to try to patch/adjust for 808x. I'm really sorry, but with everything else on my plate, this isn't something I'm willing to take on at this time. If it was something really easy like one or two things, sure, but this is a major undertaking.

My advice: If you want to use an SB16 on an XT, replace the CPU with an NEC V20 (which will allow this program to run).
 
IDE + Sound with only one card wasn't quite as easy as I hoped. Not only the problematic initialization (any documentation about the initialization?) but XT BIOS doesn't scan ROM Basic memory areas. I was hoping to insert XTIDE Universal BIOS on one of the four empty ROM sockets meant for ROM Basic. The BIOS was not detected. It shouldn't be hard to modify Super PC/Turbo XT BIOS but there is still the SB16 initialization problem.

More about Tertiary and Quaternary IDE. I tried Promise FloppyMAX. It is essentially the same as EIDEMAX but instead of primary and secondary IDE the FloppyMax has Tertiary and Quaternary IDE. Command Block ports start from 1E8h and 168h, just like on SB16. The Promise did have Control Block ports start at 3E8h and 368h, just where I initially expected them to be. SB16 maps them to 370h. That can be problematic since resetting Secondary IDE might reset what ever is connected to SB16 Tertiary or Quaternary IDE (and vice versa).
 
XT BIOS doesn't scan ROM Basic memory areas. I was hoping to insert XTIDE Universal BIOS on one of the four empty ROM sockets meant for ROM Basic. The BIOS was not detected.

I'm interested in this, as I'm doing something similar in my IBM PS/1 model 2011. I removed the BASIC image from the ROM and modify the BIOS rutine to perform a ROM Extension search in F000 segment. I put then the XT-IDE universal bios in that empty space, but it is not found. If i put a floppy bios extension instead, it is detected and initializated correctly.
What can be preventing the XT-IDE Universal Bios to run in that address?
 
Segment address shouldn't matter. Did you use xtidecfg.com or something else to set checksum byte?
 
I used a little program that I made to calculate the checksum byte, and set it with an hex editor. I also had to set the checksum byte of the entire ROM image because this Option ROM is inside it.
 
Back
Top