Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
Ini adalah contoh program LED pengguna yang ditulis dalam assembler Z80 untuk komputer z80-mbc2.
Saya melakukan ini sebagai tes dan latihan revisi untuk saya, ini adalah program Z80 pertama saya selama lebih dari 35 tahun.
Menikmati
Perlengkapan
Komputer Z80-mbc2
Salinan Z80ASM dari SLR Systems Rel. 1.32, dapat diunduh dari banyak arsip cp/m
Editor, saya menggunakan ZDE16, karena sudah ada di CP/M boot image untuk z80-mbc2
Langkah 1: Instal Z80asm di Z80-mbc2 Anda
Saya berasumsi beberapa keakraban dengan alat yang Anda miliki untuk Z80-MBC2 Anda, yaitu versi cpmtools apa pun yang Anda gunakan. Berikut langkah-langkahnya jika menggunakan versi baris perintah:
- Dapatkan file z80asm.com dan z80asm.doc (opsional) di direktori beberapa tempat di PC host Anda
- Letakkan kartu SD Anda di PC yang sama, saya asumsikan di bawah ini ditampilkan sebagai drive E: di bawah.
- Saya meletakkan assembler pada CP/M disk A saya, untuk cp/m 2.2 itu akan menjadi disk image DS0N00. DSK
- Perintah: cpmcp -f z80mbc2-d0 e:DS0N00. DSK z80asm.com 0: akan mengcopy file z80asm.com ke image
- Perintah cpmcp -f z80mbc2-d0 e:DS0N00. DSK z80asm.doc 0: akan menyalin dokumentasi ke disk (opsional)
Saat Anda mem-boot cp/m 2.2 pada z80-mbc Anda, Anda seharusnya sekarang memiliki z80asm.com dan z80asm.doc (opsional) di drive A
Langkah 2: Salin Kode Sumber ke Anda Z80-mbc2
Hubungkan ke z80-mbc menggunakan program terminal Anda
Saya sarankan Anda menggunakan disk yang tidak berpenghuni untuk menyimpan kode sumber, misalnya f: untuk memilih jenis drive ini:
F:
setelah beberapa detik Anda akan melihat F: prompt.
sekarang gunakan program zde16 di drive A untuk mengedit file kosong:
a:zde16 myled.z80
Ini akan membuat file bernama myled.z80 pada disk F:, catatan:.z80 diperlukan dalam nama agar z80asm berfungsi.
Sekarang salin dan tempel kode di bawah ini, tergantung pada kecepatan terminal Anda, dll. Anda mungkin harus menyalin dan menempel di bagian-bagian kecil. Atau ketik! mendapatkan bahwa tahun 1980-an merasa kembali juga.
;
; Uji LED pengguna dan Kunci pengguna; BDOS equ 05h;cp/m Titik masuk BDOS USRLED equ 0;opcode untuk kontrol LED Pengguna USRKEY equ 80h;opcode untuk kontrol Switch Pengguna DPORT equ 0;Port DATA i/o CPORT equ 1;Output port perintah; org 0100h; ld (estack), sp;simpan info yang ada untuk kembali ke cp/m ld sp, stack; ld hl, msg;halo pesan panggilan _puts lp: ld a, 1;hidupkan = 1 panggilan led panggilan tunda;tunda dan tunggu tombol jr nz, selesai;non nol berarti tombol/saklar ditekan xor a;a= 0 panggilan yang dipimpin penundaan panggilan; tunda atau tunggu kunci/saklar jr z, lp; jika nol, tidak ada tombol/saklar, lanjutkan lagi; selesai: xor a;tombol atau sakelar ditekan, jadi selesai panggilan led ld hl, bye;say bye call _puts;display msg HL= ld sp, (estack);asli stack ret;kembali ke cp/m; led: push af;simpan nilai led 0 atau 1 ld a, USRLED out (CPORT), a;optcode terkirim pop af out (DPORT), a;data terkirim ret;;Delay loop yang memeriksa tombol yang ditekan pada terminal atau penundaan tombol pengguna: ld bc, 00e00h;aprox 1/2s 8mhz CPU, loop kerja tebakan murni2: dec bc;hitung loop push bc;simpan reg saat memanggil BDOS push de ld c, 6;BDOS raw i/o periksa apakah tombol ditekan ld e, 0ffh panggil BDOS pop de;dapatkan nilai kita kembali dari stack pop bc atau a;periksa apakah tombol ditekan pada terminal ret nz;yes return (juga membuat flag nz disetel) ld a, USRKEY;Sekarang periksa user key out (CPORT), a;command port in a, (DPORT);read key dan a, 1;hanya tertarik pada bit 0 ret nz;return jika userkey ditekan ld a, b;or is bc=0 atau c jr nz, loop2;belum selesai menghitung, ulangi xor a;setel tanda z ke 0 ret;kembalikan tidak ada tombol yang ditekan, akhir penundaan; _puts: push bc;simpan reg kami siap untuk panggilan bdos push de nxt: ld a, (hl);get char atau a;test apakah itu 0, akhir msg jr z, done;yes so done ld e, a; atur panggilan ke BDOS untuk mencetak char ld c, 2 push hl;save text pointer call BDOS;print it pop hl inc hl;next char jr nxt;terus lakukan: pop de;selesai restore regs pop bc ret;dan kembali; 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
Simpan file menggunakan ESC x. Lihat panduan penggunaan ZDE16 untuk info lebih lanjut, ini agak seperti wordstar untuk sebagian besar pengeditan, kecuali opsi Ctrl-K berbeda.
Langkah 3: Kompilasi dan Jalankan Program
Setelah Anda memiliki kode sumber di mesin.
Jenis:
F>
F>a:z80asm myled/a Z80ASM Hak Cipta (C) 1983-86 oleh SLR Systems Rel. 1,32 MYLED/A Akhir file Lulus 1 0 Kesalahan Terdeteksi. 406 Byte Absolut. 16 Simbol Terdeteksi.
Ini akan mencari file myled.z80 dan menghasilkan file biner (.com), itulah singkatan dari opsi /a.
Lihat file z80asm.doc untuk info lebih lanjut.
Untuk menjalankan program, ketik:
F>myled
Tes LED pengguna, tombol apa saja untuk keluar dari Exit F>
Tekan tombol pengguna atau tombol pada terminal untuk keluar.
Selesai.