Olá Pessoal,
Recentemente, depois de muitos anos, descobri que o melhor tipo de fita cassete para dados é a Type I bias normal feita de Óxido Metal.
Não a toa o manual do gravador do Hotbit, da Sharp, o HB-2400 continha uma nota informando para usar somente fitas Type I bias normal e, evitar as de Cromo e ferro extra. Estas últimas, são boas para gravações de áudio, mas não para dados , devidos a melhor gravação em determinadas frequências.
Infelizmente, devido a pouco informação na época se pensava que era melhor usar uma fita de "melhor qualidade" do que a Type I. Um equívoco que custava muitos erros de leitura no MSX, dada a maior dificuldade do micro "escutar" uma onde de áudio não otimizada.
Após a reparação do meu HB-2400 pude constatar que a gravação e leitura de dados foi mais bem sucedida com as fitas Type I bias normal, mesmo as com mais de 20 anos de uso.
Hoje o uso do gravador é mais nostálgico do que eficiente devido a facilidade de usar notebooks e players com carga rápida, vide outro post neste blog. Mas se quiser gravar dados com um gravador cassete, fica a dica de usar a Type I.
Abraços,
O editor
sexta-feira, 18 de abril de 2014
domingo, 14 de julho de 2013
Carregamento Rápido de Software no MSX via porta Cassete
Complementando o último poste, sobre usar um netbook para carregar programas via porta cassete do MSX, fiz alguns teste com carregamento rápido usando o carregador otla.
Os programas de MSX gravados em cassete usavam as velocidades de 1200 ou 2400 bauds. Essa limitação era devido a qualidade de áudio provida pelas fitas e gravadores cassete. Porém, a porta de leitura cassete do MSX e o Z80 conseguem ler o stream de áudio em velocidades superiores a essas.
Seguem se os passos e parametros que usei com sucesso para carregamento rápido em um Hotbit. Programas que demoravam 5 min agora demoram apenas alguns segundos para carregar:
1) Baixe o Otla
2) Descompacte o Otla em uma pasta de sua preferencia
3) Execute o programa e selecione MSX na opção header
4) Clique em "add blocks" e escolha um arquivo no formato .cas ou .rom
5) Selecione o valor 4 (11025 bps) na opção sample/bit
6) Digite o comando BLOAD ou CLOAD correspondente no MSX
7) Clique em Play no Otla.
8) O programa deve carregar com sucesso
Se a placa de som do PC e o cabo cassete do MSX forem de boa qualidade pode-se tentar velocidades mais rápidas no passo 5). Porém a velocidade 11025 bps já e quase 10x mais rápida que os 1200 bps que eram padrão das gravações cassete originais do MSX.
Até a próxima,
O Editor
Os programas de MSX gravados em cassete usavam as velocidades de 1200 ou 2400 bauds. Essa limitação era devido a qualidade de áudio provida pelas fitas e gravadores cassete. Porém, a porta de leitura cassete do MSX e o Z80 conseguem ler o stream de áudio em velocidades superiores a essas.
Seguem se os passos e parametros que usei com sucesso para carregamento rápido em um Hotbit. Programas que demoravam 5 min agora demoram apenas alguns segundos para carregar:
1) Baixe o Otla
2) Descompacte o Otla em uma pasta de sua preferencia
3) Execute o programa e selecione MSX na opção header
4) Clique em "add blocks" e escolha um arquivo no formato .cas ou .rom
5) Selecione o valor 4 (11025 bps) na opção sample/bit
6) Digite o comando BLOAD ou CLOAD correspondente no MSX
7) Clique em Play no Otla.
8) O programa deve carregar com sucesso
Se a placa de som do PC e o cabo cassete do MSX forem de boa qualidade pode-se tentar velocidades mais rápidas no passo 5). Porém a velocidade 11025 bps já e quase 10x mais rápida que os 1200 bps que eram padrão das gravações cassete originais do MSX.
Até a próxima,
O Editor
domingo, 30 de junho de 2013
Usando um Netbook como gravador cassete
Apesar da nostalgia de usar um gravador cassete para carregar programas no MSX, esta cada vez mais difícil fazer a manutenção dos gravadores sem peças adequadas.
Após levar vários tutorias e várias tentativass consegui usar um netbook para ler programas no MSX. Obiviamente pode ser usar um PC ou notebook. Aqui vão algumas dicas:
1) Arquivo .cas que pode ter sido salva através de um emulador.
2) Baixe o freeware caslink2
3) Converta seus arquivos .cas para .wav, mono, usando o caslink2 (não use a opção 2400 bauds), por default o programa usa 1200 bauds
4) Salves seus arquivos .wav em uma pasta do netbook
5) Conecte o plug leitor (preto) do cabo cassete do MSX na entrada de phone de ouvido do netbook
6) Conecte o plug de gravação (vermelho) do cabo cassete na entrada de microfone do netbook
7) Abra o arquivo .wav no netbook usando um media player de sua preferência e coloque o volume do máximo
8) Visto que a saída do netbook é estéreo e o MSX só consegue ler mono, ajuste o balanço de saída do fone totalmente para o canal esquerdo (L). Para isso, use o software de mixer da placa de som do netbook.
9) Pronto agora digite o comando correto de leitura para seu arquivo no MSX, que pode ser CLOAD, BLOAD, ou LOAD.
10) Clique no play do media player para tocar o arquivo .wav.
11) Se tudo der certo o MSX ira achar o programa e prosseguir com o carregamento. Não tive problemas usando a receita acima.
Para Gravar programas do MSX no netbook:
1) Use um programa editor de áudio no netbook , que pode ser o gravador de som do seu OS ou outro.
2) Configure o programa de gravação para mono 44kHz
3) Coloque o programa p/ gravar
4) Use os comandos correspondentes ao seu programa no MSX: CSAVE, BSAVE, SAVE
5) Pode ser necessário usar o programa editor de áudio p/ aumentar o volume do arquivo .wav, pois a saída do MSX é de baixa potência, o que normalmente era amplificado pelos gravadores cassete reais.
O plug remote do gravador cassete não é usado com o netbook, por razões obvias, porem em teoria, poderia ser simulado se o programa gravador de áudio do PC só começasse a gravar quando percebesse áudio na entrada de microfone.
Até a próxima,
O Editor.
Após levar vários tutorias e várias tentativass consegui usar um netbook para ler programas no MSX. Obiviamente pode ser usar um PC ou notebook. Aqui vão algumas dicas:
1) Arquivo .cas que pode ter sido salva através de um emulador.
2) Baixe o freeware caslink2
3) Converta seus arquivos .cas para .wav, mono, usando o caslink2 (não use a opção 2400 bauds), por default o programa usa 1200 bauds
4) Salves seus arquivos .wav em uma pasta do netbook
5) Conecte o plug leitor (preto) do cabo cassete do MSX na entrada de phone de ouvido do netbook
6) Conecte o plug de gravação (vermelho) do cabo cassete na entrada de microfone do netbook
7) Abra o arquivo .wav no netbook usando um media player de sua preferência e coloque o volume do máximo
8) Visto que a saída do netbook é estéreo e o MSX só consegue ler mono, ajuste o balanço de saída do fone totalmente para o canal esquerdo (L). Para isso, use o software de mixer da placa de som do netbook.
9) Pronto agora digite o comando correto de leitura para seu arquivo no MSX, que pode ser CLOAD, BLOAD, ou LOAD.
10) Clique no play do media player para tocar o arquivo .wav.
11) Se tudo der certo o MSX ira achar o programa e prosseguir com o carregamento. Não tive problemas usando a receita acima.
Para Gravar programas do MSX no netbook:
1) Use um programa editor de áudio no netbook , que pode ser o gravador de som do seu OS ou outro.
2) Configure o programa de gravação para mono 44kHz
3) Coloque o programa p/ gravar
4) Use os comandos correspondentes ao seu programa no MSX: CSAVE, BSAVE, SAVE
5) Pode ser necessário usar o programa editor de áudio p/ aumentar o volume do arquivo .wav, pois a saída do MSX é de baixa potência, o que normalmente era amplificado pelos gravadores cassete reais.
O plug remote do gravador cassete não é usado com o netbook, por razões obvias, porem em teoria, poderia ser simulado se o programa gravador de áudio do PC só começasse a gravar quando percebesse áudio na entrada de microfone.
Até a próxima,
O Editor.
sábado, 19 de janeiro de 2013
O Fator MSX
O que fazia do MSX um micro tão divertido? O que fazia do MSX um MSX? Qual o conceito? Como seria o MSX nos dias de hoje? Por que usar um MSX ao invés de um Micro moderno ou um das pequenas placas de desenvolvimento modernas?
Vamos rever algumas características do MSX:
Já os mais avançados faziam programas em Assembly, estudavam computação e eletrônica e até hoje, há que faça projetos p/ MSX: interfaces novas para armazenamento, use de joysticks de outros videogames, novas placas de upgrade, entre outros.
Quanto a transportar o conceito MSX aos dias de hoje, há de se pensar o que os notebooks de hoje e as plaquinhas de desenvolvimento não tem, ou podem ter que um projeto MSX teria. Olhando as características acima, talvez poderíamos pensar num console que fosse tanto um vídeo game de ultima geração quanto um micro de fácil programação, que pudesse ser expandido, ser usado para controlar outros dispositivos, ser de fácil uso para recursos educacionais e de pesquisa, ter uma comunidade de desenvolvimento de HW e SW, e de quebra, ter um preço acessível.
Abraços,
O Editor
Vamos rever algumas características do MSX:
- Projetado para ser expandido e atualizado
- Linguagem de programação de fácil aprendizado, o BASIC
- Linguagem de programação Assembly com total controle sobre o hardware
- Boa capacidade gráfica e sonora para sua época
- Boa capacidade de jogos para sua época
- Boa gama de periféricos
- Aplicações versáteis como: terminal, controlador MIDI, entre outros.
- Design compacto, fácil de carregar, ou tipo console
- Dispositivos on-board, Placa de vídeo, placa de som, conexão a periféricos, fonte.
Já os mais avançados faziam programas em Assembly, estudavam computação e eletrônica e até hoje, há que faça projetos p/ MSX: interfaces novas para armazenamento, use de joysticks de outros videogames, novas placas de upgrade, entre outros.
Quanto a transportar o conceito MSX aos dias de hoje, há de se pensar o que os notebooks de hoje e as plaquinhas de desenvolvimento não tem, ou podem ter que um projeto MSX teria. Olhando as características acima, talvez poderíamos pensar num console que fosse tanto um vídeo game de ultima geração quanto um micro de fácil programação, que pudesse ser expandido, ser usado para controlar outros dispositivos, ser de fácil uso para recursos educacionais e de pesquisa, ter uma comunidade de desenvolvimento de HW e SW, e de quebra, ter um preço acessível.
Abraços,
O Editor
sexta-feira, 2 de novembro de 2012
Especificações: Tabelão de Modos Gráficos da VDP
Segue um Tabelão dos modos gráficos da VDP do MSX e a compração com a VDP melhorada do sms.
Abraços.
O Editor
Screen 0
|
Screen 1
|
Screen 2
|
Screen 3
|
Screen4
TMS9918A
(SMS)
|
|
Resolução (pixels)
|
256 x 192
|
256 x 192
|
256 x 192
|
256 x 192
|
256 x 192
|
Numero de Caracteres (Tiles) na tela
|
40 x 24
(8 x 6)
|
32 x 24
(8x8)
|
32 x 24
(8x8)
|
32 x 24
(8x8)
|
32 x 24
(8x8)
|
Cores simultaneas
|
16
|
16
|
16
|
16
|
16
|
Numero de cores an Paleta
|
16
|
16
|
16
|
16
|
32
(configuraveis)
|
Cores por caracter (tile)
|
2
|
2 por grupo de 8 carcateres
|
2 para cada linha em um caracter
|
2
|
multicolor
|
Numero de Sprites simultaneos na Tela
|
n/a
|
32
Sincle color
|
32
Sincle color
|
32
Sincle color
|
64
multicolor
|
Número de sprites em uma mesma linha
|
n/a
|
4
|
4
|
4
|
8
|
Tamanho dos sprites
|
n/a
|
8 x 8
16 x 16
|
8 x 8
16 x 16
|
8 x 8
16 x 16
|
8 x 8
8 x 16
|
Scrolling Vertical e Horizoltal
|
n/a
|
n/a
|
n/a
|
n/a
|
Sim
|
Espelhamento de caracateres
|
n/a
|
n/a
|
n/a
|
n/a
|
Sim, vertical e Horizontal
|
Memoria de Video (VRAM)
|
16k
|
16k
|
16k
|
16k
|
16k
|
Memória para padrões de caracteres (tiles)
|
2k
(2048 a 4095)
|
2k
(0 a 2047)
|
6k
(0 a 6143)
|
n/a
|
14k
(448 chars/sprites)
|
Memória para posição de caracteres (tiles
na tela, ou Backdrop Map)
|
960 bytes
(0 a 959)
|
768
bytes
(6144 a 6911)
|
768
bytes
(6144 a 6911)
|
1,5k
(2048 a 3583)
|
1792 bytes
|
Tabela de Cores dos caracteres (tiles)
|
n/a
|
32 bytes
(8192 a 8223)
|
6k
(8192 a 14335)
|
2k
(0 a 2047)
|
n/a
|
Memória para padrões de sprites
|
n/a
|
2k
(256s 8 x 8
64x 16x16)
|
2k
(256s 8 x 8
64x 16x16)
|
2k
(256s 8 x 8
64x 16x16)
|
Compartilhada c/ Memoria de padrão
de caracteres
|
Tabela de Atributos de Sprites
|
n/a
|
128 bytes
|
128 bytes
|
128 bytes
|
256 bytes
|
Abraços.
O Editor
quarta-feira, 31 de outubro de 2012
Emuladores: Como escrever um emulador
Essa semana fiquei pensando como os emuladores de computadores e consoles são programados.
O primeiro passo para criarmos um emulador é emular o processador central. No caso do MSX que é o tema principal do nosso blog (lembre-se que em outro post eu disse que o blog é de eletrônica e computação também :) . No caso do Z80, precisamos pensar nos seguintes aspectos: input, processamento e output. Sabendo que o Z80 tem: 40 pinos, 22 registradores internos, uma ULA (Unidade Logica Aritimetica) e, 158 instruções elementares. O clock do Z80 é de ~3,58MHZ
Então vamos lá. Sugiro fazer a implementação em C/C++ ou em Java.
O nosso processador emulado deve ser capaz de ler as instruções da ROM e da RAM virtuais, processa-las e então mudar o estado de seus pinos de acordo com o resultado. Isso tudo em um loop de programação que é "regulado" pelo nosso clock emulado que deve ser de ~3,58MHZ (mesmo que nossos PCs sejam de 2,20GHZ e com dois processadores!). Esse seria um tipo de emulador interpretador. O clock do Z80 é no pino 6 que em HW verdadeiro é alimentado por um gerador de clock que gera uma onda quadrada. No emulador devemos simular isso calculando e ajustando a velocidade do loop, ou se você preferir, criando uma função geradora de clock que chama uma função principal que vai emular o Z80 no nosso emulador a frequência do clock.
Assim, vamos precisar de 22 variáveis no escopo interno da função do processador (locais) que são os registradores do Z80. Sendo que 18 delas são de 8 bits (A, B, C, D, E, F, H, I, L, R, A', B', C', D', E', F', H', I', L', R') e 4 são de 16 bits (IX, IY, SP, PC).
Também vamos precisar de 40 variáveis para representar os pinos do Z80. Tanto no escopo interno da função do processador quanto para serem retornadas globalmente para o emulador, já que os pinos estão "soldados" a nossa placa-mãe virtual. Assim, por exemplo, as variáveis que representam os barramentos de dados, endereços e controle são vistas pelo escopo do emulador inteiro. Lembre-se que os barramento de dados tanto pode ler quanto escrever na memoria RAM.
A brincadeira começa quando o Z80 lê do registrador PC (Program Conter) o endereço de memoria RAM da próxima instrução a ser executada. Lembre que no Z80 os endereços são de 16 bits e o conteúdo de cada endereço da memoria é de 8 bits. Assim, a nosso loop deve ler da nossa memoria virtual essa instrução processa la e em seguida atualizar os valores de todos os pinos de saída (Variáveis corres pondentes) e incrementar o PC.
Quanto as 158 instruções do Z80, você já deve estar imaginado que vamos precisar de um swith/case para tratar todas elas e quem sabe chamar método específicos para cada uma delas.
Não parece tão difícil, mas também não e tão fácil escolher a melhor estrutura do programa emulador. Lembre-se que o emulador dever emular outros circuitos como a VDP e o processador de som, entre outros e você terá que atualizar o estado de cada elemento do computador virtual no loop principal do emulador.
Por hora é só pessoal. Em tempo atualizarei esse post quando tiver mais ideias ou melhorias no texto.
Abraços,
O Editor.
O primeiro passo para criarmos um emulador é emular o processador central. No caso do MSX que é o tema principal do nosso blog (lembre-se que em outro post eu disse que o blog é de eletrônica e computação também :) . No caso do Z80, precisamos pensar nos seguintes aspectos: input, processamento e output. Sabendo que o Z80 tem: 40 pinos, 22 registradores internos, uma ULA (Unidade Logica Aritimetica) e, 158 instruções elementares. O clock do Z80 é de ~3,58MHZ
Então vamos lá. Sugiro fazer a implementação em C/C++ ou em Java.
O nosso processador emulado deve ser capaz de ler as instruções da ROM e da RAM virtuais, processa-las e então mudar o estado de seus pinos de acordo com o resultado. Isso tudo em um loop de programação que é "regulado" pelo nosso clock emulado que deve ser de ~3,58MHZ (mesmo que nossos PCs sejam de 2,20GHZ e com dois processadores!). Esse seria um tipo de emulador interpretador. O clock do Z80 é no pino 6 que em HW verdadeiro é alimentado por um gerador de clock que gera uma onda quadrada. No emulador devemos simular isso calculando e ajustando a velocidade do loop, ou se você preferir, criando uma função geradora de clock que chama uma função principal que vai emular o Z80 no nosso emulador a frequência do clock.
Assim, vamos precisar de 22 variáveis no escopo interno da função do processador (locais) que são os registradores do Z80. Sendo que 18 delas são de 8 bits (A, B, C, D, E, F, H, I, L, R, A', B', C', D', E', F', H', I', L', R') e 4 são de 16 bits (IX, IY, SP, PC).
Também vamos precisar de 40 variáveis para representar os pinos do Z80. Tanto no escopo interno da função do processador quanto para serem retornadas globalmente para o emulador, já que os pinos estão "soldados" a nossa placa-mãe virtual. Assim, por exemplo, as variáveis que representam os barramentos de dados, endereços e controle são vistas pelo escopo do emulador inteiro. Lembre-se que os barramento de dados tanto pode ler quanto escrever na memoria RAM.
A brincadeira começa quando o Z80 lê do registrador PC (Program Conter) o endereço de memoria RAM da próxima instrução a ser executada. Lembre que no Z80 os endereços são de 16 bits e o conteúdo de cada endereço da memoria é de 8 bits. Assim, a nosso loop deve ler da nossa memoria virtual essa instrução processa la e em seguida atualizar os valores de todos os pinos de saída (Variáveis corres pondentes) e incrementar o PC.
Quanto as 158 instruções do Z80, você já deve estar imaginado que vamos precisar de um swith/case para tratar todas elas e quem sabe chamar método específicos para cada uma delas.
Não parece tão difícil, mas também não e tão fácil escolher a melhor estrutura do programa emulador. Lembre-se que o emulador dever emular outros circuitos como a VDP e o processador de som, entre outros e você terá que atualizar o estado de cada elemento do computador virtual no loop principal do emulador.
Por hora é só pessoal. Em tempo atualizarei esse post quando tiver mais ideias ou melhorias no texto.
Abraços,
O Editor.
sábado, 27 de outubro de 2012
Manutenção: Caracteres deformados no Hotbit
Eu tive um problema de letras deformadas em meu HB8000 original de 1985 1.1, o modelo branco que não tem o logo MSX no teclado. As
letras apareciam achatadas (o O, o 0 ou G pareciam um D, mas não em todas as posições da
tela). Esse defeito era no conversor de RF. Os primeiros HB fabricados em 1985
não tinham um conversor de RF muito eficiente. Alias esses dispositivos e os de alguns videogames de 8 bits geravam interferências em TVs próximas e eram o terror das irmãs que assistiam as novelas. Meu pai até havia imposto um horário para eu ligar meu Hotbit. Há artigos informando que a
fabrica melhorou o conversor de RF a partir do HB preto 1.2. Eu tenho esse versão e
realmente a imagem parece melhor que os meus HB brancos (mesmos os mais novos de 1986 e 1987 são que
já apresentam o logo MSX acima das teclas de setas, no teclado). Porém se o problema
for caracteres com pixels estranhos o problema pode estar na ROM que contem o
mapa de caracteres. Neste caso o problema pode estar no CI da ROM que contem o mapa de caracteres. Recomendo neste caso testar o aparelho com um cartucho de jogo e ver o que acontece. Se funcionar
sem o problema pode estar mesmo no CI da ROM cujos caracteres não serão usados
pelo jogo. O fato é que é melhor abrir o aparelho e fazer uma revisão
completa.
Abraços,
O Editor
Abraços,
O Editor
Assinar:
Postagens (Atom)