• Please review our updated Terms and Rules here

Tandy Sound Compatible PCB

OK I'll check it out. At work right, I'll be able to check around 5pm EST.

Definitely worked for me in dosbox as well. vgmplay <soundfile> <port> appears to be the syntax.
 
Last edited:
Yea, the port is optional, defaults to C0h. But you can do eg:
vgmplay test1.vgm 1E0
To test it on port 1E0h etc.

OK so got everything hooked up. I hear this tone (a high frequency and a low frequency component) immediately upon boot, and running VGMPlay doesn't change anything.

https://drive.google.com/file/d/0B1VD5urJF8c-TFVLckRpUGp3aUU/view?usp=sharing

I'll try to get a Youtube video up, but right now Youtube is stuck "converting" this for ten or fifteen minutes.
 
I think best idea for now is to try and recompile that BIOS to use a different port on that loop. Keep in mind its not only on line 4734 but also on 4741. It's apparently code to scan serial ports (COM1 to 4). He first loads value of 00h into AL and then outputs to the C0h port. He probably used C0h port because it was the first unused\available port.
 
I hear this tone (a high frequency and a low frequency component) immediately upon boot,
This may be normal behavior. Per Frank Durda IV, the PSG chip (both discrete and megacell variants) used in the Tandy 1000 systems powers-up in a "make noise" state. One of the first BIOS operations performed by the system is to silence the sound generators.

...and running VGMPlay doesn't change anything.
This suggests that the chip is probably not addressable at the specified port.
 
I think best idea for now is to try and recompile that BIOS to use a different port on that loop. Keep in mind its not only on line 4734 but also on 4741. It's apparently code to scan serial ports (COM1 to 4). He first loads value of 00h into AL and then outputs to the C0h port. He probably used C0h port because it was the first unused\available port.

Well right now it's running on 1E0, so that shouldn't be a problem?

Here's a youtube audio recording.

https://www.youtube.com/watch?v=wU8WuJDoGVg
 
Well right now it's running on 1E0, so that shouldn't be a problem?

If the program doesn't work either it doesn't output to the specified port or, like Cloudschatze says, the chip is probably not addressable on that port.

With the card working at C0h, we could test with AGI games. I believe some LucasArts games like Monkey Island 1 or Indiana Jones And the Last Crusade allow to force tandy sound only on a CGA, EGA, VGA machine.
 
AHAHAHAHA!

https://www.youtube.com/watch?v=ZLofLJmCo1k

I was using the wrong port. I can't believe this is working finally.

We'll be wanting a boot executable to silence that Tandy audio, I'm pretty sure. I'm going to embed it into my xi8088 bios but everyone else will want a quick and easy way to reset the sound chip, I think.
 
AHAHAHAHA!

https://www.youtube.com/watch?v=ZLofLJmCo1k

I was using the wrong port. I can't believe this is working finally.

W00t! Sounds great! Is that still on the 1E0 port?
I wonder if you can get it going on C0 as well after you patched the BIOS.

We'll be wanting a boot executable to silence that Tandy audio, I'm pretty sure. I'm going to embed it into my xi8088 bios but everyone else will want a quick and easy way to reset the sound chip, I think.

After the VGM finishes playing and my program exits, is it silent then? I think it's just a case of setting the volume of all channels to 0.
In that case it's very easy to make a program to do that. On PCjr there's a mixer, which either mutes the PC speaker or the SN76489. I believe it boots up in PC speaker mode, so the SN76489 would be muted. Perhaps it's processing noise as well :)
My player actually contains code to switch the PCjr mixer as well, so it works on a real PCjr (and DOSBox).

I guess a *really* fancy solution would be to put an BIOS extension ROM on the card, just to silence the chip at bootup :)
 
Sounds like it's maybe an octave or half-octave too low? Or Dosbox is too high, one or the other...

I think DOSBox is too high compared to real hardware.

Anyway, i used TEMU to try LucasArts games. You can use Monkey Island to test on port C0h. On prompt just type: MONKEY v ts

V argument forces VGA so if you have EGA or CGA type "e" or "c" respectivily instead. 'ts' argument forces Tandy 3 voice sound on C0h port.
 
That's actually on 2C0; I thought I was 1E0 but I was wrong.

It's silent after the VGM finishes or I quit the player.

I'm trying to recompile my bios right now, I can't remember which of my raspberry pi devices is my build unit though. :(
 
May need a better solution if you want to pipe PC-Speaker through it at boot, for POST beeps and things like that.

Simply having some simple bios code available would at least mean you could use one of the Lo-Tech ROM boards to silence it.
 
We could also go the other way; pull down the output with a gate requiring a 'driver' to release it (in config.sys). Would increase the complexity of the board though.
 
The code for silencing is very simple.
Code:
/*
  Set attenuation (volume):

  76543210
  1                 - set bit to tell chip we are selecting a register
   xx1              - register number (valid values are 1, 3, 5, 7)
      xxxx          - 4-bit volume where 0 is full volume and 15 is silent)
*/

So we need to set a volume of Fh to all 4 channels.
Would look like this:
mov al, 9Fh
out 0C0h, al
mov al, 0BFh
out 0C0h, al
mov al, 0DFh
out 0C0h, al
mov al, FFh
out 0C0h, al

If I'm not mistaken.
Problem is of course that you need to know the base address at boot time, if you do this in the BIOS.
 
We could also go the other way; pull down the output with a gate requiring a 'driver' to release it (in config.sys). Would increase the complexity of the board though.

That wouldn't impact the operation of the PC speaker either, would it?
 
GREAT news, I changed that port in xi8088 bios and it's working at C0 now. Conquest of Camelot and Champions of Krynn are working beautifully in EGA with Tandy audio.

https://www.youtube.com/watch?v=803vsXGoJ38

It sounds really bad because I had to turn a pair of old crappy headphones up really loud as the audio source..

I'm just excited as heck here.

I also switched turbo/normal CPU speed and playback wasn't impacted at all.

I have NOT populated or tested the on-board mixer/amplifier. This was piped from SN76489 pin 7 directly to a standalone mixer daughtercard.
 
Back
Top