• Please review our updated Terms and Rules here

Tandy Sound Compatible PCB

pearce_jj

Veteran Member
Joined
May 14, 2010
Messages
2,805
Location
UK
Hi All

This design for a simple PCB to provide basic Tandy sound to clones has been sitting in my Eagle CAD folder for a while, but at last it is ready to go to fab. Expect PCBs in the store in about 3 weeks time for those wanting to experiment with the first cut!

Needs a SN76489AN chip as available from your favorite online auction site :)

Tandy-Sound-Adapter-r01-pcb-layout.png
 
Last edited:

Trixter

Veteran Member
Joined
Aug 31, 2006
Messages
7,332
Location
Chicagoland, Illinois, USA
Neat!

The problem of enabling audio to use this card still remains, as most software made before 1988 will only enable it by checking model bytes in ROM. Maybe some enterprising person will maintain a page of game patches to force 3-voice audio, or maybe even a utility to help find the detection code (or patch it!).
 

Great Hierophant

Veteran Member
Joined
Mar 22, 2006
Messages
1,921
Location
Massachusetts, USA
Took ya long enough for such a simple design :)

Not only is do you need to consider the Model Byte detection, you also need to hack around games that rigidly think Tandy Graphics = Tandy Sound. Finally, will setting the card at the addresses used by virtually all games and the 2nd DMA chip in AT systems cause issues?

The only games with auto detection where you can force an EGA or VGA graphics with Tandy sound are the AGI engine games with interpreter v2.917 or later. Maniac Mansion and Zak McKracken and the Alien Mindbenders have been patched in their low and high resolution versions to always output Tandy sound : http://www.vogons.org/viewtopic.php?f=33&t=31657&p=342485&hilit=maniac+pcjr#p342485 But they really sound best with the NCR 8496 clone PSG : http://nerdlypleasures.blogspot.com/2015/10/the-journey-of-pcjrtandy-sound-chip.html
 
Last edited:

pearce_jj

Veteran Member
Joined
May 14, 2010
Messages
2,805
Location
UK
Correct, also it has 2C0h option (could change that to 1C0h as per Tandy 386(?) but it still technically clashes with 5150 system board reserved range).
 

Great Hierophant

Veteran Member
Joined
Mar 22, 2006
Messages
1,921
Location
Massachusetts, USA
Correct, also it has 2C0h option (could change that to 1C0h as per Tandy 386(?) but it still technically clashes with 5150 system board reserved range).

The Tandy 1000 RSX, the 2500s and the Sensation! use the 1C0 range and some later games from Sierra and other companies have a 3-voice driver for it.

Can you actually use this card at C0 or 1E0 in a 5150? The 5150 Technical Reference indicates that the 100-1FF range is not usable. I would be happy to test it in mine :)
 
Last edited:

Scali

Veteran Member
Joined
Dec 13, 2014
Messages
2,024
Location
The Netherlands
Correct, also it has 2C0h option (could change that to 1C0h as per Tandy 386(?) but it still technically clashes with 5150 system board reserved range).

How difficult would it be to have all three?
C0h would give you PCjr compatibility if the machine allows it (PC/XT and clones with just one DMA controller should work, AT and above would not).
1E0h would give you late Tandy compatibility, if that port range happens to be available on your machine.
2C0h would be a 'safe' setting, since that's in the range where sound cards normally are, and that should work on any system. The only thing that uses this port range, according to this is 'AST-clock'... I suppose that's some kind of SixPack card with a clock function? Probably only useful on PC/XT systems, which could use the C0h range anyway.
 
Last edited:

Cloudschatze

Veteran Member
Joined
Apr 17, 2007
Messages
640
Location
Western United States
...could change that to 1C0h as per Tandy 386(?)...
It's 1E0h, not 1C0h. Allowing for this starting address would be ideal, since some software/drivers are already aware of, and are compatible with it.

Also, is it too late to change some of the silk-screening? It's kind-of a minor thing, but "PSG Level" is more appropriate than "DSP Level," in this instance.
 

Scali

Veteran Member
Joined
Dec 13, 2014
Messages
2,024
Location
The Netherlands
It's 1E0h, not 1C0h. Allowing for this starting address would be ideal, since some software/drivers are already aware of, and are compatible with it.

Ah yes, that should also be safe.
It would still be within the 100-1FFh range, so we don't know yet if it works on 5150 (and 5155/5160/clones?).
So perhaps 2C0h as third option would still be wise.
 

Great Hierophant

Veteran Member
Joined
Mar 22, 2006
Messages
1,921
Location
Massachusetts, USA
Interestingly, to get from C0 to 1E0 only requires flipping two of the address bits :

C0 = 00 1100 0000
1E0 = 01 1110 0000


I would also be happy to try it at both addresses in my 5160.

The issue with 2C0 is no software uses that address, every Tandy-supporting program would need to be modified to direct its data to that port. Alternatively, a SoftMPU virtual 8086 mode (386+) port trapping driver would be needed to divert the writes.

A nice idea to allow for PC Speaker input and output. Any ideas about a bracket for this card, or is it a "drill or 3-D print your own"?
 

Scali

Veteran Member
Joined
Dec 13, 2014
Messages
2,024
Location
The Netherlands
The issue with 2C0 is no software uses that address, every Tandy-supporting program would need to be modified to direct its data to that port.

Yes, but wouldn't the majority of software be hardcoded to C0 anyway, seeing as most PCjr/Tandy titles predate the machines that put the chip at 1E0?
So you'd need to patch existing software anyway. Whether you patch it from C0 to 1E0 or 2C0 doesn't matter then.
Patching shouldn't be too difficult, I would think. With DOSBox it should be quite simple to intercept writes to C0-C7 and pin-point the music routine in any game almost instantly.
 

glitch

Veteran Member
Joined
Feb 1, 2010
Messages
5,011
Location
Central VA
Obviously without schematics we can't be sure how address decode is done, but perhaps consider using DIP switches or shunt headers for one input to a comparator like the 74xx688. It's a tiny board so you've got plenty of room to make it larger within even the Slot 8 constraints of an ISA card.
 

Great Hierophant

Veteran Member
Joined
Mar 22, 2006
Messages
1,921
Location
Massachusetts, USA
James is almost certainly using a 74*688 for IC1 (addressing), a 74*74 for IC2 (clock division), the SN76489 is at IC3 and IC4 is a LM386 amplifier.
 
Last edited:

pearce_jj

Veteran Member
Joined
May 14, 2010
Messages
2,805
Location
UK
Thanks for all the input on this.

Re bracket - it has the same hole placement as the ISA-USB adapter. Someone kindly provided a CAD file suitable for laser cutting, which I need to dig out and make available. Or of course 3D print in e.g. phosphor bronze works pretty well (at a price).

I've updated the image (ctrl-r on the 1st page to see it). Three address options provided as suggested also the silk change. The audio amp has some refinements too.

Can anyone suggest an audio taper pot preset? I can only find linear.

Incidentally note that this is synth only - no DAC. So no Deskmate sampled audio.
 

glitch

Veteran Member
Joined
Feb 1, 2010
Messages
5,011
Location
Central VA
Re bracket - it has the same hole placement as the ISA-USB adapter. Someone kindly provided a CAD file suitable for laser cutting, which I need to dig out and make available. Or of course 3D print in e.g. phosphor bronze works pretty well (at a price).

Not my project but still, why aren't you using a standard Keystone bracket? They're cheap and available. You can place a tab on the PC board to accommodate it or just make the board larger. A larger board *has* to be cheaper than 3D printing, probably even in PLA or ABS, but definitely vs. bronze! I could see the laser cutting method being cheaper if you're ordering a big pile, or if you happen to have a laser cutter at home/work/your hackerspace.
 

deathshadow

Veteran Member
Joined
Jan 4, 2011
Messages
1,363
How about 0x0205 for PS/1 compatibility? They used that range to avoid the conflicts. It's functionally identical on the PS/1 apart from sitting at that address -- they put it in the game port reserved space since who reads anything other than 0x0201?
 

Great Hierophant

Veteran Member
Joined
Mar 22, 2006
Messages
1,921
Location
Massachusetts, USA
How about 0x0205 for PS/1 compatibility? They used that range to avoid the conflicts. It's functionally identical on the PS/1 apart from sitting at that address -- they put it in the game port reserved space since who reads anything other than 0x0201?

With the PS/1 you also bring in the detection issues, the lack of a DAC and the slightly weird gameport. All games but one that support the PS/1 support the Tandy and far many more support the Tandy than the PS/1.
 
Top