20 sene önce ZX spectrum ile Z80 asm yazdığım günler aklıma geldi. Bunun üzerine dün gaza geldim ve spectrum emulator indirip 3-4 demo seyrettim. çok güzel efektler vardı. bir an z80 code kasmak geldi içimden ama ne z80'in komutlarını tam olarak hatırlıyorum nede spectrumun bellek haritasını.
Z80 bana göre 6510'dan kat kat güçlü bir cpu. Gerek çalışma hızı (Z80A-4Mhz,Z80B-6Mhz olarak biliyorum) bakımından gerekse komut setinin manyak derece çok ve çeşitli oluşu nedeniyle Z80 bana hep çekici gelmiştir. Normalde 8 bit olan a,b,c,d,e,h,l,ix,iy registerlerinin bc, de, hl olarak 16 bit olarak kullanılabilmesi, bunlar yetmezmiş gibi af', bc', de', hl' gibi alternate registerleri kullanarak asıl registerlerin -bir tür temp adres gibi- bunlara kopyalanması, Stack'in SP registeri ile Ram'İn herhangi bir yerinde tanımlanabilmesi ve uzunluk kısıtlaması olmaması, status bitlerine göre şartlı JP (JMP) ve CALL (JSR) komutları, blok halinde in, out, move, compare komutları sayesinde işlemleri kolaylaştırması vs vs .....
mesela
LD BC, $3000 ; byte counter
LD DE, $8000 ; source adres
LD HL, $c000 ; target adres
LDIR ;LoaD Increment Repeat
RET ; bkz : RTS
komutlarıyla $8000'den başlatıp $3000 byte uzunluğundaki datayı $c000'a taşımak çok basit bir hale geliyor.
Birde illegal komut seti vardı. Mesela HL register çifti ile IX ve IY registerlerinin bir kombinasyonu vardı ve bunlar HX, HY, LX, LY şeklindeydi. Ama hiçbirini kullanmak nasip olmadı
Hatırladığım kadarı ile legal + illegal komut sayısı 783 taneydi.
Kısaca bana göre Z80 gerçekten manyak bir cpu idi.
Hep düşünmüşümdür C64'te 6510 yerine Z80 kullanılsaydı neler olurdu diye.
En başta IO bölgesi normal memory adres bölgesinden çıkıp IO adres bölgesinde kalır sadece IN, OUT vs. komutlarıyla kullanılır ve tüm hafıza sadece ram-rom yapısında olurdu. Mesela VIC banklarının IO bölgesinde olduğunu düşünün. Banklar dibine kadar grafik dolu ve asıl memoryde hayvani bir code olsun. Ayrıca SID için ayrı bir Ram ve yapılması gereken
sadece RAM daki datayı IN komutuyla alıp OUT komutuyla SID'e göndermek. Oldukça uçuk bir teknik.
$0000-$FFFF : RAM-ROM : Normal memory adres bölgesi
$0000-$FFFF : 64K RAM BANK
$0000-$0FFF : 4K IO chips : IO (VIC-SIDs-COLOR RAM-CIAs-I/O1-I/O2)
$0000-$FFFF : 4x 16K VIC BANK
$0000-$0FFF : 4K karakter seti
$0000-$FFFF : 2x32K SID RAM (Stereo SID olacak)
.....................
İşte böyle
Hızı sayesinde kimbilir ne manyak demo efektleri yapılırdı.
Bir kaç demo daha indirip seyredeyim.
Keşke spectrumun çözünürlüğü 256x192 yerine 320x200 ve renk sayısı daha fazla olsaydı
Kimbilir belki spectrum ile 256 bayt kasarım