Z80-mbc2 Z80 Code Flash LED użytkownika: 3 kroki
Z80-mbc2 Z80 Code Flash LED użytkownika: 3 kroki
Anonim
Z80-mbc2 Z80 Kod Flash LED użytkownika
Z80-mbc2 Z80 Kod Flash LED użytkownika

Jest to przykładowy program użytkownika LED napisany w asemblerze Z80 dla komputera z80-mbc2.

Zrobiłem to ćwiczenie testowe i rewizyjne dla mnie, to jest mój pierwszy program Z80 od ponad 35 lat.

Cieszyć się

Kieszonkowe dzieci

Komputer Z80-mbc2

Kopia Z80ASM firmy SLR Systems Rel. 1.32, do pobrania z wielu archiwów cp/m

Edytor, użyłem ZDE16, ponieważ był już na obrazie rozruchowym CP/M dla z80-mbc2

Krok 1: Zainstaluj Z80asm na swoim Z80-mbc2

Zainstaluj Z80asm na swoim Z80-mbc2
Zainstaluj Z80asm na swoim Z80-mbc2

Zakładam pewną znajomość narzędzi, które posiadasz dla swojego Z80-MBC2, a mianowicie dowolnej używanej wersji cpmtools. Oto kroki, jeśli używasz wersji wiersza poleceń:

  1. Pobierz pliki z80asm.com i z80asm.doc (opcjonalnie) w katalogu w dowolnym miejscu na komputerze-hoście
  2. Włóż kartę SD do tego samego komputera, zakładam poniżej, że pokazuje się jako dysk E: poniżej.
  3. Umieściłem asembler na moim dysku CP/M A, dla cp/m 2.2 byłby to obraz dysku DS0N00. DSK
  4. Polecenie: cpmcp -f z80mbc2-d0 e:DS0N00. DSK z80asm.com 0: skopiuje plik z80asm.com do obrazu
  5. Komenda cpmcp -f z80mbc2-d0 e:DS0N00. DSK z80asm.doc 0: skopiuje dokumentację na dysk (opcjonalnie)

Kiedy uruchamiasz cp/m 2.2 na swoim z80-mbc, powinieneś mieć teraz z80asm.com i z80asm.doc (opcjonalnie) na dysku A

Krok 2: Skopiuj do siebie kod źródłowy Z80-mbc2

Połącz się z z80-mbc za pomocą programu terminalowego

Proponuję użyć niezapełnionego dysku do zapisania kodu źródłowego na przykład f: aby wybrać ten typ dysku:

F:

po kilku sekundach zobaczysz monit F:.

teraz użyj programu zde16 na dysku A, aby edytować pusty plik:

a:zde16 myled.z80

Spowoduje to utworzenie pliku o nazwie myled.z80 na dysku F:, uwaga:.z80 jest wymagany w nazwie, aby z80asm działał.

Teraz skopiuj i wklej poniższy kod, w zależności od szybkości twojego terminala itp. Być może będziesz musiał skopiować i wkleić w małych sekcjach. Lub wpisz to! odzyskaj również atmosferę lat osiemdziesiątych.

;

;Przetestuj diodę LED użytkownika i klucz użytkownika; BDOS equ 05h;cp/m Punkt wejścia BDOS USRLED equ 0;opcode do kontroli LED użytkownika USRKEY equ 80h;opcode do kontroli User Switch DPORT equ 0;port DATA i/o CPORT equ 1;wyjście portu komend; org 0100h; ld (stack), sp;zachowaj istniejące informacje do powrotu do cp/m ld sp, stack; ld hl, wiadomości 0 opóźnienie połączenia led;opóźnienie lub czekanie na klawisz/przełącznik jr z, lp;jeśli zero, brak klawisza/przełącznika, idź ponownie; zakończenie: x lub a;przycisk lub przełącznik został naciśnięty, więc gotowe wywołanie led ld hl, bye;say bye call _puts;display msg HL= ld sp, (stos);oryginalny stos ret;powrót do cp/m; led: push af;zapisz wartość led 0 lub 1 ld a, USRLED out (CPORT), a;optcode wysłany pop af out (DPORT), a;dane wysłane ret;;Pętla opóźnienia sprawdzania wciśniętego klawisza na terminalu lub opóźnienia klawisza użytkownika: ld bc, 00e00h;aprox 1/2s 8mhz CPU, czysta pętla zgadywania 2: dec bc;liczenie pętli push bc;zapisz regs podczas wywoływania BDOS push de ld c, 6;BDOS surowe i/o sprawdź czy naciśnięto klawisz ld e, 0ffh wywołaj BDOS pop de;pobierz nasze wartości z powrotem ze stosu pop bc lub a;sprawdź czy klawisz został naciśnięty na terminalu ret nz;tak return (utrzymuje również flagę nz) ld a, USRKEY;Teraz sprawdź klucz użytkownika (CPORT), a;port poleceń w a, (DPORT);odczytaj klucz i a, 1;interesuje tylko bit 0 ret nz;powróć, jeśli naciśnięto klawisz użytkownika ld a, b;lub jest bc=0 lub c jr nz, loop2;nie zakończ liczenia, idź ponownie xor a;ustaw flagę z na 0 ret;powróć bez naciśnięcia klawisza, koniec opóźnienia; _puts: push bc;zapisz nasze rejestry gotowe do wywołań bdos push de nxt: ld a, (hl);pobierz char lub a;sprawdź czy jest 0, koniec msg jr z, gotowe;tak, gotowe ld e, a; skonfiguruj wywołanie BDOS, aby wydrukować char ld c, 2 push hl;save text pointer call BDOS;print it pop hl inc hl;następny char jr nxt;kontynuuj pracę: pop de;zakończono przywracanie regs pop bc ret;i return; msg db 'Test LED użytkownika, dowolny klawisz do wyjścia' db 0ah, 0dh, 0 bye db 'Wyjście' db 0ah, 0dh, 0 estack dw 0 ds 256 - 2 stos: dw 0

Zapisz plik za pomocą ESC x. Zobacz przewodnik użytkowania ZDE16, aby uzyskać więcej informacji, to trochę jak wordstar dla większości edycji, z wyjątkiem tego, że opcje Ctrl-K są inne.

Krok 3: Skompiluj i uruchom program

Gdy masz już swój kod źródłowy na maszynie.

Rodzaj:

F>

F>a:z80asm myled/a Z80ASM Copyright (C) 1983-86 przez SLR Systems Rel. 1,32 MYLED/A Koniec pliku Przejście 1 0 Wykryto błędy. 406 bajtów absolutnych. Wykryto 16 symboli.

Spowoduje to wyszukanie pliku myled.z80 i utworzenie pliku binarnego (.com), co oznacza opcja /a.

Zobacz plik z80asm.doc, aby uzyskać więcej informacji.

Aby uruchomić program, wpisz:

F>myled

Test diody LED użytkownika, dowolny klawisz do wyjścia Wyjście F>

Aby wyjść, naciśnij przycisk użytkownika lub klawisz na terminalu.

Gotowe.