Um dos recursos ausentes nos micros da linha ZX81 mais sentidos pelos usuários é a geração de som. Embora seja possível gerar sons através da porta cassete do micro, não é possível sincronizá-los com a geração de imagem. Para suprir essa lacuna, foram lançados no exterior alguns geradores de som baseados no chip PSG AY-3-8912, entre eles o ZonX-81 da empresa inglesa Bi-Pak, na qual a Microdigital se baseou para lançar o seu próprio gerador de som, mantendo inclusive a compatibilidade. Mas uma coisa que não foi divulgada sobre o TK85 era que esse micro já vinha de fábrica com predisposição para receber o chip AY-3-8912, bastando então que se adquirisse os componentes necessários e os instalasse no micro para torná-lo apto a gerar sons complexos simultaneamente com a geração de imagem, como era o sonho de muitos usuários. Neste artigo, veremos então como instalar o AY-3-8912 internamente no TK85 e torná-lo apto a produzir os mesmos efeitos sonoros que um MSX, por exemplo.



Material necessário:

1 CI  AY-3-8912, com o soquete de 28 pinos
1 CI  74LS00, com o soquete de 14 pinos
4 Diodos 1N4148
1 Resistor de 1K
1 Capacitor eletrolítico de 2.2uF
1 Plug P1 stereo fêmea
Fios finos para interligar
Solda, ferro de solda e sugador de solda.




Como fazer:

Depois de aberto o TK, localize os espaços onde serão inseridos os novos componentes, eles estão próximo ao modulador de vídeo e ao conector esquerdo do teclado (veja foto abaixo). O 74LS00 será o IC27 e o AY será o IC29. Os diodos serão colocados ao lado do cristal de clock (será necessário levantá-lo, com cuidado).

 

   
 


Com a ajuda do ferro de solda e do sugador, desobstrua os furos para inserção dos IC27, IC29 e dos diodos D6, D7, D8 e D9. Abra também os furos para os componentes delimitados em azul, laranja e vermelho na foto acima. Com os furos abertos, solde os diodos(observe a polaridade) e os dois soquetes na placa. Em seguida, insira os CI´s 74LS00 e o AY-3-8912 em seus respectivos soquetes. Agora pegue o capacitor de 2.2uF e solde-o no lugar do C24 (dentro do retângulo azul na foto acima), com o polo positivo voltado para cima, em direção ao modulador de vídeo. O resistor de 1K, por sua vez, deve ser soldado no espaço delimitado de vermelho.  Então, pegue um pequeno pedaço de fio e solde nos dois furos dentro do retângulo laranja, unindo-os eletricamente; este fio irá fazer o jumper das saídas do AY-3-8912 com o resistor e com o capacitor recém instalados. O resultado ficará como mostrado na foto a seguir:

 

 

O pólo negativo do nosso capacitor está conectado diretamente no ponto que seria o pino 3 do IC38, localizado no lado direito da placa do TK85, abaixo do regulador de tensão e próximo ao conector direito do teclado. Esse CI provavelmente seria um LM386, mas ele não será utilizado nessa montagem pois a conexão será feita diretamente no plug de saída. Para tanto, usando dois pedaços de fio de tamanho apropriado, faça os dois jumpers indicados abaixo em amarelo, na foto da esquerda. A foto da direita mostra os jumpers já prontos.

 

            
 

 

Feito isso, será necessário ainda instalar o plug stereo, o que deverá ser feito ao lado do plug de alimentação do TK. Observe como foi montado o plug da alimentação e faça do mesmo modo com o plug do som. Na próxima foto, pode-se ver como fica a montagem final.

 


Uma última alteração a ser feita será abrir a janela para a saída de som no gabinete do TK, sendo que o resultado final vai depender da perícia manual e das ferramentas usadas. No meu caso, usei uma furadeira elétrica e um estilete e (como era de se esperar) o resultado não ficou perfeito, mas cumpre com o seu objetivo:

 

 
 


Finalizada a montagem, é hora de fechar o micro e começar a fazer uns barulhinhos. Como o BASIC do TK não dispõe das instruções IN/OUT ou do comando SOUND, é necessário fazer uso da linguagem de máquina para poder programar o PSG. Portanto, vamos implementar uma rotina que simula o comando SOUND:



sound:  rst     20h             ;coleta o próximo caracter
        call    $0d92           ;interpreta uma expressão classe-6 (registrador AY)
        rst     20h             ;coleta o próximo caracter

        call    $0d92           ;interpreta uma expressão classe-6 (registrador AY)
        call    $0bf5           ;rotina stack-to-bc(registrador AY em C, dado em B)
        ld      a,c
        out     ($df),a         ;seleciona o registrador do PSG
        ld      a,b
        out     ($0f),a         ;envia dado para o registrador do PSG
        rst     18h             ;coleta o caracter corrente

        cp      $1a             ;checa por mais parâmetros
        jr      z,sound
        ld      sp,($4002)      ;retorna ao BASIC, sem executar a rotina do PRINT
        ret


A sintax do comando é a seguinte:   PRINT USR SOUND,R1,D1,R2,D2,R3,D3,...

onde Rn é o registrador do PSG, Dn é o dado a ser enviado a esse registrador, e SOUND é o endereço onde a rotina estará armazenada. Como a rotina usa endereçamento absoluto apenas para chamar as rotinas da ROM, ela pode ser armazenada em qualquer lugar da RAM.

O programa já pronto para usar está
aqui, e o código fonte aqui.

Conecte a saída do PSG a um amplificador externo ou a um par de caixas acústicas amplificadas, dessas usadas em PC, e siga os exemplos a seguir:

 

PRINT USR SOUND,4,23,5,0,6,20,7,3,9,2,10,16,11,89,12,2,13,12        
 




Obs.: Aqueles que quiserem uma saída stereo ACB, podem montar o circuito proposto abaixo. Nesse caso, os pinos A, B e C do AY-3-8912 deverão ser desconectados do soquete e ligados diretamente aos pontos ABC do circuito, e os pontos R, L e GND deverão ser ligados nos locais indicados na foto abaixo. Neste caso, tornam-se desnecessários o capacitor e o resistor da montagem acima, bem como os jumpers descritos.