İçindekiler:

Z80-mbc2 Z80 Kodu Flaş Kullanıcı LED'i: 3 Adım
Z80-mbc2 Z80 Kodu Flaş Kullanıcı LED'i: 3 Adım

Video: Z80-mbc2 Z80 Kodu Flaş Kullanıcı LED'i: 3 Adım

Video: Z80-mbc2 Z80 Kodu Flaş Kullanıcı LED'i: 3 Adım
Video: Komputer na Z80 zbudowany od zera, prezentacja i testy; Jak działa procesor? 2024, Temmuz
Anonim
Z80-mbc2 Z80 Kodu Flaş Kullanıcı LED'i
Z80-mbc2 Z80 Kodu Flaş Kullanıcı LED'i

Bu, z80-mbc2 bilgisayarı için Z80 assembler'da yazılmış örnek bir kullanıcı LED programıdır.

Bunu benim için bir test ve revizyon çalışması yaptım, bu benim 35 yılı aşkın süredir ilk Z80 programım.

Eğlence

Gereçler

Z80-mbc2 bilgisayar

SLR Systems Rel'den Z80ASM'nin bir kopyası. 1.32, birçok cp/m arşivinden indirilebilir

Bir editör, ZDE16 kullandım, çünkü zaten z80-mbc2 için CP/M önyükleme görüntüsündeydi

1. Adım: Z80asm'i Z80-mbc2'nize yükleyin

Z80asm'ı Z80-mbc2'nize yükleyin
Z80asm'ı Z80-mbc2'nize yükleyin

Kullandığınız cpmtools sürümü ne olursa olsun, Z80-MBC2'niz için sahip olduğunuz araçlara biraz aşina olduğunuzu varsayıyorum. Komut satırı sürümlerini kullanıyorsanız adımlar şunlardır:

  1. Ana bilgisayarınızdaki bir dizinde z80asm.com ve z80asm.doc (isteğe bağlı) dosyalarını alın
  2. SD kartınızı aynı PC'ye koyun, aşağıda E: sürücüsü olarak gösterildiğini varsayıyorum.
  3. Birleştiriciyi cp/m 2.2 için CP/M diskim A'ya koydum, bu disk görüntüsü DS0N00. DSK olacaktır.
  4. Komut: cpmcp -f z80mbc2-d0 e:DS0N00. DSK z80asm.com 0: z80asm.com dosyasını görüntüye kopyalar
  5. cpmcp -f z80mbc2-d0 e:DS0N00. DSK z80asm.doc 0: komutu, belgeleri diske kopyalayacaktır (isteğe bağlı)

z80-mbc'nizde cp/m 2.2'yi başlattığınızda, artık A sürücüsünde z80asm.com ve z80asm.doc (isteğe bağlı) olmalıdır.

Adım 2: Kaynak Kodu Size Kopyalayın Z80-mbc2

Terminal programınızı kullanarak z80-mbc'ye bağlanın

Kaynak kodunu kaydetmek için doldurulmamış bir disk kullanmanızı öneririm, örneğin bu sürücü türünü seçmek için f::

F:

birkaç saniye sonra F: istemini göreceksiniz.

şimdi boş bir dosyayı düzenlemek için A sürücüsündeki zde16 programını kullanın:

a:zde16 myled.z80

Bu, F: diskinde myled.z80 adlı bir dosya oluşturacaktır, not: z80asm'ın çalışması için adında.z80 gerekir.

Şimdi aşağıdaki kodu kopyalayıp yapıştırın, terminal hızınıza bağlı olarak küçük bölümler halinde kopyalayıp yapıştırmanız gerekebilir. Veya yazın! 1980'lerin hissini de geri alın.

;

;Kullanıcı LED'ini ve kullanıcı Anahtarını test edin; BDOS equ 05h;cp/m BDOS giriş noktası USRLED equ 0;Kullanıcı LED kontrolü için opcode USRKEY equ 80h;Kullanıcı Anahtarı kontrolü için opcode DPORT equ 0;DATA portu i/o CPORT equ 1;Komut portu çıkışı; kuruluş 0100h; ld (yığın), sp;cp/m'ye dönmek için mevcut bilgiyi sakla ld sp, stack; ld hl, msg;merhaba mesajı çağrı _puts lp: ld a, 1;açma = 1 çağrı led çağrı gecikmesi;geciktir ve tuş(lar)ı bekle jr nz, bitiş;sıfır olmayan tuşa/anahtara basılmış demektir xor a;a= 0 çağrı ledi çağrı gecikmesi;anahtar/anahtar jr z, lp için geciktirme veya bekleme;sıfır ise, anahtar/anahtar yok, tekrar gidin; bitiş: xor a;anahtar veya anahtara basıldı, bu yüzden çağrı led ld hl, güle güle;bay bay çağrı _puts;görüntüleme msj HL= ld sp, (yığın);orijinal yığın ret;cp/m'ye geri dön; led: it af; led değerini kaydet 0 veya 1 ld a, USRLED out (CPORT), a;optcode gönderilen pop af out (DPORT), a;veri gönderildi ret;;Terminalde veya kullanıcı anahtarında basılan tuşu kontrol eden gecikme döngüsü: ld bc, 00e00h; yaklaşık 1/2s 8mhz CPU, saf tahmin çalışma döngüsü2: dec bc;döngüyü say push bc;BDOS push de ld c'yi çağırırken kayıtları kaydet, 6;BDOS ham i/o tuşa basılıp basılmadığını kontrol edin ld e, 0ffh BDOS pop de çağır;değerlerimizi yığın pop bc veya a'dan geri alın;terminal ret nz'de tuşa basılıp basılmadığını kontrol edin;evet dönüş (nz bayrağını sette tutar) ld a, USRKEY;Şimdi kullanıcı anahtarı çıkışını (CPORT), a;a, (DPORT) komut bağlantı noktasını kontrol edin;key ve a, 1 oku;sadece bit 0 ret nz ile ilgilenir;kullanıcı anahtarı ld a, b'ye basarsa geri dön;veya bc=0 veya c jr nz, loop2;sayma bitmedi, tekrar gidin xor a;z bayrağını 0 ret'e ayarlayın;dönüş tuşuna basılmadı, gecikme sonu; _puts: push bc; kayıtlarımızı bdos çağrıları için hazır olarak kaydedin push de nxt: ld a, (hl); char veya a alın; 0 ise test edin, msg sonu jr z, bitti;evet öyle yapıldı ld e, a; bir char ld c yazdırmak için BDOS'a çağrıyı ayarlayın, 2 hl'ye basın;metin işaretçi çağrısını BDOS'a kaydedin; yazdır pop hl inc hl;sonraki char jr nxt;devam etmeye devam et: pop de;bitirilmiş geri yükleme kayıtları pop bc ret;ve geri dön; msg db 'Kullanıcı LED testi, çıkmak için herhangi bir tuş' db 0ah, 0dh, 0 bye db 'Exit' db 0ah, 0dh, 0 yığını dw 0 ds 256 - 2 yığın: dw 0

Dosyayı ESC x kullanarak kaydedin. Daha fazla bilgi için ZDE16 kullanım kılavuzuna bakın, Ctrl-K seçeneklerinin farklı olması dışında çoğu düzenleme için biraz kelime yıldızı gibidir.

Adım 3: Programı Derleyin ve Çalıştırın

Kaynak kodunuz makinede olduğunda.

Tip:

F>

F>a:z80asm myled/a Z80ASM Telif hakkı (C) 1983-86 SLR Systems Rel. 1.32 MYLED/A Dosya Sonu Geçti 1 0 Hata(lar) Algılandı. 406 Mutlak Bayt. 16 Sembol Algılandı.

Bu, myled.z80 dosyasını arayacak ve bir ikili (.com) dosyası üretecektir, /a seçeneğinin anlamı budur.

Daha fazla bilgi için z80asm.doc dosyasına bakın.

Programı çalıştırmak için şunu yazın:

F>millet

Kullanıcı LED testi, Çıkış F'den çıkmak için herhangi bir tuş>

Çıkmak için kullanıcı düğmesine veya terminaldeki bir tuşa basın.

Tamamlandı.

Önerilen: