PDA

View Full Version : Tandy moved the 3-voice I/O ports. Help?



Cloudschatze
May 11th, 2007, 09:07 AM
With my only concern the 3-voice sound, I had hoped to replace a Tandy 1000 SX with an RSX.

The RSX has arrived, and there are some issues...

It seems that the I/O ports for the 3-voice synth have "moved" from 00C0 to some other location. As a result, the only Sierra games that I've yet been able to get working correctly are the later, VGA variety (which I suspect to have a BIOS sound-port detection routine in the Tandy drivers).

Does anyone have any idea where the ports were moved to (and why, for that matter)?

Were the ports moved in other systems, like the RLX?

Here is a detection routine that Frank Durda posted on Usenet. Can anyone suggest how I might use this to determine the correct ports? (ASM is Greek to me.)


The following code will tell you the correct port numbers for the
machine you happen to be running on. It will also tell you if the hardware
is there at all.


I have supplied the same code to Disney and numerous other game vendors.
By using it your code will run on the 1000 SL/TL/SL2/TL2/TL3/RL/RLX/RLX,
the 2500/2500SX/... and even the Sensation. The port numbers do move from
machine to machine, so apps that hardcoded and didn't use the BIOS calls
(available since the first machine) will not work on all machines.


mov ax,8100h ;Issue a status command to
int 1ah ;the sound BIOS call
cmp ah,80h ;See what the result is
jc $yesboth ;BIOS returned a port number


mov ax,0f000h
mov es,ax
mov al,byte ptr es:0c000h
cmp al,21h ;This byte is present on all 1000s
jz $tionly


; The TI sound and digital sound hardware is not present,
; at least on Tandy systems.


jmp $noiron ;Quit


; The TI sound hardware is available but the digital sound
; hardware (DAC) is not.


$tionly:
mov cx,00c0h
xor dx,dx ;DX = 0 - NO DIGITAL SOUND AVAILABLE
jmp $tisound ;CX = port number of TI sound chip


; The TI sound and digital sound hardware (DAC) are present.


$yesboth:
mov cx,ax ;Get returned base port #
mov dx,cx ;Make a copy
sub cx,4
jmp $allsound ;CX = port number of TI sound
;DX = digital sound hardware base port


...
$noiron: ;Code to handle no TI sound chip
;and no DAC goes here
...
$tisound: ;Code to handle systems with
;TI sound chip and no DAC goes
;here. (1000, 1000A, 1000EX,
;1000HX, 1000SX, 1000TX, 1000AX,
;PCjr).
...
$allsound: ;Code to handle systems with
;TI sound chip and a DAC goes
;here. (1000SL, 1000TL, 1000TL/2,
;1000TL/3, 1000RL, 1000RLX, 2500,
;2500SX)

Cloudschatze
May 11th, 2007, 09:50 AM
Err... This should probably be moved into the Tandy section... :rolleyes: