Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.

Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz

  Gelişmiş Arama
insanın içinde varsa, commodore.gen.tr açığa çıkarır bunu.. bir nevi retro olaylarının dolunayıyız.(Arda)
commodore.gen.trGenel KategoriProjeYeni board'lu C64'ler için switchsiz, kablosuz 7 kernal mod
Sayfa: 1 2 [3] 4   Aşağı git
Yazdır
Gönderen Konu: Yeni board'lu C64'ler için switchsiz, kablosuz 7 kernal mod  (Okunma Sayısı 34535 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
ilkerficicilar
Uzman
*****
Mesaj Sayısı: 1.118


Üyelik Bilgileri WWW
« Yanıtla #30 : Ekim 31, 2017, 11:38:45 ÖÖ »

Eğer deneme amaçlı her açılışta yeni kernal'a geçiyorsa, attiny kernal'i değiştiremeden C64 default kernal ile çoktan açılmış, program counter kernalde bir yerlerde dolaşmaya başlamış ve tam o sırada da attiny yeni kernal'i devreye almış ve program counter kendini yabancı topraklarda bulmuş olabilir.

Bu, benzer kernallerde her değişimin sorunsuz gözükmesini açıklıyor.
Logged

http://cbm.ficicilar.name.tr/ - Commodore Hacking
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #31 : Ekim 31, 2017, 12:04:54 ÖS »

Eğer deneme amaçlı her açılışta yeni kernal'a geçiyorsa, attiny kernal'i değiştiremeden C64 default kernal ile çoktan açılmış, program counter kernalde bir yerlerde dolaşmaya başlamış ve tam o sırada da attiny yeni kernal'i devreye almış ve program counter kendini yabancı topraklarda bulmuş olabilir.

Bu, benzer kernallerde her değişimin sorunsuz gözükmesini açıklıyor.

Ama işte bunun antitez'i de şu, sadece eprom okumayı kaldırdığım zaman ki bunun zaman karşılığının nano saniyeler mertebesinde olması lazım sistem her seferinde düzgün çalışıyor (akşam eprom okumanın başına ve sonuna gpio toggle yapıp logic analyzer ile bir süre ölçümü yapayım bakayım)
Logged

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

twitter | blog
ilkerficicilar
Uzman
*****
Mesaj Sayısı: 1.118


Üyelik Bilgileri WWW
« Yanıtla #32 : Ekim 31, 2017, 12:18:18 ÖS »

Bu arada kartın fotosuna göre bu Attiny85'te kristal yok. Yani 1MHz'de çalışıyor (dahili osilatör 128KHz x8 multiplier). Şimdi Datasheet'e baktım, şöyle bir şey de demiş:

"When the EEPROM is read, the CPU is halted for four clock cycles before the next instruction is executed. When the EEPROM is written, the CPU is halted for two clock cycles before the next instruction is executed."

Bu arada bizim 6510 0.35 MIPS. Bu ise 1 MIPS... 6510'un program counter'ı okuyup dallanması, tahminen BRK kadar bir zaman alsa 7 us kaybediyoruz açılışta. Tabii 6510'un PC'yi FFFC'deki değerle yüklemeden önce kernal'in değişmesi şart. Yani ~2 us içinde. Halbuki Attiny daha eeprom okur yazarken 6 us'ye maloluyor, ilgili komutları işlemesi vb. daha var. Hızını kristalle 8 MHz'ye çıkarırsak eğer, eeprom kaybı 6/8 us'ye düşüyor. Komutların da 3 kat hızlı işlendiğini düşünürsek 10/8 us içinde yaklaşık 10 atomik komut işletebiliyoruz. Aslında eeproma yazma işini de geciktirirsek 12 cycle'ımız var demektir. Attiny'nin interruptlarını da kaparsak ve ilk iş kernali değiştirirsek 8MHz'lik bir attiny ile 6510 $FFFC'yi okumadan önce kernali değiştirme şansı var gibi.
Logged

http://cbm.ficicilar.name.tr/ - Commodore Hacking
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #33 : Ekim 31, 2017, 14:01:37 ÖS »

Alıntı sahibi: ilkerficicilar
Mevcut haliyle kernal değişimini nasıl yapıyoruz? Jumper mı var?

Kernal seçimi için jumper yok. Yöntem seçimi için jumper var. Accelerometer ile veya A13'ün switch edilmesiyle olacak ikinci yöntem.


Bu arada kartın fotosuna göre bu Attiny85'te kristal yok. Yani 1MHz'de çalışıyor (dahili osilatör 128KHz x8 multiplier). Şimdi Datasheet'e baktım, şöyle bir şey de demiş:

"When the EEPROM is read, the CPU is halted for four clock cycles before the next instruction is executed. When the EEPROM is written, the CPU is halted for two clock cycles before the next instruction is executed."

Bu arada bizim 6510 0.35 MIPS. Bu ise 1 MIPS... 6510'un program counter'ı okuyup dallanması, tahminen BRK kadar bir zaman alsa 7 us kaybediyoruz açılışta. Tabii 6510'un PC'yi FFFC'deki değerle yüklemeden önce kernal'in değişmesi şart. Yani ~2 us içinde. Halbuki Attiny daha eeprom okur yazarken 6 us'ye maloluyor, ilgili komutları işlemesi vb. daha var. Hızını kristalle 8 MHz'ye çıkarırsak eğer, eeprom kaybı 6/8 us'ye düşüyor. Komutların da 3 kat hızlı işlendiğini düşünürsek 10/8 us içinde yaklaşık 10 atomik komut işletebiliyoruz. Aslında eeproma yazma işini de geciktirirsek 12 cycle'ımız var demektir. Attiny'nin interruptlarını da kaparsak ve ilk iş kernali değiştirirsek 8MHz'lik bir attiny ile 6510 $FFFC'yi okumadan önce kernali değiştirme şansı var gibi.

Çoğu (belki de tüm) AVR 8-bit mikrocontroller'larda dahili osilatör var. Kristal takmadan da kullanabiliyorsun. Bu osilatörler 8mhz / 6.44mhz ile de çalıştırabiliyorsun, yahut PLL'i de devreye sokup 16mz de çalıştırabiliyorsun. Bu üç alternatifi de değişik SUT (start up time) değerleri ile denedim. 6.44mhz ile çalıştı sadece.

Bu noktada aslında tek başına hıza güvenmek istemiyorum, güvenemem de zaten. Attiny'nin çalışmaya daha erken başlayacağı varsayımıyla hareket ediyorum. 6510 işlemcisinin reset süresi epey uzun. Spek'e göre 700 küsür milisaniye, ben gerçi pratikte 260ms gibi bir şey ölçtüm. AVR için verilen zamanlama bundan çok daha az. Tabii pratikte bu böyle oluyor mu iyice irdelemek lazım.

Osiloskopta bir kanalda 5v hattını bir kanalda da eprom switch etme sinyalini kıyaslasam aslında bana fikir verir. Sıkıntı şu ki ben osiloskopu kullanmaya bu derece aşina değilim

Logic analyzer sıkıntı çıkarmayacaksa ilk onunla kontrol ederim.
Logged

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

twitter | blog
ilkerficicilar
Uzman
*****
Mesaj Sayısı: 1.118


Üyelik Bilgileri WWW
« Yanıtla #34 : Ekim 31, 2017, 14:29:11 ÖS »

Attiny, gücünü Eprom soketindeki +5V'dan alıyor değil mi?
6510 ile aynı +5V izine bağlı. Her ikisi de şalter açılır açılmaz elektrik alıyorlar.
Şu an şemayı/kartı tam anımsamıyorum ama 250469'da güç verilir verilmez 6510'da bir gecikme yaratacak bir şey yok diye anımsıyorum. Reset sinyali farklı tabii, ama ilk güç aldığında hemen koşup PC'yi FFFC-D ile yüklemiyor muymuş? Akşam bir bakayım anakarta.
Logged

http://cbm.ficicilar.name.tr/ - Commodore Hacking
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #35 : Ekim 31, 2017, 15:16:31 ÖS »

Attiny, gücünü Eprom soketindeki +5V'dan alıyor değil mi?
6510 ile aynı +5V izine bağlı. Her ikisi de şalter açılır açılmaz elektrik alıyorlar.
Şu an şemayı/kartı tam anımsamıyorum ama 250469'da güç verilir verilmez 6510'da bir gecikme yaratacak bir şey yok diye anımsıyorum. Reset sinyali farklı tabii, ama ilk güç aldığında hemen koşup PC'yi FFFC-D ile yüklemiyor muymuş? Akşam bir bakayım anakarta.


Yemek yedikten sonra bizden zihinsel performans isteyenlere "la bi' dur beynime kan gelsin" deriz ya. O hesap
Logged

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

twitter | blog
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #36 : Ekim 31, 2017, 22:06:34 ÖS »

Zamanlama, belleğin temizlenmemesi vesaire hepsi hikaye sanırım. Yeni bir eprom yazıp deneme yaptım.

0 - Standart Kernal - OK
1 - Jiffy - OK
2 - Dead test - OK
3 - Jiffy - FAIL
4 - Dead test - OK
5 - Jiffy - FAIL
6 - Standart Kernal - FAIL

Sanki durum şu, Dead test basic kullanmadığı için hangi slotta olursa olsun çalışıyor. Diğerleri sadece En alt 4 slotta çalışıyorlar.

Yani, ya tasarımımla alakalı, ya yine gözden kaçırdığım yazılımsal bir detay ile alakalı, ya da montaj ile alakalı bir durum var.

En azından sıkıntıyı bir köşeye sıkıştırdık, araştıracağımız kısımlar azaldı



Logged

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

twitter | blog
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #37 : Ekim 31, 2017, 22:40:04 ÖS »

Ve mutlu son

B portunda sadece PB0/PB1/PB2 ile ilgilendiğim halde DDRB'yi ve PORTB'yi niye bodoslama set edemediğimi anlamış değilim ancak aşağıdaki kod çalıştı. (İlk yaptığım youtube'a da yüklediğim arduino denemesinin çalışmış olmasından hareketle hızlıca tekrar koda yöneldim.)

Kod şu,

Kod:
	DDRB = (DDRB & 0xF8) | 0x07; //0,1,2 output. 3 input
uint8_t val = eeprom_read_byte(0);
PORTB = (PORTB & 0xF8) | (val & 0x07);
val = (val + 1 ) & 0x07;
eeprom_write_byte(0, val);

Basit hali çalıştığına göre fantaziye yönelebiliriz artık biraz
Logged

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

twitter | blog
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #38 : Nisan 13, 2018, 02:39:26 ÖÖ »

Bu projeyle ilgili accelerometer ile kernal seçimi için epey bir fantazi yapmıştım, türlü sıkıntılardan dolayı olaylar istediğim gibi gelişmedi. Epey bir ara vermiştim. Yakın zamanda yeniden başladım.

Bir de yazılım yollu yöntemden yürüyeyim dedim.

Burada daha önce yazdığım aşağıdaki sistemle başladım önce,

http://www.commodore.gen.tr/forum/index.php?topic=14781.msg183908#msg183908

Aklımda herhangi bir zamanlama ayarı yapılmadan göndericinin hızına adapte olabilecek bir mekanizma vardı. Sonra birden uyandım, ben aynı işi aslında IRQHack64 kartuşunda da yaptım hatta onun ESP8266 versiyonunda ve başlayıp ama bitmeyen V2 versiyonunda da biraz farklı şekilde de olsa uygulamaya çalıştım.

Bu işi yapmak için Kernal+Basic rom'un olduğu yerde modüle edebileceğimiz bir sinyale ihtiyacımız var. Eski board'larda deneme yapmak zorunda olduğum için kernal'in /CS sinyalini önce bu iş için kullandım. Ancak bu sinyal ile ilgili şöyle bir sıkıntı tespit ettim, tüm interrupt'lar durdurulsa ve kernal'e bilfiil erişim olmasa bile mütemadiyen bu sinyal değişip duruyor. Devam edebilmek için eski board üstünde PLA'dan gelen /BASIC ve hali hazırda zarar görmesin diye çıkardığım SID soketi üzerindeki Sid'in /CS&nbsp; sinyalini denedim. Onlarda /KERNAL sinyali gibi bir sıkıntıyla karşılaşmadım.

Yeni board'larda rom'un chip select sinyali /KERNAL AND /BASIC şeklinde. /KERNAL sinyali ile ilgili sıkıntıyı çözmeden finale ulaşmam mümkün değil ancak yine de ilerledim.

Yöntem şu, C64 tarafında kernal switch edecek program açılışta hiç BASIC'e erişmiyor. Daha sonra 0 göndermek için basic bellek alanında bir adrese tek bir erişim yapıyor, kısa bir süre bekliyor sonra bir erişim daha yapıyor. 1 göndermek için de aynı şeyi yapıyor, tek farkı 1 göndermek için arayı 0 göndermeye göre biraz daha uzun tutuyor,

Yani /BASIC sinyalinin görüntüsü şöyle oluyor



Attiny85 tarafındaki lojik de şu, dinlenen sinyalin her 1'den 0'a geçişinde bir interrupt tetikleniyor. İlk interrupt olduğunda zaman tutmaya başlıyor, ikinci interrupt olduğunda iki interrupt arası geçen zamana (B-A) bakıyor, kontrol eden programın gönderdiği sürelerle uyumluysa tamam bir bit aldım diyor.

Peki, Basic'e normal şartlarda erişen bir program da bu aynı süreci tetiklemez mi? Tetikler. Bu yüzden attiny özellikle dinlediği kernal seçim programından 24 bitlik özel bir bit dizisi gelmeden devamında gelen 8 bit'i işleme almıyor. Yani sıradan çalışmadan ötürü basic belleğine yapılan erişimler hem bizim belirlediğimiz düzene uymalı hem de bu rastgelelik içinde 24 bit'i bizim belirlediğimiz ile aynı olmalı ki bizim microcontroller'ı afallatsın. Microcontroller üzerinde çalışan program zaman uyumsuzluğu varsa herşeyi baştan başlattığı için rastgele bir kernal değişikliği olma ihtimali iyiden iyiye azalıyor.


Neyse efendim sadede geleyim, değişik sorunlarla epey bir uğraştıktan sonra nihayetinde çalıştırmayı başardım




* Transmission.png (1.11 KB, 287x170 - Görüntüleme: 2127 kez.)
« Son Düzenleme: Nisan 13, 2018, 02:41:46 ÖÖ Gönderen: i_r_on » Logged

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

twitter | blog
Voltron
Uzman
*****
Mesaj Sayısı: 2.160



Üyelik Bilgileri
« Yanıtla #39 : Nisan 13, 2018, 09:11:16 ÖÖ »

Harika haberler IR_O_n. Eline sağlık.
Logged

Metal grupları çok bağırıyor. haklıyken haksız duruma düşüyorlar...
ilkerficicilar
Uzman
*****
Mesaj Sayısı: 1.118


Üyelik Bilgileri WWW
« Yanıtla #40 : Nisan 14, 2018, 08:29:32 ÖÖ »

Bu gayet süpersonik bir şey olmuş.

Peki bir sonraki açılışta son seçimi anımsıyor ve hep o kernal ile başlayabiliyor mu?

Yurtdışı ticari potansiyeli de var bunun ayrıca
Logged

http://cbm.ficicilar.name.tr/ - Commodore Hacking
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #41 : Nisan 14, 2018, 14:53:14 ÖS »

Bu gayet süpersonik bir şey olmuş.

Peki bir sonraki açılışta son seçimi anımsıyor ve hep o kernal ile başlayabiliyor mu?

Yurtdışı ticari potansiyeli de var bunun ayrıca


Pek tabii, ikinci bir seçim yapılmadığı sürece son yapılan seçim geçerli oluyor.
Logged

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

twitter | blog
ibo1973
Uzman
*****
Mesaj Sayısı: 2.440


Üyelik Bilgileri
« Yanıtla #42 : Nisan 16, 2018, 09:46:27 ÖÖ »

c64 adına iyi olmuş tebrikler ancak bunun benzeri amiga1200 için lazım Kahkaha
Logged
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #43 : Nisan 20, 2018, 02:13:03 ÖÖ »

c64 adına iyi olmuş tebrikler ancak bunun benzeri amiga1200 için lazım Kahkaha

C64'e geç sahip olduğum için doğrudan PC'ye geçtim zamanında. Amiga benim için hem yazılım hem de donanım anlamında oldukça bakir bir alan. Kullandığım teknik aynı mantıkla /OE hattı olan herhangi bir rom çipinde aynen kullanılabilir. Tabii bir de ROM'a erişimin yazılım ile kapatılabiliyor olması gerekiyor. Bunun için tek gereken N adet rom'u yazacak daha büyük bir eprom, uygun bir adaptör pcb ve amiga tarafında bu switcher'ı destekleyecek bir yazılım.

Bu arada, sonunda ilk c64'üme kıydım ve bu projenin testleri için kernal+basic rom'unu desolder edip mod'u uyguladım. Bir iki tökezleme, debug vesaireden sonra düzgün çalıştırmayı başardım. Tek sorun bazen kernal'i switch etmemesi, onu da logic analyzer ile deneye deneye çözerim muhtemelen.

Geriye pcb tasarımını sadeleştirme, yükseklik profilini azaltma gibi şeyler kalıyor. 250469 board'larda kernal rom tam da keyboard için koyulan metal bracket'ın altına geliyor. ICSP header'ını diğer tarafa atmam lazım, DIP 7408 yerine küçük üç tane smd and kapısı koymam lazım filan.
Logged

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

twitter | blog
Simon (Özay Turay)
Yönetici
*****
Mesaj Sayısı: 7.587


Commodore Forever


Üyelik Bilgileri WWW
« Yanıtla #44 : Nisan 20, 2018, 08:35:22 ÖÖ »

Header'ı lehimlemezsen yerini de değiştirmene gerek kalmaz. Programlayacağın zaman erkek pinleri takıp bir tarafa çekiştirerek temas etmesini sağlar ve programlarsın.
Logged

https://retrodergi.com - https://e-turay.com - https://karizmawow.e-turay.com

Retro: Commodore 64, Amiga 500, Amiga 1200
Retromsu: Wii, XBox360, XBox, PS3 Slim, PS2 FAT, PS1, PS Vita, Nintendo 3DS, Nintendo 2DS
Sayfa: 1 2 [3] 4   Yukarı git
Yazdır
Gitmek istediğiniz yer: