commodore.gen.tr

Diğer Nostaljik Bilgisayarlar => Sinclair - Yazılım => Konuyu başlatan: ilkergorkem üzerinde Aralık 26, 2008, 20:08:13 ÖS



Konu Başlığı: Z80 Machine Code Öğrenmek İstiyorum
Gönderen: ilkergorkem üzerinde Aralık 26, 2008, 20:08:13 ÖS
20 sene geç kaldık ama belkide... :-\

1) tavsiye edebileceğiniz yerli / yabancı site varmı?
2) tavsiye edebileceğiniz belgeler neler?
benim bulduklarım bunlar ama zamandan tasarruf için tavsiye bekliyorum belki daha iyi birşey söylersiniz
  • Spectrum Machine Language for the Absolute Beginner
  • Z80 Assembly Language Programming
  • Machine Code Beginners

3) kullanmam için emulator ne olmalı benim bulduklarım aşağıda ama hangisi?
  • Emu Z Win 2.4
  • Spec Emu 2.2
  • Zx Spin 0.41
  • VbSpec 1.80
  • Zx32 v2.0034
  • Zx Mak 0.28
  • Spectaculator 6.25
  • Basin r14c
  • Z80 assembler editor

4) Başka neler gerekli tool vs.

niye öğrenmek istiyorsun? derseniz : İlk başta merakımı gidermek sonra benim bellek yeterse gidebildiği kadar gitmek  :o

şimdiden herkese teşekkürler


Konu Başlığı: Ynt: Z80 Machine Code Öğrenmek İstiyorum
Gönderen: Arda üzerinde Aralık 26, 2008, 22:17:47 ÖS
Hmm çok zorlu bir soru, çünkü izleyecek yol çok.

başlangıç için bulduğun kitaplar iyi. ama önünde sonunda
http://www.z80.info/ (http://www.z80.info/)
isimli sitedeki bilgileri hatim etmek durumunda kalacaksın.

Bir de ben opensource emulatörlerin z80 çekirdeğini incelemeyi seviyorum. böylece bir opcode'un ne iş yaptığını tam olarak çözebiliyorum. Eğer C biliyorsan Fuse'un kodunu, sadece basic biliyorsan VBspec'in kodunu incelemeni tavsiye ederim.

Eğer sıfır durumdaysan birinin sana bu kitapları bile belirli bir sırayla okuman konusunda yardımcı olması gerek, o biri elbetteki bizim ZX spectrumumuzun ta kendisi olacak.

http://www.worldofspectrum.org/infoseekid.cgi?id=0008031 (http://www.worldofspectrum.org/infoseekid.cgi?id=0008031)

"the complete machine code tutor" isimli program, tüm opcode'ları, örneklerle öğretiyor. Hatta içindeki garip virtual machine ile makineyi crash etmeden kod denemeleri yapmak mümkün. Üstelik step by step debugger sana komutu açıklıyor:
LD (HL),L
> The location (HL) is loaded with the contents of the L register

gibi.

Bununla not tutup öğrenirken sana birkaç araç gerekecek. Bence başlangıç için en iyi araç ZX SPIN. ftp.worldofspectrum.org/pub/sinclair/emulators/pc/windows/zxspin0.666.zip - Son versionu 0.666 (helloween edition) (http://ftp://ftp.worldofspectrum.org/pub/sinclair/emulators/pc/windows/zxspin0.666.zip).(bu forum acaip protokoller ekliyor URL'ye temizlemen gerek adresi)

ZX Spin ile elinde kolay kullanılabilen bir Debugger *ve* bir assembler sahibi olacaksın. Yazdığın kodu anında assemble edip çalıştırabileceksin, oldu da çakarsa PC'yi düzeltip normal çalışma durumuna getirebilirsin ya da reset atıp kodu düzeltip tekrar compile edebilirsin.

Bu arada el atında Specemu'nun son versionunu da bulundurmanı tavsiye ederim. Onun da kendine has özellikleri var. örneğin "Tool window 1" penceresinde ekran tamponunun yapısı rahatlıkla anlaşılabilir.

işi ilerletince crossplatform derlemeye geçebilirsin. Son zamanlarda ortamın tozunu attırıp tüm z80 toolchain'lerini arkada bırakan bir debugger&assembler kiti var, hemde eski "Design Design" firmasının ünlü coder'ı Simon Brattel'den.

http://www.desdes.com/products/oldfiles/index.htm (http://www.desdes.com/products/oldfiles/index.htm)

burda zeuss'u bulabilirsin. Eski düzene alışıklar için ise basitçe PASMO kullanabilirsin. Ben pasmo ile direk olarak .tap dosyaları yarabildiğimiz için, kendime cross-compiler olarak pasmo'yu seçmiştim. Ama zeuss ile SZX yaratabiliyorsun ki bu da çok iyi bir durum.

Aslında z80 coder'ları olarak çok şanslıyız. Çünkü belkide ortamdaki en iyi emülatörler bizde, öğrenilecek en az komut seti bizde, ayrıca 8bit'lerin en hızlı işlemcisi bizde.

Ama şanssızlığımız da var: garip ekran dizilimi. Grafik çizmek için her pikseli basmak için ya bir table lookup yapmamız gerek, ya da byte adresi hesaplayıcı bir fonksiyon yazmak. Lineer bir ekran buffer'ı için neler vermezdim :)

Ben de z80 konusunda yetkin sayılmam. Eğer yaptıklarını paylaşırsan beraber öğrenebiliriz bu işi :) Bu yıl (2009) ULA timing'lerini çözmeye çalışıyorum. Spectrumda 64x192 clash'li bir ekran oluşturmak için gerekli bu (normalde 32x24 attribute clash var).


Ayrıca, Z80 yerine alternatif programlama araçları da mevcut. Spectrum için 3-4 tane C kiti mevcut. Ayrıca sinclair basic için de güzel compiler'lar var. Başka assembler linkleri de mevcut.

bunları bir başka başlıkta anlatmıştım, okumaya değer:

http://www.commodore.gen.tr/forum/index.php?topic=182.0 (http://www.commodore.gen.tr/forum/index.php?topic=182.0)


Son olarak değinmeden geçemeyeceğim,
20 yıl geç kalmadın, çünkü z80 işlemci zaten bugün kullandığımız pentium, core2duo vs. bunların bir klonu. PC için programlamaya geçmek için iyi bir temel olacaktır sana bu :) Hatta daha açık söyleyeyim, Z80 komut seti, uyumluluk sağlaması için tam 78 adet 8088 komutu barındırıyor. Bu da işlemciler arasında kolay geçiş sağlıyor.

Son olarak, trivia:
z80= 2.5mhz, z80A=4mhz
153+78= 236 komut.
14 registe
8(4) 16 bit register pair
2 adet 16 bit register
en uzun zaman alan opcode 5.75 mikrosaniye

edit:bende


Konu Başlığı: Ynt: Z80 Machine Code Öğrenmek İstiyorum
Gönderen: ilkergorkem üzerinde Aralık 26, 2008, 22:57:25 ÖS
Verdiğin kaynaklar çok işime yarayacak eline sağlık Arda


Konu Başlığı: Ynt: Z80 Machine Code Öğrenmek İstiyorum
Gönderen: witchdoktor üzerinde Aralık 26, 2008, 23:04:05 ÖS
@Arda
Dikkat! Dikkat! Korsan materyal!

Heyy, bizim biricik 6510'umuzun da hakkını yeme bakayım.

1 MHz'lik bir çipte komutların çoğu 2-3 mikrosaniye (cycle) alıyor (en yavaş komutu ise 7 cycle). Toplam 6 register (A, X, Y, SR, SP, PC)'ı var ki bunlardan sadece biri (PC) 16 bit! Bu arada toplam komut sayısı da 56! Düşünün C64 (Atari, BBC vb) programcılarının kodlama becerilerini, demo'lara bir de bu gözle bakalım.

Kimileri boşuna RISC CPU'larının atası dememiş mütevazi 65XX CPU'muza :)

Viva la MOS6502/6510!

Edit: Nanosaniyeyi mikrosaniyeye çevirdim :)