Por padrão o RC2014 inicia no BASIC |
A ROM padrão do RC2014 possui um interpretador BASIC. Os comandos LOAD e SAVE não estão disponíveis, no lugar disso é necessário usar recursos do terminal para enviar e capturar arquivos texto. Daí que o meu primeiro passo foi procurar um software com estes recursos. A minha opção foi pelo Tera Term.
O segundo passo foi usar o hexload, disponível no github oficial do RC2014. O hexload é um programa BASIC, que grava na Ram (via POKEs) um programa assembler e o executa. O programa assembler lê um arquivo HEXA pela serial e depois desvia para o endereço $8080. Santo bootloader, Batman!
Para evitar problemas de perda de caracteres, configurei o Tera Term para dar uma pausa de 20ms entre caracteres e 100ms ao final de cada linha.
Vamos fazer um primeiro teste: mostrar uma mensagem curta, aguardar receber algo e repetir. Um exame do fonte hexload.asm mostra as instruções assembler necessárias. Optei por acessar diretamente a ACIA ao invés de usar as rotinas já existentes na Rom. Para isto eu desabilitei as interrupções, pois a interrupção da ACIA é usada pela Rom para implementar um buffer de recepção.
SECTION INIT ORG $8080 start: di loop: ld hl,msg print: ld a,(hl) or a jr z,waitch ld b,a busy: in a,($80) bit 1,a jr z,busy ld a,b out ($81),a inc hl jp print waitch: in a,($80) bit 0,a jr z,waitch in a,($81) out ($81),a jp loop msg: DEFM "Ola, RC2014!", 13, 10, 0
A minha ideia inicial era assemblar este primeiro programa na unha, traduzindo manualmente cada instrução no respectivo código objeto. Bastaram três instruções para eu ver como a idade me deixou preguiçoso. Resolvi passar para um primeiro teste com o z88dk, um conjunto de ferramentas para desenvolvimento para o Z80. A enfase do z88dk é para a linguagem C, mas ele contém um assembler completo. A instalação é simples (expandir um zip, criar uma variável de ambiente e acrescentar o diretório de executáveis ao path). Dois comandos geram o arquivo HEX:
z80asm -l -b rc2014test.asm appmake +hex --org 0x8080 -b rc2014test_INIT.bin -o rc2014Test.hex
Aí é ligar o RC2014, carregar o loadhex.bas, carregar o meu teste e correr para o abraço:
Ok, é um exemplo bem bobo, mas é o alicerce para eu desenvolver o meu Monitor e testá-lo em Ram (quando estiver pronto eu vou gravar em EProm).
2 comentários:
Daniel, onde vc comprou esse kit?
obrigado,
Marcos
Comprei no Tindie: https://www.tindie.com/products/Semachthemonkey/rc2014-homebrew-z80-computer-kit/
Postar um comentário