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: IRQHack64+  (Okunma Sayısı 4417 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« : Nisan 10, 2017, 02:39:16 ÖÖ »

IRQHack64 api'sinin son aşamasında uzatmaları oynarken bir anda aklıma bir fikir geliverdi. Daha önce hali hazırda kafa patlattığım bir iki konu ile de birleşince gerçekten uygulanabilir olduğunu gördüm.

Daha önce kafa patlattığım dediğim aslında Neoram ile ilgili bir konuda kartuşa ram eklemeyi deneyeceğimi söylemiştim. Bu ram'in kartuş tarafından doldurulabileceğini falan.

Evet mevzu şu : Kartuşa 512K yahut 1MB statik ram ekliyoruz. (Uygun fiyatlı bulunursa 2/4MB de olabilir)

Biraz teknik konulara girelim.

Kartuş hali hazırda sd kart üstünden c64 ram'ine bir şeyler aktarabiliyor. Kartuş üstüne ek ram eklediğimizde bu ram'i yazma yapabilmek için i/o port'ları vasıtasıyla c64'e kullandırmak mümkün.

C64 üstünde bu şekilde iki i/o port'u var. $DE00-$DEFF arasındaki I/O 1 bölgesi, $DF00-$DFFF arasındaki I/O 2 bölgesi. Expansion port üstündeki R/W ve I/O1 I/O2 sinyalleri ile eklenecek statik ram'i sürmek mümkün.

Pek tabii bu şekilde her seferinde 256'şar byte olmak üzere erişim söz konusu. Burada banking devreye giriyor.

Basit olması açısından muhtemelen I/O 1 bölgesini bank switch için, I/O 2 bölgesini de ram'e yazma yapmak için kullanacağım. (Henüz final tasarım net değil)

Yazma yapılırken RAM 256'şar byte sayfalanırken. Okuma yaparken RAM'i LOW ROM ($8000-$9FFF) ve/veya ($A000-$BFFF) penceresinden okutmak mümkün. Yine burada banking gerekiyor, bunu da Easyflash uyumlu yaptığımızda aslında kartuşta EasyFlash uyumlu oyunları oynamak da mümkün olacak.

Peki orjinal IRQHack64 donanımı burada nerede devreye giriyor?

Orjinal donanım mevcut fonksiyonalitesini sağlama kısmında ve kartuş emülasyonu gerektiren oyunlar için kartuş imajını eklediğimiz sram'e atma kısmında olacak. Kabaca saniyede 40K transfer hızıyla sd karttan okunan 512K'lık bir oyun imajı 12-13 saniye gibi bir sürede ek ram'e transfer olacak. Kartuş emülasyonu noktasında IRQHack64 devreden çıkıp işi bankswitch lojiğine ve bir ROM gibi kullanılan RAM'e bırakacak.

İşin içinde statik ram olunca bunu bir batarya ile besleme de söz konusu olabilir. Hatta aynı batarya bir RTC modülünü beslemek için de kullanılabilir.

Gelelim işin pis kısmına, üstte bahsettiğim lojiği yönetmek için bir kaç latch ve bir miktar lojik entegre (yahut programmable logic) eklememiz gerekecek. SRAM çipleri de eklenince PCB'nin bu sefer ister istemez SMD komponentler için tasarlanması ihtiyacı doğuyor.

SMD yolunda bugün ilk adımımı bir adet 512K SRAM çipini SOP32 to DIP32 adaptöre lehimleyerek attım bu arada

PS: Hiç istemesem de 74244 tristate buffer'a da ihtiyacım olacak. Tahmin edin bakalım niye? (Bu sefer gerçi NoFlash64 projesinde olduğu gibi VIC ile bus konusunda savaşma gibi bir durumumuz olmayacak)
Logged

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

twitter | blog
LW3D
Yönetici
*****
Mesaj Sayısı: 11.303


Günü Kurtaran Avam Hiooargggh :)


Üyelik Bilgileri WWW
« Yanıtla #1 : Nisan 10, 2017, 10:09:28 ÖÖ »

Teknik konulara girmeden önceki kısım güzeldi Başarılar dilerim..
Logged

i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #2 : Nisan 10, 2017, 10:15:37 ÖÖ »

Teknik konulara girmeden önceki kısım güzeldi Başarılar dilerim..

O kısmı daha uzun yazsaymışım keşke Prototip yapıldığında resimli, doyurucu bir şeyler yazarım artık.
Logged

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

twitter | blog
Oğuzhan
Uzman
*****
Mesaj Sayısı: 4.339


There's no place like 127.0.0.1


Üyelik Bilgileri
« Yanıtla #3 : Nisan 10, 2017, 10:55:15 ÖÖ »

Teknik konulara girmeden önceki kısım güzeldi Başarılar dilerim..

O kısmı daha uzun yazsaymışım keşke Prototip yapıldığında resimli, doyurucu bir şeyler yazarım artık.

"bir anda aklıma bir fikir geliverdi." 'den sonrası bende yok
Logged

Amiga 500/500+/1200
Commodore 64
Atari 1040STe/Falcon 030/Jaguar/2600
Roland MT-32 Rev.A&B/SC-88/SB-55/MT300s
Sony PS 1-2-3-4-5/PSP/PVM 20"/9"
Sega SMS1-2/MD2/Saturn/Dreamcast/GG
Nintendo NES/SNES/DMG/GB Color/GBA SP
spunky
Deneyimli
*****
Mesaj Sayısı: 763


10 Çeşit insan vardır. Binary bilen ve bilmeyen.


Üyelik Bilgileri WWW
« Yanıtla #4 : Nisan 10, 2017, 11:38:21 ÖÖ »

Google'da Japonca'dan Türkçe'ye çevirttim yine de anlamadım ama IRQHACK falan diyo, Plus falan var iyi bişi anladığım kadarıyla. Yaz abi bizi pre order listesine Kahkaha
Logged

A500+ |68020M-Tec Turbo,3.1 Rom, 4.5MB Ram, Indivision ECS, SCSI External CD-Writer, SCS2SD via A590|
A1200 |Apollo 040, 32MB Ram, 14" 1438|
Commodore 64c |SD2IEC,IrqHack,1084,Final III|
Amstrad CPC6128 |3.5" Hack|
Sega MDII, Sega MS, Ps1, Ps2, PS3, Micro Genius, A2600, PSP, Nintendo DS
LW3D
Yönetici
*****
Mesaj Sayısı: 11.303


Günü Kurtaran Avam Hiooargggh :)


Üyelik Bilgileri WWW
« Yanıtla #5 : Nisan 10, 2017, 12:31:06 ÖS »

Diğer geliştirici arkadaşların muhakkak fikirleri oluşuyordur... Aman ha biz böyle şakasına takılıyoruz diye yazmamazlık etme...
Logged

i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #6 : Nisan 15, 2017, 18:35:45 ÖS »

İki adet sram çipi kullanmanın lojiği karmaşıklaştıracağından dem vurarak vazgeçmek üzereydim projeden. Ancak aşağıdaki projeyi bir daha incelediğimde gerek Easyflash'ta gerekse de Neoram gibi projelerde uygulanan I/O bölgesi üstünden ram'e yazmanın bir must olmadığını anladım.

http://ar.c64.org/rrwiki/images/5/57/The_Transactor_Vol07_04_1987_Jan_A_C64_Cartridge_without_Eproms.pdf

Mevzu şu ki, IO1 ve IO2 sinyallerini kullanıp RAM sürmek ekstra lojiğe girmek gerekmediği için aslında bir kolaylık sadece. Üstteki projede yapıldığı gibi expansion port üstündeki RAM'i 8K'lık pencereler halinde de yazmak aslında mümkün. Yazılan bilgi hem aynı adresteki C64 belleğine hem de expansion port üstündeki ram'e yazılmış oluyor. Yazma için de expansion port üstünden kullanılacağı düşünülen $8000-$FFFF aralığı  yerine her zaman RAM olduğu bilinen $6000-$7FFF gibi bir aralık kullanılıyor.

İlk mesajda sorduğum sorunun cevabı şuydu. $DE00-$DEFF yahut $DF00-$DFFF IO penceresinden büyükçe bir RAM'i yazma ihtiyacı söz konusu olduğunda kullanabileceğimiz maksimum adres sayısı 8 adet, 256 byte adresliyoruz çünkü.  Yazma aşamasında 256 byte'lık pencere kullanıp, okuma anında ise 8K pencere kullandığımızda SRAM'e giden aradaki A8 ile A12 adres hatlarının duruma göre LATCH'lerden yahut doğrudan adres bus üstünden alınma ihtiyacı oluşuyor.

SRAM rom gibi davrandığında A8-A12 arasının adres bus üstünden, ram gibi davrandığında ise bu aralıktaki adreslemeyi yöneteceğimiz bir LATCH üstünden gitmesi gerekli yani. Bunu da 74244 gibi bir tristate buffer kullanarak halledebilirdik.

Son durumda buna ihtiyaç kalmıyor. Easyflash'taki gibi tek bank switch latch'inin doğrudan sram'in üst adres bacaklarına bağlanması yeterli oluyor. Yazma ayrımı için de bitişik bir 16K'lık bölgenin bir decoder vasıtası ile yazma sinyalini üretmek için kullanılması mümkün.

Projede kullanacağım bir adet GAL22V10'un yetersiz gelmesi söz konusuydu ancak son durumda sanki yetecek gibi gözüküyor.

Tabii Easyflash uyumluluğu için bu yazma işinin belli bir noktadan sonra sonlanması gerekiyor ve kartuşun artık readonly davranması gerekiyor.

Bu noktada kartuşa I/O penceresine bakan bir adet daha ram koymak biraz soru işareti. Hali hazırda eski Ocean oyunları, tüm 8K/16K kartuş oyunlarına destek sağlanmış oluyor.

Bu arada şu ana kadar yaptığım sadece kafa patlatma ve kabaca tasarım. Benzer fonksiyonalite sunan ürünler varken ilerlemeyebilirim de bu projede

Bir adet 512K sram'i DIP adapter'e lehimleme dışında henüz elimi hiç kirletmedim
Logged

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

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