TBBlue – por Fábio Belavenuto

TBBlue – versão Belavenuto

 

Este projeto é um clone de um ZX Spectrum configurável em FPGA, podendo emular um ZX 48K, 128K e +3e. Foi e está sendo desenvolvido por Fábio Belavenuto e Victor Trucco.

O projeto ainda emula a Explorer (interface de áudio com o AY-3-8910), DivMMC (interface de armazenamento com cartões SD) e a ULAplus (modificação retro-compatível com a ULA que permite exibir até 256 cores).

Esta versão foi criada pensando em ter uma versão stand-alone, independentemente de qualquer peça original de um ZX Spectrum ou clone. Como o projeto é flexível, é possível fazer uma versão que pode ser colocada dentro de um case de um ZX ou TK90X e utilizar o teclado original, e é essa a ideia da versão do Victor Trucco, que já deve estar para sair.

O TBBlue tem duas portas de joystick padrão atari/mega drive, podendo ser configurados separadamente para os padrões Kempston, Sinclair 2 e Cursor e com suporte ao segundo botão no pino 9. Há três conectores de áudio, uma saída para o áudio do Beeper e AY, uma saída MIC e uma entrada EAR para gravador K7.

O teclado deve ser usado com um teclado ABNT2 padrão PS/2 e a saída de vídeo é VGA podendo ser configurado para frequências verticais de 50 ou 60 Hz e frequências horizontais de 15 ou 31 KHz.

Esta versão foi projetada em três placas, pensando em ser colocada dentro de uma caixa patola modelo PB-114 (maior) ou a PB-114/2 (menor). Nas duas placas menores vão os conectores de áudio, vídeo, joystick e cartão SD, para facilitar a montagem na caixa, e sua conexão com a placa principal é feita via cabos paralelos.

Todas as configurações ficam salvas em um arquivo texto no cartão SD. O cartão SD deve ser de até 8GB formatado em FAT32 com alguns arquivos específicos do TBBlue, com os firmwares das máquinas e arquivos .TAP e outros para ser carregados pelo ZX Spectrum.

As ROMs (firmwares) ficam no cartão SD podendo ser configurado qual tipo de máquina e qual ROM carregar. O tipo de máquina e ROMs devem ser editados no PC para interpretação do firmware do TBBlue, e o resto das opções podem ser modificados pelo próprio TBBlue.

O código binário do FPGA e os firmwares serão disponibilizados, sendo que o source do FPGA será aberto no futuro.

A alimentação deve ser feita com 5V com consumo de no máximo 300 mA, podendo ser alimentado com fonte de 5V/500mA, por uma porta USB padrão e até baterias com um circuito adicional de geração de 5V e carregador embutidos.

Lista de peças

1 – Placa FPGA Mini-EP2C5 – Ebay: http://www.ebay.com/itm/301049144314
4 – Conectores IDC fêmea 2×14 – ebay: http://www.ebay.com/itm/181238800338
1 – SRAM AS7C34096 – ebay: http://www.ebay.com/itm/370841628317
1 – TDA1543T – ebay: http://www.ebay.com/itm/171399504173
1 – transistor BC846 (NPN) – código farnell: 1081227
1 – Diodo 1N4148 SMD – código farnell: 1097176
1 – Led Bicolor 3mm commom anode – ebay: http://www.ebay.com/itm/151380809910
2 – conectores DB-9 macho soldagem placa – código farnell: 1653975, ebay: http://www.ebay.com/itm/281169570215
1 – Conector DB-15HD femea (VGA) soldagem placa – código farnell: 93N1154, ebay: http://www.ebay.com/itm/171772254944
1 – Conector SD – código farnell 97K9470, ebay: http://www.ebay.com/itm/181384749765
3 – Conectores P2 femea soldagem placa – DX: http://www.dx.com/p/294477 e/ou http://www.dx.com/p/122548 e/ou http://www.dx.com/p/122550
1 – Conector PS/2 teclado soldagem placa – código farnell: 2452347, ebay: http://www.ebay.com/itm/251455486871
1 – Conector P4 macho montagem gabinete – ebay: http://www.ebay.com/itm/181357006268
6 – 1K SMD1206 – código farnell: 9337008
3 – 2K (ou 2K2) SMD1206 – código farnell: 9336117
3 – 470R SMD1206 – código farnell: 9336567
3 – 4K7 SMD1206 – código farnell: 9240608
3 – 500R (ou 510R) SMD1206 – código farnell: 9336613
3 – 10K SMD1206 – código farnell: 9337016
2 – 120R SMD1206 – código farnell: 9337059
1 – 680R SMD1206 – código farnell: 9240934
6 – 100n SMD1206 – código farnell: 499389
2 – 10u x 10V (SMD panasonic C ou Normal) – código farnell: 9751041
1 – 100u x 10V (Normal) – código farnell: 9452435

Opcional:

1 – Barra pinos 90 graus – ebay: http://www.ebay.com/itm/111495008812
1 – Barra pinos 180 graus – ebay: http://www.ebay.com/itm/181085288071
1 – Cabos dupont – ebay: http://www.ebay.com/itm/231495311127

Mudanças na placa chinesa

Retirar 7 resistores (R1, R2, R9, R10, R15, R16 e R18), apontados na imagem abaixo:

placa chinesa

Esta mudança é necessária pois os resistores R1, R2, R9 e R10 são usados para alimentar alguns pinos do FPGA com GND e 1,2V, necessários se fosse usado o FPGA modelo EP2C8. Os chineses usam o EP2C5 e soldam esses resistores erroneamente.

Já os resistores R15, R16 e R18 são usados para ligarem leds de teste em alguns pinos, que usamos para outros propósitos e os LEDs atrapalham os sinais.

Mapa dos componentes da placa principal, para facilitar a montagem

Há alguns jumpers que devem ser feitos. Na imagem acima são as linhas cinzas grossas conectando duas vias. No total são 4 jumpers. Fazer com terminais de componentes.

Os capacitores eletrolíticos, em C7, C8 e C4, C5, são de 10uF e há a opção de usar um radial comum ou usar SMD. O footprint está junto e você pode se decidir o que usar.

Há um conector de 3 vias, SV7, com o nome de LED, que deve ser soldado o LED bicolor para indicar que a placa está energizada e indicar acesso ao cartão SD.

No conector JP1 deve-se ligar um cabo duplo nos 5V da entrada da placa FPGA. Onde está escrivo 5V (em vermelho, na foto acima) é o positivo, sendo o outro negativo.

JMP1 seleciona a tensão que será alimentado os joysticks, 3,3V ou 5V. Como o FPGA trabalha com 3V3 e os joysticks de mega-drive aceitam bem 3,3V, é recomendado fechá-lo para 3V3 para evitar uma fuga de tensão de 5V e queimar os pinos do FPGA. Só é recomendado setar em 5V caso o joystick não trabalhe bem com 3,3V. Joysticks de Atari são somente chaves e não necessitam de alimentação.

Placas montadas

Segue abaixo imagens das placas já concluídas:

placas2

placas1

Uso

Para preparar o cartão SD para uso no TBBlue, use um cartão de no máximo 8GB, formate-o em FAT32 e copie os arquivos disponibilizados na raíz do cartão.

Ao ligar o TBBlue com o cartão preparado e inserido, o firmware será carregado na memória e irá iniciar a leitura da configuração e mostrará no vídeo, por alguns segundos, algumas informações úteis (mini-ajuda) das teclas equivalentes do teclado original no teclado PS/2. Abaixo uma imagem desta tela.

bootloader

As teclas são descritas abaixo:

F1      - Hard Reset
F2      - Muda scandoubler
F3      - Muda 50/60 Hz
F5      - Pausa CPU
F11     - Soft Reset
F12     - Aciona NMI
SHIFT   - Caps Shift
CONTROL - Simbol Shift

F1 reinicia o firmware de boot, mesmo processo quando se liga o TBBlue. Se manter segurado a tecla SPACE ao ligar ou apertar F1 o firmware irá iniciar o configurador.

F2 ativa ou desativa o scandoubler, que gera o vídeo VGA em 31KHz. Use-o caso o monitor ligado não suporte 15 KHz para visualizar a imagem corretamente. A opção do scandoubler pode ser definida no configurador para sempre iniciar ativado ou desativado.

F3 muda a frequência vertical entre 50 ou 60 Hz. Use-o caso o monitor não aceite a frequência atual para visualizar a imagem corretamente. Esta opção também é configurável no configurador.

F5 pausa a CPU congelando o Z80. Pode ser usado para pausar algum jogo que não tenha opção de PAUSE. Cuidado ao usar este recurso, pois se o jogo depender de interrupções pode causar o travamento e reset.

F11 simula o botão de reset comum. Reseta a CPU e inicia-a em $0000.

F12 simula o botão NMI, para ativar o menu do ESXDOS se a DivMMC estiver ativa e carregada.

SHIFT simula a tecla Caps Shift do teclado original. CONTROL simula a tecla Simbol Shift do teclado original.

O arquivo “config.ini” dentro da pasta “tbblue” contém as informações de configurações. O configurador salva as mudanças neste arquivo e o firmware de boot faz a leitura deste arquivo. Pode ser editado no PC com qualquer editor de texto simples, como o NOTEPAD.

Após passar alguns segundos na tela de mini-ajuda, o firmware irá carregar as ROMs de acordo com a máquina configurada como default, e irá iniciar o ZX Spectrum. A partir deste ponto já se pode usar como se fosse um ZX Spectrum original.

Configurador

Editor

No configurador, na parte de cima da tela, irá ser mostrada uma lista das configurações de máquinas existentes no arquivo “config.ini”. Este menu só pode ser editado pelo PC alterando o arquivo diretamente.

A máquina default estará selecionada e piscando. Para mudar a máquina default utilize as setas direcionais para cima e para baixo, mudando a seleção. Ao selecionar a nova  máquina que será a default, aperte ENTER para confirmar e já iniciar a emulação. Na próxima inicialização do TBBlue esta máquina escolhida sempre será carregada automaticamente.

Se quiser editar as opções de periféricos e joysticks, na tela do configurador, aperte a tecla “E” para mudar a seleção para as opções, que ficam na parte de baixo do vídeo, e utilize-se das teclas direcionais. Para cima e para baixo você muda o item que será editado e para trás e frente você muda a opção daquele item selecionado. Para confirmar aperte ENTER, para cancelar aperte “E”. Confirmando as opções serão salvas e sempre carregadas ao inicializar o TBBlue.

Na configuração dos joysticks, algumas combinações não são possíveis devido aos conflitos de portas e/ou teclas. As combinações não permitidas são:

  • Joy1=Kempston e Joy2=Kempston
  • Joy1=Cursor e Joy2=Cursor
  • Joy1=Sinclair e Joy2=Cursor

As outras combinações são possíveis.

Todos os arquivos relacionados ao projeto, como os sources da placa no Eagle, arquivos para serem gravados no cartão SD e binário do FPGA se encontram no arquivo abaixo:

https://drive.google.com/file/d/0B5wpc_jDN_n0dWY0clV4ZHlWWFk/view?usp=sharing

23 thoughts on “TBBlue – por Fábio Belavenuto

  1. Ficou muito bom. Fortíssimo Parabéns ! Acredito que para cicatrizar (eternizar) bem o projeto, esquemas elétricos e diagramas poderiam ser disponibilizados em pfd( se possível claro) pois vai que no futuro versões dos softwares utilizados venham a não estar disponíveis etc…
    E que surjam novas idéias e implementos, com ajuda de todos, como ( mouse, light pen, barramento, etc …, pendrive (sub)).

  2. Pessoal, o que vocês também poderiam disponibilizar é aquele logo bem legal que colocaram em cima da caixa do protótipo.

  3. Fábio, sempre fui um admirador do TK, tenho um desde seu lançamento. Mais aprendi a ser um admirador ainda maior dos trabalho seus e do victor, e outros abnegados afora!. Parabens.
    A propósito, não consigo acessar o link com os arquivos. Está ativo? Grande abraço.

  4. O projeto TBBLUE está a venda, por quanto?
    Gostaria de adquirir 1 unidade já montada com o case, pois não sei nada de eletrônica .

    1. Olá!!! O primeiro lote está terminando de ser produzido e, pretendo, abrir um segundo lote em seguida. Os valores eu ainda vou ter que recotar tudo para falar.
      Se você tiver interesse me passa seu nome e e-mail que eu ponho na lista de espera. Quando eu for iniciar o segundo lote, entrarei em contato com o custo estimado e aí os interessados decidem se vão querer ou não.
      Os do primeiro lote (comecei mais ou menos no início de 2015!) saíram, mais ou menos R$ 250,00. Com certeza o segundo lote vai ser mais caro, talvez algo perto dos R$ 400,00. Mas o pagamento vai sendo feito por partes, conforme eu vou precisando adquirir as coisas, peço para as pessoas depositarem. Então, geralmente, o povo nem sente tanto o pagamento.

  5. Muito bom saber disso Fábio, eu realmente estou muito interessado, pois tenho um TK95 que não uso mais por falta de recursos do próprio aparelho, então essa sua solução me parece acertada, pois dá pra matar a saudade sem ficar gastando horrores com diversos acessórios. Pode por o meu nome na lista sim, Fernando Collazo – fernandocollazo@yahoo.com.br
    Abraços

  6. Muito bacana mesmo! Tenho uma curiosidade: Este projeto prevê saída para adição de um conector de expansão (Bus Expansion) assim permitindo a utilização dos periféricos (antigos e novos) como interface2, gravador de eprom, interface paralela, interface de disco, etc? Não que isto seja necessário pois vejo vocês adicionaram as principais interfaces (explorer, DivIDE, kempstom) mas a possibilidade de conexão de hardware e periféricos antigos num dispositivo moderno como esse tornaria a experiência de uso ainda mais bacana!
    É isso….parabéns pela iniciativa e pelos resultados alcançados!
    Grande abraço à todos!

    1. Vou responder e o Fábio poderá complementar. Não… essa versão não terá o conector de expansão. Ela foi desenvolvida para ser uma versão compacta, stand alone, mais simples e prática.
      O Victor Trucco está fazendo uma versão do TBBlue que caberá dentro de um case de TK90x/95 e essa terá o conector de expansão.
      Agradeço os parabéns pelo Fábio, pois ele e o Trucco fizeram o projeto. Sou um mero montador do primeiro lote da versão do Fábio.

  7. Ah….mais uma dúvida!! Sabem me dizer quantos gates do FPGA foram utilizados ao total??
    Grande abraço à todos!

  8. Ola amigos,

    Fábio,

    a ram as7c34096 tem de ser exatamente -12jc ?

    Lembro que voce comentou em algum lugar de ter problemas de temporização em algum lugar.

    será que serve as7c34096 -15JC ?

  9. O source da placa do TBBLUE no Eagle, está sem a malha de terra na PCB.
    Esqueceram de colocaram o que dificulta pra quem quer montar por conta própria.
    Teriam como disponibilizar o arquivo .brd com essa malha (a placa do TBBLUE exatamente como está na foto)?

    1. Olá Isaac,

      Não esquecemos não! Acabei de conferir os arquivos do ZIP e estão com a malha de terra. Para visualizar a malha de terra no Eagle, na edição da placa, utilize a opção “ratsnest” do Eagle que a malha irá se formar.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *