VOGONS


FMonster, the monster of sound synth

Topic actions

Reply 80 of 275, by Fagear

User metadata
Rank Member
Rank
Member

It's time to optimize again! 🤣 With that many ICs on the maximum size board it is always important.
Remember when OPL2 block was shrinked from 59 mm to 49 mm?

OPL2_2018-05-25_02.png
Filename
OPL2_2018-05-25_02.png
File size
66.16 KiB
Views
1630 views
File comment
OPL2 stage 2: 49 mm
File license
Fair use/fair dealing exception

Now it was shrinked again to 37 mm.

OPL2_2018-08-16.png
Filename
OPL2_2018-08-16.png
File size
57.16 KiB
Views
1630 views
File comment
OPL2 stage 3: 37 mm
File license
Fair use/fair dealing exception

I've ditched IRQ jumper block and added part of the mixer - OPL2 volume control.
Now the biggest block is ISSI... I have to think about it more.

Update on production: debug boards are almost ready for shipment to me.

New BIG soundcard: FMonster.
Covox Sound Master replica
Innovation SSI-2001 replica & DuoSID.
My audio/video collection.

Reply 81 of 275, by Tiido

User metadata
Rank l33t
Rank
l33t

There is one thing I suggest you add, which is at least 12bit address decode. With 10 bits you get lot of mirrors which can make coexisting with other devices difficult, i.e something on your card at $210 will also appear at $610, $A10 and $E10. For example on my card some default addresses are $A20 and $A28 and with something that uses 10 bit decode there will be a clash at $220 and $228. Things like AWE32 cards and some others also put things at addresses beyond $3FF.
You could gate AEN if A10, A11 are not zero, it will only need one extra chip and won't require you to redesign any of the subcomponents. If the chip used allows more lines to be looked at, that would be good too. On my card there's 12 bit decode on chipset level and 16bit is achieved via CPLD looking if A12...A15 are zero and only passing AEN then.
EDIT: corrected a fault.

Last edited by Tiido on 2018-08-17, 00:52. Edited 1 time in total.

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 82 of 275, by Fagear

User metadata
Rank Member
Rank
Member
Tiido wrote:

There is one thing I suggest you add, which is at least 12bit address decode. With 10 bits you get lot of mirrors which can make coexisting with other devices difficult, i.e something on your card at $210 will also appear at $610, $A10 and $E10. For example on my card some default addresses are $A20 and $A28 and with something that uses 10 bit decode there will be a clash at $220 and $228. Things like AWE32 cards and some others also put things at addresses beyond $3FF.
You could gate AEN if A10, A11 are not zero, it will only need one extra chip and won't require you to redesign any of the subcomponents. If the chip used allows more lines to be looked at, that would be good too. On my card there's 12 bit decode on chipset level and 16bit is achieved via CPLD looking if A16...A19 are zero and only passing AEN then.

I've thought about that some time ago, but not long enough. That's a valid point.
On one side, all those boards that I cram in the FMonster were using 10-bit address just fine. But on the other side, if this board will be put in more "modern" machine with ISA 16-bit slots and more hardware...
Will 12 bit be enough? Even on the ISA 8-bit slot we have 20 bits of address (A0 to A19). What is reasonable limit for "address depth" to dive into?

New BIG soundcard: FMonster.
Covox Sound Master replica
Innovation SSI-2001 replica & DuoSID.
My audio/video collection.

Reply 83 of 275, by Tiido

User metadata
Rank l33t
Rank
l33t

I made a mistake in my last post, it is A12...A15 and not A16...A19, IO accesses can only span 0000...FFFF. I have not actually seen any ISA device that goes beyond 12bits but Multimedia PC specification calls for 16bit address decode and lot of sound chip datasheets I have looked at make it out to be a big deal too (but probably only to conform to MPC spec).
I have read that Pentium and newer boards where ISA is behind a bridge forward all 0000...0FFF to ISA but beyond only if a PCI device doesn't claim the access to itself. Probably applies to 486 with PCI slots too. I no longer remember the source but it probably was some chipset datasheet. So from that, 12 bits should definitely be done, then mirrors only happen in the "PCI area". More could be a bonus, if you can go for it, I could so I did.

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 84 of 275, by Fagear

User metadata
Rank Member
Rank
Member
Tiido wrote:

I made a mistake in my last post, it is A12...A15 and not A16...A19, IO accesses can only span 0000...FFFF. I have not actually seen any ISA device that goes beyond 12bits but Multimedia PC specification calls for 16bit address decode and lot of sound chip datasheets I have looked at make it out to be a big deal too (but probably only to conform to MPC spec).
I have read that Pentium and newer boards where ISA is behind a bridge forward all 0000...0FFF to ISA but beyond only if a PCI device doesn't claim the access to itself. Probably applies to 486 with PCI slots too. I no longer remember the source but it probably was some chipset datasheet. So from that, 12 bits should definitely be done, then mirrors only happen in the "PCI area". More could be a bonus, if you can go for it, I could so I did.

Thank you very much!
I think that throwing another 74HC138 will solve the problem. It can take up to five "0" inputs and give a "0" at the output.
For example, A -> A10, B -> A11, C -> A12, G2A -> A13, G2B -> AEN, G1 -> +5V. Take the "new" AEN from Y0 output and there you have 14-bit decoder. 😎

New BIG soundcard: FMonster.
Covox Sound Master replica
Innovation SSI-2001 replica & DuoSID.
My audio/video collection.

Reply 85 of 275, by Scali

User metadata
Rank l33t
Rank
l33t
Tiido wrote:

I have not actually seen any ISA device that goes beyond 12bits

The IBM Music Feature Card does, its base address is at 2A20h.
And this clashes with Game Blaster/Sound Blaster cards at 220h, because those only do 10-bit address decoding, so they mirror themselves in the IMFC address range.

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 86 of 275, by LABS

User metadata
Rank Member
Rank
Member

Using YM3812 in SOP24 might save some more space

f_4981741e042d4aa2b6261d9b6ccefcce.jpg
Filename
f_4981741e042d4aa2b6261d9b6ccefcce.jpg
File size
29.77 KiB
Views
1546 views
File license
Fair use/fair dealing exception

EDIT:

For decoding 12-bit address for space saving you can use only 2 ICs - one 74x138 and one 74x4075 (triple 3-input OR):
Route all constant 0s to 2 of 4075's ORs (A1, A2, A4, A6, A10, A11), output them to 3rd OR and also connect AEN here. Route variable A5, A7 and A8 to 138's A0-A2 inputs, constant 1 A9 to OE of 138, constant 1 A3 via free NOT on 74x04 to /OE1 and output from 3rd OR to /OE2. And corresponding outputs from 138 to jumpers.

Also you can use more relaxed filter on output - drop some caps and resistors. And use rail-to-rail opamp like LMC6484 instead of TL074 and get rid of two 9V regulators and still have enough headroom.

Blasterboard: DIY SB2-compatible sound card on ATmega MCU
Sonic Buster 8: New 8-bit ISA sound card

Reply 88 of 275, by Fagear

User metadata
Rank Member
Rank
Member
LABS wrote:

For decoding 12-bit address for space saving you can use only 2 ICs - one 74x138 and one 74x4075 (triple 3-input OR):
Route all constant 0s to 2 of 4075's ORs (A1, A2, A4, A6, A10, A11), output them to 3rd OR and also connect AEN here. Route variable A5, A7 and A8 to 138's A0-A2 inputs, constant 1 A9 to OE of 138, constant 1 A3 via free NOT on 74x04 to /OE1 and output from 3rd OR to /OE2. And corresponding outputs from 138 to jumpers.

I don't get why I should use two ICs (and introduce new one into the BOM - 4075) for 12-bit decoding, when I already have 14-bit decoding with just one 74HC138? It is one IC for the whole board and all blocks have their own address decoders, different from each other. 😕

14-bit decoder.png
Filename
14-bit decoder.png
File size
18.96 KiB
Views
1495 views
File comment
14-bit address decoder
File license
Fair use/fair dealing exception
LABS wrote:

Also you can use more relaxed filter on output - drop some caps and resistors. And use rail-to-rail opamp like LMC6484 instead of TL074 and get rid of two 9V regulators and still have enough headroom.

The reason why I use 78L09 + 79L09 is because of noise on the power rails. I want it to be as low as possible for analog parts of the circuit. That's why I use linear regulators and not one pair for the whole board, but local regulators for each block. It seems like it should pass power requirements for +/-12 V rails of ISA bus.
As for filtering, there will be one common 3rd order low-pass filter at the output after the mixer.

lowpass.png
Filename
lowpass.png
File size
9.04 KiB
Views
1495 views
File comment
3rd order lowpass
File license
Fair use/fair dealing exception

And here are new updates on optimization. ISSI block was taking too much space. So, month later...
Clock generator + two ISSI blocks were 109 mm. Now Clock generator + ISSI address decoder (which was missing on the example earlier) + two ISSI blocks are 97 mm! And if I exclude address decoder (as on older image) total length will be 83 mm.

ISSI_2018-07-18_02.png
Filename
ISSI_2018-07-18_02.png
File size
81.95 KiB
Views
1495 views
File comment
ISSI, progress @2018-07-18
File license
Fair use/fair dealing exception
ISSI_2018-08-20.png
Filename
ISSI_2018-08-20.png
File size
88.73 KiB
Views
1495 views
File comment
ISSI, progress @2018-08-20
File license
Fair use/fair dealing exception

Current FMonster mockup:

fmonster_2018-08-20.png
Filename
fmonster_2018-08-20.png
File size
160.04 KiB
Views
1495 views
File comment
FMonster, progress @2018-08-20
File license
Fair use/fair dealing exception

All those optimizations gave me about 49 mm free length at the right side for something else. Or just for shrinking the whole board and get cost reduced.

New BIG soundcard: FMonster.
Covox Sound Master replica
Innovation SSI-2001 replica & DuoSID.
My audio/video collection.

Reply 89 of 275, by LABS

User metadata
Rank Member
Rank
Member
Fagear wrote:

I don't get why I should use two ICs (and introduce new one into the BOM - 4075) for 12-bit decoding, when I already have 14-bit decoding with just one 74HC138? It is one IC for the whole board and all blocks have their own address decoders, different from each other. 😕

When I guess I misunderstood your above discussion on 12-bit decoding with Tiido which you ended up with:

Fagear wrote:

Thank you very much!
I think that throwing another 74HC138 will solve the problem.

😀

Fagear wrote:

The reason why I use 78L09 + 79L09 is because of noise on the power rails. I want it to be as low as possible for analog parts of the circuit. That's why I use linear regulators and not one pair for the whole board, but local regulators for each block. It seems like it should pass power requirements for +/-12 V rails of ISA bus.

The idea was that you can feed rail-to-rail with only a single +5V supply from your 7805 regulator having enough headroom.

Blasterboard: DIY SB2-compatible sound card on ATmega MCU
Sonic Buster 8: New 8-bit ISA sound card

Reply 90 of 275, by Tiido

User metadata
Rank l33t
Rank
l33t

There are a lot of sound sources and creating good VREF for all of them takes bunch of extra parts and will yield worse noise perfromance than having stuff biased to ground and sit between positive and negative rails.

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 92 of 275, by Fagear

User metadata
Rank Member
Rank
Member
carlostex wrote:

Fagear have you thought about my recomendation about CMS ports? Did you make the 210h port available?

I've sure did!

CMS_2018-08-10.png
Filename
CMS_2018-08-10.png
File size
7.87 KiB
Views
1433 views
File comment
CMS addresses
File license
Fair use/fair dealing exception

For the moment address decoders on each block can provide those ports (bold one are routed to jumpers):

Tandy PSG (0x02 bytes long):
- 0x0C0
- 0x0E0
- 0x1C0
- 0x1E0
- 0x2C0
- 0x2E0
- 0x3C0
- 0x3E0

CMS (0x02 bytes long):
- 0x200
- 0x210
- 0x220
- 0x230
- 0x240
- 0x250
- 0x260
- 0x270

ISSI (0x20 bytes long):
- 0x200
- 0x220
- 0x240
- 0x260
- 0x280
- 0x2A0
- 0x2C0
- 0x2E0

AdLib/OPL2 (0x02 bytes long):
- 0x208
- 0x228
- 0x288
- 0x2A8
- 0x308
- 0x328
- 0x388
- 0x3A8

OPL3 (0x04 bytes long):
- 0x200
- 0x220
- 0x240
- 0x260
- 0x280
- 0x2A0
- 0x2C0
- 0x2E0
- 0x380
- 0x388
- 0x3A0
- 0x3A8
- 0x3C0
- 0x3C8
- 0x3E0
- 0x3E8

8-bit DAC (0x01 byte long):
- 0x270
- 0x271
- 0x278
- 0x279
- 0x370
- 0x371
- 0x378
- 0x379

If you think that I have to allow more addresses on jumpers from "hidden" list above - feel free to let me know.

New BIG soundcard: FMonster.
Covox Sound Master replica
Innovation SSI-2001 replica & DuoSID.
My audio/video collection.

Reply 93 of 275, by noop

User metadata
Rank Member
Rank
Member
Fagear wrote:

Tandy PSG, CMS, SSI, 8-bit DAC do not have ANY filtering at the output at all! And all those can produce very high harmonics (with square waveforms).

Problems will start as soon as the signal goes to less-than-perfect ADC. Probably ok if goes to dumb amp with analog timbre block that does the job of filtering higher frequencies.
Also, I'm a bit concerned about the use of TL074 etc. This is decent all-around amp but not considered HiFi. Good old 5532 are still recommended for audio, if you are on a budget. But they have no quad version 🙁

Reply 94 of 275, by Scali

User metadata
Rank l33t
Rank
l33t
Fagear wrote:
8-bit DAC (0x01 byte long): - 0x270 - 0x271 - 0x278 - 0x279 - 0x370 - 0x371 - 0x378 - 0x379 […]
Show full quote

8-bit DAC (0x01 byte long):
- 0x270
- 0x271
- 0x278
- 0x279
- 0x370
- 0x371
- 0x378
- 0x379

If you think that I have to allow more addresses on jumpers from "hidden" list above - feel free to let me know.

I suggest adding 0x3BC to that list.
That is where early PCs had their printer port (original MDA card and many MDA/Hercules clones).
0x3BC, 0x378 and 0x278 are the official addresses for LPT1, LPT2 and LPT3.
However, 0x378 probably became the 'default' because that's what the extra printer port card from IBM used, and if you didn't have an MDA+printer card in your machine, the 0x278 address would become the first printer port.

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 95 of 275, by Fagear

User metadata
Rank Member
Rank
Member
noop wrote:

Problems will start as soon as the signal goes to less-than-perfect ADC. Probably ok if goes to dumb amp with analog timbre block that does the job of filtering higher frequencies.

That's why I'm concerned and why I'm putting 3rd order lowpass right after final mixer.

noop wrote:

Also, I'm a bit concerned about the use of TL074 etc. This is decent all-around amp but not considered HiFi. Good old 5532 are still recommended for audio, if you are on a budget. But they have no quad version 🙁

Dual-opamp-only is the reason. I'm very restricted with board space in this project and four opamps in one IC is a must. We'll see how it will go. Prototype boards are already in Moscow, I'll be able to assemble and check debug-boards soon. Including mixer board.

Scali wrote:
I suggest adding 0x3BC to that list. That is where early PCs had their printer port (original MDA card and many MDA/Hercules clo […]
Show full quote

I suggest adding 0x3BC to that list.
That is where early PCs had their printer port (original MDA card and many MDA/Hercules clones).
0x3BC, 0x378 and 0x278 are the official addresses for LPT1, LPT2 and LPT3.
However, 0x378 probably became the 'default' because that's what the extra printer port card from IBM used, and if you didn't have an MDA+printer card in your machine, the 0x278 address would become the first printer port.

I thought about it. But there are too many different bits between those three addresses, two 74HC138s can not do that. It will require at least three of those. And it is board space again.

LPT_ports.png
Filename
LPT_ports.png
File size
1.49 KiB
Views
1280 views
File comment
LPT bits.
File license
Fair use/fair dealing exception

Also, yes, 0x3BC officially is "the first" LPT port in the IBM PC, but if it is not present, 0x378 becomes LPT1. And 0x378 is the default port on most systems, I think. I need to investigate software options fot that matter. What different "Covox-enabled" games and trackers can address. 😕

While I'm waiting for debug boards I finished in-board-bus rerouting and made connections for each block. Now I have to figure out what analog part of the board will look like, after that I'll get the idea for how far I can move all blocks to the mounting bracket.

fmonster_2018-09-06_01.png
Filename
fmonster_2018-09-06_01.png
File size
176.87 KiB
Views
1280 views
File comment
FMonster, progress @2018-09-06
File license
Fair use/fair dealing exception

Some madness:

fmonster_2018-09-06_03.png
Filename
fmonster_2018-09-06_03.png
File size
26.13 KiB
Views
1280 views
File comment
Routing madness.
File license
Fair use/fair dealing exception

😏

New BIG soundcard: FMonster.
Covox Sound Master replica
Innovation SSI-2001 replica & DuoSID.
My audio/video collection.

Reply 96 of 275, by matze79

User metadata
Rank l33t
Rank
l33t

hm there are games out that will "only" work on lpt1

https://www.retrokits.de - blog, retro projects, hdd clicker, diy soundcards etc
https://www.retroianer.de - german retro computer board

Reply 97 of 275, by Fagear

User metadata
Rank Member
Rank
Member
matze79 wrote:

hm there are games out that will "only" work on lpt1

Main question is: what those games count as "LPT1"?
1) First one to be present from list 0x3BC -> 0x378 -> 0x278?
2) 0x3BC?
3) 0x378?

New BIG soundcard: FMonster.
Covox Sound Master replica
Innovation SSI-2001 replica & DuoSID.
My audio/video collection.

Reply 98 of 275, by matze79

User metadata
Rank l33t
Rank
l33t

688 Attack Sub for example has no way to choose the portadress.

As far as i know the BIOS cares about LPT, so it can be possible it asks system bios for lpt1 adress ?

https://www.retrokits.de - blog, retro projects, hdd clicker, diy soundcards etc
https://www.retroianer.de - german retro computer board

Reply 99 of 275, by BloodyCactus

User metadata
Rank Oldbie
Rank
Oldbie

Bios Data area has the info.

address dec/hex, len, description
00h 0 2 bytes Base I/O address for serial port 1 (communications port 1 - COM 1)
02h 2 2 bytes Base I/O address for serial port 2 (communications port 2 - COM 2)
04h 4 2 bytes Base I/O address for serial port 3 (communications port 3 - COM 3)
06h 6 2 bytes Base I/O address for serial port 4 (communications port 4 - COM 4)
08h 8 2 bytes Base I/O address for parallel port 1 (printer port 1 - LPT 1)
0Ah 10 2 bytes Base I/O address for parallel port 2 (printer port 2 - LPT 2)
0Ch 12 2 bytes Base I/O address for parallel port 3 (printer port 3 - LPT 3)
0Eh 14 2 bytes Base I/O address for parallel port 4 (printer port 4 - LPT 4) (Only found in PC/XT systems)

so, word at 0x40:08 - LPT1 IO address, just like 0x40:0 has 0x3F8, 0x40:2 has 0x2F8

now, does not mean apps obey. many things hardcode 3F8/2F8, so swapping that in the BDA often has no affect. Chaning what is LPT1 IO might not always have impact.

--/\-[ Stu : Bloody Cactus :: [ https://bloodycactus.com :: http://kråketær.com ]-/\--