commodore.gen.tr

Genel Kategori => Proje => Konuyu başlatan: i_r_on üzerinde Ağustos 25, 2015, 00:32:43 ÖÖ



Konu Başlığı: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ağustos 25, 2015, 00:32:43 ÖÖ
Aşağıdaki kısım konunun ilk haline ait. Basitçe SRAM doldurup kartuş gibi kullanmaktı başlangıçta amaç. 74244'lerin gazabından dolayı bir loader'a dönüştü.

Sadece NMI, IRQ, EXROM, RESET hatları kullanılıp Kartuş üstündeki eprom'daki programın da yardımıyla veri transferi yapmayı mümkün kılan bir çözüm. Bunu yapmak için expansion port üzerindeki NMI hattını kullanıyor.

Eprom olarak 27512 64kx8bit bir eprom kullanılıyor. 64kb'lik aslında 256 byte'lık bir kodun 256 değişik versiyonundan ibaret bir dosya. Bir kere yazıldıktan sonra bir daha değiştirmeye ihtiyaç yok. Esas yüklenecek program / oyun / vesaire sd karttan yükleniyor.

Videoda bilgisayarla kullanılıyor olması sizi yanıltmasın, ha istenirse bilgisayar ile de kullanılabilir orası ayrı (derlediğim bir şeyi aktarayım çalışsın gibi) ancak arduino'ya sd kart modülü bağlı ve menü harici yüklemeleri sd karttan yapıyor. Final versiyonda benim bilgisayardan tetiklediğim menüyü getirme olayı kartuş üstündeki bir buton ile olacak.

Temelde Özay'ın kartuş projesindeki donanımın basitleştirilmiş haline 1 adet arduino pro mini ve sd kart modülü eklemek yeterli.


Şuradan üstünde çalışan yazılımın kaynak kodlarına ulaşmanız mümkün : https://www.tepetaklak.com:8443/svn/Public/ (https://www.tepetaklak.com:8443/svn/Public/)

_A_VE8G0PsQ


------------------------

Özay yazınca hatırladım, daha önce ben bu forumda kendi kartuşumuzu yapamaz mıyız diye sormuştum.

Şurada :
http://www.commodore.gen.tr/forum/index.php?topic=4235.0 (http://www.commodore.gen.tr/forum/index.php?topic=4235.0)

O zamanlar pratik elektronik bilgim sallanıyordu resmen, uçmuşum. Artık ayaklarım biraz daha fazla yere basıyor (Çok değil yine)

Hatta yuh diyorum, o zaman yapmadığımı geçenlerde yaptım ama bunu yazdığımı hiç hatırlamıyordum :)

Alıntı
@Metallic : Sağolasın, son tıkandığım nokta ucuz yollu bir programmer. Senin bu söylediğin ile beraber denenebilecek en az iki yöntem oldu eprom silmek için. Bir kaç Türk sitesinde Eprom da buldum. Hali hazırda kullanabileceğim aldığım international soccer kartuşu da mevcut bu arada ilk anda eprom ya da flash satın almam gerekmeyecek muhtemelen.

En azından 27c serisini programlayabilen ucuz bir programmer bulursam doğrudan dalacağım bu işlere.

Int.Soccer kartuşunu söküp epromu çıkarıp oraya bir entegre soketi yerleştireceğim. Eproma yazılacak kartuş binary'sini emülatörlerde denemek zaten oldukça kolay. International soccer'ın crt dosyasını bulmam bunun için yeterli sanıyorum.

Neyse efendim, Özay ve Metallic'ten gazı alarak ben de çalışmalara başladım.

Şematiği çizdiğimde şematik buraya gelecek, aşağıda biraz bug'lı da olsa blok diyagramı var. Resimde adres bus'ı kolayca sürmek için yaptığım counter+tristate buffer mevcut. Bir altta da bunun test'i sırasında çektiğim video.

(http://www.commodore.gen.tr/forum/index.php?action=dlattach;topic=11034.0;attach=12600;image)

nOSQa9ZyUBg

Şunları yaptım öncelikle,

1. Elimdeki ikinci bir kartuşa kıyıp bana gereken sinyalleri breadboard'a çıkaracak bir header yaptım. (Standart kartuşlardakine ek olarak şu an için RESET ve DMA da lazım.)

2. Daha önceki kartuş konusunda hep 40 pin'li bol i/o port'lu pic çiplerini hedeflemiştik. Tam bir hobi projesi olsun diyerek işi arduino'ya yükleyince arduino pro mini'lerin falan i/o pin'leri hem addres bus'ı hem de data bus'ı sürmeye yetmiyor. Bunun için ucuz ama işlevsel olan 74244 tristate buffer ve 4040 12 bit counter'lardan yararlandım. Bu şekilde adres bus'ın 12 pin'ini sadece 3 pin ile sürmek mümkün. (Tristate buffer'ın enable pin'i, Counter'ın MR ve CLK pin'leri). Data bus için ayrıca tristate buffer'a gerek olmayacağını varsayıyorum çünkü buraya bağladığım pin'leri INPUT mode'a geçirince bir nevi devreden çıkacaklar. Aynısını adres bus için de yapabilirdim ama dediğim gibi i/o pin sayısı sıkıntı. Arduino'ların kolay prototip yaratabilme, bootloader özelliği ve kullanıcısı tarafından kolayca anlaşılabilme / modifiye edilebilme gibi faydalarından dolayı arduino'yu seçtim. IO pin sayısı fazla, uygun fiyatlı, düşük form faktörlü bir arduino yok, çok kasılırsa o da yapılır gerçi de projenin konusu o değil.

3. Daha önce sid player'ın ilk versiyonunda aynı mekanizma ile sram doldurma deneyimi sayesinde arduino için kodu yazdım, arduino sketch'i içerisine 8k'lık oyunlardan birini koyup sram'e aktarma kısmını test ettim ve çalıştığını gördüm.


Yapılacaklar

1. Kartuş için yaptığım header'lı bağlantıyı devreye 1, 2 glue logic 74 serisi çiple bağlamak ve arduino üzerindeki kartuş imajı için çalıştığını görmek.

2. Devreye sd kart eklemek ve sd karttaki imajları boot edebildiğini görmek. (Uno'daki 10,11,12,13 no'lu digital pin'leri hali hazırda rezerve ettim bu iş için)

3. Uno'dan pro mini'ye geçip 2 adet ekstra analog pin'inden faydalanıp c64'de menü kodu koşturup biraz da üç kağıt ile çalıştırılacak şeyi seçen bir şeyler yapmak. (Aklımda belli i/o port'larını latch ile dinleyen bir yapıdan ziyade covert channel communication tarzı bir şey var. Değişik şekillerde yapılabilir, ilk aklıma gelen romh ve roml sinyallerinin belli bir pattern ile üretilmesini sağlamak var.)

ps1: Arduino üstündeki SRAM test kodunu ekledim.
ps2: Konu başlığını ve projenin kod adını artık eprom kullandığım için değiştirdim. Eskisi "NoFlash64 - Eprom kullanmayan 8k/16k kartuş çözümü" idi.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ağustos 25, 2015, 00:41:37 ÖÖ
@Metallic, @Özay : Bu arada pcb tasarımı konusunda sizlere güveniyorum ;)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Ağustos 25, 2015, 01:28:18 ÖÖ
İsme bayıldım. Proje de çok güzel. Sonuna kadar desteklerim. ;)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Ağustos 25, 2015, 10:19:38 ÖÖ
İsim düşündükçe daha da hoşuma gitmeye başladı. Hem de NoGames64 (http://www.haddewig.de/nogames64) sitesini çağrıştırdı bende. Bilmeyenler için C64 Utility'leri içeren güzel bir site.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ağustos 26, 2015, 00:32:22 ÖÖ
İsim düşündükçe daha da hoşuma gitmeye başladı. Hem de NoGames64 (http://www.haddewig.de/nogames64) sitesini çağrıştırdı bende. Bilmeyenler için C64 Utility'leri içeren güzel bir site.

Aslında RamCart816, NoRom64, HardRam64 gibi isimler de olabilirdi :) Maksat flash'a bok atmak olsun, hani defalarca silip yazarsan cıs oluyorlar ya o bakımdan. Bizim satışları arttırır belki :p
 
Bu arada tek dosya prg'leri de disk imajı içine koyuyorlar uyuz oluyorum. Bu utility'leri falan kartuş imajına çeviren bir şeyler yapmak lazım. Senin araştırıp bulduğun hazır bir çözüm var mı?


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Ağustos 26, 2015, 09:30:31 ÖÖ
Henüz yok ama PCB'leri beklerken araştırmaya başlayayım yavaştan. :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ağustos 31, 2015, 01:40:05 ÖÖ
CS Logic kısmımız eksikti, onu tamamlayıp ilk denememi yapayım dedim bugün.

Blok diyagramda SRAM'ın RW pin'ini direnç ile GND'ye çekmişim. C64 bu bacağı sürmeyeceği için gereksiz geldi. Doğrudan micro'ya bağladım.

Bu arada yaptığım devrede A12 pin'ine Arduino üstünde I/O pin'i kalmadığı için mecburen denemeleri 4K adresleyip yapmıştım.

CS Logic'e gelince mantıken bana lazım olan 2 to 1 multiplexer. Yani Tristate Enable pin'im 0 olduğunda Micro'dan gelen CS sinyali, 1 olduğunda ise Expansion port'tan gelen ROML sinyalinin SRAM'e gitmesi lazım.

Bu iş için 74157 2 to 1 mux lazım ama benim şu an elimde yok. Keşke kapalı kutu yazmayıp içini düşünseydim önceden temin ederdim. Bağımsız logic entegrelerle de yapılır diyerek doğruluk tablosunu yazıyorum.

Kod:
TEN____CSM____ROML__|__CS___
0       0      0    |  0
0       0      1    |  0
0       1      0    |  1
0       1      1    |  1
1       0      0    |  0
1       0      1    |  1
1       1      0    |  0
1       1      1    |  1

Şimdi kafadan mantıkla da burada CS sinyalinin logic eşitliği üretilebilir yahut Karnaugh map yardımı ile de bulunabilir. İlkine üşeniyorum, ikincisini ise zaten okuldan bir kaç sene sonra sanırım unuttum :)

Şöyle güzel bir sayfa yapmışlar.
http://www.ee.calpoly.edu/media/uploads/resources/KarnaughExplorer_1.html (http://www.ee.calpoly.edu/media/uploads/resources/KarnaughExplorer_1.html)

3 değişken deyip CS değerinin 1 mi 0 mı olacağını işaretliyorum.
Eşitliği çıkarıyor.

F(ABC) = !A.C + A.B, yani ((NOT TEN) AND CSM) OR (TEN AND ROML)

Bütün lojik NAND yahut NOR'a çevrilse bile muhtemelen bana tek çip yetmeyecek. Düz çıkan halini yazsam not/and ve or kapıları lazım. Kendilerine artık gıcık olmadığım için elimdeki GAL'lerden birini kullanmaya karar veriyorum.

2 to 1 mux için yazdığım PLD şöyle bir şey,

Kod:
/* *************** INPUT PINS *********************/
PIN 2   =   TEN                   ;
PIN 3   =   CS                   ;
PIN 4   =   ROML                  ;

/* *************** OUTPUT PINS *********************/
PIN 12   =      ACTUAL_CS                   ;


ACTUAL_CS = (TEN & ROML) # (!TEN & CS);
ACTUAL_CS.OE = 'b'1;

Burada şu soru akla gelebilir, basitçe ROML ile CSM'yi (CS Micro) AND'lesek olmaz mı? Bunu yapamıyorum çünkü ROML'nin açılışta C64 daha reset olmamışken durumunun ne olduğunu bilmiyorum. PLA üzerinden beslenen bir sinyal, araştırmak lazım yahut denemek lazım açılışta yüksek seviyede olup olmadığını.

Sırada 8k kullanamadığım için 4k bir imaj bulma kısmı var, önce küçük utility prg'leri kartuş imajına çeviren bir şey var mı diye bakınıyorum ancak bulamıyorum. Daha önce gözüme çarpan küçük boyutlu oyunlara yöneliyorum. Retro ball oyununun bu iş için uygun olduğunu görüp VICE'ın Cartconv tool'u ile crt imajını bin'e çevirip VICE içinde deniyorum. Sonrasında bin2h tool'u ile Arduino sketch'i içinde flash'a yazabilmek için c header'ı haline getiriyorum.

Tüm bağlantılar yapılmış şekilde son bir kez daha 4k ram'i yazıp okuyabildiğimi test ettikten sonra c64'e takma vakti.

(http://www.commodore.gen.tr/forum/index.php?action=dlattach;topic=11034.0;attach=12717;image)


Maalesef ilk test başarısız :( Hatta bir noktada arduino'nun sram yerine datayı ekran hafızasına aktardığını görüyorum :) Matrix vari enteresan bir efekt ile :)
Nasıl oluyor demeyin oluyor :)

Aynı zamanda Seri bağlantıyı da yapınca bu sefer transfer testinin başarısız olduğunu görüyorum. VIC reset'i iplemiyor mu acep diyerek düşünmeden edemiyorum.

İşin güzel tarafı en azından bir şeyi bozmadık. Bu tip cihazlarda yapılan gerçek denemeler yürekleri en fazla hoplatan kısım. Daha hiç bir sonuç elde etmeden c64'ü elimize de alabilirdik :)

Çalışmalar bazı basit testlerle önümüzdeki günlerde devam edecek.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Ağustos 31, 2015, 09:49:38 ÖÖ
Durmak yok yola devam. ;)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ağustos 31, 2015, 21:45:02 ÖS
Reset'te bile rahat yok arkadaş, anlaşılan VIC cpu reset'te olsa bile address bus'ı ve databus'ı babasının malı gibi kullanıyor.

_dVvl2giLW4

Bu basit projede tasarım değişikliğine gitmek mecbur oldu.

1 - Tristate buffer'ları farklı şekilde kullanıp Sram'ı ve arduino'yu tamamen izole etmek. (Basit çözüm)
2 - VIC'i de işin içine katıp gerçek DMA yapmak (Zor çözüm)
3 - Sram kullanmak yerine Arduino'yu I/O cihazı olarak kullanıp okumayı doğrudan onun üstünden yapmak, Yüklenecek şeyi doğrudan bu i/o cihazı üstünden yüklemek. Yavaş ancak VIC ile iştigal edilmeyecek çözüm de bu. Gerçi projenin orjinalliği kayboluyor.
4 - Projeyi ertelemek. (En basit çözüm :) )


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Ağustos 31, 2015, 22:22:35 ÖS
Ben 1 diyorum Kiss prensiplerine göre, ama 4 hariç her seçeneğin sonuçlarını büyük bir zevkle takip ederim. :D


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ağustos 31, 2015, 22:45:43 ÖS
Ben 1 diyorum Kiss prensiplerine göre, ama 4 hariç her seçeneğin sonuçlarını büyük bir zevkle takip ederim. :D

Benim gönlümden de Türkan Şoray prensiplerince 4 nolu seçenek geçiyor :)

1 no'lu seçenek de öyle doğrudan bir çözüm değil. Şu anda Arduino'yu izole etmek için kullanıyordum tristate buffer'ları. Yeni durumda Address bus için hem arduino'yu izole etmek ve pin sınırlamasından kurtulmak için lazım hem de Sram'i izole etmek için. (Reset'te adres bus'ın tristate olacağını düşünmüştüm çünkü.)

Arduino sram arası mevcuttaki buffer'a ek 12 adres bacağı için 2 tane, 8 data bus için de 1 tane daha 74244.

Bu şekilde devrenin 10 cm uzunluğunda bir pcb'ye bile sığması çok zor.
Ancak tüm bileşenler smd olursa mümkün olur herhalde.

- 5 x 74244 (20 pin dip)
- 1 x 4040 (16 pin dip)
- 1 x 62256 / 41256 (28 pin dip) Çoğu kişi ince kılıfta olanı temin edemeyeceği için full ic büyüklüğündekilerden temin edebilir)
- 1 x GAL16v8d (20 pin dip)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Ağustos 31, 2015, 22:48:29 ÖS
Millet boşuna CPLD, FPGA falan kullanmıyor demek ki. :)

Cehaletimden soruyorum bu 74244'lerin yerine de ikinci bir GAL kullanılamaz mı?


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ağustos 31, 2015, 23:11:34 ÖS
Millet boşuna CPLD, FPGA falan kullanmıyor demek ki. :)

Cehaletimden soruyorum bu 74244'lerin yerine de ikinci bir GAL kullanılamaz mı?

Bende 74244 var yeterince, yetmeyenleri eski bilgisayar board'larından da sökerim. Stok anlamında sorun yok. Sorun kablolamasında :)

Ben de uzmanı sayılmam ancak GAL'den 74244 yapılır mı yapılır ancak aradaki bütün and / or array'lerini çöpe atmış olursun. Input'ları doğrudan output'a yansıtıp OE (output enable) bacağını çıkışları açma yahut tristate etme şeklinde kullanıp yapabilirsin bunu. Hani elinde hiç 74244 yoksa pasta niyetine karnını doyurabilirsin GAL ile :)

Bu arada CPLD yahut FPGA kullanırken benimki gibi basit yöntemlere kaçmazlar artık. Belli bir frekansın üzerini kullanabildiğinde c64'ün bus timing'ine de hele de saf hardware ile yetişmek kolay olduğu için zor yola gidip gerçekten DMA yapıyorlar. EasyFlash'ı yapan elemanın DMA'yı kernal değiştirmek için nasıl yaptığı ile ilgili bir dokümanı vardı. Okumanı tavsiye ederim.

O düzeyde bir çalışma yapabilmek için osiloskop falan da lazım. Ben üç kağıt peşindeyim :) Her tarafı tristate buffer'lar ile örmeden yahut 3 no'lu seçenekteki gibi i/o cihazı yapmadan kolay bir çözüm görünmüyor. Bir diğer yöntem de dual port memory kullanmak olabilir ancak onun da tedarik etmesi zor olur herhalde.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ağustos 31, 2015, 23:39:31 ÖS
Bu arada VIC-II'nin Reset pin'i yokmuş zaten, ne kadar manidar değil mi :)

6510 c64'de figüranmış resmen :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Eylül 03, 2015, 22:52:57 ÖS
Sram'in etrafını 74244'ler ile kale gibi ördüm. Baktım c64'ün verdiği güç yetmiyor (max 450mA) Arduino'yu en azından USB'den besleyeyim dedim. Sanırım geri kalanına da c64'ün gücü yetmedi, bazen açıldı, bazen siyah ekran verdi.

Sonra arduino'yu adaptör ile besleyip herşeyi arduino ile besledim.

Geldiğim son nokta, devre c64'ü etkilemeden sram'i doldurabiliyor ancak gerisi başarısız. Adaptör ile beslemede de siyah ekran aldım c64'den.

Sonra bugün yine bir kaç deneme yaptıktan sonra c64'ü çalışır vaziyette kenarda bıraktım (kasten, bilerek ve isteyerek değil aslında)

Sonra bir baktım kilitlenmiş. Üstünü açınca sıcağa bir nebze daha dayansa da 6510 ve 6569 aşırı ısınıyor. Muhtemelen de sorun 6569'da çünkü c64 açıkken arada bir pat (hışırtılı) yapıp görüntüde hafif sorun olup düzeliyor.

Bu arada mecburen 4 numaralı seçeneğe geri dönüyoruz. Zira tristate buffer'ların (DM74S244 kullanmıştım) tanesi 100-120mA çekiyormuş. Bende 5 tane var, üstüne bir counter, üstüne de sram. Counter + 2 buffer'ın yerine 2 tane tristate output'u olan 8 bit counter koysam bile bunlar da totalde 140ma yiyecek. Daha az güç tüketen bir buffer kullansam misal 74hc244, bunlardan da 3 tanesi 3*80 = 240mA yiyecek. 80-100mA da SRAM desen... daha GAL var... Harici güç olmadan bu iş olmaz gibi.

C64 tamir ustalarından yardım bekliyorum..


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: eins üzerinde Eylül 20, 2015, 23:54:56 ÖS
Bu proje güzelmiş, neden kaldı ki?
Bence devam edilir.
 
5-6 yıl yada daha fazla önceydi, live gelen bir video sinyali üzerine superimposed text bindirmek gereken bir proje gelmişti elime. Normalde, video'yu dijitale çevir, dijital domain de textvs ekle, tekrar PAL encode et. Ancak ucuz bir çözüm istenmişti, ve gecikme olmaması gerekiyordu.
Aklıma mikroişlemciyi PLL ile gelen PAL sinyaline senkron çalıştırıp, basılacak görüntüyü dot by dot işlemci ile üretmek geldi. Gerçekten de biraz uğraştıktan sonra, PAL sinyaline PLL ile lock olup işlemciyi senkronize çalıştırabildim. Ancak yazılacak yazıyı lookup edip live olarak basmaya çalışınca, çözünürlük çok düşük oldu. Yani 1 pixel datayı basana kadar raster bir ton yol gidiyordu. O zaman aklıma RAM kullanma fikri geldi. İşlemci RAM'i raster yazının olduğu yeri geçince aheste aheste dolduruyordu, sonra logic ve PAL dot frekansında çalışan counter ile RAMdeki veriyi video sinyali üzerine basabilmiştim. Çok da hoş olmuştu.

Bence bu proje de olur.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Eylül 21, 2015, 00:17:15 ÖÖ
Bildiğim kadarıyla kalmadı devam ediyor zaten. Hatta benim KissCart64'lerden biri kobay olarak yolda şu anda. :D


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: eins üzerinde Eylül 21, 2015, 00:24:29 ÖÖ
Senin kisscart64 de keske kartus tarafindaki her bacaga bir tp ekleseydin diye gecirdim icimden. Genelde kartuslarda a14 a15 kullanilmiyor ama benim onlara da ihtiyacim vardi. Zaten talibi de cok diye benim projeme donor olarak istemeye cekindim. ;) Devam ediyor ise sevindim bu proje...


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Eylül 21, 2015, 00:31:22 ÖÖ
Aslında olmayacak bir tarafı yok da. Devrede çok fazla 74244 var ve hayvani akım çekiyorlar. Expansion port en fazla 450ma veriyor. Bu yüzden bıraktım. Hatta bugün başka bir şey denemek için tamamen söktüm.
Belki counter ve 74244 yerine senin yaptığın gibi 8 bit latch'e yönelseydim daha makul bir sonuç çıkabilirdi ancak onda da sıkıntı arduino micro / pro mini gibi board'larda 24 tane boşta gpio olmaması. shift register'ların yahut diğer pratik entegrelerin de output'larını tristate eden versiyonlarına denk gelmedim.

Ya da 74244'e alternatif daha az güç tüketen bir çözüm kullanmak lazım. Biraz bakındım ama göremedim.

Alternatif olarak poor man's dma v2'yi deneyeceğim :)

Özay'ın kartuş board'u bu yeni çözüm için dediği gibi kobay olarak kullanılacak.

Ancak fazla bir beklentim yok bu yeni çözümden çünkü transfer hızı max 3-5k per second gibi bir şey olacak.

Yöntem şu,

Arduino EXROM, RESET, IRQ ve NMI hatlarını kontrol ediyor. Başlangıçta sistem standart 8k kartuş modunda. Eeprom'a yazdığım bir bootloader var. Bu bootloader esas işi yapacak rutini kaset buffer'a kopyalayıp buraya dallanıyor.

Ana rutin Kernal'in altındaki RAM'de IRQ ve NMI vektörlerini değiştiriyor raster ve cia interrupt'larını kapatıyor. Ardından Kernal rom'u devre dışı bırakıyor ve sonsuz döngüye giriyor.

Arduino Exrom'u tekrar high'a çekiyor böylece $8000'den başlayan bölgedeki ROM devre dışı kalıyor.

Arduino sonra IRQ ve NMI'ı uygun bir şekilde kullanıp data transferini gerçekleştiriyor. Transfer bittiğinde yüklenen kod çalıştırılıyor.

Sid player projesinde aynı işi IRQ / NMI ve SO pin'lerinin üçünü kullanıp yapmıştım. 6510'da SO pini olmadığı için mecburen farklı rutinler yazmak zorunda kaldım.

Şu an yazdığım rutin aklıma ilk gelen, aklınıza gelen hızlı olacağını düşündüğünüz bir şey varsa yazın.

edit: 250ma yazmışım yanlışlıkla düzelttim


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Eylül 23, 2015, 23:30:58 ÖS
Sağolsun Özay'ın hediye ettiği kobay / kobaylar geldikten sonra tekrar el attım poor man's dma v2'ye zira artık iş Noflash'lıktan maalesef çıktı. Geçen ay elime geçen eeprom'ları da kullanma fırsatı oldu bu. Ultraviyole takılmak zorunda kalmıyorum artık. Bendeki eeprom'lar 32k ancak bunlar 64k olanlar ile pin uyumlu. A15 32k'lık entegrelerde programlama voltajına denk geliyor. Çok farkediyor mu bilmiyorum ben low'da tuttum.

Kartuş rom'unda duracak yazılımı hali hazırda yazmıştım. Bir tane fail safe bir tane de biraz daha hızlı ama daha karmaşık olan şeklinde.

Özay'ın switch'li kisscart'ından ekstradan NMI / IRQ / EXROM / RESET / GND hatlarını arduino'ya bağladım. (NMI ve IRQ hatlarına 100nf filtre için kondansatör de bağladım)

1. Başlangıçta arduino c64'ü resetliyor. Exrom low'da yani kartuş devreye girecek.

2. Reset sonrası Kartuş romundaki rutin kernal'in yapacağı initialization işlemlerini yapıyor. Peşinden bir loader rutinini kaset buffer'ına kopyalıyor. Ve peşinden buna dallanıyor.

3. Loader rutini CIA'den ve VIC'den gelecek interrupt'ları kapatıyor. Ekranı kapatıyor zira ekran açık olursa badline'lardan dolayı interrupt'lar çalışırken bile vic araya girip zamanlamayı dağıtabilir. 1 portundaki bellek yönetimi register'ından kernal ve basic rom'larını da kapatıyor. (I/O'yu da kapatabilir aslında, henüz denemedim)

4. Loader rutini IRQ ve NMI vektörlerini benim rutinlerime ait olanlarla değiştiriyor. Bunlar veri transferi için kullanılacak.

5. Bundan sonra loader rutini overflow flag'ini clear edip peşinden overflow flag'i clear ise aynı satırda beklemeye başlıyor. Başka herhangi bir flag de olabilirdi hiç bir önemi yok, maksat düşük cycle harcayacak bir komut üstünde 6510'u bekletmek. Dallanan bir branch komutu 3 cycle yiyor. Yani interrupt geldiğinde 6510 en fazla 3 cycle bekleyecek elindeki işi tamamlamak için.

İşin sonrası arduino ve interrupt handler'lar arasında.

6. Öncelikle arduino exrom hattını high'a çekip $8000-$9FFF aralığını rom olmaktan çıkarıyor.

7. İki tane rutin yazdığımdan bahsetmiştim biri fail safe (yani sıçmayacak) biri de hafif optimize. (Hafif optimize çünkü daha iyisi yapılabilir, ben fazla uğraşmadım şimdilik)

Sid player'da daha önce bahsettiğim gibi 6502 kullanıyorum ve 6502 üstünde SO diye bir pin var, byte bazlı yahut daha büyük bloklar için senkronizasyonu sağlamak için ideal bir pin. Hatta ve hatta tek başına bu pin üstünde modülasyonla bile senkron veri aktarımı mümkün. Ancak 6510 üstünde SO yok ve olsa da benim senkron bir çözüm yapmaya niyetim yok zira senkron demek zamanlamayı tutturmak demek, arduino tarafında da cycle saymak demek vesaire vesaire..

Fail safe ve yavaş metod olarak benim ilk aklıma gönderilecek byte'ın değeri kadar NMI yapmak NMI içinde X register'ını arttırmak. IRQ ile de her bir byte gönderimini sonlandırmak geldi. Bunu uyguladım, hakikaten çalıştı da. Aşağıdaki videoda bu yöntem kullanıldı.

Bir diğer yöntem olarak aklıma yine buna benzer ancak biraz daha optimize bir çözüm geldi. Bunda bir byte'ı 3'e bölüyorum, her bir parçanın sayı değeri kadar NMI yapıp peşine parçayı tamamlamak için IRQ yapıyorum. Yükleme hangi adrese yapılacak, kaç blok yüklenecek gibi bilgileri ilk yönteme göre gönderiyorum. Asıl datayı ise bu ikinci yönteme göre gönderiyorum. Tek bir IRQ handler yok bu arada. Bir durum makinesi (state machine) gibi çalışan birden fazla IRQ handler mevcut.

4 tane irq handler var,
i. SlowIrq : İlk yönteme göre transfer yapıyor, işi bitince artık sıra FastIrq1'de diyor. Irq vektörünü değiştiriyor yani.

ii. FastIrq1 : Gönderilen byte'ın en anlamlı 3 bit'ini alıyor. İşi bitince FastIrq2'yi irq handler olarak tayin ediyor.

iii. FastIrq2 : Gönderilen byte'ın sıradaki 3 bit'ini alıyor. Bir byte'a
D7 D6 D5 D4 D3 D2 D1 D0 bitlerinden oluşuyor dersek bu handler D4 D3 D2'den oluşan kısmını alıyor.

iv. FastIrq3 : En ağır işle uğraşan da bu. Kalan son iki bit'i (D1 ve D0) alıyor. Tüm byte alındığı için bu byte'ı saklaması gereken yere saklayıp transferin bitip bitmediğini kontrol ediyor. Transfer bitmemişse irq handler olarak FastIrq1'i set ediyor. Bitmişse ana rutin içinde overflow flag clear ise dallan diyen komutu overflow flag set ise dallan komutuna çeviriyor.

Geldik işin son kısmına,

8. Bellek standart moduna alınıyor ($01 portuna $37 yazılarak), CIA ve VIC eski haline getiriliyor. Yüklenen programın basic programı mı yoksa makine dilinde yazılmış bir program olup olmadığı kontrol edilip buna göre çalıştırılıyor.


Fail safe olanın videosu burada, ikincisi çok uğraştırırsa, dönüp de bulamazsam diye bunun videosunu çektim :)

OgHfs8ru00s

Tabii sonrasında hızlı (kime göre, neye göre :) ) olan versiyonu da çalıştırdım. Şu an için saniyede 2k gibi bir transfer performansı var. Videodakinde 42 saniye süren yaklaşık 10k'lık bir yükleme hızlı olan versiyonda 5 saniyeye iniyor. 2 saniye de reset yapılırken harcanıyor.

Hardware basit, ekte verdiğim dosya içinde tüm bilgiler mevcut. Özay'dan gelecek switch'li kartuşa elinizde herhangi bir arduino türevi board varsa uygulamanız mümkün. Sd modülü bağlayıp çakalca sd kart içeriğinden seçilen dosya bilgisini arduino'ya geri gönderebilirsem kullanılabilir bir ürüne dönüşebilir. Hız açısından tercih eder misiniz merak ediyorum. (Bu hakikaten bir sorudur)

Çakalca dediğim anda aklıma bir fikir geldi bu arada :)
Arduino IRQ ve NMI üretebildiği gibi, bunlara bağlı io pin'lerini okuma moduna alıp dinleyebilir. 6510 tarafında çalışan kodun yapması gereken belirli bir pattern'de NMI ve / veya IRQ üretmek.

Herkese iyi bayramlar,

ps: Ekteki c64 assembly dosyalarını derleyebilmek için 64tass turbo assembler'a ihtiyacınız var. Ben geliştirmemi ve debug'ımı 6502 macroassembler & simulator programında yapıyorum. Son derleme işinde de 64tass'ı kullanıyorum.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: eins üzerinde Eylül 23, 2015, 23:53:46 ÖS
Tebrikler, ilerlemişsin.
Yavaş yöntemde, doğru mu anladım? 255 değeri göndermek için 255 adet NMI yapıp sonra byte bitti demek için bir IRQ mu yapıyorsun?
Bunun yerine zaten NMI ve IRQ lar üzerinden senkronize olduğunu varsayarsak, byte bitti hiç demesen örneğin 0 göndermek için NMI, 1 için IRQ yapsan. Toplam 8 olunca zaten byte bitti demektir.
Ortalama byte değerini 127 kabul etsek bu yöntem yaklaşık 16 kat hızlandırabilir...

Bu arada ben de birşeyler yaptım. Buraya yazarken bilgisayar kilitlendi. Enerjim kalırsa hızlıca tekrar yazacağım birazdan.

İyi bayramlar.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Eylül 24, 2015, 00:39:21 ÖÖ
Yavaş yöntemi aslında sadece hardware düzgün çalışacak mı testi için uyguladım. Kodlaması da kolay oldu.

Aynen 255 göndermek için 255 defa nmi yapıyor peşine de irq yapıyor. Yavaş yöntemin hızlı çalışması için zaten bir tasarrufta bulunmadım :)

Düşünüyorum NMI'da 1, IRQ'da 0 göndersem byte'ı saklayacak kodu, bitti mi bitmedi mi kontrolünü falan handler'ların içine gömmem lazım. Bunları da her bit için çağıracağımdan aşağı yukarı aynı hesaba çıkabilir. (Optimize versiyonla kıyaslıyorum)

Sid player'da SO pin'im olduğu için IRQ ve NMI handler'larımın ikisi de 17 cycle (IRQ'daki CLC gereksiz bu arada, 0 bitleri için biraz daha hızlanabilir)

Kod:
;Prepare data transfer
LDX DATA_LENGTH
LDY #$00

NEXTINBLOCK
CLV ; 2 cycles
WAITDATATRANSFER
BVC WAITDATATRANSFER ; 3 cycles during transfer, 2 cycles after SO flag raised.
STA (ACTUAL_LOW),Y ; 6 cycles
INY ; 2 cycles
BNE NEXTINBLOCK ; 3 cycles
INC ACTUAL_HIGH ; 5 cycles
DEX ; 2 cycles
BNE NEXTINBLOCK ; 3 cycles

; For byte transfer sync, 3 + 6 + 2 + 3 + 2 cycles needed = 16 cycles
; For page transfer sync, 3 + 6 + 2 + 3 + 5 + 2 + 3 + 2 cycles needed = 26 cycles

LDA COMMAND
BNE ANOTHERTRANSFER ;IF COMMAND is not zero than try to do another transfer
JMP (DATA_LOW) ;IF it's zero than just execute the last transferred stuff

NMIROUTINE
SEC
ROL
RTI

IRQROUTINE
CLC
ASL
RTI

*=$FFFA

.WORD NMIROUTINE
.WORD RESETROUTINE
.WORD IRQROUTINE

Aslında burada bottleneck 65xx serisinde çok çok iyi olsa da sırf interrupt handler için harcanan süre. 7 cycle interrupt'a giriş, 6 cycle interrupt'tan çıkış. Benim şu an optimize olan NMI handler içinde sadece 2 cycle'lık INX komutu var, ancak 13 cycle overhead yüzünden 15 cycle oluyor. Aslında çağırmışken bir şeyler yapsın bari demek çok da mantıksız değil, hala optimize edilebilir.

Bu arada belki de hardware olarak optimize etmek de mümkün. Handler'ları rom'da tutup arduino tarafından besleyeceğim bir yüksek adres biti ile nmi handler'ın iki değişik versiyonuna switch etmem mümkün. Böylece IRQ içinde sadece byte saklama işi yapılabilir. Yazma işi $8000-$9FFF bölgesindeki rom'un altına yapılacağı için sıkıntı çıkmaz muhtemelen. Bu şekilde yaparsam benim sid player'daki transfer performansına ulaşırım.

Hatta 32k rom kullanabilmenin avantajı ile 2'den fazla NMI ve veya IRQ versiyonu yapıp byte bitimi için ayrı, blok bitimi için ayrı handler yapıp epey bir hızlandırılabilir.

Bu şekilde byte transfer overhead'ini, blok transfer overhead'ini ve hatta bitiş kontrolünden kaynaklanan overhead'i sadece olayın gerçekleştiği ana indirgemiş oluruz. Hepsini ihmal edersek aşağı yukarı 20 cycle'da bir bit transfer etsek saniyede yaklaşık 1.000.000/(20 * 8) = 6.250 byte transfer ederiz. Overhead'i ile 5k olsa çok çok da kötü değil.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Eylül 24, 2015, 00:55:44 ÖÖ
Bu arada düşününce her nmi'da bir bit transfer etmeyi iyileştirecek şöyle bir yöntem de geldi aklıma. Kod totalde 256 byte olsa 32k içine bunlardan 128 tane sığar. Sadece 8 biti adres bus'tan sağlarsak (A0..A7) geri kalan adres hatlarını Arduino'ya kontrol ettirdiğimizde her nmi veya irq'da 128 çeşit kod çalıştırma imkanı var. Flash 64k olursa 256 çeşit oluyor. Yani tek bir interrupt ile 1 byte transferi de yapılabilir. Bu durumda hız saniyede 30k seviyelerine çıkıyor. Arduino üstünde de buna yetecek gani gani i/o pin var. Hali hazırda 4 tanesi kullanımdaydı. 8 tane daha kullanılacak ek olarak.

ps1: Şu anki kod 256 byte'tan kısa, bu haldeki kod daha basit olacağı için daha kısa olur. İki parçalı olmasına da gerek olmayacak hem. Kod 128 yahut 64 byte'a indirilip çok daha hızlandırmak da mümkün.

ps2: Kartuş üzerinde 8 adres bacağına hallenmek gerçekten de Özay'ın kartuşu kobay haline getirecek bu arada :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: eins üzerinde Eylül 24, 2015, 01:29:59 ÖÖ
Adres Bus'ı o şekilde kafana göre kullanman mümkün mü?
Ekran kapalı bile olsa, Phi2 low iken adres bus'ını VIC ele alıyor.
Bu durumda gene bir donanım desteği ile Phi2 kontrolü yapman gerekmeyecek mi?


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Eylül 24, 2015, 01:50:19 ÖÖ
Adres Bus'ı o şekilde kafana göre kullanman mümkün mü?
Ekran kapalı bile olsa, Phi2 low iken adres bus'ını VIC ele alıyor.
Bu durumda gene bir donanım desteği ile Phi2 kontrolü yapman gerekmeyecek mi?

Eprom'un A0..A7'si address bus'a bağlı olacak. A8..A15'i arduino üstünden ben süreceğim. Phi2 ve VIC ile işim yok çünkü eprom ROML sinyali ile select oluyor. PLA hali hazırda üretiyor bu sinyali.

Benim dikkat etmem gereken kodun 256 değişik versiyonunda değişen kısımların haricindeki yerlerin tamamen aynı adreslerde aynı kodlardan ibaret olması. Bunun dışında arduino'nun A8..A15'e besleyeceği değere göre çalışan kod değişecek. Belki de tek byte değişecek o da gönderilen byte

Byte bazında çalışıldığı için IRQ'yu da düşenleri toplama şeklinde kullanmak da mümkün. NMI 16 byte stack'e basar. Üstüne bir IRQ yapınca 16 byte'ı gider store eder aşağıdaki şekilde. Veya IRQ daha akıllıca kullanılıp hızı arttırmak için kullanılabilir.

Kod:
NMIROUTINE
LDA #$VAR ; VAR seçilen eprom bloğuna göre değişken
PHA
RTI

IRQ
PLA
STA ....
PLA
STA ....
PLA
STA ....
...


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: eins üzerinde Eylül 24, 2015, 01:56:19 ÖÖ
Soyledigin yontemi cok iyi anladim fakat adres hattini arduinonun surmesi isine kafam yapmiyor. Adres ve data hatlari global. Yani pla tarafindan sana ayri gelmiyor. Ya 6510 drive ediyor yada vic drive ediyor. Eger kartus portundan drive edeceksen vic in drive etmedigi BA high iken drive etmelisin. Ama bu durumda da 6510 u ezmemek icin 6510 AEC hatti ile high z duruma alinmasi lazim bence.

Bilmiyorum bugun kafam fazla karisti bu islerle belki de ben tam anlayamadim. :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Eylül 24, 2015, 02:00:52 ÖÖ
Soyledigin yontemi cok iyi anladim fakat adres hattini arduinonun surmesi isine kafam yapmiyor. Adres ve data hatlari global. Yani pla tarafindan sana ayri gelmiyor. Ya 6510 drive ediyor yada vic drive ediyor. Eger kartus portundan drive edeceksen vic in drive etmedigi BA high iken drive etmelisin. Ama bu durumda da 6510 u ezmemek icin 6510 AEC hatti ile high z duruma alinmasi lazim bence.

Bilmiyorum bugun kafam fazla karisti bu islerle belki de ben tam anlayamadim. :)

Şöyle diyeyim. Adres bus'ı sürmeyecek aslında, doğrudan eprom'un adres bacaklarını sürecek. Eprom'un A8..A15 hatları address bus'a bağlı olmayacak. Bu noktada özel bir zamanlama ihtiyacı yok aslında. Transferi yapmadan önce transfer edeceği byte'ı eprom'un adres bacaklarına set edecek. Yani eprom devrede 256 byte'lıkmış gibi olacak. En üst adres bacakları arduino üstünden seçilebilecek.

Özay'ın kartuş projesindeki 3 bit'lik 8 seçimli switch gibi düşün. Tabii arduino bunu 20-40 mikrosaniyeler mertebesinde değiştirecek.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: eins üzerinde Eylül 24, 2015, 02:15:18 ÖÖ
Ok simdi oldu. Eeprom un adres bacagi set edilerek farkli adreslerdeki kodlarin calismasini saglayacaksin. :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Eylül 24, 2015, 09:52:13 ÖÖ
Süper gidiyor, aynen devam. ;)

En sonunda projeleri birleştireceksiniz galiba. Sanki aynı yoğurdu iki farklı teknikle yiyorsunuz gibi geldi. :D


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Eylül 26, 2015, 02:28:42 ÖÖ
Süper gidiyor, aynen devam. ;)

En sonunda projeleri birleştireceksiniz galiba. Sanki aynı yoğurdu iki farklı teknikle yiyorsunuz gibi geldi. :D

Bence benimkisi yoğurt, delimawi'ninkisi ise süt :) Hani yoğurt yoğurttur daha ötesi yoktur. Sütten değişik şeyler yapabilirsin. Tekli prg yükleme anlamında aşağı yukarı eşdeğerler buna yoğurt dersek.

Bu arada donanım bitti Özay, pcb tasarımını bekliyorum :) Senin KissCart dip versiyonu aparıp şemayı çıkarırım yakında.


Gelelim gelişmelere, bayramda bir gün evde geçirme fırsatını yakaladım ve oturdum menü yazılımını yazmaya başladım. Bunu %90 bitirip döndüm arduino'ya veri gönderme işine. Epey bir cebelleştikten sonra bunu da bir yere getirdim. Akabinde sd kart'tan dosya okuma kısmına geçip hızlıca bunu da hallettim. Daha önce uğraştığım için burası çok uğraştırmadı. Tabii daha yapılacak epey bir iş var yazılım anlamında ancak donanım anlamında sona geldi.

Daha önceki videoyu izleyeniniz olduysa cursor'ün yaldır yaldır yandığını farketmişsinizdir. Ben de farketmiştim ancak sorunun ne olduğunu anlamayı ve çözmeyi ertelemiştim. Bugün yazılım işi bitip de deneme kısmına geldiğimde oyunların açıldığını fakat oyun içinde interrupt'lar ile sürüldüğü belli noktalarda bozulmalar farkettim. Bu ana kadar farketmememin sebebi muhtemelen NMI'ın etkileniyor olmasından kaynaklanıyor. Çünkü IRQ kullanıp arduino'ya veri transferi yaptım, sıkıntı olsaydı orada da çıkacaktı.

Neyse efendim gürültü engellesin diye IRQ ve NMI pin'lerine koyduğum kapasitörleri bir kaldırayım dedim. Kaldırdığım gibi sorun da ortadan kayboldu.

Bu arda yaldır yaldır yanan cursor ne hikmetse normalin tam 2 misli hızda yanıp sönüyordu. Sebebini bilen varsa beri gelsin :)

Son hali şu şekilde

fKZPfYzV1O4

Sırada veri transferini 15-20 kat hızlandırmak ve menü + arduino tarafında file system kodunu finalize etmek var.

ps: Projenin de ismini değiştirdim bu arada, belki yine değişir ancak şu an IrqHack64 oldu. Eprom kullanıldığı için Noflash demek çok doğru olmayacak.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: eins üzerinde Eylül 26, 2015, 09:45:14 ÖÖ
Super gidiyor sen sona yaklastin. Benim de simdi oturup menu yazmam lazim. Basic le yazarim diyordum ama vazgectim. Madem basladim adam gibi olsun bare.

Cross compile icin ne oneriyorsun. Vice ile test edilecek sanirim. Bare bayramda c64 e erisemiyorken notebook da assembler yazayim.

Gene uzerinden cok zaman gecti kartuslarin mobitor programlari icinde kod yazdigim gunleri hatirlamam gerekecek. :D


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Eylül 26, 2015, 12:21:14 ÖS
Başta basic'te kolay olur gibi gözükse de assembly seni rahat ettirir. Zamanlaması kritik olmayan şeyleri baştan subroutine şeklinde tasarlarsan sonrası kolay oluyor.

Kullanılan tool'lar kullanım sıklığına göre ve zevke göre değişir muhtemelen. Ben compiler olarak 64tass kullanıyorum. Basic stub için petcat kullanıyorum, 2015 SYS 2066 gibi bir şeyi doğrudan basic byte koduna çevirebiliyor. 6502 macroassembler & simulator diye generic bir tool'u da ide ve zor zamanlarda debug amaçlı olarak kullanıyorum. Tam olarak 64tass'ın syntax'ını karşılamasa da ince bug'larda memory'i ve register'ları takip edip hatta uygun zamanlarda interrupt üretip debug yapabilme imkanı çok işe yarıyor.

Vice ile entegre çalışabilen ide'ler de var sanırım ancak benim pek fazla deneyimim yok bunlarla.

Kodu dediğim gibi 6502 macro assembler & simulator'de edit ediyorum. Batch dosyamla compile edip gerekli objeleri oluşturuyorum. Şu an batch'i çalıştırdığımda bana toplu olarak Eprom'a yazacağım dosya ile Arduino içine include edeceğim dosyayı üretiyor. (c header oluşturmak için bin2h diye komut satırı tool'unu kullanıyorum)

Batch dosyam şöyle bir şey
Kod:
64tass -c -b Bootloader1stPartForC64.65s -o Bootloader1stPartForC64.65s.bin
64tass -c -b 64IRQTransferSoftNewForC64.65s -o 64IRQTransferSoftNewForC64.65s.bin
copy Bootloader1stPartForC64.65s.bin + 64IRQTransferSoftNewForC64.65s.bin BootloaderCartFast.bin /b
64tass -c -b IrqLoaderMenu.65s -o IrqLoaderMenu.65s.bin --labels IrqLoaderMenu.txt
petcat -w2 <IrqLoaderMenu.bas >IrqLoaderMenu.obj
copy /b IrqLoaderMenu.obj + IrqLoaderMenu.65s.bin menu.prg
bin2h menu.prg menu.h -cz -id=cartridgeData
PAUSE

Kodu çalıştırmak için prg'leri DirMaster programı ile ilişkilendirdim. Epey kullanışlı bir program. Prg'ye çift tıkladığımda otomatik olarak bir d64 dosyası oluşturup içine yerleştiriyor. DirMaster içinde sağ click Run In kısmından Vice'ı seçip  çalıştırıyorum. Bu da otomatize edilebilir ancak şu an benim işim görüyor.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Eylül 26, 2015, 12:30:30 ÖS
Cross Compile için NotePad++ ile yazıp ACME ile derleyebilir WinVICE ile de test edebilirsin.

http://www.emu64.de/acme/files/acme0.95.6win.zip (http://www.emu64.de/acme/files/acme0.95.6win.zip)

IDE tarzı birşeyler arıyorsan ReLaunch64 güzel bir seçim olabilir.

http://www.popelganda.de/relaunch64.html (http://www.popelganda.de/relaunch64.html)

(http://www.popelganda.de/img/gallery/r64_9.png)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Eylül 26, 2015, 12:36:55 ÖS
Bir de benim DevKit Retro var tabi. :D

http://www.commodore.gen.tr/forum/index.php?topic=9500.0 (http://www.commodore.gen.tr/forum/index.php?topic=9500.0)

@i_r_on: DevKit Retro'da kullandığım batch dosyasından bir örnek. PRG dosyasını WinVICE'a aktarma konusunda fikir verebilir. ERRORLEVEL ile hata kontrolü de yapıyor, derleme başarılı değilse hiç açmıyor WinVICE'ı. ;)

Kod:
@ECHO OFF

ECHO.
ECHO Crimson Editor - Compile and Run Script For Commodore 64
ECHO.

:COMPILE
%~dp0ACME\acme.exe %1

IF %ERRORLEVEL%==0 GOTO RUN
GOTO END

:RUN
START %~dp0WinVICE\x64.exe %~dpn1.prg

:END

Not: ACME ve WinVICE klasörleri batch dosyası ile aynı klasörde bulunmalı.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Eylül 26, 2015, 12:56:23 ÖS
Özay sağolasın ben almayayım, yaşlandıkça insan daha muhafazakarlaşıyor herhalde :)

Ama prg'yi direk vice'e komut satırından verebildiğimi öğrendiğim iyi oldu. Şimdi DirMaster çık aradan diyebilirim :)

Bu arada başlığı değiştirdim, projenin gidişatı ile ilgili hissiyatı tam olarak yansıtmıyordu :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Eylül 26, 2015, 13:05:39 ÖS
ACME kullan diye demedim zaten, dediğin gibi en güzel yöntem alıştığın yöntem. :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: msvstpl üzerinde Eylül 26, 2015, 19:16:44 ÖS
Konuya biraz geç kalmış yerinden giriyorum kusura bakma.., ama şimdi sonra belki işe yarar;

Clone Arduino (uno) Atmega 328–pu sadece 17 mA çekiyor diye not düşmüşüm .Basit,iki 22pf, 16Mhz kristal..vs o kadar. İkisi 20 tl ye çıkar. Ne olabilir, kötümser haliyle 30-40 ma diyelim ..? İki adet klon arduino kullansan biri adres bus için diğeri data bus için … Adres için olan diğerini de kontrol edebilen master olsa..? Hızlı baktım pin çıkışlarında HI-Z var diyor. Sayıcıdan kurtulursun, 244 den de kurtulursun..? Yani bu yoldan bakılırsa daha kolay çözülür gibi geldi..?

Gerçi farklı bir yoldasın..
Timing’i bilmiyorum.. ona bakmak gerekir..


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: eins üzerinde Eylül 26, 2015, 19:24:19 ÖS
Şu an mobilden yaziyorum daha sonra uzun yazarim. Emulasyon icin 16mips bile yeterli olmadi. Aurdino yu bilmiyorum bu hizlara cikanlari var mi ama o konu biraz sikintili.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Eylül 26, 2015, 21:33:18 ÖS
@msvstpl : Aslında adres bus'ı ve data bus'ı bir arada sürmeye kalksam evet dediğiniz yöntem uygulanabilir. Master slave ile spi yahut i2c ile konuşur. Ancak baktığımda elde edilen çözüm de 8k /16k kartuş çalıştırılabilecek sonuçta. Bu çözümün tek avantajı sram'ın pil ile desteklenmesi durumunda son yüklenen şeyin hızlıca açılması olurdu. Halbuki şu anki çözümümde de benzer bir kullanım durumunu desteklemek çok da zor değil. Kartuş desteklemiyor ancak kartuşta olan oyun / program vesairenin tek parça versiyonlarını da bulmak mümkün. Doğrudan bellek çipinden besleme ile yükleme arasındaki fark sadece 1-2 saniye olacak.

Son uygulayacağım yöntemde 44k datayı 1.15 sn. gibi bir sürede transfer etmem teorik olarak mümkün. Pratiğini bu gece işçilik bittikten sonra anlayabileceğim.

Delimawi'nin anladığı gibi doğrudan micro ile kartuş emülasyonundan bahsetmediğinizi düşünüyorum, onu kastettiyseniz micro üstünde gerçek zamanlı programlama yapmak gerekiyor, bu da assembly ile yazılmalı. En basitinden arduino'nun interrupt handler'ı 55 cycle sürüyor. Kartuş emülasyonu için kabul edilebilir bir süre değil. (Interrupt kullanılıyorsa) Assembly yazmayı sevdiğim tek işlemci de 6502 o yüzden ben bu topa hiç girmiyorum :) (Okul zamanı biraz da x86 yazıp sevmişliğim var ancak çok uzun sürmedi o)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: eins üzerinde Eylül 27, 2015, 00:35:45 ÖÖ
Bir de benim DevKit Retro var tabi. :D

http://www.commodore.gen.tr/forum/index.php?topic=9500.0 (http://www.commodore.gen.tr/forum/index.php?topic=9500.0)

Teşekkürler,
RetroKit iyiymiş. :)

Ben ACME ve 64tass indirdim, hatırlamaya çalışıyorum.
Relaunch64 de güzel, gerçi Java alerjim var ama hoş bir arayüze benziyor.
NotePad++ da zaten kullanıyordum, sanırım dönüp dolaşıp sonuçta NotePad++ ile yazacağım.
Şu programcının el kitabı vardı o zamanlar el altında. O kitap hala basılı olark bulunuyor mudur acaba? Aklıma geldi şimdi...


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Eylül 27, 2015, 00:37:44 ÖÖ
http://www.retrodergi.com/originals/%23Kitaplar/C64%20Programcinin%20El%20Kitabi.pdf (http://www.retrodergi.com/originals/%23Kitaplar/C64%20Programcinin%20El%20Kitabi.pdf)

Bir de hala keşfetmediyseniz: http://www.retrodergi.com (http://www.retrodergi.com) ;)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: eins üzerinde Eylül 27, 2015, 00:45:41 ÖÖ
retrodergiyi keşfettim, çok güzel bir çalışma oldu o iş.
Bende bir kısım Commodore dergileri hala kütüphanemde duruyor. Bir kısmını (ilk sayılarını) daha sonradan sahaflardan tedarik etmiştim. Onların durumu çok iyi olmasa da diğerleri iyi durumda.
Ama açıkçası sayfaları açıp, o kokuyu almadan, o zamanlarda aldığım notları tekrar okumadan dijital ortamda okumak aynı hissi vermiyor. Bende eksik olan sayılarını keşke bulabilsem, ne güzel olurdu...


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Eylül 27, 2015, 02:18:39 ÖÖ
Bu arada son gelişmeler şu şekilde,

Donanım kısmını tamamladım. Yazılım kısmının c64 tarafını dün halletmiştim zaten. Eprom'larımı sildim, denemelere başladım. Malesef sonuç başarısız oldu.

Debug imkanları kısıtlı olduğu için öncelikle transfer rutinini 6502 simulator'de kontrol ettim. Onu kontrol ederken ilk hatayı farkettim. Daha önce kendini değiştiren kodla transferin bitişini interrupt içinde işaretleyip ana döngüden çıkılmasını sağlıyordum.

Eski yöntem

Ana rutin
Kod:
CLV
WAIT BVC WAIT

Interrupt rutini
Kod:
FINISH
LDA #$70 ; Opcode for BVS
STA WAIT ; Change BVC to BVS to skip idle waiting and jump to the loaded stuff.
RTI

Yenisinde ana rutin aynı kalmak üzere interrupt rutinini şu hale getirmiştim.

Kod:
FINISH
BIT BITTARGET
BITTARGET
RTI

6502'de Overflow flag'i doğrudan set eden bir komut yok, bu yüzden BIT komutunu kullanmak gerekiyor. BIT ile kontrol edilen adresteki değerin 6. biti 1 ise overflow flag set oluyor, değilse clear oluyor. RTI komutunun opcode'u $40 (01000000)

Peki hatam nerde?

Hata interrupt rutini içinde bu işi yapmakta. Bizim interrupt rutini başlamadan önce işlemci statü register'ını stack'e basıyor. RTI verildiğinde de tekrar stack'ten geri çekiyor. Yani statü register'ı üzerinden ana rutinle haberleşmek mümkün değil.

Şu şekilde düzeltiyorum,

Ana rutin
Kod:
BITTARGET = $64
LDY #$00
CLV
STY BITTARGET
WAIT
BIT BITTARGET
BVC WAIT

Interrupt rutini
Kod:
FINISH
LDA #$64 ; $64 tamamen keyfi $64 = ($40) + $20 + $04.. 6. biti 1
STA BITTARGET
RTI

Bir hevesle tekrar deneme yapıyorum düzeltimiş kodla. Malesef yine başarısız.

Gözle debug'a devam ediyorum. Bir hata daha farkediyorum. Önceki versiyonda transfer öncesi $01 adresine $30 yazıyordum I/O alanı dahil tüm RAM'i açmak için. Ancak farkettim ki bunun kalması demek benim programın koştuğu $8000-$9FFF aralığının okuma anlamında RAM'e yönlenmesi demek. I/O alanı hariç yükleme yapabilmek için aslında $01 portu ile iştigal etmemin bir anlamı yok. Bunu default halinde bırakıyorum. I/O alanına yüklenmesi gereken bir şey olursa bunun için özel çözüm üretmek gerekecek. Bu tip programlarda i/o alanına yapılacak transferler için attan inip eşşeğe binebiliriz.

Neyse çıkan çözümü uygulamaya geçiyorum.. geçemiyorum :) Silinmiş eprom kalmamış.  Bir tanesi silinme aşamasında, onunla son denemeyi de yapıp bugünlük bu kadar diyeceğim.

edit : Yanlış bilgi vermişim burada, $01'e $35 vermek sadece kernal ve basic rom'ları etkiliyor. Kartuş rom'unu kaldırmanın tek yöntemi kartuş portundan roml ve/veya romh'yi yüksek seviyede tutmak.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Eylül 27, 2015, 22:09:14 ÖS
Bugün biraz daha kurcaladım da. Hızlı mod maalesef c64'ün memory management kısıtlamaları yüzünden o kadar a kolay değilmiş. Çok basit bir detayı gözden kaçırmışım.

https://www.c64-wiki.com/index.php/Bank_Switching (https://www.c64-wiki.com/index.php/Bank_Switching)

Şuradaki memory konfigürasyonları incelendiğinde low rom'un açık olduğu ancak kernal'in bulunduğu son 8k'nın kapalı olduğu bir konfigürasyon yok.

Tek alternatif Ultimax modunu kullanmak bu durumda da kullanılabilir ram sadece 0-15. sayfalar arası oluyor. Yani rutin ultimax moduna geçip bir miktar transfer yapacak, sonra da normal moda geçip transfer ettiğini gitmesi gereken esas ram bölgesine kopyalayacak. Tabii bütün bunların 256 byte içinde yapılması lazım :)

Tabii bütün bunlar yapılırken eprom'daki 256 byte'lık kodun kendinin bir bölümünü ram'e transfer etmesi lazım ve orada çalışması lazım. Modlar switch olurken kartuştan yahut kernal'den çalışan bir şey olmaması lazım.

Bir de bu çözümde IRQ ve NMI vektörlerini 1 defa set etme şansı var. (Dışarıdan arduino tarafından bankswitching yapılması hariç)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Eylül 27, 2015, 22:40:00 ÖS
Ultimax'ı araştırayım derken aklıma Kernal'in overhead'ini alıp ram'deki ($0318/$0319) vektörü kullanma fikri geldi. Rom dump'ına bakıldığında öyle büyük bir overhead'i de yokmuş.

Kod:
.,FE43 78       SEI             disable the interrupts
.,FE44 6C 18 03 JMP ($0318)     do NMI vector

Maskable interrupt'ları disable ediyor ve ram'deki vektöre dolaylı dallanıyor. Toplam 7 cycle. Benim gireceğim interrupt için giden 7 cycle da burada harcanıyor zaten.

IRQ handler NMI handler kadar sade değil. O yüzden tüm transfer işini NMI içinde halletmek daha akıllıca olur. Kodun çalışma şekli zaten deterministik. Yani hangi byte'ı gönderdiğinde bunun işlenmesi kaç cycle sürer bunun hesabını arduino hali hazırda yapabilir.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Eylül 28, 2015, 00:55:31 ÖÖ
İşlem tamam şimdilik. Çok sayıda oyunla test etmek (Misal giana sisters'da ne hikmetse karakter grafikler tamamen kayıp) ve menü yazılımı artı ona destek veren arduino kodunu geliştirmek gerek.

Bu arada videoda gösterilenden daha hızlı çalışması gerekiyor, arduino tarafında sd kart okumasını buffer üstünden yaparsam gerçek performansına ulaşır.

c64 tarafındaki nmi rutinine nostaljik olsun diye border rengini arttırma komutu ekleyip 6 cycle daha yavaşlattım rutini :) Boş ekranda beklemesinden iyidir.

Son videosu şu şekilde,

http://www.youtube.com/watch?v=_A_VE8G0PsQ (http://www.youtube.com/watch?v=_A_VE8G0PsQ)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Eylül 28, 2015, 22:19:54 ÖS
Bu arada source'ları olan c64'de çalışacak, kendini relocate edebilen bir sidplayer var mı bildiğiniz? Bu donanıma uyarlamak istiyorum. Hvsc'nin sayfasındakilerin hiçbirinin source'larını bulamadım.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: eins üzerinde Eylül 28, 2015, 23:49:43 ÖS
Tebrikler,
Loaderın da hayırlı olsun. Daha benim loader notepad++ da sketch halinde... :P
Şu bordür rengi nostaljisini çok hoşuma gitti. Bunu bende yapmak istedim ama malesef benim projede yer bulamadı kendine...
Sırada ne var, PCB yapacak mısın?


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Eylül 29, 2015, 00:20:25 ÖÖ
Ne şematik ne de pcb tasarımı konusunda becerikli olduğumu söyleyemem :) (bakınız geçmiş projelerim)

Özay'dan bir güzellik bekliyorum, yaparsa bu işi o yapar :)

İşin software kısmı ise tam bir derya deniz. Şunu yapsam deyince arkasından da bir sürü şey geliyor. En basitinden mmc64'ün yaptığı bir kaç şeyi yapayım desen uğraşır durursun. Varsa open source bir şeyler bizim devrelere uyarlanabilir.

Hatta bu konuda paslaşabiliriz. Benim bu konuda ilerlemeye enerjim olur mu onu bilemiyorum gerçi :)

Benim gördüğüm güzel özellikler,
- Takılan medyadan dosyaları browse etme
- D64/T64 desteği (en azından adam içini açıp içinden prg gönderebilsin)
- Sid player
- Disk dump etme (Sürücüden sd karta yahut tersi)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: eins üzerinde Eylül 29, 2015, 00:36:07 ÖÖ
Evet işin software kısmı aynen dediğin gibi. Ben açıkçası projeye başlarken öngördüğüm bir kaç temel özellik dışında fazla detaya girmek istemiyorum, dediğin gibi derinlere inmeye benim de enerjim yetmez.

Ben ilk kart için SD yerine flash çizdim, kolayıma geldi. Ama zaten SD de flash da SPI haberleştiği için gerekiyorsa dönüştürlebilir birbirlerine. Flash için elimde daha önceden yazmış olduğum kodlar var, onlardan kullanırım. SD işine hiç girmedim ama microchip'in kütüphanesi var, henüz incelemedim, kullanılabilir diye düşünüyorum benim projede.

D64 browse işini düşündüm, ama bunu acaba basit bir PC yazılımı ile yapmak daha mı mantıklı. Yada yapılmışı yok mudur?

SID player güzel olur. Senin bu konuda tecrüben de var bildiğim kadarı ile. Aslında güzel bir player çözümü bulabilirsen yada yaparsan ben de yararlanmak isterim. Loader'e eklenecek bir özellik sonuçta.

Ben temel özellik olarak, loader'ı bitirebilirsem bir de DMA FREEZE işine girmeyi istiyorum. Aslında bunun temel sebebi, en azından çok parçalı oyunları ayrı imajlar olarak kaydedip, bir şekilde çakma da olsa örneğin Last Ninja vb yi de destekleyebilmek. Bir de tabi bu yapılabilirse, nasılsa DMA çok hızlı, herhangi bir oyun o anda FREEZE edilip sonra UNFREEZE edilebilir gibi bir ek özellike olmuş olacak.

Alakasız olacak ama, C64 multi color için tasarladığım bir imajı bölünmüş olarak sprite datasına çeviren bildiğin bir PC tool var mı? Loader'da ihtiyacım var da?



Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Eylül 29, 2015, 00:56:46 ÖÖ
Şu program epey işini görür : http://www.ajordison.co.uk/screenshots.html (http://www.ajordison.co.uk/screenshots.html)

Ancak grafikten sprite çıkarma özelliği var mıdır bilemedim. Benim de bu konularda hafızam ta 94-98 arasında kaldı.

Flash / SD kart kullanımına gelince bence SD kart kullanım kolaylığından dolayı ağır basıyor gibi. Ben default kullandım zira arduino'da kullanımı kolay. Flash'a göre temini de daha kolay. Flash'ı Paralel arabirimli kullanacak olsaydın ikisi de olsun derdim. Flash'a usb üstünden seri arabirim yapıp mı transfer yaptırmayı düşünüyorsun bu arada?

D64 konusunda kullanıcıyı PC'ye göndermek çok da kullanışlı bir çözüm olmaz. D64'ü parse eden falan open source kod gani ganidir. Kolayca port edilecek bir tanesini bulup kullanmak lazım. Tabii PIC'in benim durumumda atmega işlemcinin sınırları bizi biraz zorlayacaktır.

Çok parçalı oyunlarda oyunun durumunu nasıl halledeceksin? Oyundan oyuna state'in nerede saklandığı değişir çünkü. Gerçi bazı oyunlarda doğrudan level değiştirmiş oluyorsun sanırım onlar için olabilir.




Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Eylül 30, 2015, 23:19:48 ÖS
Son yaptığım geliştirmelerle ilgili detaylı bilgi vermemiştim. Kısa bir özet geçeyim.

C64'e veri göndermeyi hallettiğim noktada işin bir de geriye Arduino'ya veri gönderme kısmı vardı. Bunun için aklımda daha önceden kartuş i/o bölgesine yaptığım okumaları belli bir düzende yapmak ve arduino'nun da LORAM sinyalini dinlemesi ile gönderilen bilgiye ulaşmasını sağlamak vardı. Bir nevi covert channel communication*, sinsi ama yavaş. Sonra aklıma hali hazırda kullandığım interrupt'ları kullanmak geldi.

Hali hazırda IRQ ve/veya NMI interrupt'larını hem Arduino tarafından üretip 6510'da yakalayabiliyorum veya 6510'da üretip Arduino'da yakalayabiliyorum. Transfer sırasında Arduino'da bu pinlerin bağlı olduğu io pinleri output iken, transfer sonrası input'a çekiyorum.

Arduino uno üzerinde kullanılabilecek 2 tane interrupt pin'i var. 2 veya 3 no'lu pinler. NMI'ı menü aktifken arduino'dan c64'e transfer de yaparım düşüncesi ile IRQ kullanmaya karar verdim.

Bu noktada aklıma ilk gelen çözüm raster interrupt'larını kullanmak oldu. Öncelikle çok da hızlı olmayacak bir çözüm üstünden gittim. Başlangıçta seçim listesinde kaçıncı sayfada, hangi prg'yi seçti gibi bilgiler iletileceği için çok hızlı bir çözüme de gerek yok çünkü. (Disk dump etme gibi bir ihtiyaç olursa işler değişir.)

Öncelikle tek byte transfer edeyim dedim sırf çalıştığını göreyim diye. Elimde olan istediğim raster'da IRQ yaratabilmek, bununla ayrıca arduino'yu da interrupt edebiliyorum. Boş boş duruyor zaten bir şey yapmıyor :)

Gönderimi sağlayabilmek için c64 tarafında bir durum makinesi (state machine) kurdum. Belki daha basit bir kodlama ile yapılabilirdi ancak bu şekilde işin içinden çıktım. Akla gelen ilk implementasyon çalışmayınca sağlama almaya çalışıyor insan. Durum makinesinin özel bir kolu olan transducer (geçişlerde bir de çıkış veren durum makinesi) mantığını kullandım.


Durumlar :
S0 : Başlangıç durumu,
S1 : 0 state'i
S2 : 1 state'i

Çıktılar :
A : Bir sonraki IRQ 0. satırda,
B : Bir sonraki IRQ 160. satırda

Durum geçişleri şu şekilde,

S0'da iken
- Son bit 0 ise S1 state'ine geç, Çıktı : A
- Son bit 1 ise S2 state'ine geç, Çıktı : B

S1'de iken
- Sıradaki bit 0 ise S1 state'inde kal, Çıktı : A
- Sıradaki bit 1 ise S2 state'ine geç, Çıktı : B

S2'de iken
- Sıradaki bit 0 ise S1 state'ine geç, Çıktı : B
- Sıradaki bit 1 ise S2 state'inde kal, Çıktı : A


S0 state'ini interrupt'ları set eden ön taraftaki kod oluşturuyor, S1 state'i bir irq rutini, S2 state'i ise diğer bir IRQ rutini. Efektif olarak yapılan şey ise 0 bilgisi gönderilecekse IRQ oluşturulduktan sonra tam bir ekran taraması bekleniyor (1000 / 50 = 20ms), 1  bilgisi gönderilecekse yarım ekran taraması bekleniyor (20 / 2 = 10ms) . Arduino gelen interrupt'lar arasındaki zamanı ölçüp 1 mi gönderilmiş 0 mı gönderilmiş anlıyor.

Tabii işler teorideki gibi pratikte yolunda gitmiyor, ilk gönderilen bit için raster'a senkronize olmak lazım yahut ilk gelen interrupt bilgisini başlangıç kabul edip çöpe atmak lazım. Bu yüzden ilk biti her zaman 1 gönderdim ve ve özellikle başlatma işini 161. satırda yaptım. (Raster interrupt için kullanılan satırı set ettiğimiz register aslında 9 bit, 0-319 arası değer alıyor, low byte'daki 0 değeri iki değişik satırda geçebilirken 160 değerinin bir de 8. biti (0'dan başlarsak) 1 olan bir değeri bulunmadığı için)

Malesef arduino tarafında kabak gibi 10ms ve 20ms yansımıyor, ciddi bir interrupt latency oluştuğu için bu değerlerin kontrolünü yaparken 15'ten büyükse 0, küçükse 1 demek zorunda kaldım. Belki benim kodumda da sorun olabilir tabii onu incelemem lazım ancak bu düşük hassasiyet bu yöntemle yapılacak daha yüksek hızlı veri transferi için ciddi bir engel.

Sonrasında menüyü biraz şenlendirmek istedim ve hvsc içinden beğendiğim bir sid'i çalmaya karar verdim. Bu noktada arduino IRQ'ya kulak kesildiği için raster interrupt'larını yahut irq yaratan CIA timer'ı kullanmak resmin dışında kaldı. İmdadıma NMI yetişti, CIA 2 üstünden timer ile NMI üretilebiliyor. Biraz nette dolaşıp sağdan soldan topladığım bilgilerle 50hz'lik bir NMI interrupt'ı üretip müzik konusunu da hallettim.

Sd karttaki dosyaları browse etmek için menünün talep ettiği veri aktarımı yapmak istiyorum. Bu sırada aklıma başka bir şey gelmez ise müziği kesip NMI handler'ı transfer işinde kullanmam gerekecek gibi gözüküyor.

Sd kart browse etme çözümünde arduino menüyü C64'e ilk gönderdiğinde sd kart içerisindeki ilk 24 entry'i de programın sonuna iliştirip gönderecek. Kullanıcı bir sonraki sayfaya geçmek istediğinde, bir dizinin içine girmek istediğinde c64 üstte anlattığım yöntemle bu bilgiyi arduino'ya iletecek ve soft nmi vektörünü kartuş bölgesindeki transfer için kullandığım handler'a işaret ettirecek. Arduino ise EXROM hattını low'a çekip kartuştaki rom'u devreye alacak ve kendisine iletilen bilgilerle veri transferini gerçekleştirecek. Bunlar yapılırken c64 reset edilmeyecek ancak ekran kapanacak. Transfer edilecek data max 1k / 2k seviyelerinde olacağı için işlem 1 saniyenin çok çok altında bitecek.

Bu arada arada Arduino tarafında sd karttan okuma yaparken byte byte okumadan 512'şer byte okumaya çevirdim. 3sn.'de yüklemesi yapılan bir oyun (30k) 2sn'de yüklenmeye başladı.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 05, 2015, 01:34:25 ÖÖ
İlk yaptığım arayüzde dosya isimleri menü kodu içine hardcoded koyulmuştu, arduino tarafına bir indeks gönderip oyunu yüklüyordum. Bunu geliştirdim ve sd kart klasör içeriğini menü programına göndermeye başladım. İlk sayfayı dolduracak sd kart içeriğini göndermek basit. Bu hızlıca halloldu. Diğer sayfaları göndermek için kartuş üstündeki transfer rutinimi kullanmayı planlamıştım.

Kolları sıvadım, menüdeki müziğin kesilmesi gerekti zira IRQ'yu arduino ile haberleşmek için kullanırken gezinilen sayfanın içeriğini almak için NMI kullanmam gerekiyor. Transfer kodu zaten mikrosaniye mertebesinde zamanlama hassasiyeti gerektirdiği için transfer yapılırken müzik çalmaya devam etmek pek mümkün değil. Tüm içeriği baştan menüye göndermiş olsan onun da pek pratikliği yok. Neyse efendim müzikten vazgeçtim.

Hali hazırda irq ile 7 bit gönderebiliyorum. Son bit her türlü 1 oluyor. Bir sayfada 20 program listelediğim için bunu ifade etmek için bana 5 bit yetiyor. Kalan 2 biti ise bu 5 bitin anlamını değiştirecek şekilde değiştirmem menüye verilecek önceki sayfa, sonraki sayfa gibi komutları ifade etmek için yeterli.

Gönderdiğim komut 00 bitleri ile başlıyor ise, sonrasında gelen 5 bit seçilen programın / klasörün değeri oluyor. 01 bitleri ile başlıyorsa eğer sonraki 5 bit arduino'ya verilecek komutu ifade ediyor. Şimdilik 1 komutu bir sonraki sayfa, 0 komutu ise önceki sayfa anlamına geliyor.

Sonraki sayfa gösterileceği zaman menü irq ile komutu gönderdikten sonra interrupt'ları kapatıyor ve kartuş üstündeki transfer rutininin kendini devam ettirebileceği bir bekleme rutinine giriyor. Bu rutin aslında kartuş üstündeki ana transfer rutininin bekleme rutini ile aynı. Tabii $0318/$0319'daki vektörü de kartuşa işaret ediyor.

Şöyle bir şey,

Kod:
WAITNMI
BIT BITTARGET
BVC WAITNMI
CLV

Arduino tarafı ise gönderimi normalde olduğu gibi yapıyor. Burada bir fark var, prg transferlerini normalde reset ile başlatıyorum ve önce kartuş üstündeki başlangıç rutini çalışıyor. Bu transferde ise ön planda çalışan kod menü kodu ancak arduino EXROM'u LOW'a çekip $8000-$9FFF bölgesindeki alanı kullanıma açıyor. C64 reset olmuyor, transfer bittiği noktada menü programı devam ediyor.

Düşünce güzel ancak uygulamada başarı sağlayamadım. Uzun saatler süren hata ayıklama sekansları sonrasında ana bug'ı buldum. Arduino'nun bir şekilde başlangıçta ekstra bir NMI ürettiğinii keşfettim. Bu da bütün transfer rutinini altüst ediyordu. Peşinden hem arduino tarafında hem de menü kodunda başka bug'ları da fix edince epey adamakıllı bir seviyeye geldi.

Şimdilik klasör işine girmedim. Klasör desteği kolay. Menü tarafı oldukça dummy. Arduino ona listelemesi gereken şeyleri gönderiyor. Ayrıca listede kaç item var, toplam kaç sayfa var, şu an kaçıncı sayfada gibi bilgileri de iletiyor. Menünün tek yaptığı seçilen item'ı yahut ileri ve geri komutlarını göndermek. Yani seçim yapılan şey bir klasör olursa arduino bunu anlayacak ve o klasöre girip klasörün içeriğini gönderecek.

Son çektiğim video şöyle,

oZEaEu9rAlg


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: eins üzerinde Ekim 05, 2015, 07:23:25 ÖÖ
Gayet guzel, darisi benim menunun basina artik...


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 05, 2015, 09:49:54 ÖÖ
Gayet guzel, darisi benim menunun basina artik...

Senin hardware C64 tarafındaki menü tarafından bakılınca daha basit olduğu için benim gibi badireler yaşamazsın. Tabii benim için de fiziki kartuş çalıştırdığımdan ötürü aleti ele geçirmem kolay oluyor. Şu senin Commando'dan yaşadığın problemi her seferinde açılışta kartuşun init rutinini çalıştırabildiğim için yaşamıyorum.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Ekim 05, 2015, 11:05:55 ÖÖ
Şema hazırsa yavaştan başlayayım ben pcb tasarımına. Kağıt üstünde bir şema bile işimi görür. :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 05, 2015, 11:53:22 ÖÖ
Şema hazırsa yavaştan başlayayım ben pcb tasarımına. Kağıt üstünde bir şema bile işimi görür. :)

Kağıt üstünde mi :) En sevdiğim. Blok diyagram olur mu?


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: ibo1973 üzerinde Ekim 05, 2015, 11:55:47 ÖÖ
.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Ekim 05, 2015, 12:56:54 ÖS
Kağıt üstünde mi :) En sevdiğim. Blok diyagram olur mu?

Neyin nereye bağlı olduğu belli olsun yeter. :D

Şemayı çizince link veririm son bir kez kontrol edersin pcb aşamasına geçmeden önce. ;)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 05, 2015, 15:34:41 ÖS
Akşam eve gidince ilk iş sana bir blok diyagramı çizeyim, hatta gönderdiğin kartuşlardan birisini de çalışır vaziyette hazırlayıp göndereyim sana.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Ekim 05, 2015, 18:45:50 ÖS
Kartuşa hiç kıyma istersen, hatıra olarak kalsın. Benim breadboard düzeneği duruyor. Orada denerim gerekirse. Nihai ürün olunca da bir tanesine çökerim. :D


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 05, 2015, 21:41:07 ÖS
Blok diyagram geldi. Butonları ifade etmedim. Boşta zaten 4 tane analog pin kalıyor pro mini için onlardan kafana göre takılırsın. Şu an için bendeki kod sadece serial takılıyor. Şimdiye kadar arduino'yu hep usb ile besleyip serial takıldım. Bir ara butonları da ekleyip c64'den güç almayı da deneyeyim.

(http://www.tepetaklak.com/data/20151005_211842.jpg)


Hatıralığı mı kaldı bu arda, exrom hattını yonttum ben o kartuşun :)
Mcu versiyon sapasağlam duruyor zaten. Sana çalışır halde gönderirim.

ps: Ekteki zip'te çalışması için gereken herşey mevcut. Arduino kodu ve 27512 eprom yahut eeprom'a yazacağın binary. Kurcalarım dersen c64 kodlarını da ekleyeyim.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 08, 2015, 02:22:32 ÖÖ
Basit gördüğüm şeyler acayip uğraştırıyor arkadaş. Basitçe klasör desteği eklerim dedim ancak Arduino'nun kısıtlı hafızası ve enteresan sdFat kütüphanesi ile uğraş uğraş ancak klasör desteğini sağlayabildim.

Ufak tefek tespit ettiğim / edeceğim bug'ları da fikslersem hemen hemen kullanılabilir bir hale geldi.

Klasör desteğinin kısa bir videosu :

DoNyKtYFpr0



Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: eins üzerinde Ekim 08, 2015, 05:42:38 ÖÖ
I_r_on guzel oldu bu is de, ram li olan proje ne olacak. Bir el atalim devam etsin o proje de...


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 08, 2015, 10:11:04 ÖÖ
I_r_on guzel oldu bu is de, ram li olan proje ne olacak. Bir el atalim devam etsin o proje de...

Aslında ram'li olanın tek avantajı anında yükleme gibi bir avantajı olması. Ancak olay kartuş 8k/16k kartuş imajlarına sınırlı orada. Bu çok daha kullanışlı ve düşük maliyetli oldu bence. Bus'a bağlanayım, tristate edeyim falan ihtiyacı yok.

Nette çok eskiden bir dergide yayınlanmış batarya içeren sram'li bir kartuş görmüştüm. Yazma işi C64 tarafından yapılıyor. Imajı yazdıktan sonra üstündeki switch ile yazmaya kapatıyorsun. Kartuşu çıkarsan da pil sayesinde yazdığın şey üstünde kalıyor. Bir nevi RW kartuş. Belki böyle bir şey yapılabilir. Eprom/Flash programlama ihtiyacı ortadan kalkıyor. C64 tarafından yazmak yerine de kartuş üzerine bir port konabilir.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: ibo1973 üzerinde Ekim 08, 2015, 10:41:33 ÖÖ
I_r_on guzel oldu bu is de, ram li olan proje ne olacak. Bir el atalim devam etsin o proje de...

Aslında ram'li olanın tek avantajı anında yükleme gibi bir avantajı olması. Ancak olay kartuş 8k/16k kartuş imajlarına sınırlı orada. Bu çok daha kullanışlı ve düşük maliyetli oldu bence. Bus'a bağlanayım, tristate edeyim falan ihtiyacı yok.

Nette çok eskiden bir dergide yayınlanmış batarya içeren sram'li bir kartuş görmüştüm. Yazma işi C64 tarafından yapılıyor. Imajı yazdıktan sonra üstündeki switch ile yazmaya kapatıyorsun. Kartuşu çıkarsan da pil sayesinde yazdığın şey üstünde kalıyor. Bir nevi RW kartuş. Belki böyle bir şey yapılabilir. Eprom/Flash programlama ihtiyacı ortadan kalkıyor. C64 tarafından yazmak yerine de kartuş üzerine bir port konabilir.

sd karttan okuyup rama yazıp rami de pille besliyiceksin sanırım bence güzel plan olabilir hatta düşününce oldukça mantıklı


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: wizofwor üzerinde Ekim 08, 2015, 11:42:05 ÖÖ
Aslında C64 tarafından yazılabilen bir kartuş bence çok daha iyi olur. Gücü batarya ile sağlanan istendiğinde memory dump yapan, istenildiğinde veriyi geri yükleyen bir "save state" kartuşu. Bu ürün iyi iş yapar bence.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: eins üzerinde Ekim 08, 2015, 15:46:26 ÖS
Aslında ram'li olanın tek avantajı anında yükleme gibi bir avantajı olması. Ancak olay kartuş 8k/16k kartuş imajlarına sınırlı orada. Bu çok daha kullanışlı ve düşük maliyetli oldu bence. Bus'a bağlanayım, tristate edeyim falan ihtiyacı yok.

Aslında senin proje de, benim ki de kartuş emulasyonu yapamadığı için sadece program yükleyici olarak iş görüyor bu alanda. Benim RAM'li modele sıcak bakmamın temel sebebi gerçek kartuş emulasyonu yapabilmeye olanak sağlaması. Bu sayede easyflash için yazılmış yada düzenlenmiş çok parça oyunlara da destek verilebilirdi. Last Ninja, Prince of Persia vb ...

Bu işe çok uygun bir ürün biliyorum ama fiyat uçuk.

IDT7007 5V 32K x 8 DUAL-PORT STATIC RAM

DK fiyatı $37 malesef.
Bu durumda dual port olayını discreete olarak yapmak gerekecek, $1'lik bir SRAM kullanılabilir ama etrafta biraz lojik elemanlar olacak. Bir de bu tarz kartuşların (easy flash da dahil) bank değiştirme requestlerini yakalayabilen bir lojik de gerekiyor.

Bence yapılabilir. Bu ara Doberman'a vakit ayıramadım, loader bitsin bu işi bir detaylı incelemek istiyorum açıkçası...

Kolay gelsin.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Ekim 08, 2015, 16:14:03 ÖS
@i_r_on: İki sorum var:

* IrqHack64 mü yoksa IRQHack64 mü daha güzel olur? (Bence ikincisi)

* /LORAM dediğin /ROML değil mi?

Öyle olduğunu varsayarak tasarıma şemadan başlıyorum hayırlısıyla, KissCart64 DIP versiyon üzerinden önce sadeleştirme sonra da yeni bileşenleri ekleme yöntemiyle kısa sürede bitiririm sanırım.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: hades üzerinde Ekim 08, 2015, 19:11:04 ÖS
Ben cevap vereyim.
/LORAM : 6510'dan çıkan ve Basic Rom'u on/off yapan sinyal.
/ROML : Expansion portta /EXROM hattı lojik "0" yapıldığında, expansion porta bağlı $8000 - $9FFF arasındaki bir romu seçmek için kullanılan "0" olarak aktif olan sinyal.
Kısaca birisi içteki romu, diğeri dışarıdaki romu kontrol eder diyeyim.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: LW3D üzerinde Ekim 08, 2015, 19:16:30 ÖS
Kartuş manyağı yaptınız bizi... Hangi kartuşa baksam birbirinden harika... Ellerinize sağlık.. Harikasınız ...


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 08, 2015, 21:21:52 ÖS
sd karttan okuyup rama yazıp rami de pille besliyiceksin sanırım bence güzel plan olabilir hatta düşününce oldukça mantıklı

Bu zaten benim yola çıktığım orijinal fikirdi, pille besleme yoktu sadece içinde.

Batarya destekli kartuş projesi şurada, 1987 yılında bir dergide yayınlanmış : http://ar.c64.org/rrwiki/images/5/57/The_Transactor_Vol07_04_1987_Jan_A_C64_Cartridge_without_Eproms.pdf (http://ar.c64.org/rrwiki/images/5/57/The_Transactor_Vol07_04_1987_Jan_A_C64_Cartridge_without_Eproms.pdf)

Bir ram bölgesi gölgelenerek adreslemiyor. Dışındaki switch'lerle de yazma koruması vesaire ayarlanıyor. C64'den yazılım ile kumanda ediliyor.


Aslında C64 tarafından yazılabilen bir kartuş bence çok daha iyi olur. Gücü batarya ile sağlanan istendiğinde memory dump yapan, istenildiğinde veriyi geri yükleyen bir "save state" kartuşu. Bu ürün iyi iş yapar bence.

Eskiden yapılsa iş yapardı :) Şimdi ona özel yazılım yazacak adam zor bulunur herhalde. Tam 1541 emülasyonu yapan donanımlar aslında save state olayı için daha ideal gibi. Bence ram kartuşun en büyük avantajı eprom programcısı tarzı bir cihaza gereksinim olmaması.

Aslında senin proje de, benim ki de kartuş emulasyonu yapamadığı için sadece program yükleyici olarak iş görüyor bu alanda. Benim RAM'li modele sıcak bakmamın temel sebebi gerçek kartuş emulasyonu yapabilmeye olanak sağlaması. Bu sayede easyflash için yazılmış yada düzenlenmiş çok parça oyunlara da destek verilebilirdi. Last Ninja, Prince of Persia vb ...

Bu işe çok uygun bir ürün biliyorum ama fiyat uçuk.

IDT7007 5V 32K x 8 DUAL-PORT STATIC RAM

DK fiyatı $37 malesef.
Bu durumda dual port olayını discreete olarak yapmak gerekecek, $1'lik bir SRAM kullanılabilir ama etrafta biraz lojik elemanlar olacak. Bir de bu tarz kartuşların (easy flash da dahil) bank değiştirme requestlerini yakalayabilen bir lojik de gerekiyor.

Bence yapılabilir. Bu ara Doberman'a vakit ayıramadım, loader bitsin bu işi bir detaylı incelemek istiyorum açıkçası...

Kolay gelsin.

Easyflash kartuş konusunda standart oluşturmuş durumda. 1541 ultimate bile onu emüle ediyor bu oyunları oynatabilmek için. Tabii orada bu işin temeli bank switching ve bank switching için sağlanmış bir api.

Dual port ram bu projenin ilk haline başladığımda benim de hayalimdi ancak dediğin gibi fiyatları çok uçuk. 1$'a sram nerde yahu? Easyflash oyunları 1mb (500 küsür kb gördüm herhlde bu boyut da vardır) boyutlarına kadar ulaşıyor. Prince of persia gibi oyunlar hızlı bank switching'den faydalanıyor dolayısıyla 32k koyayım gerektiğinde doldururum mantığı bu oyunlarda işlemez.

@i_r_on: İki sorum var:

* IrqHack64 mü yoksa IRQHack64 mü daha güzel olur? (Bence ikincisi)

* /LORAM dediğin /ROML değil mi?

Öyle olduğunu varsayarak tasarıma şemadan başlıyorum hayırlısıyla, KissCart64 DIP versiyon üzerinden önce sadeleştirme sonra da yeni bileşenleri ekleme yöntemiyle kısa sürede bitiririm sanırım.

Pek tabii ROML, beynim sürçmüş. Yazarken içimden "lan lan lan" demiştim çıktı şimdi neden olduğu :)

İşin garibi ben en fazla NMI'ı suiistimal ediyorum ancak interrupt'ın kısaltması da IRQ. İsim NMIHack de olabilir. IRQHack64 daha iyi sanki ama.

Ellerine sağlık bu arada, benim elim dahi gitmiyor valla Eagle'a. Girsem biliyorum takılıp kalıcam bir yere öyle kalıcak :)

Sd kart modülü bu arada pcb üstü değil jumper kablolar ile de olabilir. Ancak kartuşun iç hacmi az olduğu için dupont kablo yerine lehimlemek lazım. Tabii pcb üstüne monte şeklinde tasarlayabilirsen tadından yenmez ancak onun ayarının tutması zor gözüküyor.

Kartuş manyağı yaptınız bizi... Hangi kartuşa baksam birbirinden harika... Ellerinize sağlık.. Harikasınız ...


Eyvallah, şu güzel ortam olmasa şu an başka bir hobiye takılıyor olurdum muhtemelen :) Sizlerin varlığının da büyük etkisi var projelerde.



Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Ekim 08, 2015, 21:39:17 ÖS
Baya kolayladım ben bu arada işi. ;)

SD kart modülünün ölçülerini alıp Eagle'da component olarak tanımladım. 90 derece dişi header ile kartuşa mümkün olan en yakın şekilde (kutuya sığabilmesi için) koyabiliyorum şu anda. Hatta biraz dışarı taşırarak kartuş kutusunun üstünden veya yanından açılacak bir kesikle kutu tamamen kapatılabilir sanki.

Pro Mini'yi de soketsiz lehimlersek o da kartuş kutusuna sığar gibime geliyor.

Dört tane butondan bahsetmiştin, isimleri/görevleri neler olacak onları da söyleyiver de elim değmişken onları da halledeyim. Butonlar internal pullup kullanıp diğer uçları GND olacak değil mi?

Reset button ve power led'i çıkarmadım daha tasarımdan, dursunlar mı kaldırayım mı?

Bir de power led ve direnci smd idi onları da through hole'a çeviriyorum sırf senin lehim fobin için. :D

Son olarak da A8-A15 için A0,A1,A2,A3,4,5,6,7 demişsin butonlara A4,A5,A6,A7 bırakmışsın onu A8-A15 için A0,A1,A2,A3,A4,A5,A6,A7 ve butonlar için 4,5,6,7 olarak değiştirsek sorun olur mu?

En son olarak da yazılımda debug kısmını bırakacaksan Pro Mini yerine Nano mu kullansak?

Bir sürü karar ile başbaşa bırakıyorum seni. :D


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 08, 2015, 22:11:50 ÖS
Baya kolayladım ben bu arada işi. ;)

SD kart modülünün ölçülerini alıp Eagle'da component olarak tanımladım. 90 derece dişi header ile kartuşa mümkün olan en yakın şekilde (kutuya sığabilmesi için) koyabiliyorum şu anda. Hatta biraz dışarı taşırarak kartuş kutusunun üstünden veya yanından açılacak bir kesikle kutu tamamen kapatılabilir sanki.

Pro Mini'yi de soketsiz lehimlersek o da kartuş kutusuna sığar gibime geliyor.

Valla üretim teknolojisi konusunda söz senin. Ben hayatta onları kutuya falan sığdıramam :)

Dört tane butondan bahsetmiştin, isimleri/görevleri neler olacak onları da söyleyiver de elim değmişken onları da halledeyim. Butonlar internal pullup kullanıp diğer uçları GND olacak değil mi?


Evet internal pullup kullanırız. Benim bir an önce c64'den güç alan halini denemem lazım. Haftasonu denerim muhtemelen. 4 tane analog pin boşta kalıyordu, bana 2 buton lazım. Birisi reset için, birisi de select seçeneği için. Ama şimdi düşündüm de. Tek butonla da idare ederim, uzun basılırsa reset çakar, kısa basılırsa seçim fonksiyonu görür. Tek buton yapalım biz onu. Reset zaten başka taraftan doğrudan arduino'ya bağlı.

Reset button ve power led'i çıkarmadım daha tasarımdan, dursunlar mı kaldırayım mı?

Bir de power led ve direnci smd idi onları da through hole'a çeviriyorum sırf senin lehim fobin için. :D

Şu durumda reset butonunun ismini SEL/RESET olarak değiştirip eskisi gibi bırakabilirsin. Tabii Reset hattı ile bağlantısı iptal olup arduino'ya bağlı olması lazım. Power led'i kalabilir ancak arduino var o da ışıl ışıl ışıldayacak sanki gerek yok gibi. Hatta sd kart erişiminde 13 no'lu pin'e bağlı led de yanacak. Sen karar ver.
Aslında smd fobisinden çok smd deneyimsizliği var şu an. Senin kisscart'taki dirençlerin lehimlerini çıkarırken de gördüm başıma neler gelebileceğini :) Miniminnacıklar meretler.

Son olarak da A8-A15 için A0,A1,A2,A3,4,5,6,7 demişsin butonlara A4,A5,A6,A7 bırakmışsın onu A8-A15 için A0,A1,A2,A3,A4,A5,A6,A7 ve butonlar için 4,5,6,7 olarak değiştirsek sorun olur mu?

Bu çok sıkıntı yaratmayacaksa kalsın. Arduino tarafında hızı düşürmemek için PORTD'nin yarısı ile PORTC'nin yarısını kullandım. İki işlemle A8-A15'i set ediyorum. Çok sıkıntı yaratacaksa ne kadar hız farkı oluyor bir denerim.

En son olarak da yazılımda debug kısmını bırakacaksan Pro Mini yerine Nano mu kullansak?

Aslında usb portunun kalması hoş olurdu. İleride belki derlenen kodu doğrudan c64'e atmak için özellik eklenirse kullanılabilir. Bu şekilde kolayca cross development yapılabilir. Ama board üstündeki fiziksel etkisi ne olur, kartuşun yüksekliği karşılar mı bilemiyorum. Sen ne diyorsun? (Bir yandan elimdeki mini stoku mini olsun diyor :) )

Bu arada bu kartuşla ilgili kendim üretim yapmayı düşünmüyorum. Board'u da sen tasarladığına göre üretim hakkı senindir. Yazışalım bu konuda.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 09, 2015, 01:24:59 ÖÖ
Bu arada sid player'ı şimdilik kendim yazmaktan vazgeçtim. Rsid'lerin makineyi ele geçirmesinden dolayı zaten çok pratik bir sid player yapmak mümkün değil.

Araştırırken psid64 diye bir programa denk geldim. Sid dosyalarından c64'de çalıştırılabilecek programlar üretebiliyor. Böylece arduino üstündeki flash'ı da kartuşa koyulabilecek başka özellikler için kullanmak mümkün olur.

Kullanım şu şekilde,
http://www.youtube.com/watch?v=VA9FgM4h7V8 (http://www.youtube.com/watch?v=VA9FgM4h7V8)

ps: Program şurada : http://psid64.sourceforge.net/ (http://psid64.sourceforge.net/)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Ekim 09, 2015, 09:54:41 ÖÖ
Araştırırken psid64 diye bir programa denk geldim. Sid dosyalarından c64'de çalıştırılabilecek programlar üretebiliyor. Böylece arduino üstündeki flash'ı da kartuşa koyulabilecek başka özellikler için kullanmak mümkün olur.

ps: Program şurada : http://psid64.sourceforge.net/ (http://psid64.sourceforge.net/)

O kadar uğraşmana gerek yok. Tümü PSID64 ile PRG haline çevrilmiş HVSC verelim sana. :D

http://boswme.home.xs4all.nl/HVSC/HVSC63_PSID64_packed.7z (http://boswme.home.xs4all.nl/HVSC/HVSC63_PSID64_packed.7z)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 09, 2015, 10:05:36 ÖÖ
O kadar uğraşmana gerek yok. Tümü PSID64 ile PRG haline çevrilmiş HVSC verelim sana. :D

http://boswme.home.xs4all.nl/HVSC/HVSC63_PSID64_packed.7z (http://boswme.home.xs4all.nl/HVSC/HVSC63_PSID64_packed.7z)

İyiymiş, gerçi aynı dosyaları üretecek batch programı yazmak ta en fazla yarım saatimi alırdı :p



Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Ekim 09, 2015, 19:56:51 ÖS
Tasarımın ilk hali görücüye çıksın bakalım. Ben bir yemek yiyip geliyorum. :)

(https://dl.dropboxusercontent.com/u/18575245/IRQHack64/IRQHack64_top.png) (https://dl.dropboxusercontent.com/u/18575245/IRQHack64/IRQHack64_bottom.png)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: ibo1973 üzerinde Ekim 09, 2015, 20:11:21 ÖS
ben çok beğendin yarın istemeye gelicem musaitmisiniz acaba ? Şaka bi yan gayet güzel olmuş :D


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: joker_ üzerinde Ekim 09, 2015, 20:41:56 ÖS
Kiss den vazgeçmem diyorsun :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 09, 2015, 20:45:59 ÖS
Özay ellerine sağlık, çok şık olmuş :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Ekim 09, 2015, 20:53:54 ÖS
Kiss den vazgeçmem diyorsun :)
Kiss çünkü bu tasarım anlamında benim MCU'lu modelden bile sade, çünkü direk olarak Arduino ve SD modülü kullanıyor. ;)

ben çok beğendin yarın istemeye gelicem musaitmisiniz acaba ? Şaka bi yan gayet güzel olmuş :D
Özay ellerine sağlık, çok şık olmuş :)
Teşekkürler, beğendiğinize sevindim.

Biraz kafamı toplayayım ve bu gece uykumu alayım yarın biraz daha rötuş yapacağım görsel anlamda daha da güzel olsun diye. Bir de ölçüleri son bir kez kontrol edeceğim. Bu haliyle minimum kesme biçme ile kartuş kutusuna sığması gerekiyor.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: msvstpl üzerinde Ekim 09, 2015, 23:08:01 ÖS
I_r_on tebrikler ,zor bir işi tamamladın.

Bahsettiğin dergideki ram kartuş benim de ilgimi çekmişti. Bol switch li olması pek alışık olunmadık bir durumdu , sanki “rahatsız ediyor“ gibi gelmişti.

Öyle de olsa, Ram ile yapılan projelerin nedense çekici bir tarafı var.Belki herşeyi ilkel haliyle kullanma ve saklama olanağını veriyor olmasından.
Yada,eeprom’un hataları, sdkartın extraları yok ,basit ve temiz ondan...

Neyse, yani, sırada ne varsa,ne yaparsan yine ilgi ile izleriz..

Kolay gelsin.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 09, 2015, 23:34:11 ÖS
I_r_on tebrikler ,zor bir işi tamamladın.

Bahsettiğin dergideki ram kartuş benim de ilgimi çekmişti. Bol switch li olması pek alışık olunmadık bir durumdu , sanki “rahatsız ediyor“ gibi gelmişti.

Öyle de olsa, Ram ile yapılan projelerin nedense çekici bir tarafı var.Belki herşeyi ilkel haliyle kullanma ve saklama olanağını veriyor olmasından.
Yada,eeprom’un hataları, sdkartın extraları yok ,basit ve temiz ondan...

Neyse, yani, sırada ne varsa,ne yaparsan yine ilgi ile izleriz..

Kolay gelsin.


İlgilendiğiniz için önce teşekkür ederim. Temel elektronik bilgim oldukça zayıf, elektronik, devre teorisi derslerini en az iki defa alıp ite kaka geçmiştim. Hatta devre teorisi sınavlarında pspice modeli sorulan soruyu yapar salondan çıkardım, 25-30 puan gibi bir şey gelirdi :) Ancak iş dijital devrelere geldiğinde ise bunun çok aksine oldukça başarılıydım.

Neyse uzun lafın kısası, bu kartuşun c64 board'una olası olumsuz etkileri konusunda fikir beyan edebilirseniz sevinirim. Bus'a bağlı çiplerin IRQ ve NMI output'ları bildiğim kadarıyla open drain. Sinyalin 1 olması ise pull up'lar sayesinde oluyor. Ben gerçi şu an bu pinleri doğrudan 0 ve 5v olmak üzere sürüyorum. Bunun diğer çiplere veya arduino'ya olumsuz bir etkisi olur mu acaba? Epey bir kullandım aslında olumsuz bir durumla karşılaşmadım.

Dergideki tasarıma gelince, switch'ler bana da oldukça kompleks geldi. Ancak o zaman şu anki gibi ucuz kolay erişilebilir ve form faktörü oldukça küçük microcontroller (misal Özay'ın kullandığı attiny) olmadığı düşünülünce çok da garipsememek lazım. O kartuşta zamanında wizard of wor'un işaret ettiği kullanım tarzı için epey popüler olabilirdi. Hala da benzer bir tasarım müzik programları için hemen yapılıp saklanacak enstrümanlar falan için kullanılabilir pek tabii. Ya da ufak bir micro işlemci ile birleştirilip ve büyükçe bir ram çipi kullanılıpdata transferi CPU'ya bırakılmış ucuz bir reu yapılabilir.

Artık sırada muhtemelen %75 noktalarında bıraktığım sid player projesine geri dönme vakti geldi. Sonrasında ne çıkar bilmiyorum. Bu eski bilgisayarlar çok kişinin odak noktasında ve çok nitelikli insanlar proje geliştiriyorlar. Yapılanları tekrar etmektense onları geliştirmek yahut orijinal fikirler bulmak lazım.

Aklıma ilk gelen c64 için wireless bir controller yapmak. Bizim emektar Astek joystick'leri şu dönemde wireless olarak kullanmak hoş olabilir.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Geos üzerinde Ekim 09, 2015, 23:57:30 ÖS
bence tasarım güzel beyendim d64 dosyaları açarmı


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 10, 2015, 00:03:16 ÖÖ
bence tasarım güzel beyendim d64 dosyaları açarmı

1541 emülasyonu yahut iec bus'ı ile bağlantısı yok. D64/T64 içinden tekli prg çalıştırmak için kullanılabilir ancak bunun için arduino tarafında bu desteğin eklenmesi lazım. Bu destek de çok fazla anlamlı değil, d64'den prg'leri çıkarıp kullanmak arduino'nun başka işler için kullanılabilecek hafızasından yemekten iyidir bence.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 10, 2015, 10:45:40 ÖÖ
Kendi soruma yanit vereyim bu arada open drain output'u olan çiplerin yerleştiği hatta bu hatti sürerken 1 için pin'i input'a almak, 0 için normal şekilde 0 çıkış vermek gerekiyormuş.
Low icin :


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: eins üzerinde Ekim 10, 2015, 12:38:06 ÖS
Kendi soruma yanit vereyim bu arada open drain output'u olan çiplerin yerleştiği hatta bu hatti sürerken 1 için pin'i input'a almak, 0 için normal şekilde 0 çıkış vermek gerekiyormuş.
Low icin :

Evet, benim CPLD de de aynısını yapıyorum.

C64_RESET.oe=REQ_RESET;
C64_RESET.le='b'1;
C64_RESET.l='b'0;

C64_RESET.l='b'0;   ile o pinin çıkış değerinin 0 olduğunu set ediyor,
C64_RESET.oe=REQ_RESET; Burada da output enable yapılınca, yani aslında pini output yapınca çıkışı low a çekmiş oluyor.


 


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: zanpinoz üzerinde Ekim 10, 2015, 13:47:31 ÖS
Tebrikler elinize sağlık..


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: msvstpl üzerinde Ekim 10, 2015, 19:16:12 ÖS
Evet. 1 için input yapılıyor çünkü  hattı kullanmak isteyen dış işlemci kendi pinini  input yaptığında pin (“float” da !) HI_Z ‘de kalıyor. Hat normal haliyle pull-up ın  oluşturduğu 1 de kalmaya devam ediyor. Low yapmak için ise output low ..

Open collector konusu çok su kaldırır. Ama girmemek en iyisi. Konuları olabildiğnce pratik tarafından götürüp teorisini-elden geldiğince-onunla sınırlı tutmak sanıyorum en  doğrusu. Özellikle izleyen yeni insanlar için,ulaşılabilmesi kolay olan şeyler  teorik ve ayrıntılı tartışmalarla zor ,yapılamaz, anlaşılamaz, elde edilemez şeyler gibi gelmeye başlar ve onları uzaklaştırır. Belki farkında olmadan buna yolaçabiliriz..

Kolay gelsin.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 10, 2015, 20:25:34 ÖS
@msvstpl: İşin teorisine fazla girmenin insanları benzer çabalara girme noktasında korkutacağı noktasına kısmen katılıyorum. Şu kısım hariç; Ortada herhangi bir yanlış varsa, örn. benim hatları doğrudan sürmem gibi veya bir başka kişinin verdiği eksik / yanlış bilgi gibi, teoriye girilmesi gerekiyorsa bence o noktada girilmeli.

Bildiğin bir şeyi yapıyor olmak güzel ancak yeni bilgiler bazılarına giriş kapısını kapattığı gibi bazılarına da bazı yeni kapıları aralayabilirler.  Şahsen dün bulunduğum noktadan bir adım ötede olmayı isterim hep.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Metallic üzerinde Ekim 11, 2015, 00:23:05 ÖÖ
C64_RESET.oe=REQ_RESET; Burada da output enable yapılınca, yani aslında pini output yapınca çıkışı low a çekmiş oluyor.
Pinin output enable'dan sonraki durumu nedir, float mu?


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 11, 2015, 01:00:06 ÖÖ
C64_RESET.oe=REQ_RESET; Burada da output enable yapılınca, yani aslında pini output yapınca çıkışı low a çekmiş oluyor.
Pinin output enable'dan sonraki durumu nedir, float mu?


OE 1 ise Hi-Z, yani buraya bağlı olan devre buradan etkilenmez. Kendi yapısında ne okuması gerekiyorsa onu okur, 1 ya da 0. OE 0 ise yani output enable edilmiş ise pin'e ne verilmişse o.

Hi-Z, tristate vs. yapmanın mantığı şu, bu tip pin'ler zaten harici pull-up ile high'a çekiliyor.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: eins üzerinde Ekim 11, 2015, 01:07:10 ÖÖ
Pinin durumu C64_RESET.l='b'0; satırı ile belirleniyor zaten. Yani bu pin hep Low. Tabiki sadece output enabled high edilince bu 0 değerini dışarıya basıyor, output enabled olmadığı durumlarda pin float demek.

Lojik devre çıkışlarında genelde her bir pin için iki adet mosfet(transistor) olur. Bunlardan biri çıkışı low'a çekmek için kullanılır. Diğeri de high'a çekmek için kullanılır. Output Enabled sinyali bu transistorlerin çalışıp çalışmayacağını belirler aslında basit anlamda.

Open Collector olarak bahsedilen yapıda ise sadece low'a çeken transistor vardır. High'a çekmek için bir transistor bulunmaz. Bunun avantajı eğer aynı hattı birden çok chip paylaşıyor ise, chiplerden biri hattı high, öteki low yapmak istediği durumlarda kısa devre olmasının önlenmesidir. Tabiki bu durumda mutlaka ilgili hattın bir adet pull-up direnci vardır. Bu direnç hattı kimse low'a çekmiyor ise, float değil high'da kalmasını sağlar.

Bazı CPLD'lerde Open Collector özelliği mevcut. Ama benim kullandığımda yok. Open Collector özelliği olmayan durumlarda (örn. bir çok mikroişlemcide de böyle) çıkış sabit olarak 0 yapılır. Yani high'a çeken transistorun hiç çalışmayacağı garanti edilmiş olur. Eğer ilgili pin input yapılırsa çıkıştaki transistorler çalışmayacağından, hat pull-up direnci ile high olmuş olur. Hat low yapılmak istendiğinde ise, pin output yapılır ve zaten daha önce 0 olarak set edilmiş olduğu için low'a çeken transistor çalışır, ve hat low'a çekilmiş olur.

Bu sisteme open collector denmesinin sebebi ise, çıkışta sadece low'a çeken transistor olduğunu söylemiştik. İşte bu transistorun collector bacağının dışarı verilmiş olmasıdır. Yani çıkış ya 0 yada boştadır kısaca...

Open Collector yapıda low sinyalin ağırlığı vardır bir bakıma. Zaten bu sebeple şemalarda gördüğümüz bazı sinyaller Active Low olarak tanımlanmıştır. Örneğin /RESET. Yani /RESET hattını gerektiğinde birden çok kaynak low'a çekerek tetikleme yapabilir.

Bu arada bilgi için, şemalarda sinyalin üzerinde bir çizgi varsa, yada sinyalin isminin yanında / işareti kullanılıyorsa bu hattın active low olduğunu gösterir.  


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: eins üzerinde Ekim 11, 2015, 01:08:48 ÖÖ
OE 1 ise Hi-Z, yani buraya bağlı olan devre buradan etkilenmez. Kendi yapısında ne okuması gerekiyorsa onu okur, 1 ya da 0. OE 0 ise yani output enable edilmiş ise pin'e ne verilmişse o.

i_r_on, Latch entegralerinde falan oe sinyali active low, yani aslında /oe şeklinde. Yani senin dediğin gibi 0 olduğunda output aktif demek. Ama CPLD içinde oe sinyali active high, yani /oe değil. Bu sebeple CPLD içinde oe=1 olduğunda çıkışlar aktif demek oluyor.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 11, 2015, 01:24:47 ÖÖ
OE 1 ise Hi-Z, yani buraya bağlı olan devre buradan etkilenmez. Kendi yapısında ne okuması gerekiyorsa onu okur, 1 ya da 0. OE 0 ise yani output enable edilmiş ise pin'e ne verilmişse o.

i_r_on, Latch entegralerinde falan oe sinyali active low, yani aslında /oe şeklinde. Yani senin dediğin gibi 0 olduğunda output aktif demek. Ama CPLD içinde oe sinyali active high, yani /oe değil. Bu sebeple CPLD içinde oe=1 olduğunda çıkışlar aktif demek oluyor.


Hmm, GAL, eprom, sram vesaire hepsinde hep active low, cpld'de tersiymiş demekki.

Bir de şu float'u netleştirmek lazım. Float'u Hi-z yerine mi kullanıyorsunuz? Bir pin'i ortamdaki gürültüye göre rastgele değerler okuyacak şekilde set etmek mümkün mü cpld üstünde? Float'tan benim anladığım hiç bir yere bağlı olmayan input pin'i. Sürülen devre gözünden bakarsak open collector / open drain bir output bekliyor ve ortamda pull up varsa sinyalin float olması yani 1 ile 0 arasında gezmesi mümkün değil. Süren devre gözünden bakarsak ilgili pin'i Hi-Z yapmışsa aynı pin'i kendi okuduğunda 1 ile 0 arasında gezer bulması mümkün mü?


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Metallic üzerinde Ekim 11, 2015, 02:40:57 ÖÖ
delimawi  open collector bilgisi için teşekkürler. Vurgulayıcı olması açısından fc3'te kullanılan bir open collector örneği de benden.

(https://dl.dropboxusercontent.com/s/97irke5xljotoce/fc3_opencollector_example.png)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 11, 2015, 04:37:45 ÖÖ
@Özay:
KissCart'ını gönder, IRQHack64'ünü al :p

(http://www.commodore.gen.tr/forum/index.php?action=dlattach;topic=11034.0;attach=13130;image)

Şaka bir yana denemen için hazırlayacağım dediğim IRQHack64'ünü hazırladım. Test ettim çalışıyor, pazartesi günü sana gönderirim.

Bu arada buton olayını da hallettim. A4'ü (A5 te olabilir) kullandım, A6 ve A7'de internal pullup yokmuş.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 11, 2015, 12:16:18 ÖS
Bir de şöyle bir sorunsal var. Pro mininin 5v kartustaki 5v'a bağlı. Arduino usb ile pc'ye bağlandığında arduino iki kaynak arasında seçim yapacak. Bu durumda sorun yaşar mıyım acep?

Pc tarafına usb seri bağlantı üzerinden transfer yapacak ufak bir program yazacağım, bu konu aklıma takıldı.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: eins üzerinde Ekim 11, 2015, 13:43:14 ÖS
Bir de şöyle bir sorunsal var. Pro mininin 5v kartustaki 5v'a bağlı. Arduino usb ile pc'ye bağlandığında arduino iki kaynak arasında seçim yapacak. Bu durumda sorun yaşar mıyım acep?

Pc tarafına usb seri bağlantı üzerinden transfer yapacak ufak bir program yazacağım, bu konu aklıma takıldı.

USB bağladığında C64'ten enerji almasını sağlaman mümkün ise (yani kartuş takılı ve C64 çalışır iken USB bağlantısı yapacaksan) USB tarafındaki 5V'yi hiç bağlama.

Yok kartuş takılı değilken de USB bağlarım diyorsan, USB 5V ile C64 5V nin birbirlerine bağlı olması hoş bir durum değil. Mutlaka biri birinden daha yüksek olacaktır ve otaraftan diğerine akım akacak.

Bunu önlemek için mosfetli bir power switch kullanman en doğrusu. Benim ucuz yollu tavsiyem ise, USB tarafından gelen 5V hattına seri bir sthocky diod bağla. Bu sayede C64 tarafındaki 5V PC ye akamaz. Ayrıca PC tarafından gelen 5V diod üzerinden geçeken 0.2 kadar gerilim düşümüne uğrayacaktır, yani 4.8v lara düşer. Bu sebeple de C64 tarafına akmamış olur.

Bilmiyorum konuyu doğru anladım mı ama bu yöntemi deneyebilirsin.
USB tarafından gelen 5V da düşme olması senin devrenin çalışmasını etkilemez.

EDIT: Diode olarak 1N5819 kullanabilirsin.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: eins üzerinde Ekim 11, 2015, 14:00:32 ÖS
Hmm, GAL, eprom, sram vesaire hepsinde hep active low, cpld'de tersiymiş demekki.

CPLD programlarken dökümanlarda diyor ki; Siz kafanızı hiç active low, yada active high mantığı ile karıştırmayın. Lojik mantığı olması gerektiği gibi kurun. Yani oe mesela. Output Enabled demek. Output Not Enabled değil.
En son lojik bitince, gerekiyorsa ilgili pini yada hattı active low olarak tanımlayabilirsin, bu durumda değişmesi gereken tüm önermeleri compiler yada fitter kendisi hallediyor.

Bunu tanılarken de mesela, PIN2 = oe Dediğimiz yerde, sadece PIN2=!oe yada !PIN2=oe diyoruz.
Yada bir önermede mesela, Sinyal=A&B yerine !Sinyal=A&B dediğimizde Sinyal active low olmuş oluyor...


WinCUPL Manual'den Altıntı:


The concept of polarity can often be a confusing one. In any PLD design, the designer is primarily concerned with whether a signal is true or false. The designer should not have to care whether this means that the signal is high or low. For a variety of reasons a board design may require a signal to be considered true when it is logic level 0 (low) and false when it is logic 1 (high). This signal is considered active-low since it is activated when it is low. This might also be called low-true. If a signal is changed from active-high to active low then the polarity has been changed.

For this reason, CUPL allows you to declare signal polarity in the pin definition and then you do not have to be concerned with it again. When writing equations in CUPL syntax, the designer should not be concerned with the polarity of the signal. The pin declarations declare a translation that will handle the signal polarity.


Bir de şu float'u netleştirmek lazım. Float'u Hi-z yerine mi kullanıyorsunuz? Bir pin'i ortamdaki gürültüye göre rastgele değerler okuyacak şekilde set etmek mümkün mü cpld üstünde? Float'tan benim anladığım hiç bir yere bağlı olmayan input pin'i. Sürülen devre gözünden bakarsak open collector / open drain bir output bekliyor ve ortamda pull up varsa sinyalin float olması yani 1 ile 0 arasında gezmesi mümkün değil. Süren devre gözünden bakarsak ilgili pin'i Hi-Z yapmışsa aynı pin'i kendi okuduğunda 1 ile 0 arasında gezer bulması mümkün mü?

Evet, doğru tanım mı bilmem ama benim için float ve High-Z aynı şey.
Eğer süren devre gözü ile bakarsak, Pin Hi-Z yapılmış ise, ve dışarıda bir pull-up pull-down yoksa normalde 1-0 arasında rasgele bir değer okunmasını bekleriz. Ama bu durum istenen bir durum değil, zira gürültüye ve enerji tüketimine sebep olur, şöyleki eğer bu pin input ise, her 0-1 geçişinde, input buffer'ın&nbsp; state değiştirmesine sebep olur. Bunu önlemek için bazen internal pull-up oluyor, bazen de dışarıdan pull-up kullanılması tavsiye olunuyor kullanılmayan pinler için.

ATF1504 de ise başka bir mantık var. Her bir pin için ayrı ayrı set edilebilien pin-keeper denen bir özellik var. Örneğin pin gürültü alıp 1 statüsüne geçmiş ise, input buffer çıkışından pin girişine zayıf bir feedback yapılıyor ve pinin bu statüde kalması sağlanıyor. Pin-keeper özelliğini sadece kabaca biliyorum, detaylarına Atmel CPLD pdflerinden ulaşabilirsin.

Bu pin keeper'in basit şemeası aşağıdaki şekilde:

(http://i.stack.imgur.com/WnGKQ.png)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Ekim 11, 2015, 17:57:13 ÖS
(http://www.commodore.gen.tr/forum/index.php?action=dlattach;topic=11034.0;attach=13130;image)

Facebook'da "KissCart64 ordum hazır, Commodore dünyasını ele geçirmeye hazırım." demiştim ya, bu da kumandanları olur artık. :D


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 11, 2015, 20:29:07 ÖS
Hmm, GAL, eprom, sram vesaire hepsinde hep active low, cpld'de tersiymiş demekki.

CPLD programlarken dökümanlarda diyor ki; Siz kafanızı hiç active low, yada active high mantığı ile karıştırmayın. Lojik mantığı olması gerektiği gibi kurun. Yani oe mesela. Output Enabled demek. Output Not Enabled değil.
En son lojik bitince, gerekiyorsa ilgili pini yada hattı active low olarak tanımlayabilirsin, bu durumda değişmesi gereken tüm önermeleri compiler yada fitter kendisi hallediyor.

Aslında input ve output'lar için bunu yaptığını biliyorum. CPLD'ler ile hiç çalışmadım, GAL'lerde bildiğim kadarıyla tek pin OE ve low active. Oraya referans vermiştim aslında. Pin'lerin OE'sini de positive / negative logic'e göre belirlenmesi iyiymiş.


Bir de şu float'u netleştirmek lazım. Float'u Hi-z yerine mi kullanıyorsunuz? Bir pin'i ortamdaki gürültüye göre rastgele değerler okuyacak şekilde set etmek mümkün mü cpld üstünde? Float'tan benim anladığım hiç bir yere bağlı olmayan input pin'i. Sürülen devre gözünden bakarsak open collector / open drain bir output bekliyor ve ortamda pull up varsa sinyalin float olması yani 1 ile 0 arasında gezmesi mümkün değil. Süren devre gözünden bakarsak ilgili pin'i Hi-Z yapmışsa aynı pin'i kendi okuduğunda 1 ile 0 arasında gezer bulması mümkün mü?

Evet, doğru tanım mı bilmem ama benim için float ve High-Z aynı şey.
Eğer süren devre gözü ile bakarsak, Pin Hi-Z yapılmış ise, ve dışarıda bir pull-up pull-down yoksa normalde 1-0 arasında rasgele bir değer okunmasını bekleriz. Ama bu durum istenen bir durum değil, zira gürültüye ve enerji tüketimine sebep olur, şöyleki eğer bu pin input ise, her 0-1 geçişinde, input buffer'ın&nbsp; state değiştirmesine sebep olur. Bunu önlemek için bazen internal pull-up oluyor, bazen de dışarıdan pull-up kullanılması tavsiye olunuyor kullanılmayan pinler için.

ATF1504 de ise başka bir mantık var. Her bir pin için ayrı ayrı set edilebilien pin-keeper denen bir özellik var. Örneğin pin gürültü alıp 1 statüsüne geçmiş ise, input buffer çıkışından pin girişine zayıf bir feedback yapılıyor ve pinin bu statüde kalması sağlanıyor. Pin-keeper özelliğini sadece kabaca biliyorum, detaylarına Atmel CPLD pdflerinden ulaşabilirsin.

Bu pin keeper'in basit şemeası aşağıdaki şekilde:

(http://i.stack.imgur.com/WnGKQ.png)

Atmel için baktım, evet piyasada pull up yahut pull down yok ise ve pin okuma modunda ise float edermiş. Bilgiler için teşekkürler. En iyisi kullanılmayan pin'leri output olarak set edip default bir değeri buradan vermek.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 11, 2015, 20:42:57 ÖS
USB bağladığında C64'ten enerji almasını sağlaman mümkün ise (yani kartuş takılı ve C64 çalışır iken USB bağlantısı yapacaksan) USB tarafındaki 5V'yi hiç bağlama.

Yok kartuş takılı değilken de USB bağlarım diyorsan, USB 5V ile C64 5V nin birbirlerine bağlı olması hoş bir durum değil. Mutlaka biri birinden daha yüksek olacaktır ve otaraftan diğerine akım akacak.

Bunu önlemek için mosfetli bir power switch kullanman en doğrusu. Benim ucuz yollu tavsiyem ise, USB tarafından gelen 5V hattına seri bir sthocky diod bağla. Bu sayede C64 tarafındaki 5V PC ye akamaz. Ayrıca PC tarafından gelen 5V diod üzerinden geçeken 0.2 kadar gerilim düşümüne uğrayacaktır, yani 4.8v lara düşer. Bu sebeple de C64 tarafına akmamış olur.

Bilmiyorum konuyu doğru anladım mı ama bu yöntemi deneyebilirsin.
USB tarafından gelen 5V da düşme olması senin devrenin çalışmasını etkilemez.

EDIT: Diode olarak 1N5819 kullanabilirsin.


İki şekilde kullanım mevcut aslında burada. Kartuş dışarıdayken besleme ve program aktarımı. Kartuş takılıyken usb üstünden seri haberleşme.

Pro mini kullandığımız için aslında pro Mini'nin üstünde usb desteği veren bir çip yok. Hariçten bu sağlanıyor serial to usb aparatları ile. O da sonuçta RXD, TXD, GND ve 5V ile bağlanıyor.

Kartuş takılı iken 5V'u bağlamamak lazım. Takılı değilken de bağlamak lazım. Ancak atmega'yı çıplak kullanmayıp orijinal board'u ile kullandığımız için bu diyot işi yapılabilir mi bilmiyorum. Nano yahut Uno olsaydı bu dediğin işi o kendi yaptığı için sorun olmazdı muhtemelen.

Şimdilik kullanıcının gözünü açık tutmasını bekleyelim :)
Zaten usb'yi sürekli bağlı tutup kullanacak kişi sayısı çok fazla olmaz. Onların da 5v pin'ine bağlantı yapmaması lazım.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 12, 2015, 01:55:53 ÖÖ
Zımbırtıya yeni bir özellik ekledim. Pc tarafındaki ufak bir tool yardımı ile prg dosyalarını yükleyip çalıştırabiliyor artık.

V7ys6QiEL4Y

Ufak bir de yarışma düzenliyorum. Size üretildiğinde bir adet IRQHack64 kazanma fırsatı. Eğlenceli bir sorusu var, yarın akşam saat 18:00'a kadar doğru cevap verenlerin arasından yapılacak çekiliş ile şanslı kişi belli olacak.

Soru şu : IRQHack64 C64'e program gönderirken ekranda çıkan şeritler neyi ifade ediyor?

Cevapları lütfen PM ile gönderin.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: AmigaMan üzerinde Ekim 12, 2015, 02:02:25 ÖÖ
Visual studio kullanmışsın iron hangi dili kullanıyosun c64 için


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 12, 2015, 02:09:11 ÖÖ
Visual studio kullanmışsın iron hangi dili kullanıyosun c64 için

C64 tarafı pek tabii assembly ancak bu seri transfer programını c# ile Visual Studio kullanarak yazdım. Çok basit bir program aslında .net sağolsun. Program arduino ile seri olarak haberleşiyor, normalde zaten seri bağlantı üstünden bu devreyi kumanda edebiliyordum. Burada tek fark ben doğrudan girdiyi vermiyorum da yazmış olduğum program veriyor. Bu programla Pc'de tek bir batch dosya ile c64 kodunu derleyip, peşinden de test için c64'e gönderebilirsin.

Kod:
using System;
using System.Threading;
using System.IO.Ports;
using System.IO;

namespace IRQHackSend
{
    class Program
    {

        static void Receive(SerialPort port)
        {
            Console.Out.WriteLine();
            Console.Out.Write(">>> Transmission from micro start");
            Console.Out.WriteLine();
            while (port.BytesToRead>0)
            {
                int character = port.ReadChar();
                Console.Out.Write((char)character);
            }
            Console.Out.WriteLine();
            Console.Out.Write("<<< Transmission from micro ends");
            Console.Out.WriteLine();
        }


        static void SendFile(string prgFile, string comPort)
        {
            SerialPort port = new SerialPort();
            port.BaudRate = 57600;
            port.DataBits = 8;
            port.StopBits = StopBits.One;
            port.RtsEnable = false;
            port.Parity = Parity.None;
            port.PortName = comPort;

            try
            {
                port.Open();
            }
            catch (Exception ex)
            {
                Console.Out.WriteLine("Port open failed!");
                throw ex;
            }

            byte[] fileContents;

            try
            {
                fileContents = File.ReadAllBytes(prgFile);
            }
            catch (Exception ex)
            {
                Console.Out.WriteLine("Failed reading file!");
                throw ex;
            }

            Receive(port);

            if (fileContents.Length > 65535) throw new Exception("File is too long!");

            Console.Out.WriteLine(String.Format("{0} is opened", comPort));
            Console.Out.WriteLine("Waiting arduino to initialize");
            Thread.Sleep(2000); //Wait arduino to come alive.
            port.Write(new char[] { '1' }, 0, 1); //Send 1 byte command '1'
            Console.Out.WriteLine("Send ReceiveFile command");
            //Wait as much as 2 seconds for the c64 to reset and the circuit to receive what we are
            //sending


            Receive(port);

            Console.Out.WriteLine("Waiting for C64 to reset");
            Thread.Sleep(2100);

            //Send length of prg file
            byte low = (byte)(fileContents.Length % 256);
            byte high = (byte)(fileContents.Length / 256);

            port.Write(new byte[] { low, high }, 0, 2);

            for (int i = 0; i < 2; i++)
            {
                port.Write(new byte[] { fileContents[i] }, 0, 1);
                if (i % 32 == 0)
                {
                    Thread.Sleep(10);
                }

            }

            for (int i = 2; i < fileContents.Length; i++)
            {
                port.Write(new byte[] { fileContents[i] }, 0, 1);
                if (i%32 == 0)
                {
                    Thread.Sleep(10);
                }
               
            }

            Receive(port);
            Thread.Sleep(100);
            Receive(port);
            Thread.Sleep(10000);
            port.Close();

            Console.ReadLine();
        }


        static void OpenMenu(string comPort)
        {
            SerialPort port = new SerialPort();
            port.BaudRate = 57600;
            port.DataBits = 8;
            port.StopBits = StopBits.One;
            port.RtsEnable = false;
            port.Parity = Parity.None;
            port.PortName = comPort;

            try
            {
                port.Open();
            }
            catch (Exception ex)
            {
                Console.Out.WriteLine("Port open failed!");
                throw ex;
            }

            Receive(port);

            Console.Out.WriteLine(String.Format("{0} is opened", comPort));

            port.Write(new char[] { '2' }, 0, 1); //Send 1 byte command '1'
            Console.Out.WriteLine("Send OpenMenu command");
 
            Receive(port);

            port.Close();

            Console.ReadLine();
        }

        static void Main(string[] args)
        {
            string prgFile = args[0];
            string comPort = args[1];

            SendFile(prgFile, comPort);
            //OpenMenu(comPort);
        }
    }
}


Yarışma olayını bir daha yazayım da arada kaynamasın.

Ufak bir de yarışma düzenliyorum. Size üretildiğinde bir adet IRQHack64 kazanma fırsatı. Eğlenceli bir sorusu var, yarın akşam saat 18:00'a kadar doğru cevap verenlerin arasından yapılacak çekiliş ile şanslı kişi belli olacak.

Soru şu : IRQHack64 C64'e program gönderirken ekranda çıkan şeritler neyi ifade ediyor?

Cevapları lütfen PM ile gönderin.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: AmigaMan üzerinde Ekim 12, 2015, 02:15:07 ÖÖ
Teşekkürler iron paylaşım için


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Ekim 12, 2015, 13:55:11 ÖS
Tasarımda son durum:

* Ön yüzde olsa ters durmak zorunda kalacak olan MicroSD modülü arka tarafa aldım. Böylece kutulu veya kutusuz kullanımda daha ergonomik oldu. Kutusuz kullanımda üstten çıkma olmasını istemeyenler MicroSD modülün 90 derece eğik pinlerini düzeltip direk lehimleyerek PCB ile aynı hizaya getirebilirler.

* MicroSD modül arkaya gidince Commodore Open Source logosu ve IRQHack64 yazısı için sol üst köşede güzel bir yer açılmış oldu.

* Tek sıra 90 derece dişi pin header bulunamazsa diye hem tek hem çift sıraya imkan veren çift ıralı tasarımdan vazgeçtim, böyle direk daha sade oldu. Zaten elde çift sıra 90 derece dişi pin header varsa üst sırasının içi sökülerek lehimlenebilir.

(https://dl.dropboxusercontent.com/u/18575245/IRQHack64/IRQHack64_top.png) (https://dl.dropboxusercontent.com/u/18575245/IRQHack64/IRQHack64_bottom.png)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: AmigaMan üzerinde Ekim 12, 2015, 13:57:39 ÖS
Simon ben ikitane alayım epromlu olsun listeye yazarsın teşekkürler


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: cihangirabi üzerinde Ekim 12, 2015, 14:12:02 ÖS
mümkünse bende 1 tane istiyorum epromlu olaraky


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: ibo1973 üzerinde Ekim 12, 2015, 16:26:37 ÖS
güzel olmuş


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 12, 2015, 21:17:26 ÖS
@Ozay : böyle daha derli toplu olmuş. Artık ufaktan üretime geçelim.

Bu arada yarışmada doğru cevabı bilen çıkmadı. Süreyi Çarşamba akşamına kadar uzatıyorum.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Geos üzerinde Ekim 12, 2015, 21:42:42 ÖS
özay bunun üzerine birde wifi koyarsan süper


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Ekim 12, 2015, 22:07:50 ÖS
Simon ben ikitane alayım epromlu olsun listeye yazarsın teşekkürler
Bir o aşamaya gelsin de konuşulur. Ama bu sefer ilk partide gelen PCB sayısı az olacak boyutlardan ötürü. ???

mümkünse bende 1 tane istiyorum epromlu olaraky
Zaten mecbur EPROM'lu olacak çünkü bu sefer bütün işi yapan i_r_on'un EPROM'daki C64 yazılımı ve Arduino'daki firmware'i. ;)

güzel olmuş
Teşekkürler abi, elimden geldiğince. :)

Bu arada yarışmada doğru cevabı bilen çıkmadı. Süreyi Çarşamba akşamına kadar uzatıyorum.
Yanılmıyorsam çok basit bir mantığı var ve 16 ile kalansız bölme içeriyor.

özay bunun üzerine birde wifi koyarsan süper
Vall i_r_on WiFi desteği eklerse ben de bir yerlere sıkıştırırım ESP8266 modülünü. :D


@i_r_on: aslında fena fikir değil, USB-TTL'i çıkarıp yerine bir ESP8266 koyulabilir, o da seri haberleşme yapabiliyor nasılsa. ::)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 12, 2015, 22:19:25 ÖS
Yeni yeni mecralara atmayın beni :)

Tam da d64'ten diskete transfer için şöyle açıklamalı kodları bulunan bir fastload fastsave rutini arıyordum :)

Bu arada düşündüm de Last Ninja benim devrede de mümkün, ama Metallic'inkine oranla daha fazla kod gömebilmeliyim oyun harici kısımlara.

Şimdi,

1. Wireless (seri haberleşme hızı sd karttan yavaş onu söyleyeyim)
2. Sd karttaki D64 dosyayı diske yazma
3. Last Ninja

Hangi özelliği istersiniz?


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Ekim 12, 2015, 22:26:29 ÖS
Her kartuş bir gün Last Ninja'yı tadacaktır. Benim dandik KissCart64'ler (cyborg olanı saymıyorum) hariç. :D

Bu arada D64 browsing var mı özelliklerde, ya da eklemeyi düşünüyor musun?


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 12, 2015, 22:46:37 ÖS
Her kartuş bir gün Last Ninja'yı tadacaktır. Benim dandik KissCart64'ler (cyborg olanı saymıyorum) hariç. :D

Bu arada D64 browsing var mı özelliklerde, ya da eklemeyi düşünüyor musun?

D64 browsing bana pek mantıklı gelmedi. Zaten içindeki prg'yi açacaksın. Çok amele bir kullanım şekli var, bir tane prg'yi atıyorlar D64'ün içine yayınlıyorlar.

İçinde birden fazla prg olan D64 dosyalar da azımsanmayacak kadar çok denirse düşünülebilir. Open source implementasyonlarına bakmadım ama yaparsak flash'ı biraz zorlayabiliriz ama yine de yetebilir koyulacak son özelliklerden biri bu olursa.

Aslında eprom'daki transfer kodu c64 kodu ile de kullanılabildiği için pek çok şey yapılabilir. Sıkıntı arduino üstündeki flash hafızanın kısıtlı olması. C64 tarafında çalışacak kod kısmı için böyle bir kısıt yok, sd kartın içine atılıp oradan okunabilir.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 12, 2015, 23:01:19 ÖS
Yanılmıyorsam çok basit bir mantığı var ve 16 ile kalansız bölme içeriyor.

O işin başka boyutu, zaten mod yapmana gerek yok vic'in $D020 register'ının açıklamasına bakarsan. Benim kastettiğim başka bir şey. Bir tüyo vereyim : İlk yayınladığım videolarla sonrakileri kıyaslayın.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Ekim 12, 2015, 23:04:13 ÖS
Zaten şu menüyü SD karta atıp flash'ta yer açma olayını bir gün oturup güzelce anlattırıcam sana. :D

Bu arada butonu A5'ten A4'e çevirdim bile. ;)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 12, 2015, 23:08:03 ÖS
Zaten şu menüyü SD karta atıp flash'ta yer açma olayını bir gün oturup güzelce anlattırıcam sana. :D


Sen arduino kodunu sd karta koyup oradan yükleyeceğimi düşünmüş olabilir misin? Öyle bir şey yok :)

Bahsettiğim menü kodu da bir c64 prg'si zaten, oyunlar nasıl transfer oluyorsa o da öyle transfer oluyor.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Ekim 13, 2015, 00:30:28 ÖÖ
Sen arduino kodunu sd karta koyup oradan yükleyeceğimi düşünmüş olabilir misin? Öyle bir şey yok :)

Aynen öyle düşünmüştüm. Şimdi daha netleşti kafamda. :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 13, 2015, 00:42:57 ÖÖ
Sen arduino kodunu sd karta koyup oradan yükleyeceğimi düşünmüş olabilir misin? Öyle bir şey yok :)

Aynen öyle düşünmüştüm. Şimdi daha netleşti kafamda. :)

Olsaydı keşke :) Cpu'nun microcontroller'dan farkı işte. Uğraştığımız şey bir cpu olsaydı bir şekilde genişletme imkanımız olurdu. Bu atmega'lar Harward architecture kullanıyorlar ram'i bile kod saklamak için kullanamıyorsun.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 13, 2015, 00:51:10 ÖÖ
Daha sağlam tüyo vereyim, Eprom'da aşağıdaki kod mevcut. (256 byte * 256 tane... Sadece iki lokasyondaki değer sırasıyla 0, 1, 2, 3 şeklinde değişiyor)


Kod:
CURRENT = $02
DATA_LOW = $03
DATA_HIGH = $04
DATA_LENGTH = $05
RESERVED = $06
ACTUAL_LOW = $07
ACTUAL_HIGH = $08

BITTARGET = $64
CHROUT    = $FFD2
BORDER    = $D020
SCREEN    = $D021
TEXT   = $0286
NMI_LO   = $0318
NMI_HI   = $0319

*=$8000
START
.BYTE $09, $80 ; Cartridge cold-start vector = $8009
.BYTE $25, $80 ; Cartridge warm-start vector = $8025
.BYTE $C3, $C2, $CD, $38, $30 ; CBM8O - Autostart key

; KERNAL RESET ROUTINE
STX $D016 ; Turn on VIC for PAL / NTSC check
JSR $FDA3 ; IOINIT - Init CIA chips
JSR $FD50 ; RANTAM - Clear/test system RAM
JSR $FD15 ; RESTOR - Init KERNAL RAM vectors
JSR $FF5B ; CINT   - Init VIC and screen editor
CLI ; Re-enable IRQ interrupts

; BASIC RESET  Routine

JSR $E453 ; Init BASIC RAM vectors
JSR $E3BF ; Main BASIC RAM Init routine
JSR $E422 ; Power-up message / NEW command
LDX #$FB
TXS ; Reduce stack pointer for BASIC

    LDA #00 ; Change border colour to
    STA BORDER ; Pink
    LDA #147 ; PRINT CHR$(147)
    JSR CHROUT ; to clear Screen

        LDY #$7f    ; $7f = %01111111
        STY $dc0d    ; Turn off CIAs Timer interrupts
        STY $dd0d  ; Turn off CIAs Timer interrupts
        LDA $dc0d  ; cancel all CIA-IRQs in queue/unprocessed
        LDA $dd0d    ; cancel all CIA-IRQs in queue/unprocessed


LDA #$0B ;%00001011 ; Disable VIC display until the end of transfer
STA $D011

LDA #$37
STA $01 ; Do not Disable kernal & basic rom


; Change interrupt routines
ASL $D019
LDA #$00
STA $D01A

LDA #<STARTNMI
STA NMI_LO
LDA #>STARTNMI
STA NMI_HI

    LDA #01
    STA BORDER
   
CLI
LDY #$00
CLV
STY BITTARGET
WAIT
BIT BITTARGET
BVC WAIT
CLV

    LDA #02
    STA BORDER

LDA #$37 ;Restore default memory layout
STA $01

LDA #$1B ;%00011011 ; Enable VIC again
STA $D011

LDA #$81 ;%10000001 ; Enable CIA interrupts
STA $DC0D
LDA DATA_LOW
CMP #$01
BNE MACHINELANG
LDA DATA_HIGH
CMP #$08
BNE MACHINELANG

    LDA #03
    STA BORDER

JSR $A659 ;"CLR"
  JMP $A7AE ;"RUN"
 
MACHINELANG
    LDA #04
    STA BORDER
JMP (DATA_LOW) ; Leave control to loaded stuff

; Actual transfer routine

; Below code is used as a template. Code will be duplicated 256 times.
; Only change will be in the lines  LDA #$EA
; First block in the eprom will contain LDA #$00, next one LDA #$01 and LDA #$02, LDA #$03.. so on..

STARTNMI
    LDA #07
    STA BORDER
; Only initial meta 4 bytes will be transferred with this routine
P1
LDA #$EA ; #$EA is a template variable
STA DATA_LOW,Y
STA ACTUAL_LOW,Y
INY
CPY #$04
BNE OUT
LDA #<NMI
STA NMI_LO
LDY #$00
LDX DATA_LENGTH
    LDA #08
    STA BORDER

OUT
RTI

NMI ; Usual : 7 + 2 + 6 + 2 + 5 = 18 cycles per byte + 7 cycle overhead from Kernal
    INC BORDER
P2
LDA #$EA ; #$EA is a template variable
STA (ACTUAL_LOW), Y
INY
BEQ BLOCKEND
RTI

BLOCKEND
INC ACTUAL_HIGH ; Next 256 bytes
DEX ; Decrement data length (set in STARTNMI)
BEQ OUTBLOCK ; If all pages  transferred exit foreground loop
RTI
OUTBLOCK
LDA #$64
STA BITTARGET ; BIT on $64 will set overflow flag. We can't use
; self modifying code since this code is in rom.
RTI





;CHARARRAY
; .BYTE 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,  1, 2, 3, 4, 5, 6

*=$80FF
NOP
; Performance summary
; 44kb file is 176 blocks (4 * STARTNMI is insignificant)
; =~ 45056 NMI + 176 IRQ
; 45056 * (20 + 5) + 176 * 30 = 1.126.400 + 1.280 = 1.131.680 which translates to 1.15 seconds on a pal machine.

PLACEHOLDER1 = (P1 + 1) - START
PLACEHOLDER2 = (P2 + 1) - START


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Ekim 13, 2015, 01:25:40 ÖÖ
C64 yerine Arduino'ya bağladığın 8 EPROM hattı ile sanki 2^8=256 adet minik 256byte'lık EPROM'un varmış gibi at koşturuyorsun. Çok zekice. :)

Ayrıca bu koddaki şablon olarak kullandığın #$EA yerine koyduğun her minik 256byte'lık EPROM'da farklı değer aldığı için transfer edilen byte'ı böyle tespit ediyorsun sanırım. Bu daha da zekice. :D


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: eins üzerinde Ekim 13, 2015, 03:26:04 ÖÖ
Olsaydı keşke :) Cpu'nun microcontroller'dan farkı işte. Uğraştığımız şey bir cpu olsaydı bir şekilde genişletme imkanımız olurdu. Bu atmega'lar Harward architecture kullanıyorlar ram'i bile kod saklamak için kullanamıyorsun.

Atmegalarla aram hiç yok, bilmiyorum ama PIC'ler kendilerini flashlayabiliyor. Bazı projelerde çalıştıracağım kodu mediadan okuyup, kodun o an çalışmakta olmayan bir bölgesini flashlayıp, oraya sıçrayıp çalıştırmışlığım var.

Atmega PIC tartışması açmak istemem ama bence PIC ler daha iyi :D
 
 


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: ibo1973 üzerinde Ekim 13, 2015, 11:22:58 ÖÖ
Olsaydı keşke :) Cpu'nun microcontroller'dan farkı işte. Uğraştığımız şey bir cpu olsaydı bir şekilde genişletme imkanımız olurdu. Bu atmega'lar Harward architecture kullanıyorlar ram'i bile kod saklamak için kullanamıyorsun.

Atmegalarla aram hiç yok, bilmiyorum ama PIC'ler kendilerini flashlayabiliyor. Bazı projelerde çalıştıracağım kodu mediadan okuyup, kodun o an çalışmakta olmayan bir bölgesini flashlayıp, oraya sıçrayıp çalıştırmışlığım var.

Atmega PIC tartışması açmak istemem ama bence PIC ler daha iyi :D
 
 
bende tartışılıcak çok şey göremiyorum zaten pic atmega diye pic elbette çok daha iyi sade flaşlama değil kod koruma imkanlarıda daha geniş diye biliyorum pic kötü tarafı fiyatları başka kötü tarafı yok diye biliyorum atmega ya kıyasla.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Fatih Yıldırım üzerinde Ekim 13, 2015, 11:33:17 ÖÖ
Ne kadar yoğun bir konu. Tepelerden inmiyor. Hiçbir şey anlamadım ama olsun. Kolay gelsin her ne ile uğraşıyorsanız.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 13, 2015, 22:06:21 ÖS
Olsaydı keşke :) Cpu'nun microcontroller'dan farkı işte. Uğraştığımız şey bir cpu olsaydı bir şekilde genişletme imkanımız olurdu. Bu atmega'lar Harward architecture kullanıyorlar ram'i bile kod saklamak için kullanamıyorsun.

Atmegalarla aram hiç yok, bilmiyorum ama PIC'ler kendilerini flashlayabiliyor. Bazı projelerde çalıştıracağım kodu mediadan okuyup, kodun o an çalışmakta olmayan bir bölgesini flashlayıp, oraya sıçrayıp çalıştırmışlığım var.

Atmega PIC tartışması açmak istemem ama bence PIC ler daha iyi :D

Bunlar da flash'layabiliyorlar. Arduino'nun bootloader'ı bu haltı yiyor sonuçta. Aklıma geldi bir opsiyon olarak ama çok da mantıklı gelmedi.

Aslında bu işlere ben de pic'leri kullanarak başladım. TR'de popülaritesi daha fazla olsa gerek Üni'den arkadaşlar hobi olarak uğraşırlarken pic ile uğraşıyorlardı oradan bir kulak aşinalığı vardı. Başta Pic16f84 ile basit devrelerle başladım. 5-6 sene ara verdikten sonra sid player'ı yaparken de ilk seçimim 40 pinlik PIC16f877 ve PIC16F887 çipleri olmuştu. Hatta Pickit-2 ve Pickit-3 alıp debug bile yaptım bu çiplerde.

Gelgelelim benim gözümde AVR işlemcilerin üstünlüklerine. Geyik ve şakalaşma dışında asla bir Meta'nın fanboy'u olmadım onu belirteyim öncelikle.

PIC'in eksileri (sadece 8 bit'leri değerlendiriyorum),

1. Adam akıllı free bir geliştirme ortamı olmaması. Free versiyon kodu optimize etmiyor.

2. Birinci maddenin devamı, recursive koda izin vermiyor. Stack limitasyonundan dolayı.

3. Standartların ötesinde derleyicisi

4. Örnek projeler kısıtlı, nette kaynak bulmak güç.

AVR'nin avantajları
1. Arduino gibi fenomen olmuş bir hobi hareketinin ana taşıyıcısı olması. Arduino tek başına bu alanda bir piyasa yarattı.

2. 2 üniversite öğrencisi tarafından geliştirilmiş olması ve akademik çevrede tercih edilmesi. Basit herkesin uğraştığı işler dışında orijinal projelerde de çoklukla kullanılıyor bu yüzden.

3. Daha fazla flash / daha fazla sram.

4. Daha fazla hazır kütüphane daha fazla örnek proje

5. Arduino ve bootloader'ı sayesinde sadece seri bağlantı ile programlanabilmesi. PIC'te Max232 entegresi ile ayrı devre yapmak zorunda kalmıştım.

6. Ucuz geliştirme kartları. 5 tl Pro mini'lerin tanesi. (Üstteki madde ile birleştirilebilir)

7. Sonradan farkettiğim ve belki de en çok hoşuma gideni (her ne kadar assembly kullanmasam da) instruction mnemonic'lerinin 6502'ninkilere epey bir benzemesi.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 13, 2015, 22:08:48 ÖS
C64 yerine Arduino'ya bağladığın 8 EPROM hattı ile sanki 2^8=256 adet minik 256byte'lık EPROM'un varmış gibi at koşturuyorsun. Çok zekice. :)

Ayrıca bu koddaki şablon olarak kullandığın #$EA yerine koyduğun her minik 256byte'lık EPROM'da farklı değer aldığı için transfer edilen byte'ı böyle tespit ediyorsun sanırım. Bu daha da zekice. :D

Evet aynen böyle. İsminde bu yüzden Hack geçiyor zaten :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ekim 14, 2015, 21:04:15 ÖS
Doğru cevap tek kişiden geldi : Wizofwor  nick'li arkadaşımız soruyu doğru cevapladı.

Doğru cevap : Her bir renk şeriti Arduino'dan C64'e gönderilen 1 byte'ı ifade ediyor.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: cdemir üzerinde Ekim 14, 2015, 21:28:29 ÖS
Hayırlı olsun Wizofwor,  tebrik ederim ;)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: wizofwor üzerinde Ekim 15, 2015, 09:58:51 ÖÖ
Aslında zor bir soru değildi ama kimse kafa yormadı anlaşılan. Başka bilen biri çıkar diye bekledim ama çıkmadı.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Ekim 15, 2015, 10:16:45 ÖÖ
SD2IEC'in yanına kardeş geliyor desene. ;)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Kasım 19, 2015, 10:55:12 ÖÖ
Test için sipariş ettiğimiz ilk seri Özay'a ulaştı, Özay'ın ilk testler başarılı :)

Özay'ın monte ettiği bebeğin görüntüsü aşağıdaki şekilde,
 

(http://www.commodore.gen.tr/forum/index.php?action=dlattach;topic=11034.0;attach=13637;image)

(http://www.commodore.gen.tr/forum/index.php?action=dlattach;topic=11034.0;attach=13639;image)





Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Kasım 19, 2015, 10:59:27 ÖÖ
Bu SD kart modülünü arka tarafa sabitleme olayı hoşuma gitti. Sanırım SD2IEC için de kullanacağım. Bu arada prototip için tüm malzemelerim hazır. Cumartesi günü prototip olarak ilk çalıştırma denemesini yapacağım. :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: eins üzerinde Kasım 19, 2015, 11:06:47 ÖÖ
Oh oh süper... Şansa bak Doberman'ı da mavi PCB sipariş ettim... :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Kasım 19, 2015, 11:35:02 ÖÖ
Oh oh süper... Şansa bak Doberman'ı da mavi PCB sipariş ettim... :)

Bizim oğlan mavi seviyor :)

Bir anda bir kartuş bolluğu olacak anlaşılan :) Artık projelere isim bulmakta zorlanacağız :)



Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Kasım 19, 2015, 11:47:30 ÖÖ
Kartuşa doyduk. Büyük konuşmayayım ama ben artık kartuş projesi yapmam herhalde. Çıta oldukça yükseldi. :D


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: eins üzerinde Kasım 19, 2015, 12:00:16 ÖS
Kartuş çetesi oluşturmaktan alınırsak, senin adını vereceğim. O başlattı diye de parmağımla işaret edeceğim ona göre ... :D


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: LW3D üzerinde Kasım 19, 2015, 15:19:06 ÖS
Kartuşa doyduk demeyelim... Atari 800XL, Sinclair ve diğer cihazlar için kartuş projeleri bekleyenler var... Ama Commodore 64 için sanırım dünyadaki en şanslı gruplardan biriyiz. 1 tane hayal ederken, hepsi birbirinden güzel 4 proje... Ellerinize sağlık arkadaşlar..


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Metallic üzerinde Kasım 19, 2015, 15:56:58 ÖS
Vay be Arduino'lu bir kartuş, bu günleri de mi görecektik =) i_r_on ve simon, iyi iş çıkartmışsınız, ellerinize sağlık. Önsiparişe benim için bir tane lehimsiz yazın lütfen.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Decypher üzerinde Kasım 19, 2015, 16:01:01 ÖS
İkinizin de eline sağlık, çok profesyonel görünüyor :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: byeni üzerinde Kasım 19, 2015, 16:08:55 ÖS
Böyle güzel çalışmaları gördükçe çok mutlu oluyorum, emeği geçenlere kocaman alkışlar.. Artık sıra Atari ve Sinclair için projelere gelir diye sabırsızlıkla bekliyorum.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Kasım 19, 2015, 23:37:36 ÖS
Özay hakikaten ellerine sağlık :)

Pcb'yi monte ettim, taktım çalıştı alet :)

Her şey de yerine milimi milimine oturdu :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Kasım 19, 2015, 23:52:30 ÖS
Bu da çektiğim amatör videosu,

rcOAGVA9YsM

ps: Face'de source'larını paylaşacağımı söylemiştim. Source'lar bu mesajın ekinde.
Menü'nün, loader'ın ve arduino'ya yüklenen sketch'in kodları mevcut. Menü ve loader'ı derleyebilmek için 64tass'a ihtiyaç var. Menü kodunun başındaki basic rutin için de Vice ile beraber gelen Petcat isimli tool kullanılıyor.
Eprom'daki loader'ın 6502 kodu : 64IRQTransferSoftNewForC64Fast.65s
Menü'nün kodu ise : IrqLoaderMenuNew.65s


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: joker_ üzerinde Kasım 20, 2015, 08:10:14 ÖÖ
Elinize sağlık arkadaşlar. Çok verimli çalışmalar oldu. Gerçekten mucize gibi, projeler peşpeşe geldi. :)

Özay bu proje (http://www.commodore.gen.tr/forum/index.php?topic=10631.0)'yi hevesle bekliyoruz ;)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Metallic üzerinde Kasım 20, 2015, 14:02:34 ÖS
i_r_on, kartuş aslında hızlı yüklüyor, ama depacker'ları bekleten oyunları kullandığın için herkes anlamayabilir bence. csdb'den oyunların en hızlı ekrana gelen versiyonlarını bulup kullanman lazımdı. Video'yu seyredenlere ekrandaki renkli çizgilerden sonra oyun yüklemesinin aslında bittiğini belirtmiş olalım.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Kasım 20, 2015, 16:02:04 ÖS
i_r_on, kartuş aslında hızlı yüklüyor, ama depacker'ları bekleten oyunları kullandığın için herkes anlamayabilir bence. csdb'den oyunların en hızlı ekrana gelen versiyonlarını bulup kullanman lazımdı. Video'yu seyredenlere ekrandaki renkli çizgilerden sonra oyun yüklemesinin aslında bittiğini belirtmiş olalım.


Bir sonraki videoyu öyle çekeyim. Aztec challenge'dan anlaşılır diye düşünmüştüm ben :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Enson üzerinde Aralık 05, 2015, 11:38:13 ÖÖ
IRQHack64 - EPROM Kullanan Prg Yükleyici Kartuş konusu ve irqhack64 sipariş konusunun bazı bilgi mesajlarının pdf formatına getirilmiş hali,

http://www.commodore.gen.tr/dosyalar/c64/IRQHack64_by_i_r_on_CGTr.pdf (http://www.commodore.gen.tr/dosyalar/c64/IRQHack64_by_i_r_on_CGTr.pdf)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ocak 31, 2016, 22:35:03 ÖS
Uzun zamandır uğraşmıyordum kartuşla. Aklıma konması gerektiğini düşündüğüm bir özellik vardı onu eklemek için dün kolları sıvadım. Bugünkü debug seanslarından sonra da nihayet özelliği ekledim.

Aklıma gelen özellik Otomatik açılış (autoboot) özelliği. Belki İlker Fıçıcılar'ın c128'deki sd2iec kullanımı ile ilgili mesajı da bende ilham kaynağı olmuştur.

Maksat IrqHack64 menüsünü yahut oradan çalıştırılmış bir programı / oyunu vesaire c64 açıldığında yüklemek. Bir kaç türlü yapmak mümkündü,

1. C64'e aktarılan menüden autoboot olarak ayarlanacak program seçilerek.

2. Sd kart üzerindeki bir ayar dosyası ile

3. IrqHack64 üzerinde bulunan ve hali hazırda menü / reset işlevi gören butona bir anlam daha yükleyerek.

2'nin kullanıcı için uğraştırıcı olduğunu düşündüm, 1'i de önyüz yazmayı sevmediğimden eledim.&nbsp; En kolay 3 no'lu seçenek geldi. Normalde butona yarım saniyeden az basılırsa menü gösteriliyor, daha uzun basılırsa c64 resetleniyor. Bunu 2 saniyeden fazla basılırsa en son yüklenmiş şeyi autoboot yap şeklinde değiştirdim.

Nasıl çalıştığını aşağıdaki videodan görebilirsiniz.

LMxptr-wO3o

ps1 : Menü autoboot özelliğine belirli bir tuşa basılınca bir uygulama ile açıl gibi bir özellik te eklenebilir.

ps2: Kartuşun bilgisayara bağlı olması aklınızda soru işareti yaratmasın. Geliştirmeyi hızlı yapabilmek için C64'e bağlı iken programlıyorum kartuşu usb to serial kablo sayesinde. Arduino kodundan gelen çıktıyı seri port ekranında görmek te işleri kolaylaştırıyor pek tabii.

ps3: Dirtypcbs'den gelmeyen pcb'lerden sonra yeni sipariş ettiğim pcb'ler yolda bu arada.



Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Ocak 31, 2016, 22:51:58 ÖS
Eline sağlık güzel bir özellik olmuş.

Bu arada DirtyPCBs'in yamuk yaptığını sanmıyorum muhtemelen PTT'de kayboldu senin kargo. :(


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: eins üzerinde Ocak 31, 2016, 23:03:33 ÖS
Kargonun kaybolmasına üzüldüm. Çok sık yurt dışı kayıtsız siparişim olmasa da yıllardır kaybolan kargom olmamıştı. Hatta bir kargom 8 hafta geciktiğinde satıcı yeniden yolladı. İki kargo arka arkaya geldi.

Autoboot özelliği güzel olmuş. Ben tek tuşa çok görev verme işine bir türlü ısınamadım. Benim dobermanda da FREEZE tuşu ekledim. Tek basış çalışan programı freeze etmek için, çift basış yada uzun basış da defreeze olsun die düşündüm. Ama sonra vazgeçtim, defreeze'i menuye ekliyorum. Adam defreeze etmek için uzun basmaya çalışırken hata ile kısa basıp, hafızadaki freeze'in üzerine yazacak diye hoşuma gitmedi yöntem.

Kolay gelsin tekrar...




Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ocak 31, 2016, 23:23:31 ÖS

Bu arada DirtyPCBs'in yamuk yaptığını sanmıyorum muhtemelen PTT'de kayboldu senin kargo. :(

Takipsiz kargolarda maalesef şansım yok. PTT'den kaynaklanma ihtimali Dirtypcbs'den kaynaklanma ihtimalinden yüksek evet ancak bilmeyince de kesin bir şey söylemek güç. Elveda Dirtypcbs diyorum :) Bakalım aramex ile gelecek olan 20 tane pcb sağlam, sorunsuz ve hızlı gelirse prototip işi için artık bu yolu tercih edeceğim.

Kargonun kaybolmasına üzüldüm. Çok sık yurt dışı kayıtsız siparişim olmasa da yıllardır kaybolan kargom olmamıştı. Hatta bir kargom 8 hafta geciktiğinde satıcı yeniden yolladı. İki kargo arka arkaya geldi.

Uzun süre gelmeyip parasını iade alıp sonra gelince satıcıya aynı üründen bir tane daha sipariş edip malı gönderme diyerek durumu telafi ettiğim benim de oldu. Hiç gelmeyip yine parasını iade aldıklarım da oldu. Aliexpress gibi siteler bu yüzden daha sağlam. Tabii ürün gelip de beklentini karşılamadığında yapacak pek bir şey olmuyor. Onu da geçenlerde yaşadım.

Autoboot özelliği güzel olmuş. Ben tek tuşa çok görev verme işine bir türlü ısınamadım. Benim dobermanda da FREEZE tuşu ekledim. Tek basış çalışan programı freeze etmek için, çift basış yada uzun basış da defreeze olsun die düşündüm. Ama sonra vazgeçtim, defreeze'i menuye ekliyorum. Adam defreeze etmek için uzun basmaya çalışırken hata ile kısa basıp, hafızadaki freeze'in üzerine yazacak diye hoşuma gitmedi yöntem.

Kolay gelsin tekrar...

Kullanıcı alışırsa çok da sorun yaratmaz bence. Devreye kullanıcıya feedback vermek için bir led eklemediğime pişmanım ama. İnsan bir şey yaptığında kullandığı cihazın bir tepki vermesini bekliyor. Bir ses olur, bir led'in farklı yanıp sönmesi olur.

Demişken duruma uyandım :) Benim arduino üstünde aslında 1 tane durumu kurtarabilecek led'im varmış. Pin 13'e bağlı olan led'i SPI'ı ürkütmeden sürersem işim hallolur. (SPI clock'a bağlı)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Ocak 31, 2016, 23:33:52 ÖS
Kartuş şu an kısıtlı sayıda insanda var ancak macera olsun diye denemek isteyen olursa yeni halinin arduino kodları ekte. Eprom'daki loader'da herhangi bir değişiklik yok. (Yakında ona da Metallic'in hızlı reset rutinini yedirmeyi düşünüyorum bu arada)

Programlamak için usb2ttl ve arduino ide lazım. C64'e bağlı bir şekilde programlayacaksanız

Pro mini GND -> Usb2TTL GND
Pro mini TXD -> Usb2TTL RXD
Pro mini RXD -> Usb2TTL TXD

C64'den çıkartıp programlayacaksanız,

Pro mini 5V  -> Usb2TTL 5V
Pro mini GND -> Usb2TTL GND
Pro mini TXD -> Usb2TTL RXD
Pro mini RXD -> Usb2TTL TXD

Pro mini'ler üzerinde dedicated bir ftdi çipi olmadığı için arduino ide'den sketch'i Upload / Yükle dediğinizde derleme bitince Yükleniyor / Uploading dediğinde Pro Mini'nin reset tuşuna basmanız gerekiyor.

ps: Ufak tefek bug'lar olabilir, çalışınca yüzümde ufak bir tebessüm oluştu ve elimi koddan çektim :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Ocak 31, 2016, 23:53:52 ÖS
Pro mini'ler üzerinde dedicated bir ftdi çipi olmadığı için arduino ide'den sketch'i Upload / Yükle dediğinizde derleme bitince Yükleniyor / Uploading dediğinde Pro Mini'nin reset tuşuna basmanız gerekiyor.

Eğer USB-TTL cihazınızda DTR mevcutsa bunu ProMini'nin DTR'sine bağlayarak Arduino IDE'nin ProMini'ye sketch yüklemeden önce otomatik reset atmasını sağlayabilirsiniz. ;)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: atlantis üzerinde Ocak 31, 2016, 23:59:30 ÖS
Cihaz bende var ama cesaret edip deneyemem sanırım :D


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Şubat 01, 2016, 00:21:27 ÖÖ
Cihaz bende var ama cesaret edip deneyemem sanırım :D

5v ile gnd'nin yerini karıştırmadığın sürece sıkıntı çıkmaz :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: ilkerficicilar üzerinde Şubat 01, 2016, 23:17:46 ÖS
IRQHack64'e boot özelliği eklemek harika olur gerçekten.

Bu arada, C64 için yapılmış Kickstart Amiga-Look Kartuşu'nun loader'ı da farklı bir yaklaşım kullanıyor.

Ekranda Amiga gibi bir el belirip disket istiyor. Kartuş bir yandan da 8 no'lu sürücüyü sürekli yoklayıp, bir disket takılır takılmaz ilk programı yüklüyor, kendini kapatıyor ve programı çalıştırıyor.

O kartuşun şeması:
http://home.foni.net/~gero-ihde/amilook.htm (http://home.foni.net/~gero-ihde/amilook.htm)

Kodu:
http://home.foni.net/~gero-ihde/c64dload.htm (http://home.foni.net/~gero-ihde/c64dload.htm)
veya
http://www.planetemu.net/rom/commodore-c64-applications-crt/kickstart-amiga-look-c64-modul-1994-gero-ihde (http://www.planetemu.net/rom/commodore-c64-applications-crt/kickstart-amiga-look-c64-modul-1994-gero-ihde)

.crt'sinin ekran görüntüsünü de aldım. Bir tür kimlik bunalımı yaşayan C64 gibi oluyor ama yine de değişik:



Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Şubat 04, 2016, 23:21:31 ÖS
@ilkerficicilar : Prg halinde olsaydı bir autoboot yapıp denemek isterdim. Bana nedense c64'ün 5.25'lik disketlerinden autoboot yapma fikri hiç sempatik gelmiyor :) Keşke commodore mühendisleri zamanında düşünüp de autoboot özelliği koysalarmış. Böylece c64 için de virüsler yazılır ve geçmişte hayat daha renkli olurdu :)

Bu arada arduino koduna sd kartın root dizininde irqhack64.prg isimli bir dosya varsa menü olarak bu dosyadan yükleme özelliği ekledim. İsteyen kendi menü programını yazabilir.

Tüm source'ları şu mesajda paylaşmıştım : http://www.commodore.gen.tr/forum/index.php?topic=11034.msg128654#msg128654 (http://www.commodore.gen.tr/forum/index.php?topic=11034.msg128654#msg128654)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: KNG üzerinde Şubat 05, 2016, 23:26:34 ÖS
"Bir tür kimlik bunalımı yaşayan C64 gibi oluyor ama yine de değişik"

Burada koptum :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Mart 28, 2016, 13:28:05 ÖS
Yavaş yavaş yazılımda sona geliyoruz. Standart Rantam rutininden Metallic'in daha önce paylaştığı hızlı rutine geçince tüm yüklemeler 2 saniye kadar hızlandı bu arada.

Siparişleri göndermeden önce son büyük iş bazı oyunlarda çıkan uyumsuzluk sorununu çözmek.

Hali hazırda elinde kartuş bulunduran arkadaşlar yazılımın son sürümüne geçebilirler.

Kodların güncel hali şurada :
https://www.tepetaklak.com:8443/svn/Public/ (https://www.tepetaklak.com:8443/svn/Public/)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Mart 28, 2016, 14:02:37 ÖS
Kodların güncel hali şurada :
https://www.tepetaklak.com:8443/svn/Public/ (https://www.tepetaklak.com:8443/svn/Public/)

Arkadaş Subversion mı kaldı ya devir GIT devri. :D

Komutlarla uğraşamam diyorsan mis gibi SourceTree (https://www.sourcetreeapp.com) var. Ücretsiz GIT hesabı açabileceğin https://github.com (https://github.com) ve https://bitbucket.org (https://bitbucket.org) var. Daha ne bekliyorsun. Hadi sen de katıl wizofwor ile bana. ;)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Mart 28, 2016, 14:39:56 ÖS
Kodların güncel hali şurada :
https://www.tepetaklak.com:8443/svn/Public/ (https://www.tepetaklak.com:8443/svn/Public/)

Arkadaş Subversion mı kaldı ya devir GIT devri. :D

Komutlarla uğraşamam diyorsan mis gibi SourceTree (https://www.sourcetreeapp.com) var. Ücretsiz GIT hesabı açabileceğin https://github.com (https://github.com) ve https://bitbucket.org (https://bitbucket.org) var. Daha ne bekliyorsun. Hadi sen de katıl wizofwor ile bana. ;)

Çok önce kurmuştum svn server'ı. Bu arada aynı svn üstünde public olmayan projelerim de var. Github üstünde paralı sanıyorum bu tip kullanım, keh keh keh :)

486 dx bilgisayara slackware linux kurmuş biri olarak aslında uğraşsam öğrenip kullanırım da kıçımı kaldıracak vaktim olmuyor maalesef.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: wizofwor üzerinde Mart 28, 2016, 14:58:26 ÖS
Geçenlerde Windows üzerinde git kullanımı hakkında ufak bir tutorial yazmaya niyetlendim. Hatta bunu için Git for windows (https://git-for-windows.github.io/) kurdum ancak Windows üzerinde Bash acayip itici geldi. Fazla ilerleyemedim. Aslında Windows için çok güzel GUI'ler var ama grafik arayüzünde çalışırken detaylardan olayın bütününe hakim olamıyorsun. En azından ben olamıyorum.

Yaygın bir hatalı kanının altını çizeyim. İlk başta aynı hataya ben de düşmüştüm. Github sadece online bir repo. Git=GitHub değil. Bir Git repo'su sadece Local'de konumlandırılabilir. Özel bir sunucuya veya Bitbucket.org gibi ücretsiz private repo özelliği olan bir sunucuya da yüklenebilir.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Mart 28, 2016, 15:24:15 ÖS
GitExtensions (https://sourceforge.net/projects/gitextensions) kullanıyorum ben ve direk batch dosyası içinden komutları kullanabiliyorum.

Örneğin aşağıdaki bat dosyasını World of Warcraft sunucusunun kaynak kodunu sıfırdan indirmek veya en güncel halini edinmek için kullanıyorum. Bu script Ubuntu Server'da kullandığım bash scriptinin batch dosyasına dönüştürülmüş hali.

@echo off

set CORENAME=TrinityCore (for client 3.3.5.12340)

set PREFIX=%CD%

set SRCDIR=%PREFIX%\Source
set SRCGITURL=git://github.com/TrinityCore/TrinityCore.git
set SRCBRANCH=3.3.5
set SRCCOMMIT=0

cls
echo.
echo %CORENAME%
echo Source Downloader and Updater For Windows
echo By Ozay Turay (aka Simon)
echo.

if not exist %SRCDIR% (
   echo * Downloading Trinity Sources...
  echo.
  echo From %SRCGITURL%
   call git clone -b %SRCBRANCH% %SRCGITURL% %SRCDIR%
  echo.
)

cd %SRCDIR%

echo * Updating Trinity Sources...
echo.
call git pull origin %SRCBRANCH%
echo.

if not %SRCCOMMIT% == 0 (
  echo * Specific Commit Wanted, Resetting...
  echo.
   call git reset --hard %SRCCOMMIT%
   echo.
)

echo * Checking Branch Info...
echo.
for /f "tokens=2 delims= " %%b in ('"call git branch -a"') do (
  echo %%b
  goto endb
)
:endb
echo.

echo * Checking Commit Info...
echo.
for /f "tokens=2 delims= " %%c in ('"call git log -n1"') do (
  echo %%c
  goto endc
)
:endc
echo.

echo * Checking Revision Info...
echo.
for /f "tokens=2 delims=-" %%r in ('"call git describe --match=init --abbrev=40"') do (
  echo %%r
  goto endr
)
:endr
echo.

echo Press any key to continue ...
pause >nul


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Mart 29, 2016, 00:13:32 ÖÖ
Arkadaş millet hangisi popülerse ona geçiyor ben de bunu anlamadım. CVS tü kaka, SVN kral oldu.. şimdiki trend ise GIT.

işyerinde zaten mecbur TFS kullanıyoruz, evde iki üç satır kodun belini kırarsak zaten ne ala.

hayır onu geçtim düne kadar versiyonlamayı klasör yedeği ile yapıyordum la ben :)

svn kullanıyorum şu anda ama mesela branch'ı dosyaların değişik isimde kopyalarını oluşturarak yapıyorum :)

mesele şu ki, hala elin kod tutuyorsa kodları nerede sakladığın bazen ikinci planda kalıyor.

konumu böyle konularla işgal etmeyin :)

ne diyecektim, oyunların başındaki decruncher / depacker / tırıvırılar ile ilgili önemli bir bug'ı fix ettim. (tam anlamıyla fix etmek için eprom'da da biraz değişiklik gerekecek)

kartuşu kullananlar (artık onlara beta tester diyeceğiz biz :) ) IRQHack64 ile çalışmayan ancak emülatör ile açılan prg dosyalarını bana gönderirlerse yeni hali ile bir test edeyim. başka ince meseleler varsa onlara bakayım.

Source'tan alıp kullanmak isteyenler için
https://www.tepetaklak.com:8443/svn/Public/ (https://www.tepetaklak.com:8443/svn/Public/)

IRQHackC64\build\IRQLoaderRom.bin -> eprom'a yazılacak
Arduino\IRQHack64 altındaki sketch arduino'ya atılacak.

 


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Mayıs 23, 2016, 22:55:32 ÖS
Kartuşunu güncellemek isteyenler için yeni versiyonu ufak bir nasıl güncellenir bilgisi ile yayınladım.

http://www.tepetaklak.com/data/IRQHack64Turbo.zip (http://www.tepetaklak.com/data/IRQHack64Turbo.zip)

Source hali ise şurada : http://www.tepetaklak.com/data/IRQHack64TurboSrc.zip (http://www.tepetaklak.com/data/IRQHack64TurboSrc.zip)

Arşiv içindeki OkuBeni.txt dosyası şu şekilde

Alıntı
Yeni versiyonun özellikleri şöyle,

- İki hız modu mevcut, normal modda transfer'ler birer byte olarak yapılırken turbo modunda 8'er 8'er yapılıyor. Turbo mod normal moda göre yaklaşık 2-3 misli daha hızlı. Hız modları arasında geçiş yapmak için C64'ü açtıktan sonra kartuş üstündeki butona 5sn'den uzun basılı tutup bırakın.

- Yeni versiyonda yükleme esnasında renk şeritleri kullanılmıyor.

- Hali hazırda sd kart'a ihtiyaç duyulduğu için artık kartuşun üstünde default bir menü yok. Sd kart'a kullanacağınız bir tanesini koymanız gerekiyor. İleride kartuşa eklenmesi muhtemelen özellikler için yer kazanmak elzemdi. 8 byte transferinde yerin bir kısmı hassas zamanlama için kullanıldı.

- Eski versiyonda kartuş üstünde yüklü bulunan wizofwor'un menüsünün crunch'sız bir hali var artık. (bu menünün de daha hızlı yüklenmesi anlamına geliyor bu)

- Bilinen tek sorun şimdilik IRQHackSend programı ile seri porttan program gönderme çalışmıyor.


Geçiş için İhtiyaç duyulan alet edevat,

&nbsp; i. Çalışan bir IRQHack64 kartuşu
 ii. Bir adet sd kart
iii. Bir adet eprom silici
 iv. Bir adet eprom programlayıcı
&nbsp; v. Bir adet Usb2Serial cihaz. Elinizde avrdude ile arduino programlamak için kullanılabilecek başka bir cihaz varsa o da olur.



1. Kartuş üstündeki Eprom'u programlama
--------------------------------------------------
27C512 eprom'u Kartuştan zarar vermeden çıkartıp eprom silici ile silin. Arşiv içindeki \C64\IRQLoaderRom.bin dosyasını eprom'a yazın ve kartuşa geri takın.

2. Arduino yazılımını güncelleme
--------------------------------------------------
IRQHack64'ü Usb2serial bir kablo ile bilgisayara bağlayıp Arduino yüklü bir bilgisayar ile programlayabilirsiniz. Kullanmanız gereken komut aşağıdaki şekilde

a. Öncelikle Arduino içinde avr araçlarının olduğu dizine geçin
cd "C:\Program Files (x86)\Arduino\hardware\tools\avr\bin"

b. Aşağıdaki komutu uygulayın, c:\users\bidibidi\documents\irqhack64turbo.hex yerine bu dosyayı koyduğunuz dizini yerleştirin.

avrdude -c arduino -C ../etc/avrdude.conf -P com3 -b 57600 -p atmega328p&nbsp; &nbsp;-Uflash:w:c:\users\bidibidi\documents\irqhack64turbo.hex:i&nbsp;

Komutu uyguladıktan hemen sonra kartuş üstündeki arduino pro mini'nin reset tuşunuza basmanızla beraber arduino üstündeki yazılım silinecek yerine yenisi yüklenecektir. Mavi board'lu arduino'lardaki bootloader daha uzun olduğu için doğrulama aşamasında hata alabilirsiniz. Kartuşun çalışması ile ilgili bir sıkıntı çıkmayacaktır.


3. Tercih edilen menüyü ve keybooter programını sd karta kopyalama
--------------------------------------------------
\C64\Menü\I_R_on\irqhack64.prg ve \C64\Menü\wizofwor\irqhack64.prg olmak üzere iki menü seçeneğinden birini sd kart'a kopyalayın. keybooter programını kullanmak istiyorsanız arşivin ana dizininden bunu da sd kart'a kopyalayın.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Mayıs 24, 2016, 01:35:46 ÖÖ
Son versiyonun çalışması da şu şekilde,

Lv3V5gn9QSA


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: LW3D üzerinde Mayıs 24, 2016, 01:39:59 ÖÖ
Ellerine sağlık... Her yönüyle 4*4 kartuş oldu...


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Mayıs 24, 2016, 01:56:46 ÖÖ
Ellerine sağlık... Her yönüyle 4*4 kartuş oldu...

Valla sadece benim değil, Gökhan menüyü yazdı, İlker kartuş yamalarını sağladı ve Geos takıntısı yüzünden kartuşun hızlanmasına vesile oldu, Özay sağolsun open source olarak şemasını çizdi ve pcb'yi tasarladı, kayın birader kartuşların montajını yaptı ve pek tabii cgtr camiası da kartuşu talep ederek genel motivasyonu sağladı :)

Sağlam bir imece oldu :)

Ben de yalnız öyle böyle tembel değilmişim :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: ilkerficicilar üzerinde Mayıs 24, 2016, 07:58:13 ÖÖ
Çok çok teşekkürler, eline gözüne uykusuz gecelerine sağlık. Gece .zip'i çektim ama deneyemedim, bugün bi ışınlamayı planlıyorum.

Videoyu ise şimdi gördüm, 18-22. saniyeler arası GEOS. Yahu, ben doğrudan EPROM'dan GEOS'u bu kadar hızlı açamıyorum :)



Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: posetcat üzerinde Mayıs 25, 2016, 03:00:45 ÖÖ
elinde var mı


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: LW3D üzerinde Mayıs 25, 2016, 03:52:40 ÖÖ
Ürün isteklerini proje alım satım kısmından yapmanızı tavsiye ederim. Alım satımla alakalı bir çok bilgi (stok dahil)
Aaşağıdaki konuda yer almaktadır.

http://www.commodore.gen.tr/forum/index.php?topic=11508.0 (http://www.commodore.gen.tr/forum/index.php?topic=11508.0)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Mayıs 28, 2016, 13:07:40 ÖS
Kartuş arduino'dan c64'e müzik stream ediyor :)

D9f8-CbIGVk


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: ilkerficicilar üzerinde Mayıs 28, 2016, 13:48:21 ÖS
:) Uykusuz bir günün ardından güzel bir gelişme daha. Kaç bit bu arada? C=Hacking'e bakabildik mi?


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Mayıs 28, 2016, 13:57:09 ÖS
:) Uykusuz bir günün ardından güzel bir gelişme daha. Kaç bit bu arada? C=Hacking'e bakabildik mi?

4 bit 11khz. 11khz yi az biraz yavaş çalıyor. Şarkı 2 dk 46 saniye, çalma 3 dk.

C= hacking den sadece 8580 için digiboost etme kodunu alabildim.

Çalma kodu basit

Kod:
NMISOUND
LDA #EA
STA $D418
RTI

Sample'ların üst 4 bit'ini alma işini arduino hallediyor.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Mayıs 28, 2016, 14:04:00 ÖS
Merak ediyorum bu IRQHack64'ün yapamayacağı bir şey var mı? :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: ilkerficicilar üzerinde Mayıs 28, 2016, 14:16:56 ÖS
Bence .wav çalıyorsa mp3 de çalabilir :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Mayıs 28, 2016, 14:21:02 ÖS
Bunu aslında proof of concept olarak yaptım. Özellik olarak eklemeyeceğim kartuşa.

Yine proof of concept 1-2 gb data ile çalışabilecek bir program fikrim var. Özellik olarak belki onu eklerim. Yine bu stream etmeye benzer arduinodan sürekli bir şey indirecek bir program olacak.



Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Mayıs 28, 2016, 15:16:23 ÖS
Mp3'ü pc üstünde decode edip seri bağlantı ile arduinoya oradan da c64'e aktarıp çalmak mümkün :)

Ya da arduino Esp8266 yahut stm32 gibi bir şey ile değiştirilirse onun gücü ile mp3 decode edilip çalınabilir :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: arnavutrafet üzerinde Mayıs 28, 2016, 19:01:31 ÖS
Arduino yazılımı ile güncelleme yapacak arkadaşlar için benim seçimlerim,

tools - board - Arduino Pro or Pro mini
tools - processor - Atmega328
tools - programmer - USBasp
sketch - add file diyerek i_r_o_n ın hex dosyasını seçiyoruz,
sketch - upload.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: phantom üzerinde Mayıs 28, 2016, 20:44:23 ÖS
@i_r_on
Önünde saygıyla eğiliyorum
Kartuşu bugün ilk kez kullanma fırsatım oldu, r-type I birkaç saniyede monitörde görünce ne kadar sevindiğimi anlatamam
Kartuşu getir, yeni versiyon yükleyelim demiştin de bu bile benim başımı döndürecek kadar hızlı
Bu Emeğin karşılığı kesinlikle bu kadar cüzi bir para olamaz, en kısa sürede Görüşmek dileğiyle
Ellerine , emeğine ,aklına sağlık


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: arnavutrafet üzerinde Mayıs 29, 2016, 00:36:51 ÖÖ
I_r_o_n hocam merhabalar,

turbo yu upload edince cihaz çalışmıyor çünkü upload edilecek sketch dosyasında ;

void SendLoaderStub() {
  for (int i = 0;i<stub_len;i++) {
    TransmitByteFastStd(pgm_read_byte(stubData + i));
  }

  for (int i = stub_len;i<256;i++) {
    TransmitByteFastStd(0x20); //Send space character
  }

  ResetIndex();


'stub_len' was not declared in this scope
hatası veriyor bilgine...


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Mayıs 29, 2016, 00:40:40 ÖÖ
Source'lara bakarım ancak hex dosyasını yüklediğinde sorun olmaması lazım.

Edit: bat dosyalarından compile ediyorsan gereken tüm dosyaların olduğundan emin ol. Hata alıyor olabilir batch işlemler.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: arnavutrafet üzerinde Mayıs 29, 2016, 00:49:09 ÖÖ
byte currentIndex = 0;  bu satırın altına

byte stub_len = 0;
byte stubData = 0;

ekleyince çalıştı.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Mayıs 29, 2016, 00:54:04 ÖÖ
Olmaz ki öyle. Stub diye geçen program yüklendikten sonra kaset buffer'ına yüklenen rutin. Arduino kosu compile olur ama düzgün çalışmaz. Sistem path'inde 64tass var mı?


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: arnavutrafet üzerinde Mayıs 29, 2016, 00:57:07 ÖÖ
c nin altında 2 si de.  arduino 1.6.9 ve 64tass


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Mayıs 29, 2016, 00:59:35 ÖÖ
Sistem yolunda olması lazım 64tass'ın

Standart lokasyon c:\windows

Men build olurken dosya bulunamadı diyordur muhtemelen.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: arnavutrafet üzerinde Mayıs 29, 2016, 01:04:43 ÖÖ
Arduino: 1.6.9 (Windows 8.1), Board: "Arduino Pro or Pro Mini, ATmega328 (5V, 16 MHz)"

C:\Users\Volky\Documents\Arduino\IRQHack64\IRQHack64.ino: In function 'void SendLoaderStub()':

IRQHack64:201: error: 'stub_len' was not declared in this scope

   for (int i = 0;i<stub_len;i++) {

                    ^

In file included from C:\arduino-1.6.9\hardware\arduino\avr\cores\arduino/Arduino.h:28:0,

                 from sketch\IRQHack64.ino.cpp:1:

IRQHack64:202: error: 'stubData' was not declared in this scope

     TransmitByteFastStd(pgm_read_byte(stubData + i));

                                       ^

IRQHack64:205: error: 'stub_len' was not declared in this scope

   for (int i = stub_len;i<256;i++) {

                ^

exit status 1
'stub_len' was not declared in this scope

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: arnavutrafet üzerinde Mayıs 29, 2016, 01:05:11 ÖÖ
hata kodu bu hocam


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: arnavutrafet üzerinde Mayıs 29, 2016, 01:19:15 ÖÖ
Hocam
byte stub_len = 0;
byte stubData = 0;

dediğimiz sadece ilk işlem için bu değişkenlere sıfır atamıyor mu?


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Mayıs 29, 2016, 17:38:06 ÖS
Hocam
byte stub_len = 0;
byte stubData = 0;

dediğimiz sadece ilk işlem için bu değişkenlere sıfır atamıyor mu?

Arduino sketch'i o değerleri Flashlib.h içinden okuyor. Build - I_R_on.bat veya Build - Wizofwor.bat'ı çalıştırdığında komutların verdiği çıktıları iyi kontrol et. Bir şekilde Flashlib.h boş oluşuyorsa o değerleri tanımsız görmesinin sebebi budur.

örneğin Build - I_R_on.bat 'ı çalıştırdığında şuna benzer bir çıktı alman lazım. Paylaştığım source'lar üstünden denedim, sıkıntı yok. Yine aynı şekilde ino dosyasını da açıp derleyebildim.


Kod:
C:\Users\nejat\Documents\Deneme\IRQHackC64>Call PreBuild.BAT

C:\Users\nejat\Documents\Deneme\IRQHackC64>64tass -c -b Loader\LoaderStub.65s -o build\LoaderStub.65s.bin --labels build\LoaderStub.65s.txt
64tass Turbo Assembler Macro V1.51.992
64TASS comes with ABSOLUTELY NO WARRANTY; This is free software, and you
are welcome to redistribute it under certain conditions; See LICENSE!

Assembling file:   Loader\LoaderStub.65s
Error messages:    None
Warning messages:  None
Passes:            2
Memory range:      $033c-$03b4

C:\Users\nejat\Documents\Deneme\IRQHackC64>64tass -c -b Loader\IRQLoader.65s -o build\IRQLoader.65s.bin --labels build\IRQLoader.txt
64tass Turbo Assembler Macro V1.51.992
64TASS comes with ABSOLUTELY NO WARRANTY; This is free software, and you
are welcome to redistribute it under certain conditions; See LICENSE!

Assembling file:   Loader\IRQLoader.65s
Error messages:    None
Warning messages:  None
Passes:            2
Memory range:      $8000-$80f3
Memory range:      $80ff-$80ff

C:\Users\nejat\Documents\Deneme\IRQHackC64>petcat -w2  0<Menus\I_R_on\IrqLoaderMenu.bas 1>build\IrqLoaderMenu.obj

Load address 0801
Control code set: enabled


C:\Users\nejat\Documents\Deneme\IRQHackC64>cd Menus\I_R_on

C:\Users\nejat\Documents\Deneme\IRQHackC64\Menus\I_R_on>64tass -c -b IrqLoaderMenuNew.65s -o ..\..\build\IrqLoaderMenuNew.65s.bin --labels ..\..\build\IrqLoaderMenuNew.txt
64tass Turbo Assembler Macro V1.51.992
64TASS comes with ABSOLUTELY NO WARRANTY; This is free software, and you
are welcome to redistribute it under certain conditions; See LICENSE!

Assembling file:   IrqLoaderMenuNew.65s
Reading file:      SidFile.bin
Error messages:    None
Warning messages:  None
Passes:            2
Memory range:      $080e-$0c48
Memory range:      $0d00-$15fe
Memory range:      $1aef-$1aef

C:\Users\nejat\Documents\Deneme\IRQHackC64\Menus\I_R_on>cd ..

C:\Users\nejat\Documents\Deneme\IRQHackC64\Menus>cd ..

C:\Users\nejat\Documents\Deneme\IRQHackC64>petcat -w2  0<Menus\I_R_on\IrqLoaderMenu.bas 1>build\IrqLoaderMenu.obj

Load address 0801
Control code set: enabled


C:\Users\nejat\Documents\Deneme\IRQHackC64>copy /b build\IrqLoaderMenu.obj + build\IrqLoaderMenuNew.65s.bin build\irqhack64.prg
build\IrqLoaderMenu.obj
build\IrqLoaderMenuNew.65s.bin
        1 file(s) copied.

C:\Users\nejat\Documents\Deneme\IRQHackC64>64tass -c -b Menus\KeyBooter\KeyBooter.65s -o build\KeyBooter.65s.bin --labels build\KeyBooter.txt
64tass Turbo Assembler Macro V1.51.992
64TASS comes with ABSOLUTELY NO WARRANTY; This is free software, and you
are welcome to redistribute it under certain conditions; See LICENSE!

Assembling file:   Menus\KeyBooter\KeyBooter.65s
Error messages:    None
Warning messages:  None
Passes:            2
Memory range:      $080e-$09f8

C:\Users\nejat\Documents\Deneme\IRQHackC64>copy /b build\IrqLoaderMenu.obj + build\KeyBooter.65s.bin build\keybooter.prg
build\IrqLoaderMenu.obj
build\KeyBooter.65s.bin
        1 file(s) copied.

C:\Users\nejat\Documents\Deneme\IRQHackC64>Call PostBuild.BAT

C:\Users\nejat\Documents\Deneme\IRQHackC64>64tass -c -b Menus\WarningMenu\Warning.65s -o build\Warning.65s.bin  --labels build\Warning.65s.txt
64tass Turbo Assembler Macro V1.51.992
64TASS comes with ABSOLUTELY NO WARRANTY; This is free software, and you
are welcome to redistribute it under certain conditions; See LICENSE!

Assembling file:   Menus\WarningMenu\Warning.65s
Error messages:    None
Warning messages:  None
Passes:            2
Memory range:      $080e-$08f2

C:\Users\nejat\Documents\Deneme\IRQHackC64>copy /b build\IrqLoaderMenu.obj + build\Warning.65s.bin build\warning.prg
build\IrqLoaderMenu.obj
build\Warning.65s.bin
        1 file(s) copied.

C:\Users\nejat\Documents\Deneme\IRQHackC64>..\tools\bin2Ardh build\warning.prg build\defaultmenu.h data_len cartridgeData
Processing build\warning.prg
Writing result : build\defaultmenu.h
Done!

C:\Users\nejat\Documents\Deneme\IRQHackC64>..\tools\bin2Ardh build\LoaderStub.65s.bin build\LoaderStub.h stub_len stubData
Processing build\LoaderStub.65s.bin
Writing result : build\LoaderStub.h
Done!

C:\Users\nejat\Documents\Deneme\IRQHackC64>copy avrincludehead.txt+build\defaultmenu.h build\head.tmp
avrincludehead.txt
build\defaultmenu.h
        1 file(s) copied.

C:\Users\nejat\Documents\Deneme\IRQHackC64>copy build\head.tmp + build\LoaderStub.h build\final.tmp
build\head.tmp
build\LoaderStub.h
        1 file(s) copied.

C:\Users\nejat\Documents\Deneme\IRQHackC64>copy build\final.tmp+avrincludefoot.txt  build\FlashLib.h
build\final.tmp
avrincludefoot.txt
        1 file(s) copied.

C:\Users\nejat\Documents\Deneme\IRQHackC64>copy build\FlashLib.h ..\Arduino\IRQHack64\FlashLib.h
        1 file(s) copied.

C:\Users\nejat\Documents\Deneme\IRQHackC64>del build\defaultmenu.h

C:\Users\nejat\Documents\Deneme\IRQHackC64>del build\IrqLoaderMenu.obj

C:\Users\nejat\Documents\Deneme\IRQHackC64>del build\final.tmp

C:\Users\nejat\Documents\Deneme\IRQHackC64>del build\LoaderStub.h

C:\Users\nejat\Documents\Deneme\IRQHackC64>..\tools\CreateEpromLoader build\IRQLoader.65s.bin build\IRQLoaderRom.bin  151 146 103 161 121 171 166 141 176 156
Will change position 151
Will change position 146
Will change position 103
Will change position 161
Will change position 121
Will change position 171
Will change position 166
Will change position 141
Will change position 176
Will change position 156
Processing build\IRQLoader.65s.bin
Writing result : build\IRQLoaderRom.bin
Done!
Press any key to continue...


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: toddler üzerinde Haziran 03, 2016, 01:35:23 ÖÖ
EAB'nin ftp'sindeki tüm .prg'leri download etmiştim. IRQHack64'ü yeni versiyona güncelledim. Zaten harikaydı şimdi müthiş olmuş. Birkaç oyun oynayayım derken 4-5 saati C64 başında geçirmişim :D


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Haziran 30, 2016, 03:27:55 ÖÖ
Kurcala kurcala video oynatma konusunda ufak tefek bir şeyler elde ettim bu arada. Sizlerle de paylaşayım.

2ZElfpqikbA

Daha fazla kurcalanırsa çözünürlük, renk sayısı, saniyedeki frame sayısı vesaire arttırılabilir. Kartuşun kapasitesinin %25'i falan aslında bu. Yazılım anlamında yaptığım cinliklerin bir miktar daha ötesine geçmek gerekiyor :)

Full ekran fli oynatmak falan pek tabii 1541 ultimate'de olduğu gibi ancak doldurulabilecek ek bir hafıza gibi bir kısım varsa mümkün olur, bu videonun süresi de pek tabii kısıtlı olur.

Aslında bu video gösterme işi ile ilgili hiç uğraşmayacaktım ancak koala resimlerini gösterme demosundan sonra direkt ilgi video'ya kaydığı için bir deneyeyim dedim.

Gösterilen video 80x48 çözünürlüğünde ve sadece 4 gri tonu kullanıyor. C64'deki siyah, beyaz, açık gri, koyu gri. Dolayısıyla sadece bitmap data transfer ediliyor. Renkler $D800 alanında ve ekran ram'inde önceden fix olarak set ediliyor. Ayrıca bir renk transferi yapılmıyor. 80x48 çözünürlük için bir frame'in boyutu (80/4) * 48 = 960 byte.

Bu videodaki demo programda program badline'ları raster irq'leri ile atlatıp kartuşun transfer rutinini her bir frame'de 15 defa çağırıyor. Her seferinde sadece 8 byte transfer ediyor. Yani 15*8 = 120 byte, 960/120 = 8 taramada 1 frame gösteriyor.

Bir iki sorunsal ile karşılaştım bu yüzden bu demoyu hazırlamak epey bir zaman aldı.

1. Arduino tarafında sd card'dan data okuma latency'si (hızı değil) yüksek olduğu için c64'de her bir 8 raster satırında data okuma ihtiyacını karşılayamıyordu. Epey bir debug seansının çok sonunda bunun farkına vardım. Çözüm olarak bir frame'i arduino üstünde buffer'lama ve buffer'ı doldurmayı transferler bittikten sonra c64'de vic bir sonraki kare için ilk interrupt'ı oluşturmadan önceye aldım. Bu şekilde sorun çözüldü. Daha iyi sonuçlar için sdfat kütüphanesinin içine girilebilir. Arduino üstünde kullanabileceğim maksimum ram kısıtlı bu arada :)

2. İlk yöntemim bir frame içinde DEN (Display enable) biti ile oynayıp ekranın bir satırından itibaren ekranı kapatıp kartuş üstünden doyasıya transfer yapmaktı. Burada da sonradan şöyle bir tespitim/sorunsalım oldu : Acaba VIC bir frame içinde DEN bitini sadece bir defa mı kontrol ediyor? Bu sorunun cevabını bulamadığım için demoda da kullandığım yönteme geçtim. Aslında basit bir test programı yazıp anlamak mümkün.

Şuradaki dokümantasyonda VIC sanki sadece $30 no'lu raster satırında bu bit'i kontrol ediyormuş gibi bir izlenim edindim. : http://www.zimmers.net/cbmpics/cbm/c64/vic-ii.txt (http://www.zimmers.net/cbmpics/cbm/c64/vic-ii.txt)

3. Son uyguladığım yöntem ile ilgili aşılması gereken bir diğer sorun da C64'deki IRQ handler'ın ciddi cycle tüketmesi idi. Akla ilk gelen çözüm ROM'daki $0314'e dallanan kısımla hiç uğraşmayıp 6502'nin default IRQ vektörünü kullanmak. Ancak işin içine kartuş girdiği zaman bunun bu kadar kolay olmadığını anladım.

Şöyle ki, kartuşun çalışabilmesi için kartuş rom'unun $8000 adresinde okunabilir olması lazım. Default IRQ vektörünü değiştirebilmem için de Kernal rom'un okuma için devre dışı kalması lazım.

Aşağıdaki tabloya baktığımızda $8000-$9FFF ve $E000-$FFFF kolonlarında $8000-$9FFF'in CART ROM LO, $E000-$FFFF'in ise RAM olduğu bir seçenek gözükmüyor :)

https://www.c64-wiki.com/index.php/Bank_Switching (https://www.c64-wiki.com/index.php/Bank_Switching)

IRQ handler'ın yediği cycle'ı azaltayım derken her bir şeyi değiştirip deveye hendek atlatmak gerekiyor, ben de mecburen o yola girdim :)

Bir kere şu gereksinim ortaya çıkıyor, uygun bir bellek konfigürasyonu olmadığı için bellek konfigürasyonunu bir yerlerde değiştirmem lazım. Kartuş NMI interrupt'ları için kernal'ın default vektörünü kullanıyor ve arduino üstündeki transfer rutini de nmi interrupt'ı yaratma ve gönderilecek datayı eprom'un bank'ını switch ederken oldukça zamanlaması ayarlanmış bir koda sahip. Bu anlamda mevcut transfer rutinini kullanmak mümkün değil. Transfer rutinin başı, sonu değiştirilip her şey tekrar düzenlenebilir, yeniden bir eprom oluşturulabilir. Ancak bu noktada tercihimi farklı bir yönden kullanıyorum. Diyorum ki, madem IRQ vektörü programın içinde ve RAM'de olacak. O zaman nmi vektörünü de ram'den kullanıp transfer rutinini de c64'de çalışan kodun içine alırım. Arduino tarafında da video streaming işi için ayrı bir transfer rutini yazarım.

Geriye tek bir sıkıntı kalıyor, sadece bellek konfigürasyonunu değiştirmenin benim işimi görmediğini görüyorum. Yukarıda paylaştığım linkteki tabloya dikkatle bakılınca şu da görülebiliyor. $8000-$9FFF'in CART ROM LO olduğu ve $E000-$FFFF'in RAM olduğu iki farklı bellek konfigürasyonu da yok. #$!!%%?? diye iç geçirmek elde değil :)

 
Neyse ki çözümü buluyorum. Kartuş normalde transferlere başladığında EXROM'u low'a çekip eprom'un $8000-$9FFF aralığında gözükmesini sağlıyor ve ancak tüm yükleme vesaire bittiğinde EXROM'u high'a çekip elini eteğini çekiyor. Normal şartlarda bunda sıkıntı yok ancak burada şunu yapmak gerekiyor. NMI interrupt RAM'deki vektör kullanılıp da tetiklendikten sonra EXROM'u low'a çekiyoruz. Kartuşun çalışma prensibi eprom'daki bank'lar arasında gönderilecek byte'a karşılık gelen bank'a switch yapmak ve bunun arduino ile c64'de çalışan kod arasında senkron olması olduğu için EXROM'u ancak yapılacak parça transfer bitip de c64'deki kodun kartuş rom'una ihtiyacı olmadığı anda HIGH'a çekmek gerekiyor.  Bunu da arduino üstündeki nmi interrupt'ını generate eden ve bank switch eden transfer rutini içine gömüyorum.

Genel olarak yöntem şu, kartuş rom'una ihtiyaç daha yok iken IRQ interrupt'ları açmadan önce $35 bellek konfigürasyonunu seçiyorum, böylece ROM'daki varsayılan vektörleri değiştirebiliyorum, hem NMI hem de IRQ vektörlerini programım içindekilerine değiştiriyorum. IRQ interrupt çalışmadan önce konfigürasyon hep $35 değerinde olmalı.

Arduino tarafında NMI oluşturduktan kısa bir süre sonra kartuş rom'unu devreye alıyorum, NMI handler'ın başında da bellek konfigürasyonunu default olan $37'ye alıyorum. Böylece c64'deki kod kartuş rom'unu görebilecek. Transferi yaptıktan sonra da nmi handler içinde bellek konfigürasyonunu tekrar $35 değerine çekiyorum.

Deve bu arada baya bildiğin helak oldu :)

Bu arada normalde benim kartuş eprom'undaki transfer kodumda şöyle bir kısım var esas transferi yapan. Buradaki $EA yerine o an hangi bank seçilmişse o değer geliyor.

Kod:
LDA #$EA
STA (ACTUAL_LOW), Y
INY

Bu transfer rutinini ram'e koyduk, öyle kodun içinde löp löp elimize gelmiyor artık arduino'nun transfer ettiği byte. Çözüm? Kodun içinde olmasa da arduino bank switch yaptığı için aslında transfer edilen byte eprom üzerinde okunacak değişik adreslerde mevcut. Hatta bir tane rahat ulaşım için koymuş olduğum var, bugünler görülerek çok önceden yerleştirilmişti. Eprom üstünde $XXFF adresi her zaman için arduino tarafında switch edilmiş bank'ı yani transfer edilecek byte değerini veriyor.

Kodu şu hale getirmem RAM'de iken çalışmasını sağlayacak,

Kod:
LDA $80FF
STA (ACTUAL_LOW), Y
INY

Pek tabii dönüp arduino üstünde daha önce bahsettiğim transfer rutinini de bu zamanlamayı dikkate alarak değiştiriyorum. Çünkü LDA #$EA immediate adresleme kullanırken LDA $80FF ise absolute adresleme kullanıyor. İlki 2 cycle, ikincisi ise 4 cycle. Bu zamanlama işini de tembelliğimden osiloskop ile ölçme değerlendirme yöntemi yerine deneme ve yanılma yöntemi ile yaptığım için deve bu noktada "hendek demiştin hacı?" formatına kayıyor biraz :)

Merak edenler için niha kod da şöyle bir şey oldu (Eski kodlardan standart kullandığım şeyler include edilen dosyalarda)

Kod:
.enc screen

ACTUAL_LOW = $6C
ACTUAL_HIGH = $6D
INITIALWAITTIME = 150


CHROUT    = $FFD2
IRQ6502 = $FFFE
NMI6502 = $FFFA

CURRENTFRAGMENT = $08
CURRENTSTEP = $09

*=$080E        
JSR INIT ;Clears screen, disables interrupts.
LDX #$00
STX CURRENTSTEP ;[0..14] the raster line to invoke an IRQ and start a partial transfer of 8 bytes.
.CHANGEBANK 3

JSR INIT_GFX_MEM
JSR SET_LO_COLOR
JSR SET_HI_COLOR
JSR SETMULTICOLOR

JSR KICKSTART ; Send video stream command to arduino

LDA #$00
STA $D01A
STA $D015

JSR INITIALWAIT

LDA $d011                     ; clear high bit of raster line
AND #$7f
STA $d011

LDX #$00
LDA RPP, X
STA $D012

LDA #<MRH
STA IRQ6502
LDA #>MRH
STA IRQ6502+1

LDA #<COPIEDNMIHANDLER
STA NMI6502
LDA #>COPIEDNMIHANDLER
STA NMI6502+1

LDA #$35
STA $01


LDA #$01
STA $D01A

LDY #$00
LDX #$00

CLI
HAYDI
LOOP
CLV
BVC LOOP
JMP LOOP

MRH     
SEI
LDA VIDEO_LO_B0, X
STA ACTUAL_LOW
LDA VIDEO_HI_B0, X
STA ACTUAL_HIGH

INX
CPX #120
BNE CONTINUED
LDX #$00
CONTINUED

LDY CURRENTSTEP
INY
CPY #15
BNE SETRASTER
LDY #$00
SETRASTER
LDA RPP, Y
STA $D012
STY CURRENTSTEP

LDY #$00
ASL $D019
RTI


COPIEDNMIHANDLER
LDA #$37 ;2 cycles
STA $01 ;3 cycles
NOP

LDA $80FF
STA (ACTUAL_LOW), Y
INY


LDA $80FF
STA (ACTUAL_LOW), Y
INY


LDA $80FF
STA (ACTUAL_LOW), Y
INY


LDA $80FF
STA (ACTUAL_LOW), Y
INY


LDA $80FF
STA (ACTUAL_LOW), Y
INY


LDA $80FF
STA (ACTUAL_LOW), Y
INY


LDA $80FF
STA (ACTUAL_LOW), Y
INY


LDA $80FF
STA (ACTUAL_LOW), Y

LDA #$35 ; Switch kernal+basic roms off
STA $01
RTI


WASTELINES
LDX #20
CONSUME
DEX
BNE CONSUME
RTS


INITIALWAIT
LDY #INITIALWAITTIME
-
LDA $D012
BNE -
JSR WASTELINES
DEY
BNE -
RTS



INIT ; Input : None, Changed : A
CLD
LDA #$93
JSR CHROUT
LDA #$00
STA $D020
LDA #$0B
STA $D021

JSR DISABLERASTERIRQ
JSR KILLCIA

RTS

.include "Common.65s"

.include "Transfer.65s"


VIDEO_B0 = PICTURE_LO

VIDEO_B1 = PICTURE_HI


L0      = VIDEO_B0 + 2960 + range(0, 160, 8)
L1      = VIDEO_B0 + 3280 + range(0, 160, 8)
L2      = VIDEO_B0 + 3600 + range(0, 160, 8)
L3      = VIDEO_B0 + 3920 + range(0, 160, 8)
L4      = VIDEO_B0 + 4240 + range(0, 160, 8)
L5      = VIDEO_B0 + 4560 + range(0, 160, 8)

   
VIDEO_LO_B0   
.byte <(L0)
.byte <(L1)
.byte <(L2)
.byte <(L3)
.byte <(L4)
.byte <(L5)

VIDEO_HI_B0
.byte >(L0)
.byte >(L1)
.byte >(L2)
.byte >(L3)
.byte >(L4)
.byte >(L5)




RPP .byte 119, 127, 135, 143, 151, 159, 167, 175, 183, 191, 199, 207, 215, 223, 231



Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: ilkerficicilar üzerinde Haziran 30, 2016, 09:09:16 ÖÖ
Geliştirme hızını takip etmekte giderek zorlanıyorum :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Haziran 30, 2016, 09:25:51 ÖÖ
Bu deve elinde can verecek bir gün, atla atla nereye kadar. :D

Pratikte pek iş gören bir özellik olmasa da "proof of concept" olarak güzel bir çözüm olmuş, iyi de beyin jimnastiği yapmışsın.

Tebrikler. ;)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: ilkerficicilar üzerinde Haziran 30, 2016, 10:22:33 ÖÖ
Aslında ben bunda Charlie Chaplin filmlerini izlerim pekala... Yanına bir de mısır patlattık mı ohh :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Haziran 30, 2016, 10:34:46 ÖÖ
@Özay : Sorma, işimin en sevdiğim ve en nefret ettiğim yanı debug kısmı :)

Aslında ben bunda Charlie Chaplin filmlerini izlerim pekala... Yanına bir de mısır patlattık mı ohh :)

Yakın çekimin yoğun olduğu filmler de kolaylıkla izlenebiliyor. Belgesel falan :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Temmuz 09, 2016, 17:43:06 ÖS
Uzun uzadıya yazmıştım, bağlantı gitti, yazdıklarım da gitti :)

m_J1QXZWQkQ

Video gösterimin yeni versiyonu.


1. Üstteki ve alttaki şeritler NMI ile transfer yapılırken çalıştırılan INC $D020, DEC $D020'lerin eseri. Badline'lar bittikten sonra şeritlerle izlenen bölgede her karede 320 byte transfer yapılıyor. Bir kare 3840 byte.

2. Soldaki çızıkların ne olduğunu bulmam lazım

3. Henüz daha 4 renk yakınsama yapılmamış hali. Renkler fix. (4 rengin her kare için ayrı set edildiği versiyon yolda)

4. Önceki versiyondan farklı olarak bankswitching var, video kesilmiyor. Çözünürlük 4 misli, frame rate ise yarısından biraz fazla. 12 taramada bir resim gösteriyor.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: ilkerficicilar üzerinde Temmuz 09, 2016, 20:30:23 ÖS
:) Eveeeeeeet, ne zaman C64'lü sinema geceleri düzenliyoruz?

Ha bu arada: Bir patlamış mısırlı bir patlamış mısırsız lütfen :P


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Temmuz 09, 2016, 21:05:32 ÖS
:) Eveeeeeeet, ne zaman C64'lü sinema geceleri düzenliyoruz?

Ha bu arada: Bir patlamış mısırlı bir patlamış mısırsız lütfen :P

Ses işini de halledeyim de pop corn'lara o zaman geçeriz. 2000khz kare başına 20 byte yetiyor. Foreground loop'a bir şekilde yedirsem ses de olabilir. Senkron tutar mı, pc tarafında nasıl ayırırız sesi orası ayrı.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: spunky üzerinde Temmuz 12, 2016, 11:10:36 ÖÖ
Bence mısırları da C64'le patlatmalıyız.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Temmuz 12, 2016, 23:46:02 ÖS
Bence mısırları da C64'le patlatmalıyız.

Stock adaptör bu anlamda iş görebilir :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Geos üzerinde Temmuz 19, 2016, 17:29:17 ÖS
Slm iron C64'de video oynatması için pcde hangi program kullanıyorsun tş


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Temmuz 19, 2016, 19:55:33 ÖS
Slm iron C64'de video oynatması için pcde hangi program kullanıyorsun tş

Video oynatımı esnasında pc kullanılmıyor. Kartuş üstünde şu an geliştirme aşamadında olan bir kod var. C64'e video datasını stream ediyor sd card üstünden okuyup. C64 üstündeki özel program da bu stream edilen datayı gösteriyor.

Video dosyasını oluşturmak için çevirmek istediğim videoyu vlc player ın scene filter özelliği ile kare kare çıkarıyorum. Daha sonra uygun framerate ile özel bir programla çeviriyorum.



Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Tesellum üzerinde Temmuz 22, 2016, 15:09:32 ÖS
inanilir gibi degil video olmasa. Tebrikler.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Temmuz 24, 2016, 13:41:34 ÖS
Multicolor versiyonu da çıktı, sigara içen piyanist eşliğinde :)

0JvKD5UCuRU

C64'de oynatılan Sabrina'nın boys boys boys klibinden kısa bir parça videonun sonunda. Kısa olmasının sebebi henüz video çevrimi için kaliteli ve programa gömülebilen bir yapı elimde olmayışından.

Basit bir tane kendim yazmaya çalışıyorum.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Nisan 05, 2017, 23:02:20 ÖS
Aman TL;DR olmasın, selamlar İlker  ;)

Kartuşla ilgili geliştirmeler konusunda uzun süredir bir şey yazmamışım.

Kartuşun çalışma mantığını tamamen değiştirecek bir API üstünde çalışıyorum.
Mevcutta kartuş üstünde çalışan menü programı biraz dumb. Sd card'ın dosya sisteminden epey bağımsız bir şekilde arduino'ya bağımlı bir hayat sürdürüyor. Sd kart içindeki dosya listesinin sayfalamasını bile arduino yapıyor.

Bu yapıyı değiştirerek C64 üstünde çalışan koda daha fazla sorumluluk verecek bir yapı yenisi.

Şu şekilde fonksiyonları kullanabilir oluyor c64 üstünde çalışan program.

Kod:
IRQ_StartTalking ; Kartuşla iletişimi başlatır
IRQ_EndTalking ; Kartuşla iletişimi sonlandırır

IRQ_OpenFile ; Dosya açar
IRQ_CloseFile ; Dosya kapar
IRQ_DeleteFile ; Dosya siler
IRQ_ReadFile ; Dosyadan okuma yapar
IRQ_SeekFile ; Dosya üzerinde okunacak / yazılacak noktayı belirler (16 bit)
IRQ_LongSeekFile ; Dosya üzerinde okunacak / yazılacak noktayı belirler (32 bit)
IRQ_WriteFile ; Dosyaya yazar (her seferinde 32 byte)
IRQ_GetInfoForFile ; Dosya ile ilgili bilgileri getirir. FAT'teki DirEntry. (Dosya ile ilgili tarihler, boyutu vesaire)

IRQ_ReadDirectory ; Mevcut dizindeki klasör / dosya listesini getirir
IRQ_ChangeDirectory ; Klasör değiştirir
IRQ_DeleteDirectory ; Klasör siler
IRQ_CreateDirectory ; Klasör yaratır

IRQ_SeekEeprom ; Atmega328'in Eeprom'u üstünde yazılacak okunacak adresi belirler (1024 byte eprom var)
IRQ_ReadEeprom ; Eeprom üstünden okur
IRQ_WriteEeprom ; Eeprom üstüne yazar

Öncesinde kartuşa özel yazılmış programlar için IRQ interrupt'ları zinhar kullanım dışıydı. Yeni sistemde IRQ_StartTalking çağrılana dek istendiği gibi IRQ interrupt'larının kullanımı mümkün olacak. (Bunu muhtemelen wizofwor anlayacak en fazla :) )

İlk etapta bu API'nin C64 tarafındaki kısmını yazdım, sonra döndüm bunların arduino tarafında karşılık gelen kodları yazdım. Tabii bunlar kısa zaman dilimi içinde olmuyor, arada bir günde bir saat uğraşıp falan.

Test & bugfix & development süreci gözümde büyüyordu. En sonunda aklıma c64 ile arduino arasındaki interaksiyonu test etmeden önce C64-> Arduino / Arduino -> C64 transfer kısmını seri bağlantı ile değiştirip PC'de test etme fikri geldi. Hali hazırda PC'den C64'e seri bağlantı üstünden program aktarımı için yazdığım programı biraz değiştirdim. Üstte bahsettiğim API kullanıcısı PC oldu. PC üstündeki yazdığım programla arduino içinde yazdığım rutinlerin işlevsel testini kolayca yapabildim.

İşin en zor kısmını sona bıraktım. Sırada C64'ten Arduino'ya komutları gönderen kısmın test & bugfix & development kısmı var.

Şu an sizlerin de elinde olan kartuşlarda C64 Arduino'ya bilgi göndermek istediğinde IRQ hattını belli zaman aralıklarıyla low yapıp, belli zaman aralıklarında da high yapıyor. Bunun modüle edilmesiyle bir byte gönderilebiliyor. 1 byte gönderimi ile de mevcut kartuş yazılımı işini idare ediyor. Biraz da kolaya kaçtığımdan ben bu işi Raster interrupt'ları ile yapmıştım. Mevcutta 1 byte'ın bu şekilde gönderimi aşağı yukarı 8-9 tarama gerektiriyor.

Daha sonra ara yükleme yapma / video oynatma gibi şeyleri geliştirirken yöntemi hızlandırmıştım.

Son durumda ise artık bu işin olabildiğince hızlı olması gerekiyor çünkü API'ye dosya yazma özelliği getirdim. Disk aktarımı vesaire gibi şeyler için yine de efektif olmasa da kartuşun burada belli bir hızı yakalaması gerekiyor. Kartuş için özel yazılmış bir oyun mesela save dosyasını yazmak isteyecektir. Mevcut yöntemlerle 1K - 2K gibi küçük boyutların transferi bile oldukça yavaş kalır.

Yeni yöntemde CIA timer interrupt'larını ve kartuşun daha önce exploit etmediğim bir özelliğini kullanıyorum.

CIA timer interrupt'larından bahsedeyim öncelikle. Timer interrupt'ları kullanılarak belli sayıda cycle bir sayaç gibi kullanılıp, sayaç sıfırlandığında bir interrupt oluşturulması sağlanabiliyor. Burada benim senaryom için dikkatli bakıldığında kullanılabilecek bir imkan var.

Öncelikle benim neye ihtiyacım var? Arduino'nun interrupt sinyalini dinleyip bunu anlamlandırabilmesine. 0 ya da 1, byte başlangıcı, bitişi vesaire şeklinde.
Interrupt oluştuktan sonra CPU'nun interrupt handler çalıştırmasına ihtiyacım var mı? İşte buna ihtiyacım yok aslında.&nbsp; CIA interrupt'larına özel bir durum değil, aynı şekilde VIC interrupt'ları için de aslında aynı şey söz konusu. CPU için verilen bir SEI komutu maskelenebilen interrupt'lara CPU'nun müdahalesini engelliyor. Ancak interrupt'ların maskelenmesi sadece cpu'yu ilgilendiren bir durum, çevre biriminin oluşturduğu interrupt'ın bir hardware karşılığı hala oluyor ve bu da benim işimi görüyor.

Amaçlarımdan biri de en alt seviyedeki API'nin mümkün oldukça kısa olması ve kaset buffer'ı gibi bir yerde saklanabilmesi. Interrupt handling hem interrupt'a giriş ve çıkıştan dolayı belli bir cycle tüketmeye zorluyor. Hem de bu şekilde yazılan kod busy waiting şeklindeki koda göre daha karmaşık oluyor. Komut / Parametre göndermenin hızlı olmasını istediğim için bu noktada veri gönderimi esnasında cpu'yu bloke etmiş olacağım.

Kartuşun exploit etmediğim bir özelliği demiştim. Bu da şu : Kartuşun çalışma prensibini bilenler hatırlayacaktır. 64K eprom'un içinde aslında aynı kodun 256 kopyası var. Arduino bu 256 parçadan gönderilmek istenen byte'a ait olan sayfayı/bank'ı seçerek C64'e hangi byte'ı göndereceğini ifade edebiliyor. 256 byte'lık bölge içinde bu bank numarasını ifade eden değer epey bir yerde geçiyor. Değişik eprom içeriklerini de düşünerek son byte'ı da bu şekilde bank numarası olacak şekilde rezerve etmiştim ben. Yani C64 tarafından kartuş rom'u aktifken $80FF / $81FF gibi giden adreslerde Arduino'nun seçtiği bank numarasını okumak mümkün.

Bu veri iletimi ve ardından arduino tarafında yapılan işlemin sonucunun C64'e bildirilmesi için kullanılabilecek bir kaç yöntem var.

1. Sıkı zamanlama ile iki tarafı senkron tutmak
2. NMI kullanmak
3. Başka bir yöntem kullanmak

Arduino tarafında yapılan bazı işlemlerin ne kadar süreceği önceden belli olamayacağı için ilk yöntem devre dışı. Bizim kartuş NMI üretebildiği için NMI kullanılabilir. Ancak bu da daha önce bahsettiğim kod boyutunun küçük olması hedefini biraz kastırıyor. Devreye $80FF'teki bank değerimiz giriyor.

1. Arduino komut kabulünden önce bank değerini 0 yapıyor.
2. C64 komutu argümanları ile gönderiyor
3. Arduino işi bittiğinde bank değerini hatalı işlemler için pozitif $0-$7F arası bir değere set ediyor. Başarılı işlemler için ise $80-FF arası bir değere.

Pek tabii C64 Arduino'nun meşguliyetini beklemesin bir şeyler yapsın denilirse tüm api'ye NMI kullanma özelliği de eklenebilir.

Şöyle de bir durum var: Şu an hala hızlı test yapabilmek için eski rutinleri Atmega328'in flash'ı üstünde tutuyorum ancak API rüştünü ispatladığında flash üstünde epey bir yer kazanacağım. Bu boşluğu da API'ye faydalı olabilecek yeni metodlar ekleyerek kullanmayı düşünüyorum. Faydalı olabileceğini düşündüğünüz rutinler varsa ekleyebilirim.

Şartlar şunlar
1. Implement edilmesi için ciddi flash gereksinimi olmayacak
2. Fazla ram kullanmayacak. Atmega 328'in ram'inden hali hazırda 300-400 byte bir yer boşta kalabiliyor.

Atmega328'in böyle bir API'de avantajı SD kart üstündeki yüksek hızda (C64'ün klasmanına göre) IO imkanı, yüksek depolama kapasitesi ve 1Mhz'e nazaran daha hızlı olması. (16 Mhz)

Tabii DMA gibi bir imkanımız yok, üstte bahsettiğim gibi C64->Arduino transfer kısmı yavaş, Arduino-> C64 transfer kısmı ise nispeten hızlı. API'ye eklenecek metod ciddi miktarda I/O ve Atmega328 üstünde cpu kullanımı yapmalı ki C64'e faydası dokunsun. Bir de tabii attığı taş ürküttüğü kurbağaya değecek bir metod olmalı. Sallıyorum 16 misli hızlı diye çarpma işlemini atmega'ya yaptırayım desek çarpılacak sayıları gönderme zamanında aslında 6502 üstünde çarpmak daha hızlı bile olabilir.

Benim bu anlamda aklıma gelen basit bir database özelliği. Binary tree kullanan basit bir database implementasyonu yapılabilir.


Kodları yazdıkça check-in'liyorum. Güncel kodlara aşağıdaki linkten ulaşabilirsiniz.
https://www.tepetaklak.com:8443/svn/Public/IRQHack64V2/ (https://www.tepetaklak.com:8443/svn/Public/IRQHack64V2/)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Nisan 06, 2017, 10:08:21 ÖÖ
TL;BERVM = Too Long But Enjoyed Reading Very Much ;)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Mayıs 11, 2017, 23:57:56 ÖS
ESP8266'ya da el attık, sonumuz hayırlı olsun bakalım :)

http://www.youtube.com/watch?v=WQDMVRC1zZs (http://www.youtube.com/watch?v=WQDMVRC1zZs)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Oğuzhan üzerinde Mayıs 12, 2017, 00:41:31 ÖÖ
LukHash Gravity :)

Favorilerimden :)

Ama gözdem Pixelove :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: june8efe üzerinde Mayıs 12, 2017, 01:42:45 ÖÖ
nejat hocam bravo, tebrikler kelimesi bile az kalıyor.
maşallah Jack Tramiel el verdi sanki  :) projelerinde başarılar.
ESP8266 nedir?


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Mayıs 12, 2017, 01:58:05 ÖÖ
Esp8266 üzerinde tümleşik wireless çözümü olan 512kb-X mb kod hafızası, 96k (yamulmuyorsam) ram'i bulunan ve bir adet 160mhz'e çıkabilen xtensa tensilica arm core'u ihtiva eden bir system on a chip.

Atmega328'in 10 misli hızlısı ve wireless özelliği olanı diyebiliriz. Tabii bizim kartuş işinde bu imkanlar daha çok işin mutfağında faydalı olacak.

Misal wav çalma temiz bir şekilde atmega328'de zordu. Bunda nispeten daha kolay. Data stream etme de yine düşük latency ve yüksek ram'den dolayı daha kolay.

Şöyle şeyler de mümkün. Bir web sitesine girip C64'e program aktarma, C64'ü uzaktan kontrol etme gibi gibi.

Internet radyosu dinlenebilir mesela. Modem emülasyonu yapılabilir.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Mayıs 17, 2017, 01:35:19 ÖÖ
Çocuğu C64'ün başından kaldıramıyor musunuz?

IRQHack64 ESP8266 versiyonu var  :P

http://www.youtube.com/watch?v=WgMBHGyoj1U (http://www.youtube.com/watch?v=WgMBHGyoj1U)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Levent (Lvnt) üzerinde Mayıs 17, 2017, 09:04:14 ÖÖ
Hehe süper, elinize sağlık


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Mayıs 17, 2017, 10:36:27 ÖÖ
Aştın kendini hem tasarım hem de pazarlama dalında. :D


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: LW3D üzerinde Mayıs 17, 2017, 11:20:32 ÖÖ
Bu acayip bir şey olmuş...Yani yeni teknolojinin, eskisiyle buluşması... C64'e cepten oyun ışınlama :P


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Mayıs 17, 2017, 14:07:33 ÖS
@Özay : Pazarlama kısmının güzel olabilmesi için Cengiz Ermiş gibi çekmem lazımdı videoyu. Benimki hakikaten amatör işi.

Aslında mizansen yapmak lazım, çocuk hakikaten oynuyor falan sinsi baba uzaktan müdahale ediyor :)

Kaliteli video çekmek şart.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Mayıs 17, 2017, 22:36:59 ÖS
Bu arada biz 25 dolara alıcı bulamıyoruz kartuşa, eleman 35 avroya çıkarmış piyasaya :)

http://www.huuto.net/kohteet/irqhack64---commodore-64-moduuli/444954863 (http://www.huuto.net/kohteet/irqhack64---commodore-64-moduuli/444954863)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Levent (Lvnt) üzerinde Mayıs 18, 2017, 09:51:10 ÖÖ
Abi sen oraya bi hortum bağla paralar biraz da bu tarafa gelsin ;)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Mayıs 19, 2017, 22:45:35 ÖS
Lemon'a da yazdım ama pek takan olmadı.

http://www.lemon64.com/forum/viewtopic.php?t=64393&start=0&postdays=0&postorder=asc&highlight= (http://www.lemon64.com/forum/viewtopic.php?t=64393&start=0&postdays=0&postorder=asc&highlight=)

ESP8266'dan bu kartuş için sizlerin beklentileri ne olurdu?

Mevcutta şunları geliştirdim.

1. Basit bir web server, kartuş idare edilebiliyor. Tasarladığım api'nin kontrol edilmesini de sağlayacağım bu server üzerinden.

2. Web client. Web server üzerinden yahut api üstünden web'den program çalıştırabiliyor şu anda. Api'deki dosya okuma / yazma ile ilgili fonksiyonlara da bir şekilde entegre edebilirim ileride web bağlantısını. Mevcutta bile C64'ü web'den boot etmek mümkün hem de çok hızlı bir şekilde :)



Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: LW3D üzerinde Mayıs 19, 2017, 23:04:20 ÖS
Commodore 64 için çok farklı bir uygulama olmuş. Bu hali bile oldukça ilginç. Önümüzdeki hafta canlı canlı test ederiz herhalde?


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Mayıs 19, 2017, 23:07:14 ÖS
Commodore 64 için çok farklı bir uygulama olmuş. Bu hali bile oldukça ilginç. Önümüzdeki hafta canlı canlı test ederiz herhalde?

Evet getireceğim. 7DX'teki sid player hüsranını yaşamamak için breadboard halini evde bırakıp perfboard üzerine monte edeceğim bir tane.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: wolfiem üzerinde Mayıs 19, 2017, 23:41:22 ÖS
Telefondan C64'ü freeze edip memory'i mıncıklayabilsek nasıl olur :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Mayıs 20, 2017, 00:00:02 ÖÖ
Telefondan C64'ü freeze edip memory'i mıncıklayabilsek nasıl olur :)

Freeze dediğin zaman iş kırma kartuşlarına gidiyor. Custom logic lazım o iş için. Belli bir oranda başarılabilir (kartuş nmi hattını kullanabildiği için) ancak mükemmel olmaz.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Mayıs 22, 2017, 02:59:04 ÖÖ
Facebook'a post etmiştim, burada da bulunsun. ESP8266'ya eklediğim web client'ın demosu.

Notepad++ üstünde VICE'tan daha hızlı geliştirme :)
Kısayol tuşuna basınca kod derlenip C64'e internet üstünden ışınlanıyor. Kartuş üstündeki web server'a henüz upload özelliği eklemediğim için şöyle oluyor.

1. Kod build oluyor ve web'e upload ediliyor.
2. Kartuş üstündeki web server'a git şu url'deki programı yükle deniyor.
3. Kartuş üstündeki web client dosyayı indirip C64'e ışınlıyor.

Aslında ESP8266'nın verimliliğini gösterebilmesi açısından güzel bir örnek. Hem server hem client hem de C64'ü idare edebilme açısından güzel çalışıyor.

http://www.youtube.com/watch?v=FMyadaHvrck (http://www.youtube.com/watch?v=FMyadaHvrck)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Haziran 03, 2017, 01:03:30 ÖÖ
Elin Finlisi bizden önce yapmış kartuşa kasa :)

(http://www.commodore.gen.tr/forum/index.php?action=dlattach;topic=11034.0;attach=21855;image)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: phoenix üzerinde Haziran 03, 2017, 01:15:42 ÖÖ
 ???


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Haziran 03, 2017, 03:12:43 ÖÖ
Elin Finlisi bizden önce yapmış kartuşa kasa :)
Ben beğenmedim çok yalın olmuş, bir ruhu yok. Ayrıca ilk kasa değil ilk 3D baskılı kasa demek daha doğru olacak çünkü benim kartuş IComp kasasında, senin de alüminyum kasa var daha önce yapılan. ;)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Haziran 03, 2017, 15:16:09 ÖS
@Özay: 3d print olarak kastetmiştim. En azından ölçüleri üstünden daha kolay başka şeyler yaratılabilir. İstedim elemandan.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: LW3D üzerinde Haziran 03, 2017, 15:20:08 ÖS
Ben okumadan, ilk gördüğümde, sen 3D print yaptın sandım :) IRQHack'in artık bir dünya markası olması gurur verici...


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Haziran 03, 2017, 23:22:08 ÖS
Ben okumadan, ilk gördüğümde, sen 3D print yaptın sandım :) IRQHack'in artık bir dünya markası olması gurur verici...

Ben daha 3d printer'ı yapamadım. Print şöyle dursun :)
Güç topluyorum Pazar günü bütün gün uğraşacağım inşallah :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: wolfiem üzerinde Haziran 04, 2017, 19:31:20 ÖS
Benim denemelerini yaptığım ama iş yoğunluğundan yarım kalan bir dizayn var. Bu ay fırsat bulursak tamamlayıp paylaşırım.

Merak edenler için aşağıdaki gibi bir şey. Hiç foto çekmemişim, bu paylaştığım ilk sürümlerinden :)
Arka kapakta da iRQHACK64 yazıyor.

(http://www.commodore.gen.tr/forum/index.php?action=dlattach;topic=11034.0;attach=21865)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Haziran 04, 2017, 22:41:33 ÖS
@wolfiem : Hoş bir tasarım olmuş. Naçizane yorumlarım,

1. Son zamanlarda uzun tactile switch olmadığı için kartuşları kısa tactile switch ile gönderdim. Sendeki buton uzun olandan ise, kısa olan arkadaşlarınkine uymayacaktır. Kısa butona göre yaptıysan sorun olmaz.

2. Yazı hep büyük karakter olduğu için bir garip durmuş, Sadece C'si büyük olsa sanki daha iyi olur.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: wolfiem üzerinde Haziran 05, 2017, 00:02:54 ÖÖ
Teşekkürler i_r_on.
Son halinde Commodore yazısı orijinaline uygun hale gelmişti diye hatırlıyorum. Tactile butonu ise hatırlamıyorum :=) Uzundu sanırım. Ofise gidince ikisine de bakacağım.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: AGY üzerinde Haziran 19, 2017, 11:51:58 ÖÖ
Arkadaşlar merhaba bir sorum olacak bir türlü sdcardı takmama rağmen sadece ready yazısı geliyor içindekileri gösteren menü gelmiyor hata ne olabilir.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Haziran 19, 2017, 12:35:38 ÖS
@AGY : Sd karta menü programını (irqhack64.prg) atmanız lazım.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: AGY üzerinde Haziran 19, 2017, 12:37:13 ÖS
çok teşekkürler bilgi için nerden bulabilirim onu


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Haziran 19, 2017, 14:10:21 ÖS
@AGY : Şu dosya içinde bulabilirsiniz.

http://www.tepetaklak.com/data/IRQHack64Turbo.zip (http://www.tepetaklak.com/data/IRQHack64Turbo.zip)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: byeni üzerinde Haziran 30, 2017, 22:41:34 ÖS
Nejat amibay'da  :) :) :)

http://www.amibay.com/showthread.php?93148-IRQHack64-cartridge-with-semitransparent-3d-printed-case (http://www.amibay.com/showthread.php?93148-IRQHack64-cartridge-with-semitransparent-3d-printed-case)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Temmuz 01, 2017, 16:10:54 ÖS
For sale'den farklı bir kısımda bahsedilseydi tabii daha iyiydi :)

Aynı eleman lemon64'de de satıyor, tanıyorum.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: AmigaEsref üzerinde Temmuz 01, 2017, 21:12:50 ÖS
Helal abime :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Temmuz 03, 2018, 01:33:07 ÖÖ
Arada sırada kartuşu kullanan eden var mı ne alemde diye böyle araştırıyorum.
Kısa kısa kartuştan haberler vereyim,

1. Aşağıdakine denk geldim,

https://www.ebay.it/itm/IRQHack64-PCB-ROM-SD-Card-Reader-for-CRT-PRG-TAP-Commodore64-/153054857515 (https://www.ebay.it/itm/IRQHack64-PCB-ROM-SD-Card-Reader-for-CRT-PRG-TAP-Commodore64-/153054857515)

PCB'si bile 10 avro ediyor, vay vay vay :)

2. http://www.c64os.com/buyersguide (http://www.c64os.com/buyersguide)

Satınalma detayları henüz koyulmamış olsa da üstteki sitenin sahibi kartuşu listelemiş sonunda.

3. Ağustos ayında Amerikada düzenlenecek CRX 2018 organizasyonunun organizatörlerinden biri kartuşun video/ses özelliklerini demo etmek istediğini iletti. Geliştirmeye başladığım ama yarım kalan önce api yapma sonra da kartuşun basit özelliklerini api üstünden sunma mevzularına yeniden başladım. Amaç en azından kartuşun ses/video/streaming imkanlarını tek bir firmware altında toplayabilmek.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: freedom üzerinde Temmuz 03, 2018, 08:50:50 ÖÖ
@Sayın i_r_on,

Çalışmalarınız için sizi tebrik ederim.

CGTR ailesinde sizin gibi yetenekli bir arkadaşın olması çok güzel. Ümit ederim bu çalışmalar hem yurt içi ve hemde yurt dışı retro camiasında gereken ilgiyi de görecektir. Sizi tanımaktan dolayı bizleri de gururlandıracaktır.

Kolay gelsin.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Jax üzerinde Temmuz 03, 2018, 09:47:59 ÖÖ
IRQHack64 ile Last Ninja 1. bölümü oynadım. Çok keyifli. Keşke ara yüklemeli oyunları tam desteklese.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: emarti üzerinde Temmuz 03, 2018, 10:13:11 ÖÖ
@i_r_on tebrikler aramızda olman büyük şans bizler için. Sayende C64 bilgi birikimimiz çoğalıyor, bizzat çok şeyler öğrendim ve öğrenmeye devam ediyorum. Çekirgen konuştu :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Temmuz 03, 2018, 10:43:55 ÖÖ
IRQHack64 ile Last Ninja 1. bölümü oynadım. Çok keyifli. Keşke ara yüklemeli oyunları tam desteklese.

MMC64 / Ide64 gibi benzer şekilde disk emülasyonu yapmayan projelerde oyunlar yamanarak ara yüklemeli oyunlara destek verilebiliyor. API'yi yaptıktan sonra belki aramızdan da kartuşa bu oyunları adapte edecek cracker arkadaşlar çıkar.

@i_r_on tebrikler aramızda olman büyük şans bizler için. Sayende C64 bilgi birikimimiz çoğalıyor, bizzat çok şeyler öğrendim ve öğrenmeye devam ediyorum. Çekirgen konuştu :)

Yok daha neler, c64 programmer's manual falan orada dururken master'lık bize düşmez yahu :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: AmigaEsref üzerinde Temmuz 03, 2018, 12:18:18 ÖS
Valla benim c64 almama i_r_on abi vesile olmuştur. Bu arada ben hala evi toparlayamadım. Bu haftasonu dolaplar için üstaya gidip ben mi yapsam diyorum nasılsa malzeme parasını ödedim 2 aydır bekliyorum. Zor bu işler.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Oğuzhan üzerinde Temmuz 03, 2018, 12:26:36 ÖS
Valla benim c64 almama i_r_on abi vesile olmuştur. Bu arada ben hala evi toparlayamadım. Bu haftasonu dolaplar için üstaya gidip ben mi yapsam diyorum nasılsa malzeme parasını ödedim 2 aydır bekliyorum. Zor bu işler.

Mobilya isinde parayi onden vermeyeceksin asla :) %10 kapora ver :) ben eve ilk mobilyalari alirken teslimati sordum ay sonu dedi. 31 agustosta teslim etti tam gununde :) parasini da aldi :)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: AmigaEsref üzerinde Temmuz 03, 2018, 12:30:44 ÖS
Aradım ustayı şantiyedeyim 10 gün yokum dedi sen ona 2 hafta ekle :) örümcek hikayesi oldu.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Eylül 03, 2018, 02:47:42 ÖÖ
Daha önce bahsini ettiğim Ağustos'taki CRX 2018 etkinliğine kartuşu yetiştiremedim. Ancak arada geçen zamanda kartuşla ilgili epey bir çalışma imkanım oldu.

Facebook'ta paylaşmıştım ancak burada biraz daha fazla detay verip bahsedeyim. Tersten başlayayım, başlangıca doğru geri gideyim.

Ul30uYudKMY

Videoda sırasıyla şunları yapıyorum (C64 tv'me anten hattından picture in picture özelliği ile bağlı. IRQHack64 üstündeki arduino'nun seri hattı da pc'de arduino'nun terminal programıyla bağlı)

1. Başlangıçta seri bağlantı üstünden menü programını açıyorum (Sofistike bir olay değil, bu özelliği her zaman vardı kartuşun)

2. PETG uzantılı bir dosya açıyorum. Pet ekran tasarlama programları ile yaratılabilecek bir dosya bu 1000 byte karakter bilgisi, 1000 byte renk bilgisi, 2 byte arka plan ve ekran rengi olmak üzere 2002 byte'lık bir dosya.

3. Menüye tekrar dönüp KOA uzantılı bir dosya açıyorum. Koala painter programı ile yaratılmış resim programlarının uzantısı KOA oluyor. (Bu örnekte sanırım daha önce ekran görüntülerinden İlker'in çevirdiği resimlerden biri bu)

4. Sonra bir WAV dosyası açıyorum. WAV dosyası SID üzerinden 4 bit olarak, DIGIMAX üzerinden de 8 bit olarak eş zamanlı olarak çalıyor.

5. Nihai olarak da özel bir formatta video gösteriliyor.

Şimdi wav ve video gösterimini zaten daha önce bu kartuşta yapmıştım, ancak burada farklı olan bütün yukarıda saydıklarımın kartuşun üstündeki arduino'daki tek bir firmware ile yapılabilmesi. Video oynatma ve ses çalma bu donanımda arduino tarafında sırasıyla 400 byte ve 128 byte birer buffer gerektiriyor. Eski firmware'de epey bir özellik kartuş tarafında implement edildiği için ciddi bir flash ve sram kullanımı söz konusu oluyor ve bu bahsettiğim buffer'lar da işin içine girdiğinde bütün özellikleri sunma imkanı bulunmuyordu. Bu flash ve ram kullanımını azaltmak için yükün ciddi bir kısmını c64 tarafına kaydırmaya karar verdim ve firmware'in tasarımını ciddi ölçüde değiştirdim. ESP8266'ya kartuş kodlarını port ederken zaten C++'a geçiş yapmıştım, yine aynı code altyapısını kullandım. Heap'te global olarak tutulan buffer'lar yerine çoğunlukla fonksiyonlara lokal stack'te tutulan buffer ve değişkenlere yöneldim. (Interrupt kullanmak söz konusu olduğunda da bu buffer'lara pointer kullanılıyor)

Kartuşta donanımsal olarak da ufak bir fark var, şöyle ki eskiden C64 -> Arduino haberleşmesini Expansion port üzerindeki IRQ hattı üzerinden yapıyordum. Zaten bu iletişim de menüden seçilen komut ya da dosya indis değerinin kartuşa gönderilmesinden ibaretti. EasyKernal'i yaparken burada kullandığım iletişim protokolünden faydalanmıştım. Api fonksiyonalitesini getirirken de bu sefer EasyKernal'den kopya çekip oradaki daha genel amaçlı kullanıma uygun olarak yazdığım halini kartuşa port ettim. IRQ hattını kullanmaktan vazgeçtim zira IRQ hattı benim hassas olarak tetikleyebileceğim bir hat değildi, modüle etmek için CIA yahut VIC çipini programlayıp interrupt oluşturmasını beklemek durumundaydım. Bunun yerine hali hazırda kartuş I/O için ayrılmış /IO1 veya /IO2 hatlarını kullanabilirdim. /IO2 hattını tercih ettim. Bu IO bank'ı $DF00 - $DFFF aralığında. /IO2 seçim hattını Atmega328 üstündeki external interrupt destekleyen daha önce IRQ hattını bağladığım pin'e bağladım. Yani, $DF00 - $DFFF aralığındaki I/O belleğine yapılacak her türlü erişim Atmega328 üstünde bir interrupt oluşturabilmekte. İletişimin nasıl yapıldığını aşağıdaki c64 için çoklu kernal projemde okuyabilirsiniz.

http://www.commodore.gen.tr/forum/index.php?topic=14781.0 (http://www.commodore.gen.tr/forum/index.php?topic=14781.0)

Bu arada api çalışmasıyla ilgili sonuçlanmayan daha önceki girişimimle ilgili de aşağıdaki mesajda yazmıştım. Api fonksiyonları (hatta neredeyse implementasyonları bile) aşağı yukarı aynı ancak yeni eklenen fonksiyonlar da oldu. Bunlar da streaming fonksiyonları daha çok.

http://www.commodore.gen.tr/forum/index.php?topic=11034.msg168223#msg168223 (http://www.commodore.gen.tr/forum/index.php?topic=11034.msg168223#msg168223)


Madem donanımı hafifçe değiştirdik ve api de yazdık menü programının da fonksiyonalitesini ufak ufak değiştireyim dedim. Basit bir plugin mekanizması oluşturdum menü programında. Açılan dosya uzantısını buluyor sd karttan o uzantı için yazılmış plugin'i yüklüyor. PETG için misal PETGplugin.bin dosyasını yükleyip çalıştırıyor. Seçilmiş olan dosyanın ismini de kaset buffer bölgesinden plugin programına iletiyor. Bu plugin de kartuşla konuşarak dosyayı açıp / yükleyip gösteriyor. Diğer dosya uzantıları için de olay benzer şekilde gelişiyor.


Devamında hazır fuarı da kaçırmışken biraz fantaziye vurayım dedim ve başka bir şey denemeye karar verdim. Basitçe sürücü emülasyonu yapıp kernal rutinlerini kullanan programlara disk sürücü yerine kartuş üstündeki sd kart üzerinden dosya yükletebilmek idi bu. C64'de çalışan çoğu tracker vesaire utility tarzı program standart kernal rutinlerini kullanır. Bunların hızlı çalışmasını isteyen insanlar da C64'lerine fastloader kartuşu ve bilimum donanım takarak hızlandırırlar. Bir kısım oyun için de geçerli bu kullanım şekli.

tY03hHuY3Ck

Bu videonun başlarında yukarıda bahsini ettiğim donanımsal değişikliği (eski setup'a geçebilmek için ben oraya jumper koydum) görebilirsiniz.

Yaptığım bu fantazi proof of concept tadında, pratik kullanımını engelleyecek kısıtlamalar söz konusu.

Kodlamaya geçmeden öncelikle source'ları hali hazırda yayınlanmış bir programı denek olarak kullanmayı tercih ettim. Goattracker'ı yazan Cadaver'ın Ninja tracker'ını source'ları da olması sebebiyle tercih ettim.

İlk etapta dizin almayı pas geçerek sadece dosya yükleme fonksiyonalitesini sağlamaya çalıştım. Source'u da incelediğimde bu fonksiyonalite için aşağıdaki kernal fonksiyonlarının kullanıldığını gördüm, bunların bir kısmını değiştirerek kartuşla konuşan kendi rutinlerimi yazdım.

- setnam : bunu değiştirmeye gerek yok, yüklenecek dosya bilgilerini belirlemeye yarıyor. ancak set ettiği adresler daha sonra kullanılıyor. ($B7 : dosya ismi uzunluğu, , $BC : dosya ismi lokasyonu high , $BB : dosya ismi lokasyonu low)

- setlfs : hangi cihazla konuşulacağı, hangi logical file kullanılacağı gibi parametrelerin set edildiği fonksiyon. setnam gibi bunda da mevcut kernal fonksiyonalitesinin değiştirilmesine gerek yok.

- open : farklı implementasyonun sağlanması gereken rutinlerden en önemlilerinden biri bu. yeni implementasyonunda kartuşla iletişimi başlatıyor. Dosyayı açıyor ve dosya bilgilerini, en önemlisi de dosya boyutunu alıp bir yere yazıyor. Bitiminde de kartuşla iletişimi koparıyor.

- chrin : bir cihazda açılmış bir logical file'dan okuma yapmayı sağlayan fonksiyon bu. bu fonksiyonun implementasyonunda şöyle bir sorun yaşadım. bu fonksiyonu her byte için bir api fonksiyonunu çağırarak implement edemezdim. c64 bir yandan chrin yaparken bir anda open / close gibi fonksiyonları çağırma ihtiyacı yüzünden de bu çağrıların karşılığında kartuşta çalışacak ilgili api fonksiyonlarının çalışabilmesi gerekiyordu.

Arduino üzerinde C64->Arduino iletişimi düşük seviyede bir kuyruk ve bir interrupt handler ile idare ediliyor. Ancak komutları çalıştıran yapı bir döngü içinde kuyruğu temizlemeye çalışan bir ön plan rutini. (Arduino üzerinde Realtime os kullanaydık daha farklı bir yapı kullanmak mümkün olabilirdi ) Özetle, ön plan'da her chrin'e hızlı hızlı cevap vereyim derken başka bir komut kabul edebilmem mümkün değil. Kartuşun streaming fonksiyonunu kullanan wav çalıcı, video oynatıcı gibi şeylerde bu büyük sorun oluşturmuyor zira orada arduino üstündeki c64-Arduino arasındaki iletişimi sağlayan interrupt handler devre dışı bırakılıyor ve tamamen ilgili fonksiyonaliteye yönelik bir iş yapılıyor. c64 tarafında çalışan kod da doğrudan benim yazdığım kod zaten.

Çözüm şu, 256 byte'lık bir buffer kullanıyoruz ve c64 bu buffer'ı her tükettiğinde bir 256 byte daha okuyor. Yani bazı chrin çağrıları kartuşla konuşup uzun sürerken, bazıları ise hızlıca buffer'dan karşılanıyor. Böylece aralarda verilebilecek bir close/open çağrısının da karşılanabilmesi söz konusu.

- close : Kartuşla iletişime geçiyor, dosyayı kapatıyor ve iletişimi kesiyor.

- chkin : İletişim yapılacak logical file'ı ve iletişimin yönünü not ediyor.

- clrchn : Sürücüye gidilmesin diye dummy bir implementasyon ile değiştirdim.

C64 Kernal'i yaparlerken işin güzel kısmı bu fonksiyonların gerçek implementasyonlarını ram'deki bir jump table'a koymuşlar. Bu jump table rom'daki default implementasyonları içeriyor.  Aşağıdaki gibi bir kodla bu jump table üzerinde kendi rutinlerimizin adreslerini verdiğimizde yüklediğimiz programlar artık rom'daki implementasyon yerine bizim implementasyonumuza erişmiş oluyorlar.

Kod:
chrinVector = $0324
openVector = $031A
closeVector = $031C
chkinVector = $031E
clrchnVector = $0322

SETVECTORS
LDA #<NEW_CHRIN
STA chrinVector
LDA #>NEW_CHRIN
STA chrinVector + 1

LDA #<NEW_OPEN
STA openVector
LDA #>NEW_OPEN
STA openVector + 1

LDA #<NEW_CLOSE
STA closeVector 
LDA #>NEW_CLOSE
STA closeVector + 1

LDA #<NEW_CHKIN
STA chkinVector 
LDA #>NEW_CHKIN
STA chkinVector + 1

LDA #<NEW_CLRCHN
STA clrchnVector 
LDA #>NEW_CLRCHN
STA clrchnVector + 1
RTS

Videodan da anlaşılacağı üzere bu değişikliklerle Ninja tracker içerisinden sd kart'ta bulunan dosyaları açıp kullanabilmesini sağlayabildik.

Gelelim kısıtlamalara ;

1. Çoğu program gibi Ninja tracker da bir cruncher ile sıkıştırılmış halde geliyor. Benim kullanmaya çalıştığım bellek bölgesi de cruncher marifeti ile uçabiliyor. Source'larının olması avantajıyla crunch edilmemiş halini kullandım. Tabii bu denemeyi yapmak için ram'de $C000-$D000 arasındaki bölgeyi help metinleri için kullanan programdan bu help text'lerini silip yer açmam da gerekti.

2. İlk kurguda, diğer dosya uzantılarına nasıl plugin hizmet veriyorsa bu işi de bir plugin marifeti ile yapayım dedim. Ancak daha sonra denemeler daha basitçe yapılabilsin diye kendi rutinlerimi ninja tracker'ın sonuna binary olarak ekleyerek derlemeyi tercih ettim.

3. Harala gürele yazılmış, optimize edilmemiş ancak fonksiyonel anlamda da eksikleri (yazma, dizin çekme, dosya sistemi komutları) bulunan bu implementasyon 1.4K yer kaplıyor. Bu rutinlerin ram'de çalıştırılma durumunda bu kadar yer bulmak çoğunlukla mümkün olmayacaktır.

4. Üstte chrin implementasyonunda bahsettiğim bir 256 byte bellek kullanımı var. Implementasyonu bir şekilde custom kernal yahut kartuş üzerinde bir rom'da tutsak bile bu ram'i bir şekilde bulmak lazım ya da firmware'i değiştirip farklı bir çözüme gitmek lazım. (Aslında kartuşa ram ve rom ilavesi yapmak fena fikir değil :) )

5. C64'de birden fazla dosya açabilme desteği var ancak Atmega328 üstündeki 2k sram birden fazla dosya kullanılmaya çalışıldığında her bir dosya için yeterli buffer sağlamaya müsait değil. Bir byte bir dosyadan, bir byte başka bir dosyadan okuyan programlar için arduino'nun 512 byte okuyup daha sonra bu 512 byte'ı çöpe atıp diğer dosyadan 512 byte okuması gerekiyor, ve aynı şekilde devam etmesi. Oldukça verimsiz. Aynı anda birden fazla dosya açıp işlem yapacak programlar da herhalde c64 tarafında dosya kopyalama vesaire programları olacaktır.

Kapanışı bir soru ile yapayım,

Velev ki bu iş için bir custom kernal yaptım. Üstte saydığım rutinlerde hunharca kullanabileceğim bellek bölgeleri nerelerdir? (Rom'dan muhtemelen rs232 ve/veya teyp rutinleri koparılacak) 256 byte'lık buffer başta olmak üzere Firmware üstünde çalışıp custom rutinlerin ihtiyaç duyduğu bellek miktarını azaltabilirim hatta sıfırlayabilirim ancak bu da bize hız düşümü olarak geri dönecektir.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: LW3D üzerinde Eylül 03, 2018, 12:21:34 ÖS
Eline sağlık... Sorunun cevabını bilmiyorum :) Ama ciddi bir emek ve çalışma... sağolasın.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: AmigaEsref üzerinde Eylül 03, 2018, 14:32:54 ÖS
@Komodorcu seninle aynı duyguları paylaşıyorum. :) Bende iron abinin projeleri ilgiyle takip ediyorum ama aynı dili konuşamadığımız içinde çok üzülüyorum. 2 Aylık geniş bir proje aldı ajans arada pause yapabiliriz diye tahmin ediyorum. Çoğunlukla İstanbulda olacağım. Bursa'da oda mı toplama işleminde baya ilerledim. Bir ara iron abinin videolarınıda izleyip minik bir bizim gibi detarjancılar için :) bir video hazırlamayı düşünüyorum basit ve hızlı kullanım amacı ile. Sevgiler


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Levent (Lvnt) üzerinde Eylül 03, 2018, 16:04:18 ÖS
Değişen sayıda açık dosya ve sabit miktarda buffer problemi için şöyle bir çözüm var: diyelim 512 byte buffer var. 1. dosya açıldı bufferin hepsi o dosyanın, 256 yazma 256 okuma vb. 2. dosya açıldı bufferleri ikiye böleceğiz, 128 byte'ı aşan bufferlenmiş yazma varsa hemen fazlası flush edilir (ya da okuma bufferiyse fazlası yok sayılır). 128/128 1.dosyaya, 128/128 2.dosyaya. 3.dosya açıldı, sadece 2. bufferleri aynı şekilde ikiye bölünür, 4.dosyada 1.dosyanınki ikiye bölünür. 5.açılan dosya için yine son 4.'nün bufferi bölünür, 6.da 3.nün bufferi bölünür...

Bir dosya kapanınca onun bufferini en çok kullanılan dosyanın bufferi ile birleştirmek lazım. O zamanda en çok kullanılan bufferin başında ya da sonunda kullanılmayan buffer olacak şekilde kullanımda olan bir bufferi başka yere taşımak gerek.

Dosya sadece okuma için açılabiliyorsa (c64'te böyle birşey var mı bilmiyorum) yazma bufferi ayrılmayabilir, ya da yazma bufferi hiç olmayabilir, yazma yapılacaksa bile.

Otomatik ayarlama işleri her senaryo düşünüldüğünde böyle bir sürü iş gerektiriyor. Bence en iyisi open yaparken gereken buffer miktarını da open'e parametre olarak vermek. Yanlış değer verilirse hata verir ve buffersiz çalışır mesela. Ama bu sizin sisteme uyarlanabilir mi bilmiyorum


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Eylül 03, 2018, 17:26:01 ÖS
@Levent : Bu bahsettiğim buffer kısıtı arduino üstünde koşan sdfat kütüphanesinin konusu. Her açılan dosyadan 512 byte okuma yaparak bu sorunu c64'e yıkarsam önerilerin geçerli oluyor. Sd kart flash tabanlı olduğu için page seviyesinde erişim söz konusu. Bu da bir okuma yahut yazmanın en az 512 byte olması demek. Sdfat bunun için tek buffer kullanıyor.

Kartuşa ram eklersem sdfat'i gereksiz io yapma yükünden kurtarabilirim. Ancak pratikte birden fazla dosya üstünde aynı anda okuma/yazma yapan uygulamalar nelerdir, burada yapılacak geliştirme harcanacak efora değer mi diye düşündüğümde cevabım uygulama sayısının kısıtlı olacağı  ve harcanacak efora çok değmeyeceği. Ama pratikte en çok karşılaşılacak aynı anda bir dosya okuma, bir dosya yazma operasyonuna belki destek verilebilir.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Levent (Lvnt) üzerinde Eylül 03, 2018, 19:26:21 ÖS
@i_r_on: işin alt yapısı enteresanmış. Buffer işleri vb ek işleri arduino (ya da ham mikrokontrolcü devresi) yapsa bence daha iyi, bir tür accelerator gibi, c64'e yük binmesin. Uygulanabilirliği nasıl bilmiyorum tabi.

Bunun bir adım ötesinde taşlar şöyle yerine oturuyor: C64 vb retro makinelerde de kullanım kolaylığı için artık hep böyle kartuşlarla (bir tür accelerator) kullanılacağını düşünürsek, retro makinelere a)ham halde, b)acceleratorlü özellikleri kullanarak daha fonksiyonel çalışan programlar yazılır hale gelir. Dos pc oyunlarındaki config programlarıyla ses, çözünürlük vb pc'deki ek gelişmiş özelliklerin kullanıma geçirilmesi vb. ya da C64'te 2.sid'i aktive etmek gibi vb.

İlla böyle olması gerek anlamında değil, yine olabilir anlamında. Daha önce bir zaman geniş çapta kullanılmış ve artısı eksisi iyi bilindiği için.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Humphrey üzerinde Eylül 18, 2018, 18:51:24 ÖS
Arkadaşlar (kusura bakmayın araya giriyorum)
Kartuşlara kutu ihtiyacı olanlar ;
Irqhack64 için elimde kartuş kutuları olacak. Kendim ve bir kaç arkadaş için sipariş vermiştim. önümüzdeki haftabaşı gelecekler.ilgilenenler ön sipariş verebilirler.Gerekirse ek ürettirebilirim.Burayı meşgul etmeden benim sayfama , yada öm atabilirsiniz.

ilgili link ;
http://www.commodore.gen.tr/forum/index.php?topic=16191.msg207283#msg207283 (http://www.commodore.gen.tr/forum/index.php?topic=16191.msg207283#msg207283)

Bu arada Kutunun tasarımını yapan Kaan Akkurt arkadaşımızada bu güzel çalışmasından dolayı teşekkür ediyoruz.
tasarımını; https://www.thingiverse.com/thing:2912861 (https://www.thingiverse.com/thing:2912861) adresinden bulabilirsiniz.
Ayrıca Ekonomik versiyonun yanında daha farklı bir tasarımı da vardır.

i_r_on (Nejat) ve Simon (Özay Turay) arkadaşımızın başarılı teknik çalışmasını, ekonomik versiyon kutu tasarım ile
buradaki ihtiyaca cevap vermiştir.

ürün gri olarak üretilecektir (sebebi elde bulunan ve yerli malzeme, ekonomik olması) , istediğiniz renge sprey boyayabilirsiniz.





Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Levent (Lvnt) üzerinde Eylül 18, 2018, 23:44:27 ÖS
irqhack kutusu için biryerlere isim yazdırmışmıydık? Ya da öyle bir isim toplama hadisesi oldu mu?


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Eylül 19, 2018, 01:43:30 ÖÖ
@Humphrey : Şahsi kanaatim, kartuşun üstüne yapıştırılacak sticker'a credits tarzı bir şey yapmaya gerek yok. Standardında benim öngördüğüm bir tasarım olmadığı için de tabii istediğinizi yapıştırmakta serbestsiniz.

Görsel öğelerin veya stilize yazıların olduğu bir sticker bence daha hoş duracaktır.

@Levent : İsim toplama hadisesi olmadı. Arkadaşlar sağolsun bir değil, iki adet kutu tasarımı yaptılar kartuş için. 3d basım hizmeti veren yerlerde isteyen istediği renkte bastırabiliyor.


Kaan Akkurt'a ait olan tasarım burada,
https://www.thingiverse.com/thing:2912861 (https://www.thingiverse.com/thing:2912861)

AmigaEsref'in tasarımı, 3d basım için misket'in (Gökhan Memik) fix ettiği bir tane daha var. O da şurada.
https://www.thingiverse.com/thing:2886727 (https://www.thingiverse.com/thing:2886727)




Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Levent (Lvnt) üzerinde Eylül 19, 2018, 10:42:08 ÖÖ
@i_r_on: Teşekkürler


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Kaan Akkurt üzerinde Eylül 19, 2018, 11:26:48 ÖÖ
irqhack kutusu için biryerlere isim yazdırmışmıydık? Ya da öyle bir isim toplama hadisesi oldu mu?

Levent hocam,
Kutular şurada konuşulmuştu.
http://www.commodore.gen.tr/forum/index.php?topic=15503.150 (http://www.commodore.gen.tr/forum/index.php?topic=15503.150)


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Eylül 24, 2018, 02:31:40 ÖÖ
Vakit buldukça kartuş üstünde çalışmaya devam ediyorum. Şu an api'li versiyonda eski firmware'in özelliklerini tekrar yeni firmware altında toplamaya çalışıyorum.

Video ve ses oynatmak için statik buffer'ları ortadan kaldırıp sram'den yer açma yoluna gittiğimi daha önce yazmıştım.

Bu giden buffer'lardan biri de 100 byte yer tutan, her girilen dizini takip etmeye yarayan buffer'dı. Her içine girilen dizini bir stack veri yapısı içinde saklıyordum. Sebebi ; kullandığım SdFat kütüphanesinin bir üst dizine geçme gibi bir yeteneğinin olmaması  :(
Mevcut firmware bu yüzden her dizine girişte stack'e dizinin ismini atıyor, geriye çıkıldığında da stack'ten çıkarıyor. Bir üst dizine çıkılmak istendiğinde mevcut dizin stack'ten çıkarılıp kök dizine gidiliyor, daha sonra stack'in dibinden itibaren girilmiş dizinlere giriliyor.

Yeni firmware'de bu değerli 100 byte'ı artık tutmayıp bu işi C64 tarafına yıkmaya karar verdiğimde ister istemez dizin destekleyen kodların elden geçmesi gerekti. Bunu büyük ölçüde hallettikten sonra arduino tarafında daha önce yapılmış bu stack tabanlı üst dizine geçme implementasyonunun da c64 tarafında yapılması kısmı kalmıştı. Bugün bunu da hallettim.

Bu arada yeni firmware ile beraber kartuşun ismi de değişecek, EasySD olacak.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Tesellum üzerinde Mayıs 28, 2019, 20:52:51 ÖS
Selam,

İlk üretim irqhack64'ü turbo sürüme yükselteyim dedim :(

şuan kartuş devre dışı kaldı, reset fonksiyonu çalışıyor,
butona basınca arduino mavi lamba yanıp sönüyor okuma yapıyor fakat menü gelmiyor, c64 ekranı silinip ready de bekliyor.

epromu doğru yazdığımı düşünüyorum; bin dosyasını eproma yazdım, doğrulamada yaptım hatta epromu denemek için turbolu diğer irqhack64 de denedim sorunsuz çalıştı.

arduino hex dosyasıda hatasız yüklendi gözüküyor ekli fotoda gözküktüğü gibi.

Nerde hata yaptım çözemedim!!!


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Voltron üzerinde Mayıs 28, 2019, 20:55:45 ÖS
Selam,

İlk üretim irqhack64'ü turbo sürüme yükselteyim dedim :(

şuan kartuş devre dışı kaldı, reset fonksiyonu çalışıyor,
butona basınca arduino mavi lamba yanıp sönüyor okuma yapıyor fakat menü gelmiyor, c64 ekranı silinip ready de bekliyor.

epromu doğru yazdığımı düşünüyorum; bin dosyasını eproma yazdım, doğrulamada yaptım hatta epromu denemek için turbolu diğer irqhack64 de denedim sorunsuz çalıştı.

arduino hex dosyasıda hatasız yüklendi gözüküyor ekli fotoda gözküktüğü gibi.

Nerde hata yaptım çözemedim!!!


Benim de basima boyle bir sey gelmisti. Sanirim Turbo moddan cikiyorduk duzeliyordu. Tam hatirlayamiyorum.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Tesellum üzerinde Mayıs 28, 2019, 20:59:26 ÖS
Bu durumda, eski hex dosyasını geri yüklemem gerekecek, ama oda silindi :)


 


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Voltron üzerinde Mayıs 28, 2019, 21:00:45 ÖS
Hayir cihaz update ten sonra arafta kaliyor. Reset butonunu 5 saniye basili tut, tuzelmesi lazim.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Tesellum üzerinde Mayıs 28, 2019, 21:07:38 ÖS
Aynen öyle olmuş kaç saniye bastım, kaç kez kapatıp açtım bilemiyorum ama düzeldi.
Artık turbo moddayım :)
Teşekkürler.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Mayıs 29, 2019, 11:25:36 ÖÖ
Geçmiş olsun Tesellum, Volkan'ın dediği gibi normal mode/ turbo mode arası geçiş sağlayan 5 sn'den uzun basma işlevini kullanmak gerekiyor.

Arafta kalma olayı şöyle bir şey : İlk firmware'de eeprom hiç kullanmıyordum, sonraki firmware'de kullanmaya başladım. Normal şartlarda kartuşun eeprom'u initialize edip normal modda kullanıma başlatması lazım ama orada bir bug'ım var muhtemelen. Aynı durum sıfır alınmış atmega328 yeni programlandığında yaşanmıyor.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Tesellum üzerinde Mayıs 29, 2019, 19:46:37 ÖS
Teşekkürler Nejat Hocam,
5sn. den uzun basma işlevini bilmeyince biraz ter döktüm ama sonuçta Turbo ya geçebilmek güzel oldu.
Tekrar emeğine sağlık.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Simon (Özay Turay) üzerinde Haziran 10, 2019, 01:18:23 ÖÖ
@i_r_on: avrdude satırına -e parametresi eklersen upgrade edenler için çipi sileceğinden bu tarz sorunları en za indirgemiş olursun.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: i_r_on üzerinde Haziran 10, 2019, 11:07:44 ÖÖ
@i_r_on: avrdude satırına -e parametresi eklersen upgrade edenler için çipi sileceğinden bu tarz sorunları en za indirgemiş olursun.

Eyvallah. Eeprom'un silinmesine yönelik bir şey var mı hiç bakmamıştım. Şimdi hatırımda yok ama -U opsiyonunu kullandığım için flash siliniyordu. Eeprom için de demek ki benzer komut vermek lazım.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Verminaard üzerinde Nisan 01, 2020, 20:39:28 ÖS
Selamlar

Ben de almak istiyorum bu kartuştan. Özel mesaj attım ama sanırım bir sorun var, gitmiyor. Buradan yazayım dedim.

Teşekkür ederim.

O.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Exorcist üzerinde Şubat 22, 2021, 07:54:29 ÖÖ
Merhaba, özel mesaj attım, bende almak istiyorum


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Barış Yeni üzerinde Şubat 23, 2021, 09:28:32 ÖÖ
Bu kartuşun üretimi yok bildiğim kadarıyla. Elinde olup satmak isteyenler için aranıyor kısmına post açabilirsiniz.


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: solitude üzerinde Şubat 23, 2021, 09:46:40 ÖÖ
http://www.tepetaklak.com/tr/IRQHack64/ (http://www.tepetaklak.com/tr/IRQHack64/)

Bu linkte, iletişime geçilirse temin edilebileceği yazıyor en altta...


Konu Başlığı: Ynt: IRQHack64 - EPROM Kullanan :) Prg Yükleyici Kartuş
Gönderen: Barış Yeni üzerinde Şubat 23, 2021, 10:19:40 ÖÖ
http://www.tepetaklak.com/tr/IRQHack64/ (http://www.tepetaklak.com/tr/IRQHack64/)

Bu linkte, iletişime geçilirse temin edilebileceği yazıyor en altta...

 ::)