VOGONS


First post, by jxalex

User metadata
Rank Member
Rank
Member

I thought to lay out my thoughts before starting. Someone might have done perhaps?

In the CS4231A chip the datasheet provides info which is enough to make a complete soundcard. HOwever I
came to another thought after reading it, that it can be developed even further!

What about a soundcard which matches the following criteria:
1. works under the DOS software
2. on the ISA bus,
2. 24 bit dac/adc, fullduplex, single/double DMA channels switchable. 32..96kHz
3. has SPDIF AES/EBU for both input and output in order to use also the 24..32 bit external converters, wordclock
4. BUT ALSO can emulate the SB16 by hardware when just during initialization switch some registers.
5. onboard MPEG decoder (imagine mp3 player on your 386 machine, so far the requirement for software processing atleast 80..100Mhz 486 for 256kbit stream !)

So far there is no such card or its software does not run under the DOS, nor does not emulate SB16..32..64.

The simplest way to start is just to have the playback and recording. All other necessities like mixer and such can be added later if someone wants, himself.
The MIDI port and all other things can we add later, but these are the things just to start on and simplest is just to start with wave playback and record.

It is meant for some serious recording and playback for studio, but can be a great if can be used as SB emulation too.

Well?
I can make the hardware part, and the programs which under the DOS use it, however
I need your help in order to have in hardware the SoundBlaster emulation capability too!
This becouse I am not familiar the card initialization procedure of these SoundBlaster cards in order to make it SB compatible. At first it will be done as a card to ISA bus which then interfaces the AES/EBU interfaces.

I think it IS possible to make a hardware clone which can behave like a SB card.
Those who have made some programming on the SB cards under the DOS, can you tell me...
* how much FIFO buffers these card use between the BUS and DAC?
* how the system initializes SB card and recognize its "answers" ?
* the sound with DMA transaction.
* how they start/stop sound buffers or initialize the sampling rates

It is also possible to make on PCI, however we already know how many incompatibility with SB it is, so it may be an option to those who may want to use the multitracking capability what is available with the PCI bus speed card model... 😉

SO far I made some 8x8 port ISA-bus I/O card. So some hardware electronics has been done already.

If we just make the research and development here in a open way then we all just make it.
So, another reverse-engineering-upgrade project of the sound cards.
Tervitused p6hjamaalt! 😉

Last edited by jxalex on 2018-09-16, 18:21. Edited 1 time in total.

Current project: DOS ISA soundcard with 24bit/96Khz digital I/O, SB16 compatible switchable.
newly made SB-clone ...with 24bit and AES/EBU... join in development!

Reply 1 of 38, by Jo22

User metadata
Rank l33t++
Rank
l33t++

I like the idea of 24-Bit and SPDIF, would be cool for Amiga trackers. 😁
(If there's any FM chip to go on board, too, an OPL4 clone/FPGA with sample RAM would cool!)

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 2 of 38, by jxalex

User metadata
Rank Member
Rank
Member

yes.
does the amiga uses the single-transfer DMA or a block DMA?

still... how much FIFO buffers would be adequate ? how much is sitting on those SB cards?

Current project: DOS ISA soundcard with 24bit/96Khz digital I/O, SB16 compatible switchable.
newly made SB-clone ...with 24bit and AES/EBU... join in development!

Reply 3 of 38, by jxalex

User metadata
Rank Member
Rank
Member

well, now I found THIS: https://pdos.csail.mit.edu/6.828/2008/reading … oundBlaster.pdf

it says some information, however the missing part is that when giving the commands about the sampling rates, and other commands, that what are the limits or values what the actual cards use.
Also, when using the autoinitialize-DMA, then what is the FIFO size on the cards and what are the values used?
So, some real hardware details are missing.

Searched for the Soundblaster developers kit programmers manual for this information, but without success.
The programmers heaven seems like have called off the dos sound programming files, however I miss them, or becouse of their new messy webpage I got lost, however it gave me zero results when I searched "soundblaster" or "Gravis" word on sound category. 😉

Current project: DOS ISA soundcard with 24bit/96Khz digital I/O, SB16 compatible switchable.
newly made SB-clone ...with 24bit and AES/EBU... join in development!

Reply 4 of 38, by jxalex

User metadata
Rank Member
Rank
Member

I searched some fifo chips.

320K x 8bit organization chip -
This is some FIFO chip however it is with some odd requirements -- the read operation must be after 128 write cycles and clocks must be atleast 1Mhz)
The other chips 1K/2K/4K/8K/16K x 9bit are more expensive (6USD chip), but from not from recommended sellers and uncertain if there are available enough of these if some other fellows want the soundcard too.

one schematic solution: with the FIFOs, and then the interrupt driving is with PIC and then the AES/EBU coder circuit.
Another solution is when the FIFOs are replaced with the SRAM buffer circuits (while to one memory chip the new data is written the another memory chip is read out). It is rather bulky but guaranteed the availability of the not so common chips and simpler to build the PCBs.

The third solution:
To make the card with 1-2 fast MCU based which interfaces the bus and SRAM and DACs. But then it should be
someone who could recommend that.
Some ramblings:

So far I did all things with simple logic chips when making the parallel to serial converter in order to add the 24bit sigma-delta DAC and AES/EBU output to a Roland D550 synthesizer, it consisted with 12 chips, but simple design. So I thought that why not to make with the same approach the soundcard too, becouse atleast there is no need for a expensive programmers or the latest programming environments for the MCU programming for this task.
Well... perhaps someone can find a way how a ISA bus interfacing circuit can be reduced to 5..6 chips from my initial schematic with 20 logic chips and 4 RAM chips, (and which is for playback only!). For fullduplex the amount of chips will be double.

which will be the parallel to serial converter chip capable of making the serial bit stream with 3Mbit/s ?
16c552 is up to 1Mbit

The CPU / MCU... which ones are possible to have the 16-bit I/O port to ISA bus, 8bit bus for SRAM and 8bit for DAC, or just to have several buffered I2S outputs and inputs? A bit newer 32bit Microchip PICs ? still here the help is needed

Current project: DOS ISA soundcard with 24bit/96Khz digital I/O, SB16 compatible switchable.
newly made SB-clone ...with 24bit and AES/EBU... join in development!

Reply 5 of 38, by jxalex

User metadata
Rank Member
Rank
Member

PIC32MZ0512EFK144

hmmm...?

only if anyone of us can solder to a pcb this circuit. otherwise we need to seek something with smaller amount of pins and with wider spacing.

perhaps the

PIC32MZxxxx series ?

Current project: DOS ISA soundcard with 24bit/96Khz digital I/O, SB16 compatible switchable.
newly made SB-clone ...with 24bit and AES/EBU... join in development!

Reply 6 of 38, by Jo22

User metadata
Rank l33t++
Rank
l33t++
jxalex wrote:

Searched for the Soundblaster developers kit programmers manual for this information, but without success.

Hi, did you check the Thunder Board Programmer's Reference, too ?

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 7 of 38, by jxalex

User metadata
Rank Member
Rank
Member
Jo22 wrote:
jxalex wrote:

Searched for the Soundblaster developers kit programmers manual for this information, but without success.

Hi, did you check the Thunder Board Programmer's Reference, too ?

yes. There is nothing said about the block sizes not even in the programming examples.

0. the hardware cards transfer buffer size, or if it has any buffers at all.
1. the size of the DMA blocks used for continuous dma transfer
(and if that DMA transfer is paused several times and in reality it is transferred one byte at a time.)

what is needed to know is that if just one byte buffer at the card is enough for DMA transfers or there should be 32...64kB FIFO, or shared in the blocks.

Well, thing is that sound transfer for 16bit DMA can be also with 32kB chunks, but it does not really make sense if the soundcard has just 1 byte buffer which means the excessive DMA transfer putting on hold.

[EDIT]
now I am getting somewhere: in a CS4231A datasheet (the DAC used on a Gravis Ultrasound MAX) this is the first place when I see some concrete numbers about hardware card -- this DAC uses 16 samples FIFO.
FYI the software in windows transfers the sound in 8192 byte chunks.

Now how are the numbers compared to SOundblaster 16 ASP or SOundblaster 32 and 64 cards... ?

Current project: DOS ISA soundcard with 24bit/96Khz digital I/O, SB16 compatible switchable.
newly made SB-clone ...with 24bit and AES/EBU... join in development!

Reply 8 of 38, by Jo22

User metadata
Rank l33t++
Rank
l33t++

What about third-party books made of paper ?
I once had a Sound Blaster book that described programming and such.

https://www.amazon.com/Ultimate-Sound-Blaster … k/dp/1565292987
https://www.amazon.com/Sound-Blaster-Book-Axe … z/dp/1557551812
https://www.amazon.de/gp/search?index=books&l … s=9780078820007
https://www.pcgamer.com/author-of-sound-blast … ys-of-pc-audio/

They all seem to be pretty cheap - about $3 each. 😀
if you're lucky your local library still has them (not thrown in the dumpster yet).

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 9 of 38, by jxalex

User metadata
Rank Member
Rank
Member

well, it is more complicated. THe programming example says that the block size can be 32 or 64kB, depending on the 8 or 16 bit DMA transfer, but the examples say nothing about the hardware.

what I need to know is this: how big FIFO buffer chip I should use in my schematic design when making a clone soundcard!
Also, what is the maximum DMA transfer burst size for ISA bus?
That determines the FIFO bufer size.

in my local library, and neither in the state library there are not such books.

by the way, what are the other DAC chips the SB cards use?

Current project: DOS ISA soundcard with 24bit/96Khz digital I/O, SB16 compatible switchable.
newly made SB-clone ...with 24bit and AES/EBU... join in development!

Reply 10 of 38, by Jo22

User metadata
Rank l33t++
Rank
l33t++

The Sound Blaster 1.x series had a MC1408 D/A converter, I believe.
Datasheet is available here.

The Sound Blaster DSP was just a simple microcontroller. 8051 or similar, I believe.
http://www.os2museum.com/wp/sound-blaster-the … nch-connection/

Edit: Also interesting: https://ancientelectronics.wordpress.com/tag/ … nd-blaster-1-5/

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 11 of 38, by jxalex

User metadata
Rank Member
Rank
Member

reading the ISA bus architecture, and "The undocumented PC"

well... the DMA max transfer capacity is 2MB/s in a 16bit mode,
the memory refresh is after every 15 uS, thus the DMA must pause its operation for a moment?

with speed where system allows lousier refresh (anything in pentiums?) then in a 32 microseconds it transfers - 64bytes total, thus 32 bytes for a low and 32 bytes for a high bus fifo would be enough with such systems.

or how?

Current project: DOS ISA soundcard with 24bit/96Khz digital I/O, SB16 compatible switchable.
newly made SB-clone ...with 24bit and AES/EBU... join in development!

Reply 12 of 38, by jxalex

User metadata
Rank Member
Rank
Member

after some research I thought to go for a some simpler solution.

the cypress supplied some fifo memories ranging from 64 to 4096 x9 size.
64x9 and 512x9 are the ones which are available through feebay, so, choosing the 512 for experiment would be generous enough.
price $1.5/pcs. Using 4 of them (2 for record and 2 for playback buffer, in order to use as double buffer DMA).

CS8401...6 as TX and , CS8414...16 as RX chips for AES/EBU/SPDIF.
one of each, price varying from $1.5.. $3.5

also 4 of the 74 LS/HC/AC/ACT 245 are used.

Adress decoding circuits ( K155ID7 / 74HC138 / 74 LS138 )

The next ones are the microCPU which is controlling all of it. PIC16F870 should be enough for this perhaps to catch and send the DMA request signals?
Then perhaps soon the card with digital input/output would be ready, which is estimated to work with ca 96kHz 24bit, but can also emulate the soundblaster.

at first the playback, then the record side should be added to schematic.

Current project: DOS ISA soundcard with 24bit/96Khz digital I/O, SB16 compatible switchable.
newly made SB-clone ...with 24bit and AES/EBU... join in development!

Reply 13 of 38, by jxalex

User metadata
Rank Member
Rank
Member

for a wide sample rate compatibility for playback the AK4125 / SRC4192 and other sample rate converters can be used.

will be optional as it does not affect the main schematic design which can handle everything from 32kHz.

Current project: DOS ISA soundcard with 24bit/96Khz digital I/O, SB16 compatible switchable.
newly made SB-clone ...with 24bit and AES/EBU... join in development!

Reply 14 of 38, by jxalex

User metadata
Rank Member
Rank
Member

Lets see... there is a possibility to make a card with a Bus Mastering capability.
Has anyone experience with this? Well, I hope it IS still a right forum for this hardware development.

There is not so much information about bus mastering, (IF making such card yourself!) which uses this or how the whole protocol should see -- the adresses for memory writes, the timing for data latching and memory read/write signals while bus mastering?).

So far the cards (ESS, Gravis Ultrasound) does not even use the #MASTER16 signal pin.

The ancient DMA chip runs on a 4..4.1Mhz speed.
HOwever how much shorter the DMA transaction will be with a 8MHz speed? It will not be precisely 2x shorter becouse the DMA controller still is responsible for the HOLD/HLDA signals
So, if to use for transfers the 8Mhz with on soundcard board busmastering?
If it could be done then anyway it could result for multitrack or a lighter system overhead with DMA transfers.

(On a sidenote, the hardware MPU401 add-on seems not so much a big deal as it requires 2 ports only, can be done too.)

Current project: DOS ISA soundcard with 24bit/96Khz digital I/O, SB16 compatible switchable.
newly made SB-clone ...with 24bit and AES/EBU... join in development!

Reply 15 of 38, by Tiido

User metadata
Rank l33t
Rank
l33t

Sound cards and most other stuff besides some SCSI controllers do not use ISA bus mastering, only DMA. DRQ, DACK and AEN are all that's needed to complete a DMA cycle.

T-04YBSC, a new YMF71x based sound card & Official VOGONS thread about it
Newly made 4MB 60ns 30pin SIMMs ~
mida sa loed ? nagunii aru ei saa 😜

Reply 17 of 38, by jxalex

User metadata
Rank Member
Rank
Member

Tere kolleeg, s.t. veel yx petsukate kaardi ehitaja. 😉 😀

not so fast, the ADAPTEC1542 uses the bus mastering, however, I am curious that how much it will benefit over the oldfashioned motherboard DMA controller?

1. the bus mastering capability of the card, does the software must be aware of that OR all is the same?
2. does the bus mastering capability can have shorter DMA transaction times also with single cycle dma transfer and autoinit DMA transfers OR it is beneficial only for atleast with block transfer?

In ideal way I suppose the programming the DMA controller would be the same, except the card behaviour is much lighter load... so it will be like the soundblaster card but which completes the DMA transfers with much shorter cycles and thus the CPU has more time,

Unfortunately there is not so much information about bus mastering and DMA transfer which is helpful for expansion card development.
"ISA bus architecture" book has very brief for both DMA and bus mastering, I wish there would be also very comprehensive information about that too somewhere (Just look how comprehensive and in detail the same book describes the IO and memory writing in timing graphs, but on contrary just one graph for entire DMA chapter).

Without bus mastering the project will be very much simpler, but I have a alpinist complex -- need to do it "becouse it is there". 😀 On the old days it was not done becouse perhaps it was a way too expensive to implement and increases the card cost, but just now why not to use everything possible to have all that speed and configurable options we could just dream about.

Current project: DOS ISA soundcard with 24bit/96Khz digital I/O, SB16 compatible switchable.
newly made SB-clone ...with 24bit and AES/EBU... join in development!

Reply 18 of 38, by Tiido

User metadata
Rank l33t
Rank
l33t

For bus mastering the card will do most of the heavy work, meaning it needs to be programmed with where the buffers are and whatnot but that's not how any sound card works. Games program the DMA controller and then the controller will just wait for a DMAREQ, once that happens it'll put data on the bus and then controller puts data on the bus and sends DMACK to the card, card will see it, capture the data and deassert DMAREQ. Controller sees that, removes DMACK and and cycle is completed.

T-04YBSC, a new YMF71x based sound card & Official VOGONS thread about it
Newly made 4MB 60ns 30pin SIMMs ~
mida sa loed ? nagunii aru ei saa 😜

Reply 19 of 38, by jxalex

User metadata
Rank Member
Rank
Member

Hello colleauges engineers and gentlemen.

reading the 8257 and 8237 datasheets...
IF I might understood correctly then from the ISA bus the soundcard must use
for DMA transfer the following signal lines
DREQn
DMACK
IRQ
AEN
and IOWRITE or IOREAD ?
also must watch the TC pin

okay, so far so good, BUT now the thing -- is that is THE SAME CHIP --- 8237 used also on the peripheral cards just as it is on motherboards? So just to use that can simplify many steps in design for others too who want to make their clone. (well I was almost ready to make a dma controller consisting of dozen logic circuits).
Also, what is the difference between 8259 and 8237 ?
And for the model, should be the 5Mhz version then enough ? If understanding correctly then the 80486 and pentium motherboards with ISA bus have still the DMA chip with 4.77Mhz clock or half of the ISA bus clock which is aprox 8.33MHz depending on some tweaks?
BUT the dma clock can be 5.5MHz on a systems where ISA bus clock might be clocked to 11Mhz?

I think that to get from that DMA controller the signals that now the data is coming or ready to read is enough which to tie to the buffers.

What you think? It should be possible to use on the bus by hooking to the ISA-bus pin the 8257 HRQ pin, and to the DMACK pin that HLDA pin... ? 😉

OR do you have some another idea what works actually?

Then the next bit can be something to put between the IO bus and DMA controller in order to program it. PIC16f870 at 20Mhz perhaps which takes care of the other soundcard internal logic?

Current project: DOS ISA soundcard with 24bit/96Khz digital I/O, SB16 compatible switchable.
newly made SB-clone ...with 24bit and AES/EBU... join in development!