Biraz düşününce 48K Spectrumu 128K modele benzetmek ne bileyim biraz saçma geldi. Onun yerine daha önce başka bir başlıkta bahsettiğim Rom altında Ram olan devreyi biraz geliştirdim. Çizimleri kısmen bitti diyorum çünkü henüz AY chip eklemedim. Ayrıca RTC ekleme konusunda kararsızım.
Devrenin memory map şu şekilde;
$0000-$3FFF: 16K External Eprom (32K epromun ilk 16K'sı kullanılıyor.)
$0000-$3FFF: 16K External Ram (32K Ram'in ilk 16K'sı kullanılıyor.)
Romlar seçiliyken $0000-$3FFF adresine yapılacak bir yazma işleminde Ram devreye giriyor. Okuma Romdan yapılıyor. (C64 style)
Fotoğrafta bir adet 6264 Ram var. Kendileri 8K olur. Bu 6264 bellek haritasında $6000-$7FFF arasında bulunuyor. Yani meşhur paylaşımlı 16K'nın ikinci yarısını kullanıyor. Dolayısıyla sadece $4000-$5FFF arası ULA ile paylaşımlı. Ancak bu 6264'ü kullanmak için alt 16K'yı oluşturan dramlere bağlı olan IC3 74LS157'in 14. bacağını (Z80'den A13 hattı geliyor) ayırıp GND'ye bağlamak gerekiyor. Böylece Z80'in paylaşımlı bellekte $6000-$7FFF arasına erişimi boşa çıkıyor. A13 hattını 6264'e erişmek için kullanıyoruz.
Özet olarak;
$4000-$5FFF: Video Ram + paylaşımlı bellek (8K)
$6000-$7FFF: RAM 8K
Sırada $8000-$FFFF arası var. Öncelikle karttaki dramlerin sökülmesi şart. İstenirse 4 adet 74 serisi entegreler de sökülebilir.
Üst 32K bölgede 2 adet 512K'lık Ram var. 1MB'lık bu bellek 32K'lık 32 adet banktan oluşuyor.
$8000-$FFFF: 32K x 32 bank.
Paylaşımlı belleğe geri dönelim. Normalde 16K olan bu alanın artık ilk yarısı paylaşımlı durumda. İkinci yarısına ise Z80'in erişimi yok. Peki ikinci yarısını nasıl kullanacağız?
Biraz önce yukarıda 74LS157'nin bir bacağını ayırıp GND'ye bağlamıştık. Bu bacağı dışardan kontrol edersek ikinci Video Ram olarak kullanabiliriz diye tahmin ediyorum. Devrede bunun için VRAM isimli bir çıkış var ama bu çıkışı bir kablo ile 74LS157'ye bağlamak gerekiyor.
Sonuç olarak: 48K modelin bellek haritası şu şekilde:
$0000-$3FFF: 16K - Spectrum Rom/External Rom/External Ram (Romlar aktifken Ram'e yazma yapılabilir)
$4000-$5FFF: 8K - Video Ram0/Video Ram1
$6000-$7FFF: 8K - External takılı Ram
$8000-$FFFF: 32K - External takılı 2x512K Ram-32 Bank olarak seçiliyor.
Devrede ayrıca joystik portu ve bir reset butonu var.
Son olarak devrenin kontrol adreslerine bakalım.
IO adresleri:
$1F: Kempston Joystick okuma
$3F: RTC (Adres decode edilmiş durumda. Sadece RTC eklenecek ve bağlantıları yapılacak)
$7F: Memory Config adresi
Bit 7: External/Internal seçimi (0=Spectrum Rom, 1=External Memory)
Bit 6: External Rom/Ram seçimi (0= Rom, 1=Ram)
Bit 5: Vram seçimi (0=Vram0, 1=Vram1)
Bit 4....0: Üst 32K bellek için bank seçimi.
Memory Config adresinin değeri default $00'dır. Spectrum'a ilk enerji verildiğinde veya spectrum resetlendiğinde $00 değerini alır.