Mostrando postagens com marcador Bootloader J2C. Mostrar todas as postagens
Mostrando postagens com marcador Bootloader J2C. Mostrar todas as postagens

segunda-feira, 28 de maio de 2007

Primeira versão operacional

Terminei hoje de debugar a primeira versão do 'bootloader' J2C. Havia um pequeno erro na rotina de leitura de blocos, mas este erro (basicamente de conceito) foi corrigido e o carregador está funcionando legal, carregando 32Kbytes em 14 segundos (2,28KBytes/segundo).

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)

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)

quarta-feira, 2 de maio de 2007

PonyProg

O programa Ponyprog também serve para programar a E2PROM do 'bootloader'. A configuração é a seguinte:

quinta-feira, 26 de abril de 2007

Rev A do 'Bootloader'

Fiz uma revisão no circuito do BootLoader, pois a versão anterior se mantinha normalmente acionada, forçando a nível baixo as linhas SDA e SCL, requerendo assim que o ICPROG fosse executado ao menos uma vez, ou que o cabo ao PC fosse desconectado

A revisão atual corrigiu isso utilizando uma porta que estava livre no 74XX125.




E a configuração do ICPROG tem que mudar, em relação à anterior para desinverter os sinais de VCC e MCLR. As outras configurações permanecem as mesmas.



A placa também foi atualizada. Um arquivo com os arquivos em formato eagle estão neste link.

terça-feira, 24 de abril de 2007

Testes com o 'Hardware" para porta serial

Terminei o teste do Hardware do Bootloader para a porta serial. Do Lado do PC, estou usando o ICPROG. O circuito foi baseado no SI Prog, mas tive que acrescentar um 74HC125 pois no final da gravação o ICProg leva as linhas a nível baixo, em vez de deixá-las livres (em aberto).

O Igor me ajudou no 'Layout' da Placa de circuito impresso. A placa da direita é opcional, e pode ser substituída (com vantagens) por um cabo retirado de um 'joystick' de MegaDrive.

(clique na imagem para ampliar):


O diagrama final do circuito encontra-se logo abaixo (clique na imagem para ampliar):



As configurações necessárias do ICPROG para trabalhar com este circuito são:

Ajustes de Hardware: É necessário inverter os sinais Vcc e MCLR.


Nas opções, é necessário habilitar o 'driver' para NT/2000/XP, caso um destes sistemas estaja sendo utilizado.




E as opções específicas para I2C devem ser selecionadas. Note que o endereço de 'hardware' desta tela tem que ser mudado de 0 para 3 quando usado no Expert, pois este tem resistores de 'pull-up' em todos os pinos do joystick. Como o Hotbit não tem tem 'pull-up' nestas linhas, a e2prom, que é um dispositivo CMOS entende uma linha aberta como um sinal em nível. Outro caso em que é necessário mudar este endereço na faixa de 0 a 3, é quando a interface estive conectada a uma 'HUB' para picodrives.



E por último, uma opção que, quando desmarcada agiliza um pouco o processo, é a verificação logo após a escrita:



E por último, uma captura da tela após a leitura da EEPROM.

Bootloader J2C: Requisitos

Esta é a lista dos Requisitos do carregador de 'Boot' serial (bootloader):

Requisitos de Hardware:

O 'Hardware' do carregador de boot:

  • Deverá consistir de uma interface a ser instalada entre o PC e o MSX;
  • Deverá permitir duas possibilidades de conexão ao PC, nas portas Serial e Paralela;
  • Deverá possuir uma eeprom serial de 32Kbytes;

Requisitos de Software:

O 'Software' do carregador de boot:
  • Deverá ser capaz procurar por um picodrive em até 4 sub-endereços I2C de cada porta de joystick, totalizando assim 8 possibilidades de 'boot';
  • Permitir a seleção do dispositivo manualmente, através do pressionamento das teclas 0-7, durante o boot da máquina;
  • Permitir a seleção do primeiro dispositivo encontrado com a seguinte sequência de varredura, caso nenhuma tecla seja pressionada durante o boot (PORTA.SUB_END): A.0; A;1; A.2; A.3; B.0; B.1; B.2; B.3;
  • Selecionar o primeiro dispositivo encontrado com a sequência de varredura acima, caso o dispositivo selecionado manualmente não seja detectado;
  • Carregar os 32KBytes dados da memória serial nas páginas 1 e 2 da RAM.
  • 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;