Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.

Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz

  Gelişmiş Arama
insanın içinde varsa, commodore.gen.tr açığa çıkarır bunu.. bir nevi retro olaylarının dolunayıyız.(Arda)
Sayfa: [1]   Aşağı git
Yazdır
Gönderen Konu: Z80 Machine Code Öğrenmek İstiyorum  (Okunma Sayısı 5218 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
ilkergorkem
Üye
***
Mesaj Sayısı: 179



Üyelik Bilgileri
« : 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 

şimdiden herkese teşekkürler
Logged

ZX Spectrum 48K+ , Amiga 1200 , ZX Spectrum +2 , Amstrad 6128
---------------
7D9 Oyun Yarışması 2.si Board Soccer
7DX Oyun Yarışması 3.sü Run Baby Run
7DX 2013 Oyun Yarışması 3.sü Falcon Patrol
Arda
Uzman
*****
Mesaj Sayısı: 2.326


I'm *the* guy from Argleton


Üyelik Bilgileri WWW
« Yanıtla #1 : 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/
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

"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).(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

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


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
« Son Düzenleme: Aralık 27, 2008, 00:48:33 ÖÖ Gönderen: Arda » Logged

ilkergorkem
Üye
***
Mesaj Sayısı: 179



Üyelik Bilgileri
« Yanıtla #2 : Aralık 26, 2008, 22:57:25 ÖS »

Verdiğin kaynaklar çok işime yarayacak eline sağlık Arda
Logged

ZX Spectrum 48K+ , Amiga 1200 , ZX Spectrum +2 , Amstrad 6128
---------------
7D9 Oyun Yarışması 2.si Board Soccer
7DX Oyun Yarışması 3.sü Run Baby Run
7DX 2013 Oyun Yarışması 3.sü Falcon Patrol
witchdoktor
Uzman
*****
Mesaj Sayısı: 5.191



Üyelik Bilgileri
« Yanıtla #3 : 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
« Son Düzenleme: Aralık 26, 2008, 23:54:09 ÖS Gönderen: witchdoktor » Logged
Sayfa: [1]   Yukarı git
Yazdır
Gitmek istediğiniz yer: