segunda-feira, 27 de agosto de 2007
Simple com FSAVE/FLOAD
Este cartucho me acompanha até hoje.
Titulador de Vídeo com TMS9128
A revista "Radio Electronics" publicou em novembro de 1985 a primeira parte de um artigo ensinando a construir um titulador de vídeo a partir de um TMS9128. Tenho somente a primeira parte, mas descobri que ao todo o projeto foi dividido em 4 artigos. A primeira parte explica os segredos para a sincronização do TMS9128 com um sinal de vídeo externo: quais as dificuldades envolvidas e como superá-las.
A sequência de artigos é a seguinte:
Video titler. Keyboard device is used to superimpose titles on video images. May also be interfaced with a home computer to superimpose computer-generated graphics or real-time animation on a standard video signal. Est. cost: $300. Part 1.
RADIO-ELECTRONICS Nov 1985 (v.56#11) pg. 45
Video titler. Part 2.
RADIO-ELECTRONICS Dec 1985 (v.56#12) pg. 65
Video titler. Part 3.
RADIO-ELECTRONICS Jan 1986 (v.57#1) pg. 57, 77, 79
RADIO-ELECTRONICS Mar 1986 (v.57#3) pg. 62
(fonte)
segunda-feira, 13 de agosto de 2007
MorseX
Um que merece destaque é o MorseX, de 1994, cujo código foi a adaptação para o Z80 do artigo "Designing with the 8080 microprocessor. Part 4. A typical program. Sample program converts Morse code to ASCII code", da autoria de Randy Carlstrom, publicado na revista Popular Electronics, volume.19 Número 12 (pg. 74) em dezembro de 1981. Infelizmente não consegui localizar ainda o artigo, mas pelo menos localizei a fonte, a partir dos comentários da versão desenvolvida em pascal para o PC.
A entrada de código morse é lida a partir do botão de tiro do joystick "A". O artigo também tinha
um detector de tom baseado num 556 (não tenho mais o esquema, infelizmente). O algoritmo de detecção se adaptava à velocidade, e o programa 'basic' permite alterar 2 parâmetros de funcionamento: 'Noise' e 'Delay'.
Abaixo alguma fotos:
Tela de Abertura em Basic:

Tela de abertura (pressione ENTER para avançar):

Eu tentando manipular alguma coisa:

O programa pode ser baixado neste link
quarta-feira, 8 de agosto de 2007
Layouts para Mapper Simplificada
domingo, 5 de agosto de 2007
Clock para Hotbit convertido em 2.0
Projetei então um adaptador pra ser colocado onde antes era colocado o VDP original, com um oscilador de 3,578MHz e um pull-up pra linha INT.
Eis abaixo a placa já roteada

E o circuito.

sábado, 4 de agosto de 2007
Mapper simplificada - Placas
sábado, 28 de julho de 2007
Mapper 256K simplificada (2)
A placa do mapeador tem um conector de entrada de 20 pinos cuja pinagem foi disposta de forma a poder ser interligada apenas com fios retos ao conector de 50 vias do slot (lateral no Hotbit, frontal no expert). Dessa placa saem 4 fios, sendo 2 com as linhas AA14 e AA15, que devem ir aos LS157 na placa do MSX, e 2 com as linhas AA16 e AA17 que devem ir à placa de memória.

Conector do mapeador:

No Hotbit a conexão fica mais ou menos como na figura abaixo (os LS157 podem não estar na posição certa pois não me lembro de cabeça da placa, e não estou com um Hotbit à mão agora).

A placa de memória foi roteada para ser plugada em cima do banco de memória. Ainda tenho que fazer um ajuste fino, para poder fazer a pinagem bater com o micro. É bem provável que o espaçamento seja diferente para o Hotbit e para o Expert (e para outros MSX), mas o 'layout' foi roteado para ser facilmente adaptável.
quinta-feira, 26 de julho de 2007
Mapper 256K simplificada
Utilizando um LS670, um LS688, um LS32 e dois chips de DRAM de PC de 1M x 4 é possível implementar uma 'Mapper' de 256K rapidamente.
O 688 serve para decodificar os sinais A2-A7, /IORQ, /WR e /M1 e gerar o sinal /GW para o LS670, que recebe em sua entrada sinais D0~D3 e gera os sinais AA14~AA17.
AA14 e AA15 vão aos multiplexadores (LS157) na placa do MSX. Os pinos destes CIs devem ser levantados, pois são conectados originalmente às linhas A14 e A15 do Z80. Os pinos levantados recebem os sinais AA14 e AA15.
A tabela abaixo contempla a pinagem dos multiplexadores de interesse tanto no Hotbit quanto no Expert
MSX A14 A15
HOTBIT: IC23,Pino 10 IC24,Pino 10
EXPERT: IC23,Pino 13 IC23,Pino 14


AA16 e AA17 vão às linhas de endereço AA8 e AA9 das DRAMS, para selecionar 4 colunas diferentes, ou seja, quatro bancos diferentes de 64Kbytes, totalizando assim 256Kbytes.
Duas portas de um LS32 servem para forçar as linhas AA8 e AA9 da DRAM sempre num mesmo nível (nível 1) enquanto o sinal CAS ainda não foi disparado, garantindo assim que as linhas a serem acessadas (e refrescadas) sejam sempre as mesmas. Duas portas restantes deste CI servem para atrasar ligeiramente o sinal CAS de forma a garantir que as linhas AA8 e AA9 já tenham estabilizado quando o CAS for a nível zero.
O circuito da 'Mapper' pode ser visto abaixo. Clique na imagem para ampliar:

OBS: Adicionando-se um segunto LS670 e mais um LS157 e um LS393 é possível expandir a capacidade deste circuito para 1Mbyte, mas isso aumenta a complexidade da montagem.
sexta-feira, 6 de julho de 2007
DRAM de PC como VRAM (2)
Vista geral do circuito instalado sobre os soquetes da DRAM. Os 3 fios ligados ao VDP vão aos sinais /CAS0 /CAS1 e /CASX (pinos 59, 60 e 61 do V9938)

Detalhe da placa. Clique na imagem para ampliar.
terça-feira, 3 de julho de 2007
HB1240: HUB I2C

Segue abaixo o diagrama do HUB I2C. A alimentação para os dispositivos I2C é mantida desligada enquanto o dispositivo não está sendo acessado, a fim de economizar energia e de não interferir com o funcionamento do joystick. Caso seja necessário manter algum dispositivo alimentado o tempo todo, ele pode ser conectado à porta destinada ao 'joystick'.
Cada uma das 4 portas possui 2 resistores de 'pull-up' ou 'pull-down' de forma a fornecer um sub-endereço, permitindo assim conectar mais de um dispositivo de mesmo endereço principal à uma mesma porta de joystick.

Os dispostivos I2C podem ser acionados através das ritinas básicas de acesso, publicadas em post anterior.
O projeto inteiro pode ser baixado na página de projetos do Igor
terça-feira, 26 de junho de 2007
VRAM de 192Kbytes com 2 chips de DRAM de PC comuns
PINO DRAM SINAL VDP
A8 DRAM (ambas) /CAS0
A9 DRAM (ambas) /CAS1
/CAS /CAS0 and /CAS1 and /CASX
o AND dos sinais /CAS0, /CAS1 e /CASX pode ser obtido através de um 74HC11 ou de uma cascata de algumas portas de um 74HC08.
A ligação dos outros sinais fica assim:
SINAL VDP PINO DRAM
D0..D3 D0..D3 DRAM 1
D4..D7 D0..D3 DRAM 2
A0..A7 A0..A7 (ambas)
No caso da DRAM de 16 bits, basta ligar o sinal /CASX na linha A8 ou A9, e ligar um dos sinais UCAS ou LCAS através de um AND do sinal /CASX com /CAS0 ou /CAS1.
Diagrama:

Placa:
quarta-feira, 20 de junho de 2007
HUB para dispositivos I2C
Este HUB comporta 4 dispositivos I2C e não atrapalha o uso do Joystick. Cada um dos 4 conectores DB9 utilizados para as estações, possui 2 pinos para designar o sub-endereço I2C, e as linhas SDA e SCL são comuns a todos.
DRAM de PC como VRAM
Abaixo seguem algumas fotos do sistema modificado. Depois coloco mais detalhes (diagrama, placa, etc).
Vista Geral:

Vista da placa com a DRAM. Detalhe da ligação do sinal /CAS1:

Vista lateral:

Detalhe da ligação ao sinal /CAS1 (pino 60 do VDP 9938)
sexta-feira, 15 de junho de 2007
Mega-Flash
O funcionamento é o seguinte:
O acesso às páginas 1 e 2 da MEGA-FLASH é exatamente igual ao acesso à MEGAROM, ou seja, Leitura em Memória, Escrita nos registros mapeadores (de acordo com o estado das linhas A13 e A14):
(A15) A14 A13 Endereço Página Registro
0 1 0 4000-5FFF 1.0 R0
0 1 1 6000-7FFF 1.5 R1
1 0 0 8000-9FFF 2.0 R2
1 0 1 A000-BFFF 2.5 R3
A escrita na FLASH se dá na página 0 (zero) onde acontece o espelhamento das sub-páginas 2.0 (0000-1FFF) e 2.5 (2000-3FFF), pois A14=0. Assim, todo o espaço de endereçamento para escrita pode ser selecionado a partir dos registros R2 e R3.
A grande vantagem disto é que usar apeanas o mesmo número de CIs necessários para se construir uma MEGA-ROM, ou seja, um decodificador e o(s) registro(s). Para uma MEGAFLASH de 512K, serão necessários apenas os seguintes chips:
1x AM29F040 - Flash 512K
1x 74LS138 - Decodificador
2x 74LS670 - Registro 4x4
Mas nada impede que se utilize RAM no lugar da FLASH, para fazer um dispositivo baseado em RAM
O 'Mapa' da MEGAFLASH é o seguinte:
Endereço Página Escrita Leitura
0000-1FFF 0.0 P2.0 valor (a leitura é feita pelo
2000-3FFF 0.5 P2.5 indefinido sinal CS12)
4000-5FFF 1.0 R0 P1.0
6000-7FFF 1.5 R1 P1.5
8000-9FFF 2.0 R2 P2.0
A000-BFFF 2.5 R3 P2.5
C000-DFFF 3.0 Sem Valor
E000-FFFF 3.5 Ação indefinido
Diagrama da Mega-Flash
quinta-feira, 14 de junho de 2007
Mapeador para Flash
A estrutura é a seguinte:

A programação da flash se dá através da escrita da sequência de comandos (de acordo com a flash) escritos na página selecionável. Uma escrita no bloco fixo (8000h-9FFFh) ativa o registrador de mapeamento.
Este circuito pode ser implementado com apenas 3 CIs mais a Flash (74LS138, 74LS00, 74LS373/574).
Outra possibilidade é um mapeador semel semelhante, mas chaveando blocos de 16K, sendo um bloco fixo na página 1 e um bloco variável na página 2: De igual forma, a escrita no bloco fixo aciona o registrador de mapeamento.

Esta segunda alternativa pode ser montada utilizando-se um 74LS32, um 74LS139 e um 74LS373/574.
segunda-feira, 28 de maio de 2007
Primeira versão operacional
Para experimentar via Basic (sem ter que gravar uma ROM), basta carregar o arquivo .rom a partir do comando:
bload"SUBROM.BIN",&H3F72:DEFUSR=&HC000:a=usr(0)Isso vai carregar um bloco 32Kbytes na memoria a partir do bootloader ou de um picodrive conectado na porta de joystick 1.
Detalhe importante é que esta versão procura pela e2prom no sub-endereço 0 (zero) da porta 1 de joystick, por isso, pra funcionar no expert (ou qualquer outro MSX que possua resistores de 'pull-up' nas linhas de 'joystick', é necessário forçar a nível baixo os pinos 1 e 2 do conector de joystick, para forçar o endereço da e2prom a zero, ou então conectar na porta 0 (zero) de um HUB para picodrives.
(ou então, carregar via o seguinte comando):
bload"SUBROM.BIN",&H3F72:DEFUSR=&HC000: poke&HC004,&HA6:poke&HC011,&HA6:a=usr(0)
Interface Compact Flash Interna
No caso do MSX, é possível utilizar uma saída livre de um decodificador interno, obtendo-se assim uma interface sem utilizar componente algum, apenas o soquete do cartão.
Eis o diagrama:

A página de onde retirei estas informações tem ainda as rotinas básicas de acesso ao cartão. No caso de usar-se a saída Y7 do decodificador interno, isso equivale a utilizar o endereço 0B8h como base e os seguintes valores de portas devem ser utilizados no código do 'driver'.
DAT EQU 0B8H
PAR EQU 0B9H
SEC EQU 0BAH
STA EQU 0BBH
ZYL EQU 0BCH
ZYH EQU 0BDH
HEA EQU 0BEH
COM EQU 0BFH
quinta-feira, 17 de maio de 2007
Novos Requisitos
Dei uma revisada nos requisitos do 'bootloader' após várias considerações que estão surgindo durante o desenvolvimento do mesmo. Eis a lista atualizada.
Requisitos de Hardware:
O 'Hardware' do carregador de boot:
- Deverá ser uma interface conectada entre o PC e o MSX;
- Deverá permitir duas possibilidades de conexão ao PC, nas portas Serial e Paralela;
- Deverá possuir uma opção com eeprom serial de 32Kbytes;
- Deverá possuir uma opção com plug P2 estéreo com os sinais I2C;
Requisitos de Software:
O 'Software' do carregador de boot deverá:
- Ser capaz procurar por um picodrive em até 4 sub-endereços I2C da porta A de joystick, totalizando assim 4 possibilidades de 'boot';
- Executar a seguinte sequência de varredura durante o boot (PORTA.SUB_END): A.0; A;1; A.2; A.3;
- Selecionar o primeiro dispositivo encontrado com a sequência de varredura acima;
- Implementar o recarregamento através do comando IPL, a partir do dispositivo selecionado durante o boot, se este ainda estiver presente. Caso contrário deverá fazer uma nova varredura;
- Identificar o conteúdo da e2prom com base no primeiro 'byte' e carregar o conteúdo da e2prom de acordo com o tipo de conteúdo, definido na tabela abaixo:
| Identificador | Tipo | Ação |
| FEh | Binário | Carrega um arquivo .bin. Os 7 primeiros bytes têm a mesma função que no Basic Disco (endereços Inicial, Final e |
| FFh | Basic | Carrega programa BASIC |
| 41h | Imagem ROM | Carrega uma ROM de 32K entre 4000h a BFFFh |
| 4Ah | Tic-Tac | (reservado para implementação futura) |
segunda-feira, 14 de maio de 2007
Testes do final de semana
O crítico é o circuito de adaptação de lógica TTL para 3V, que até 3,5MHz funciona bem, mas com uma frequência mais alta ele simplesmente não consegue acompanhar. Vamos agora testar circuitos de adaptação baseados em um transistor na configuração Base Comum, dotado de um 'pull up' ativo.
Nas medições que fizemos descobrimos também que que o inversor a transistor demora muito tempo para desligar (sair da saturação ao corte) e o substituímos por uma porta lógica, aproveitada do próprio circuito oscilador.




.jpg)
