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 [2]   Aşağı git
Yazdır
Gönderen Konu: Z80+C64  (Okunma Sayısı 15523 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
commander64
Uzman
*****
Mesaj Sayısı: 3.443



Üyelik Bilgileri WWW
« Yanıtla #15 : Ocak 10, 2016, 00:31:11 ÖÖ »

Hades Abi gözünü seveyim tek voltaj girişli olsun Kahkaha
Logged

atlantis
Uzman
*****
Mesaj Sayısı: 2.118



Üyelik Bilgileri WWW
« Yanıtla #16 : Ocak 10, 2016, 00:31:50 ÖÖ »

haz64 (HAdes+Z80+c64)
Logged

Truva Linux
http://www.truvalinux.org.tr
http://retromiga.blogspot.com
--------------------------------
Banana ARM Türkiye Destek Sitesi
https://www.bananapi.gen.tr
hakanzade
Ziyaretçi
« Yanıtla #17 : Ocak 10, 2016, 04:03:38 ÖÖ »

PIC Guru64


* coollogo_com-691744.png (27.57 KB, 573x129 - Görüntüleme: 1787 kez.)
Logged
hades
Üye
****
Mesaj Sayısı: 392



Üyelik Bilgileri
« Yanıtla #18 : Ocak 10, 2016, 11:53:45 ÖÖ »

Kartuş portundan gelenin dışında bir yerlerden 5V daha çekilecek değil mi? Kartuş portundan gelen güç bütün bu çipleri beslemeye yetmeyecektir muhtemelen.

Devrenin beslemesi sadece kartuş portundan gelecek. Devrenin ne kadar akım çekeceği konusunda hiç bir fikrim yok. Eğer bir sıkıntı çıkarsa external 5V bağlantısı gerekebilir veya delimawi'nin yeni C64 beslemesini bekleyebiliriz.

İkincisi de 64k ram bankswitch'i yaparken aktif kullanılan bank üstündeki stack ne olacak?

Aslında buna benzer bir konu/sorun pcb çizim bittikten sonra aklıma geldi.
Bank değiştirme işleminden hemen sonra yeni bank üzerinde kodun devamı olmalı. Aklımda şyle bir çözüm var. Z80'in ilk reset adresi 0000h ve 0038h'de IRQ, 0066h'de NMI servis rutinleri başlar. Ayrıca Z80'in yığın adresi değiştirilebilir. LD SP,adres komutuyla stacki ramda istediğimiz yere koyabiliriz. Bildiğim kadarıyla Stack kullanıldıkça adresi azalıyor.

SP'yi 0100h olarak tanımlayıp IRQ ve NMI rutinlerinin bank içindeki jump adreslerini sabit tutarsam işim basitleşir. Yapacağım iş önce 0000 - 0100h arasını C64'e kopyalamak, bank değiştirmek ve kopyaladığım bilgiyi geri yazmak. Bütün bankların zero page leri aynıymış gibi düşünmek gerekiyor. Hatta sistem değişkeni olarak kullanacağımız adresler sistem raminde değil c64 üzerinde olabilir. Gerektiği durumlarda in/out komutlarıyla erişelim.
Veya sadece stack bölgesi -mesela 128 byte olabilir- kopyalanır.

Devreye alıcı gözle bakamadım ancak mantık herhalde pic'i dma controller olarak kullanıp c64'ün belleğine erişen bir z80 işlemci mantığı herhalde değil mi?

Evet aynen öyle. Romu olmayan bir Z80 sistemi gibi düşünebiliriz.
Logged
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #19 : Ocak 10, 2016, 13:09:27 ÖS »

Devrenin beslemesi sadece kartuş portundan gelecek. Devrenin ne kadar akım çekeceği konusunda hiç bir fikrim yok. Eğer bir sıkıntı çıkarsa external 5V bağlantısı gerekebilir veya delimawi'nin yeni C64 beslemesini bekleyebiliriz.

Tek tek çiplerin gerektirdiği akım miktarını toplamadım ancak daha önce denediğim arduino + sram + 5-6 tristate buffer ile besleme kapasitesini çok rahat aşmıştım. Çiplerin az güç tüketen versiyonları kullanılırsa besleme kapasitesinin altında kalınabilir belki.

Aslında buna benzer bir konu/sorun pcb çizim bittikten sonra aklıma geldi.
Bank değiştirme işleminden hemen sonra yeni bank üzerinde kodun devamı olmalı. Aklımda şyle bir çözüm var. Z80'in ilk reset adresi 0000h ve 0038h'de IRQ, 0066h'de NMI servis rutinleri başlar. Ayrıca Z80'in yığın adresi değiştirilebilir. LD SP,adres komutuyla stacki ramda istediğimiz yere koyabiliriz. Bildiğim kadarıyla Stack kullanıldıkça adresi azalıyor.

SP'yi 0100h olarak tanımlayıp IRQ ve NMI rutinlerinin bank içindeki jump adreslerini sabit tutarsam işim basitleşir. Yapacağım iş önce 0000 - 0100h arasını C64'e kopyalamak, bank değiştirmek ve kopyaladığım bilgiyi geri yazmak. Bütün bankların zero page leri aynıymış gibi düşünmek gerekiyor. Hatta sistem değişkeni olarak kullanacağımız adresler sistem raminde değil c64 üzerinde olabilir. Gerektiği durumlarda in/out komutlarıyla erişelim.
Veya sadece stack bölgesi -mesela 128 byte olabilir- kopyalanır.

Daha basit bir çözüm de adreslenebilir 64k belleğin ilk segmentini (misal ilk 32k'sını) sabit tutup, diğer kısmını bankswitch yapmak olabilir. Hani ikinci kısmı data için kullanılacaksa mantıklı, kodun çalışmasına oradan devam edilecekse daha akıllı bir sistem yapmak gerekir. (Kod burada çalışmak üzere compile edilirken de buna dikkat etmek gerekir sadece data için kullanılmayacaksa)

32K + 7 seçilebilir 32k için A15 0 ise ram'e hep A15=0, A16 = 0, A17 = 0, A18 = 0 gönderilir, 1 ise bankswitching için kullanılacak bank belleğinde seçilmiş olan bank gönderilir.
Logged

Every imagination is one's self reflection but not every self reflection is imagination. <I.R.on - 2001>

twitter | blog
Sayfa: 1 [2]   Yukarı git
Yazdır
Gitmek istediğiniz yer: