Tünelin ucu bombok bir yere çıktı

Arada update geçeyim bari de belki bir el atan, yol gösteren çıkar

İlk etapta gelen prototip pcb'lerin sağlığını kontrol etmek için pcb'lerden birine montajı tamamladım ve elimdeki soketli* c64c board'a takmaya çalıştım.

Bu noktada yaşadıklarımı yazsam muhtemelen 4-5 paragraf yazı olur o yüzden kısa geçiyorum. Ben eldeki pcb'lerin sağlığını kontrol edeceğim derken c64'ün ağır hasta olduğunu fark ettim. Bu da işin yazılım ayağını epey bir sekteye uğrattı.
Nihayetinde Attiny85 üstüne attığım kodla bir şeyler yapabildim.
Burada kernal switch etmenin genel mantığı çalışıyor mu diye 1'den 7'ye her kapanış açılışta sıradaki rom'a switch eden basit bir yazılım var. Attiny85 için yazılımı arduino ile yazdım. Kod eepromdan son seçilen kernal no'sunu okuyor, switch ediyor, bir arttırıyor ve eeprom'a yazıyor. Ve en önemlisi, çalışıyor

İş biraz ciddiyete binsin dediğim noktada, ilk olarak accelerometer (ivme ölçer) kullanıp c64'ü açtıktan sonra havaya kaldırıp, indirdiğimde eprom'u switch edeyim dedim. Bu da çalıştı. Bu aşamaya kadar kullandığım kernal rom set'i tamamen dummy. Açılıştaki c64 yazısı, c65, c66, c67 falan diye değişiyor sadece.
Dur dedim şöyle kanlı canlı jiffy'si olsun, exos'u olsun efendime söyleyeyim sd2iec için özel yazılmış kernal olsun bir şeyler deneyeyim. (İşe yarayacak custom kernal bulmak da epey zor, aşağıdaki yaptığım seçim saçma sapan oldu)
Şöyle bir set yaptım,
1- Standard Kernal
2- Cockroach turbo rom (ne alaka?)
3- Datel tubo rom
4- Exos v4
5- Jiffy dos
not: indirdiğim yerde itin biri Türk diyerek haksız yere ismi Özkan (ozkano sen misin?) olan birine hakaret etmiş.
http://www.nightfallcrew.com/27/07/2009/jiffydos-kernal-roms-manual-download-linkjiffydos-kernal-roms-manual-download-link/Ben tamamen bilime faydası dokunsun diye indirdim, onu belirteyim.
6- Sd2iec
7- Buraya ne koydum unuttum bak...
Neyse efendim, başladık denemeye. Standard kernal sıkıntı yok, Cockroach turbo rom ona da geçti, Datel bıdı bıdı ona da geçtik. Exos'a gelince ekranda bir M-R yazısı. Jiffydos'a geçiyoruz ortalık dağılıyor. Sd2iec custom kernal aynı şekilde. Standard kernal'e geçince yine sıkıntı yok, devamında da öyle falan...
Hemen sıralı otogaz sistemi olan atiker'e, pardon sıralı kernal switch yapan yazılıma geçtim. Durum onda da aynı.
Neyse daha da fazla uzatmayayım, tünelin ucunu anlatayım. Sorunun attiny85'in rom'u switch etme zamanlaması ile ilgili olduğunu değerlendirdim. Şöyle ki, c64'e elektrik verildiğinde Attiny85'in seçim yapacağı çıkışlar input modunda ve low pozisyonunda olacağı için her zaman standart kernal seçili olarak açılacak c64.
Ancak ben attiny85'in c64 reset sinyalini daha sindirmeden çalışır vaziyette olacağını düşünmüştüm. (İşin pratik tarafına dair de ölçümlerim vesaire var fakat tam olarak sindiremediğim için yanlış bir şey paylaşmış olmayayım.)
Netice itibariyle, denediklerim, bulduklarım.
1 - Attiny85'de olabildiğince hızlı bir başlangıç yapabilmek için Atmel studio'ya geçtim. Fayda sağlamadı.
2 - Eeprom okuma fonksiyonunu kaldırıp doğrudan jiffydos'u seçen bir kod çalıştırdığımda c64 jiffydos ile açılıyor. Bunu da sadece belli internal osc. ve sut fuse değerleri ile yapabiliyor. Başa eeprom okuma fonksiyonu konunca çalışmıyor. (Oysa eeprom okuma nanosaniyeler mertebesinde bir olay... içine düştüğüm zamanlama kıskacı bana bu kadar az zaman bırakıyor olamaz)
Çalışan iki custom kernal'in de çalışabilmesinin sebebi olarak açılışta standard kernal ile ortak kod içermesi olabileceğini düşünüyorum. Oturup incelemedim pek tabii. Ancak bkz. 4.
3 - Commodore C64 kısa board'larda reset devresinden 556 çözümünü çıkarıp RC + 7414 schmitt trigger çözümüne gitmiş. Service manual'lerde 500ms reset süresi bahsediliyor hep ancak teoride bu kısa board'ların reset süresi 726ms civarı olması lazım. Elimdeki daha eski 250466 , 250425 board'larda kontrol ettiğimde bu sürenin 1.5 saniye civarlarına bile çıktığını gördüm. Kullandığım güç kaynağından mı bilmiyorum, nano saniyeler mertebesinde epey gürültü oluyor reset hattında. (Yazıyı bitirince DC adaptör denemesi yapacağım)
http://www.lemon64.com/forum/viewtopic.php?t=659324 - Tespit ettiğim bir başka fenalık ta şu şekilde. Power on sırasında kernal'i seçemedim. Ortalık dağıldı eyvallah. Ancak kartuş üstünden c64'ü reset ettiğimde de bu problemli olan rom'lara switch edemiyorum. Bu aşamada aslında benim kernal mod devremin işi çoktan bitmiş ve devredeki 27c512 eprom'un yüksek adres hatlarını doğru bir şekilde seçmiş oluyor.
Özellikle de bu son maddeden dolayı şüphelerim tamamen elimdeki hasta c64'e ve güç kaynağına yönelmiş durumda. Eski daha fazla güç isteyen board'lardaki yüksek reset süreleri de gücün açılışta 5v'a çıkmakta epey zorlandığı hissini uyandırdı bende. Reset fonksiyonunda kullanılan kapasitörler stabil hale gelemeyen 5v hattı yüzünden muhtemelen geç doluyor ve reset sekansının geç başlamasına sebep oluyor. Attiny'e başlangıç kodunda eklenen yahut çıkarılan eeprom okumasının da bu derece ciddi etki ediyor olması kısmı ise hala muamma.
*fena tamir görmüş... soketli olması beni daha baştan uyandırmalıydı diyorum