Z80-mbc2 Kode Z80 Flash Pengguna LED: 3 Langkah
Z80-mbc2 Kode Z80 Flash Pengguna LED: 3 Langkah
Anonim
Z80-mbc2 Kode Z80 Flash Pengguna LED
Z80-mbc2 Kode Z80 Flash Pengguna LED

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

Instal Z80asm di Z80-mbc2 Anda
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:

  1. Dapatkan file z80asm.com dan z80asm.doc (opsional) di direktori beberapa tempat di PC host Anda
  2. Letakkan kartu SD Anda di PC yang sama, saya asumsikan di bawah ini ditampilkan sebagai drive E: di bawah.
  3. Saya meletakkan assembler pada CP/M disk A saya, untuk cp/m 2.2 itu akan menjadi disk image DS0N00. DSK
  4. Perintah: cpmcp -f z80mbc2-d0 e:DS0N00. DSK z80asm.com 0: akan mengcopy file z80asm.com ke image
  5. 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.