Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Toto je příklad uživatelského programu LED napsaného v assembleru Z80 pro počítač z80-mbc2.
Udělal jsem toto testovací a revizní cvičení pro mě, toto je můj první program Z80 více než 35 let.
Užívat si
Zásoby
Počítač Z80-mbc2
Kopie Z80ASM od SLR Systems Rel. 1.32, lze stáhnout z mnoha archivů cp/m
Jako editor jsem použil ZDE16, protože to už bylo na bootovacím obrázku CP/M pro z80-mbc2
Krok 1: Nainstalujte Z80asm na svůj Z80-mbc2
Předpokládám určitou obeznámenost s nástroji, které máte pro svůj Z80-MBC2, konkrétně jakoukoli verzi cpmtools, kterou používáte. Pokud používáte verze příkazového řádku, postupujte takto:
- Získejte soubory z80asm.com a z80asm.doc (volitelně) v adresáři na nějakém místě na hostitelském počítači
- Vložte kartu SD do stejného počítače, předpokládám níže, že se zobrazuje jako jednotka E: níže.
- Dal jsem assembler na můj CP/M disk A, pro cp/m 2,2, který by byl diskovým obrazem DS0N00. DSK
- Příkaz: cpmcp -f z80mbc2 -d0 e: DS0N00. DSK z80asm.com 0: zkopíruje soubor z80asm.com do obrázku
- Příkaz cpmcp -f z80mbc2 -d0 e: DS0N00. DSK z80asm.doc 0: zkopíruje dokumentaci na disk (volitelně)
Když na svém z80-mbc spustíte cp/m 2.2, měli byste nyní na jednotce A mít z80asm.com a z80asm.doc (volitelně)
Krok 2: Zkopírujte si na sebe zdrojový kód Z80-mbc2
Připojte se k z80-mbc pomocí terminálového programu
Doporučuji použít neobydlený disk k uložení zdrojového kódu, například f: k výběru tohoto typu jednotky:
F:
po několika sekundách se zobrazí výzva F:.
nyní pomocí programu zde16 na jednotce A upravte prázdný soubor:
a: zde16 myled.z80
Tím na disku F:
Nyní zkopírujte a vložte níže uvedený kód, v závislosti na rychlosti vašeho terminálu atd. Budete možná muset zkopírovat a vložit do malých sekcí. Nebo to napište! vraťte se také do 80. let.
;
; Otestujte uživatelskou LED a uživatelský klíč; BDOS equ 05h; cp/m Vstupní bod BDOS USRLED equ 0; opcode pro User LED control USRKEY equ 80h; opcode for User Switch control DPORT equ 0; DATA port i/o CPORT equ 1; Command port output; org 0100h; ld (estack), sp; zachovat stávající informace pro návrat do cp/m ld sp, stack; ld hl, msg; Hello message call _puts lp: ld a, 1; turn = 1 call led delay call; delay and wait for key (s) jr nz, finish; non zero means key/switchPress xor a; a = 0 zpoždění hovoru vedeného LED; zpoždění nebo čekání na klíč/přepínač jr z, lp; pokud nula, žádný klíč/přepínač, jděte znovu; finish: xor a; key or switch wasPress, so done led led ld, bye; say bye call _puts; display msg HL = ld sp, (estack); original stack ret; return to cp/m; led: push af; uložit hodnotu LED 0 nebo 1 ld a, USRLED out (CPORT), a; optcode sent pop af out (DPORT), a; data sent ret;; Zpožděná smyčka, která kontroluje stisknutí klávesy na terminálu nebo zpoždění uživatelského klíče: ld bc, 00e00h; přibližně 1/2s 8mhz CPU, čistá hádací pracovní smyčka2: dec bc; počítání smyčky push bc; uložení pravidel při volání BDOS push de ld c, 6; BDOS raw i/o zkontrolujte, zda je stisknuto tlačítko ld e, 0ffh volání BDOS pop de; získejte naše hodnoty zpět ze zásobníku pop bc nebo a; zkontrolujte, zda je stisknuto tlačítko na terminálu ret nz; yes return (také udržuje nz příznak nastaven) ld a, USRKEY; Nyní zkontrolujte uživatelský klíč (CPORT), a; příkazový port v, (DPORT); přečtěte klíč a a, 1; zajímá vás pouze bit 0 ret nz; vrátit se, pokud stisknete uživatelské tlačítko ld a, b; nebo je bc = 0 nebo c jr nz, loop2; nedokončené počítání, jděte znovu x nebo a; nastavte příznak z na 0 ret; návrat není stisknut žádný klíč, konec zpoždění; _puts: push bc; uložte naše regs připravené pro volání bdos push de nxt: ld a, (hl); get char or a; test if it's 0, end of msg jr z, done; yes so done ld e, a; nastavit volání BDOS k vytištění znaku l c, 2 push hl; uložit volání ukazatele textu BDOS; vytisknout pop hl inc hl; další znak jr nxt; pokračovat v práci: pop de; dokončeno obnovení regs pop bc ret; a vrátit se; msg db 'User LED test, any key to exit' db 0ah, 0dh, 0 bye db 'Exit' db 0ah, 0dh, 0 estack dw 0 ds 256-2 stack: dw 0
Uložte soubor pomocí ESC x. Další informace najdete v uživatelské příručce ZDE16, pro většinu úprav je to trochu jako wordstar, kromě toho, že možnosti Ctrl-K jsou různé.
Krok 3: Zkompilujte a spusťte program
Jakmile budete mít na počítači svůj zdrojový kód.
Typ:
F>
F> a: z80asm myled/a Z80ASM Copyright (C) 1983-86 od SLR Systems Rel. 1,32 MYLED/A Konec souboru Pass 1 0 Zjištěny chyby. 406 absolutních bytů. Zjištěno 16 symbolů.
Tím se vyhledá soubor myled.z80 a vytvoří se binární (.com) soubor, což znamená možnost /a.
Další informace naleznete v souboru z80asm.doc.
Chcete -li spustit program, zadejte:
F> myled
Uživatelský test LED, libovolný klíč pro ukončení Ukončit F>
Ukončete stisknutím uživatelského tlačítka nebo klávesy na terminálu.
Hotovo.