Índice:

LED do usuário do flash de código Z80-mbc2 Z80: 3 etapas
LED do usuário do flash de código Z80-mbc2 Z80: 3 etapas

Vídeo: LED do usuário do flash de código Z80-mbc2 Z80: 3 etapas

Vídeo: LED do usuário do flash de código Z80-mbc2 Z80: 3 etapas
Vídeo: Introducing The JAZ80 Z80 Homebrew Retro Computer Part 1 2024, Novembro
Anonim
LED do usuário do flash de código Z80-mbc2 Z80
LED do usuário do flash de código Z80-mbc2 Z80

Este é um exemplo de programa de LED do usuário escrito em Z80 assembler para o computador z80-mbc2.

Fiz este exercício de teste e revisão para mim, este é meu primeiro programa Z80 em mais de 35 anos.

Aproveitar

Suprimentos

Computador Z80-mbc2

Uma cópia do Z80ASM da SLR Systems Rel. 1.32, para download de muitos arquivos cp / m

Um editor, usei ZDE16, pois já estava na imagem de boot do CP / M do z80-mbc2

Etapa 1: Instale o Z80asm em seu Z80-mbc2

Instale Z80asm em seu Z80-mbc2
Instale Z80asm em seu Z80-mbc2

Presumo alguma familiaridade com as ferramentas que você tem para o seu Z80-MBC2, ou seja, qualquer versão do cpmtools que você usa. Aqui estão as etapas se estiver usando as versões de linha de comando:

  1. Obtenha os arquivos z80asm.com e z80asm.doc (opcional) em um diretório em algum lugar do seu PC host
  2. Coloque seu cartão SD no mesmo PC, suponho abaixo que ele está aparecendo como drive E: abaixo.
  3. Coloquei o montador no meu CP / M disco A, para cp / m 2.2 que seria a imagem do disco DS0N00. DSK
  4. O comando: cpmcp -f z80mbc2-d0 e: DS0N00. DSK z80asm.com 0: irá copiar o arquivo z80asm.com para a imagem
  5. O comando cpmcp -f z80mbc2-d0 e: DS0N00. DSK z80asm.doc 0: irá copiar a documentação para o disco (opcional)

Ao inicializar cp / m 2.2 em seu z80-mbc, agora você deve ter z80asm.com e z80asm.doc (opcional) na unidade A

Etapa 2: Copie o código-fonte para você Z80-mbc2

Conecte-se ao z80-mbc usando seu programa de terminal

Eu sugiro que você use um disco não preenchido para salvar o código-fonte, por exemplo f: para escolher este tipo de unidade:

F:

após alguns segundos, você verá o prompt F:.

agora use o programa zde16 na unidade A para editar um arquivo em branco:

a: zde16 myled.z80

Isso criará um arquivo chamado myled.z80 no disco F:, observação: o.z80 é necessário no nome para que o z80asm funcione.

Agora copie e cole o código abaixo, dependendo da velocidade do seu terminal, etc, você pode ter que copiar e colar em pequenas seções. Ou digite! tenha aquela sensação dos anos 80 de volta também.

;

; Teste o LED do usuário e a chave do usuário; BDOS equ 05h; cp / m BDOS ponto de entrada USRLED equ 0; código de operação para controle de LED do usuário USRKEY equ 80h; código de operação para controle de troca de usuário DPORT equ 0; porta de dados i / o CPORT equ 1; saída de porta de comando; org 0100h; ld (estack), sp; manter as informações existentes para retornar a cp / m ld sp, pilha; ld hl, msg; hello mensagem chamada _puts lp: ld a, 1; ligar = 1 chamada led atraso de chamada; atrasar e esperar pela (s) tecla (s) jr nz, terminar; diferente de zero significa tecla / interruptor pressionado xor a; a = 0 atraso da chamada do led da chamada; atrasar ou aguardar a tecla / interruptor jr z, lp; se zero, nenhuma tecla / interruptor, vá novamente; terminar: xor a; a tecla ou interruptor foi pressionado, então chamada concluída led ld hl, tchau; dizer tchau chamada _puts; exibir msg HL = ld sp, (estack); pilha original ret; retornar para cp / m; led: push af; salvar valor do led 0 ou 1 ld a, USRLED out (CPORT), a; optcode enviado pop af out (DPORT), a; dados enviados ret;; Loop de atraso que verifica a tecla pressionada no terminal ou atraso da tecla do usuário: ld bc, 00e00h; CPU de aproximadamente 1 / 2s 8 mhz, suposição pura do loop 2: dec bc; conta o loop push bc; salva regs ao chamar BDOS push de ld c, 6; BDOS raw i / o verificar se a tecla foi pressionada ld e, 0ffh chamar BDOS pop de; obter nossos valores de volta da pilha pop bc ou a; verificar se a tecla foi pressionada no terminal ret nz; sim retornar (também mantém o sinalizador nz definido) ld a, USRKEY; Agora verifique a chave do usuário (CPORT), a; porta de comando em a, (DPORT); leia a chave e a, 1; apenas interessado no bit 0 ret nz; retorne se a tecla do usuário pressionou ld a, b; ou é bc = 0 ou c jr nz, loop2; não terminou a contagem, vá novamente xor a; defina o sinalizador z como 0 ret; não retorne nenhuma tecla pressionada, fim do atraso; _puts: push bc; salvar nossos regs prontos para chamadas bdos push de nxt: ld a, (hl); obter char ou a; testar se é 0, fim de msg jr z, concluído; sim, então concluído ld e, a; configurar chamada para BDOS para imprimir um char ld c, 2 push hl; salvar BDOS de chamada de ponteiro de texto; imprimi-lo pop hl inc hl; próximo char jr nxt; continuar feito: pop de; terminar restaurar regs pop bc ret; e retornar; msg db 'Teste de LED do usuário, qualquer tecla para sair' db 0ah, 0dh, 0 bye db 'Sair' db 0ah, 0dh, 0 estack dw 0 ds 256 - 2 pilha: dw 0

Salve o arquivo usando ESC x. Veja o guia de uso do ZDE16 para mais informações, é um pouco como o wordstar para a maioria das edições, exceto que as opções Ctrl-K são diferentes.

Etapa 3: compilar e executar o programa

Depois de ter seu código-fonte na máquina.

Modelo:

F>

F> a: z80asm myled / a Z80ASM Copyright (C) 1983-86 de SLR Systems Rel. 1.32 MYLED / A Fim do arquivo Aprovado 1 0 Erro (s) detectado (s). 406 Bytes absolutos. 16 símbolos detectados.

Isso irá procurar o arquivo myled.z80 e produzir um arquivo binário (.com), que é o que a opção / a significa.

Consulte o arquivo z80asm.doc para obter mais informações.

Para executar o programa, digite:

F> myled

Teste de LED do usuário, qualquer tecla para sair da Saída F>

Pressione o botão do usuário ou uma tecla no terminal para sair.

Feito.

Recomendado: