Inhaltsverzeichnis:

Z80-mbc2 Z80 Code Flash Benutzer-LED - Gunook
Z80-mbc2 Z80 Code Flash Benutzer-LED - Gunook

Video: Z80-mbc2 Z80 Code Flash Benutzer-LED - Gunook

Video: Z80-mbc2 Z80 Code Flash Benutzer-LED - Gunook
Video: Z80-MBC2 Flashing LED Clock 2024, November
Anonim
Z80-mbc2 Z80 Code Flash Benutzer-LED
Z80-mbc2 Z80 Code Flash Benutzer-LED

Dies ist ein Beispiel für ein Benutzer-LED-Programm, das im Z80-Assembler für den z80-mbc2-Computer geschrieben wurde.

Ich habe dies als Test- und Revisionsübung für mich gemacht, dies ist mein erstes Z80-Programm seit über 35 Jahren.

Genießen

Lieferungen

Z80-mbc2-Computer

Eine Kopie von Z80ASM von SLR Systems Rel. 1.32, herunterladbar aus vielen cp/m-Archiven

Als Editor habe ich ZDE16 verwendet, da es bereits auf dem CP/M-Boot-Image für den z80-mbc2 war

Schritt 1: Installieren Sie Z80asm auf Ihrem Z80-mbc2

Installieren Sie Z80asm auf Ihrem Z80-mbc2
Installieren Sie Z80asm auf Ihrem Z80-mbc2

Ich gehe davon aus, dass Sie mit den Tools, die Sie für Ihr Z80-MBC2 haben, vertraut sind, nämlich welche Version von cpmtools Sie verwenden. Hier sind die Schritte, wenn Sie die Befehlszeilenversionen verwenden:

  1. Laden Sie die Dateien z80asm.com und z80asm.doc (optional) in ein Verzeichnis auf Ihrem Host-PC
  2. Legen Sie Ihre SD-Karte in den gleichen PC ein, ich gehe davon aus, dass sie unten als Laufwerk E: angezeigt wird.
  3. Ich lege den Assembler auf meine CP/M-Disk A, für cp/m 2.2 wäre das das Disk-Image DS0N00. DSK
  4. Der Befehl: cpmcp -f z80mbc2-d0 e:DS0N00. DSK z80asm.com 0: kopiert die Datei z80asm.com in das Image
  5. Der Befehl cpmcp -f z80mbc2-d0 e:DS0N00. DSK z80asm.doc 0: kopiert die Dokumentation auf die Diskette (optional)

Wenn Sie cp/m 2.2 auf Ihrem z80-mbc booten, sollten Sie jetzt z80asm.com und z80asm.doc (optional) auf Laufwerk A haben

Schritt 2: Kopieren Sie den Quellcode zu Ihnen Z80-mbc2

Stellen Sie mit Ihrem Terminalprogramm eine Verbindung zum z80-mbc her

Ich schlage vor, dass Sie eine unbestückte Festplatte verwenden, um den Quellcode zu speichern, zum Beispiel f: um diesen Laufwerkstyp auszuwählen:

F:

Nach einigen Sekunden sehen Sie die Eingabeaufforderung F:.

Verwenden Sie nun das Programm zde16 auf Laufwerk A, um eine leere Datei zu bearbeiten:

a:zde16 myled.z80

Dadurch wird eine Datei namens myled.z80 auf der Festplatte F: erstellt. Hinweis: Die.z80 ist im Namen erforderlich, damit z80asm funktioniert.

Kopieren Sie nun den folgenden Code und fügen Sie ihn ein. Abhängig von Ihrer Terminalgeschwindigkeit usw. müssen Sie möglicherweise in kleinen Abschnitten kopieren und einfügen. Oder geben Sie es ein! Holen Sie sich auch das Gefühl der 80er zurück.

;

;Testen Sie die Benutzer-LED und den Benutzerschlüssel; BDOS equ 05h;cp/m BDOS-Einstiegspunkt USRLED equ 0;Opcode für Benutzer-LED-Steuerung USRKEY equ 80h;Opcode für Benutzer-Switch-Steuerung DPORT equ 0;DATEN-Port i/o CPORT equ 1;Befehlsport-Ausgang; org 0100h; ld (estack), sp;behalten Sie vorhandene Informationen für die Rückkehr zu cp/m ld sp, stack; ld hl, msg;Hallo Message Call _puts lp: ld a, 1;turn on = 1 call led call delay;verzögern und warten auf Taste(n) jr nz, beenden;nicht null bedeutet Taste/Schalter gedrückt xor a;a= 0 Anruf führte Anrufverzögerung;Verzögern oder warten auf Taste/Schalter jr z, lp;wenn Null, kein Schlüssel/Schalter, gehen Sie erneut; beenden: xoder ein;Taste oder Schalter wurde gedrückt, also fertig call led ld hl, bye;sag tschüss call _puts;display msg HL= ld sp, (estack);original stack ret;return to cp/m; led: push af;save led value 0 or 1 ld a, USRLED out (CPORT), a;optcode gesendet pop af out (DPORT), a;Daten gesendet ret;;Verzögerung der Schleife, die die Prüftaste auf dem Terminal oder der Benutzertaste gedrückt hat Verzögerung: ld bc, 00e00h;ca. 1/2s 8mhz CPU, reine Vermutungsarbeit Schleife2: dec bc;die Schleife zählen push bc;Regs speichern beim Aufruf von BDOS push de ld c, 6;BDOS raw i/o check ob Taste gedrückt ld e, 0ffh BDOS pop de aufrufen;unsere Werte vom Stack zurückholen pop bc oder a;check ob Taste am Terminal gedrückt ret nz;yes zurück (behält auch nz Flag gesetzt) ld a, USRKEY;Nun check User Key out (CPORT), a;command port in a, (DPORT);read key und a, 1;nur interessiert an Bit 0 ret nz;return wenn Userkey gedrückt ld a, b;oder is bc=0 oder c jr nz, loop2;Zählung nicht beendet, weiter xor a;z-Flag auf 0 setzen ret;return keine Taste gedrückt, Ende der Verzögerung; _puts: push bc;speichere unsere Regs bereit für bdos-Aufrufe push de nxt: ld a, (hl);char oder a abrufen;test ob es 0 ist, Ende der Nachricht jr z, fertig;ja so fertig ld e, a; Aufruf an BDOS einrichten, um ein char ld c zu drucken, 2 hl drücken;Textzeiger speichern BDOS aufrufen;ausgeben pop hl inc hl;nächstes char jr nxt;weitermachen: pop de;beendete Wiederherstellungsregs pop bc ret;und zurück; msg db 'User LED Test, jede Taste zum Beenden' db 0ah, 0dh, 0 bye db 'Exit' db 0ah, 0dh, 0 estack dw 0 ds 256 - 2 stack: dw 0

Speichern Sie die Datei mit ESC x. Weitere Informationen finden Sie im ZDE16-Gebrauchshandbuch. Es ist für die meisten Bearbeitungen ein bisschen wie Wordstar, außer dass die Strg-K-Optionen anders sind.

Schritt 3: Kompilieren und Ausführen des Programms

Sobald Sie Ihren Quellcode auf dem Computer haben.

Typ:

F>

F>a:z80asm myled/a Z80ASM Copyright (C) 1983-86 von SLR Systems Rel. 1.32 MYLED/A Dateiende Pass 1 0 Fehler erkannt. 406 Absolute Bytes. 16 Symbole erkannt.

Dies sucht nach der Datei myled.z80 und erzeugt eine Binärdatei (.com), dafür steht die Option /a.

Weitere Informationen finden Sie in der Datei z80asm.doc.

Um das Programm auszuführen, geben Sie Folgendes ein:

F>myled

Benutzer-LED-Test, beliebige Taste zum Beenden Exit F>

Drücken Sie zum Beenden entweder die Benutzertaste oder eine Taste am Terminal.

Fertig.

Empfohlen: