Z80-mbc2 Z80 Kodi LED LED i përdoruesit: 3 hapa
Z80-mbc2 Z80 Kodi LED LED i përdoruesit: 3 hapa
Anonim
Z80-mbc2 Z80 Kodi LED User User
Z80-mbc2 Z80 Kodi LED User User

Ky është një shembull i programit LED të përdoruesit i shkruar në montuesin Z80 për kompjuterin z80-mbc2.

E bëra këtë një ushtrim testimi dhe rishikimi për mua, ky është programi im i parë Z80 për mbi 35 vjet.

Shijoni

Furnizimet

Kompjuter Z80-mbc2

Një kopje e Z80ASM nga SLR Systems Rel. 1.32, i shkarkueshëm nga shumë arkiva cp/m

Një redaktues, kam përdorur ZDE16, pasi ishte tashmë në imazhin e nisjes CP/M për z80-mbc2

Hapi 1: Instaloni Z80asm në Z80-mbc2 tuaj

Instaloni Z80asm në Z80-mbc2 tuaj
Instaloni Z80asm në Z80-mbc2 tuaj

Unë supozoj njëfarë familjariteti me mjetet që keni për Z80-MBC2 tuaj, domethënë çfarëdo versioni të cpmtools që përdorni. Këtu janë hapat nëse përdorni versionet e linjës së komandës:

  1. Merrni skedarët z80asm.com dhe z80asm.doc (opsional) në një drejtori në një vend në kompjuterin tuaj pritës
  2. Vendosni kartën tuaj SD në të njëjtin kompjuter, supozoj më poshtë se po shfaqet si disku E: më poshtë.
  3. Vendosa montuesin në diskun tim CP/M A, për cp/m 2.2 që do të ishte imazhi i diskut DS0N00. DSK
  4. Komanda: cpmcp -f z80mbc2 -d0 e: DS0N00. DSK z80asm.com 0: do të kopjojë skedarin z80asm.com në imazh
  5. Komanda cpmcp -f z80mbc2 -d0 e: DS0N00. DSK z80asm.doc 0: do të kopjojë dokumentacionin në disk (opsional)

Kur nisni cp/m 2.2 në z80-mbc tuaj, tani duhet të keni z80asm.com dhe z80asm.doc (opsional) në diskun A

Hapi 2: Kopjoni Kodin Burimor tek Ju Z80-mbc2

Lidhuni me z80-mbc duke përdorur programin tuaj terminal

Unë ju sugjeroj të përdorni një disk të papopulluar për të ruajtur kodin burimor, për shembull f: për të zgjedhur këtë lloj disku:

F:

pas disa sekondash do të shihni kërkesën F:

tani përdorni programin zde16 në diskun A për të redaktuar një skedar bosh:

a: zde16 myled.z80

Kjo do të krijojë një skedar të quajtur myled.z80 në diskun F:, shënim:.z80 kërkohet në emër që z80asm të funksionojë.

Tani kopjoni dhe ngjisni kodin më poshtë, në varësi të shpejtësisë tuaj të terminalit etj, mund t'ju duhet të kopjoni dhe ngjisni në seksione të vogla. Ose shkruajeni atë! merrni atë ndjenjën e viteve 1980 gjithashtu.

;

Testoni LED të përdoruesit dhe çelësin e përdoruesit; BDOS baras 05h; cp/m Pika e hyrjes BDOS USRLED barazuar 0; opcode për kontrollin LED të përdoruesit USRKEY baraz 80h; opcode për kontrollin e kalimit të përdoruesit DPORT barabartë 0; Porta e të dhënave i/o CPORT barabartë 1; Dalja e portës së komandës; org 0100h; ld (stack), sp; mbani informacionin ekzistues për kthim në cp/m ld sp, stack; ld hl, msg; përshëndetje thirrja e mesazhit _palt lp: ld a, 1; ndez = 1 vonesë e thirrjes së udhëhequr nga thirrja; vonesë dhe pritje për çelësat (t) jr nz, përfundimi; jo zero do të thotë çelës/ndërprerës i shtypur xor a; a = 0 thirrje e udhëhequr nga vonesa e thirrjes; vononi ose prisni çelësin/çelësin jr z, lp; nëse zero, nuk ka çelës/ndërprerës, shkoni përsëri; përfundoj: xor a; çelësi ose çelësi u shtyp, kështu që thirrja u krye ld hl, bye; thuaj bye thirrje _puts; shfaq msg HL = ld sp, (estack); stivi origjinal ret; kthehu në cp/m; led: shtytje af; ruani vlerën e udhëhequr 0 ose 1 ld a, USRLED out (CPORT), a; optcode dërguar pop af jashtë (DPORT), a; të dhënat e dërguara ret;; Vonesa e lakut që çelësi i kontrollit shtypet në terminal ose vonesën e çelësit të përdoruesit: ld bc, 00e00h; afërsisht 1/2s 8mhz CPU, cikël i pastër pune loop2: deccc; numëroni lakun bc; ruani regs kur thërrisni BDOS push de ld c, 6; BDOS i/o i papërpunuar kontrolloni nëse tasti është shtypur ld e, 0ffh telefononi BDOS pop de; merrni vlerat tona nga stack pop bc ose a; kontrolloni nëse çelësi është shtypur në terminal ret nz; po kthehet (gjithashtu mban flamurin nz të vendosur) ld a, USRKEY; Tani kontrolloni çelësin e përdoruesit (CPORT), a; portën e komandës në, (DPORT); lexoni çelësin dhe a, 1; interesohen vetëm për bit 0 ret nz; kthehuni nëse userkey shtypur ld a, b; ose është bc = 0 ose c jr nz, loop2; numërimi nuk ka mbaruar, shkoni përsëri xor a; vendosni flamurin z në 0 ret; mos ktheni asnjë çelës të shtypur, fundi i vonesës; _puts: shtyj bc; ruajini regs tonë gati për thirrje bdos shtyni de nxt: ld a, (hl); merrni char ose a; provoni nëse është 0, fundi i msg jr z, përfundoi; po kështu u bë ld e, a; vendosni thirrjen në BDOS për të printuar një char ld c, 2 shtytje hl; ruani thirrjen e treguesit të tekstit në BDOS; shtypeni atë pop hl inc hl; karrigen tjetër jr nxt; vazhdoni të bëni: pop de; përfunduar rivendosjen e regs pop bc ret; dhe kthimin; msg db 'Test LED i përdoruesit, çdo çelës për të dalë' db 0ah, 0dh, 0 bye db 'Exit' db 0ah, 0dh, 0 estack dw 0 ds 256 - 2 pirg: dw 0

Ruani skedarin duke përdorur ESC x. Shihni udhëzuesin e përdorimit ZDE16 për më shumë informacion, është pak a shumë si wordstar për shumicën e redaktimeve, me përjashtim të opsioneve Ctrl-K që janë të ndryshme.

Hapi 3: Përpiloni dhe Drejtoni Programin

Pasi të keni kodin tuaj burimor në makinë.

Lloji:

F>

F> a: z80asm myled/a Z80ASM E drejta e autorit (C) 1983-86 nga SLR Systems Rel. 1.32 MYLED/A Fundi i skedarit Pass 1 0 Gabim (a) u zbuluan. 406 Bajt Absolute. 16 Simbole të Zbuluara.

Kjo do të kërkojë skedarin myled.z80 dhe do të prodhojë një skedar binar (.com), kjo është ajo që përfaqëson opsioni /a.

Shikoni skedarin z80asm.doc për më shumë informacion.

Për të ekzekutuar programin, shkruani:

F> myled

Test LED i përdoruesit, çdo çelës për të dalë nga Dalja F>

Shtypni butonin e përdoruesit ose një buton në terminal për të dalë.

U krye