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.trCommodoreCommodore YazılımIRQhack64 ile 8 Saniyede GEOS:
Sayfa: [1] 2 3 4   Aşağı git
Yazdır
Gönderen Konu: IRQhack64 ile 8 Saniyede GEOS:  (Okunma Sayısı 36937 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
ilkerficicilar
Uzman
*****
Mesaj Sayısı: 1.122


Üyelik Bilgileri WWW
« : Nisan 19, 2016, 13:40:11 ÖS »

Dosya şurada:

http://cbm.ficicilar.name.tr/dosya/geossnap.zip

Bunun içindeki GEOSSNAP dosyasını SDcard'a atıyoruz, SDcard'ı IRQhack64'e takıyoruz, menüden bunu seçiyoruz, IRQhack64'ün tuşuna uzun süre basarak autoboot haline getiriyoruz. Bu sayede C64'ümüz 8 saniye içinde GEOS ile açılıyor. Kullanabilmek için 8 no'lu sürücüde bir GEOS disketine veya SD2IEC'ye hâlâ ihtiyaç var gerçi. Commodore-O tuş kombinasyonu ile taktığınız GEOS disketini yeniden okutabilirsiniz.

Bu GEOSSNAP dosyasını hazırlamak için yapılan adımlar ise şöyle:

1. GEOS source'u https://github.com/ytmytm/c64-GEOS2000 adresinden indirilir.

2. Daha önce bir yerlerde bahsetmiş olduğum optimizasyonlar yapılır ve derlenir.

3. Oluşan dosya pucrunch ile sıkıştırılır.

4. Sıkışık dosyaya müdahele edilerek açma işleminden sonra $0400-$46FF ile $5200-$8FFF arasını $BB değeri ile doldurması sağlanır ardından $5000'a zıplaması sağlanarak normal GEOS boot işlemini başlatması sağlanacak şekilde kaydedilir.

5. Bu yeni geos kernal yüklenir. Disket sürücüye GEOS diski takılır ve çalıştırılır.

6. GEOS freeze edilir. $8492 adresine $00 değeri yazılır (disk turbo yüklü değil bilgisi için) ki bu freeze image'ı yüklediğimizde disk işlemleri doğru çalışabilsin.

7. Bu yeni imaj kaydedilir. Super Snapshot 5 kullandım (Megaone kartuşu hazır olunca bu kartuşun imajını Megaone ile çalıştırmak mümkün olabilecek). 201 block'a indi. Yukarıdaki $BB ile doldurma işlemini de zaten dosya boyutu küçültmek için yapmıştık. 202 blok'tan fazla olursa IRQhack64 ile yükleyemiyoruz (I/O alanıyla çakışıyor).

8. Sanırım ayrıntılar bu kadar.


Logged

http://cbm.ficicilar.name.tr/ - Commodore Hacking
Simon (Özay Turay)
Yönetici
*****
Mesaj Sayısı: 7.764


Commodore Forever


Üyelik Bilgileri WWW
« Yanıtla #1 : Nisan 19, 2016, 14:27:13 ÖS »

Bu tarz trick'ler projelerimize değer katıyor. Teşekkürler.
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
LW3D
Yönetici
*****
Mesaj Sayısı: 11.415


Günü Kurtaran Avam Hiooargggh :)


Üyelik Bilgileri WWW
« Yanıtla #2 : Nisan 19, 2016, 14:32:25 ÖS »

Maşallah 10 saniyeye düşmüş...Zamanında böyle çözümler olsa, yer yerinden oynardı herhalde

teşekkürler
Logged

ilkerficicilar
Uzman
*****
Mesaj Sayısı: 1.122


Üyelik Bilgileri WWW
« Yanıtla #3 : Nisan 19, 2016, 14:49:42 ÖS »

30 yıl kadarcık geç kaldık

Bu arada, bizim çözümümüz çok çok daha hesaplı. Daha hızlı olan 1541 Ultimate II için istenen 2. el fiyatı şöyle mesela:
http://www.ebay.co.uk/itm/Commodore-64-1541-ULTIMATE-2-with-tape-adapter-/401100011622?hash=item5d636c7866%3Ag%3AnPoAAOSwcBhWUE~X
(600 Sterlin istemiş!)

Şimdi, bizim çözümü tamamlayacak bir diğer unsur batarya destekli RAM'a sahip bir GEORAM/NEORAM.
Logged

http://cbm.ficicilar.name.tr/ - Commodore Hacking
KNG
Üye
****
Mesaj Sayısı: 315



Üyelik Bilgileri
« Yanıtla #4 : Nisan 19, 2016, 14:52:41 ÖS »

Arka plan müziği ile daha bir hoş olmuş teşekkürler, tebrikler, irqhack64 elime ulaşınca deneyeceğim.

Kartları yapan tüm arkadaşlara da tekrar teşekkürler.

Logged
ilkerficicilar
Uzman
*****
Mesaj Sayısı: 1.122


Üyelik Bilgileri WWW
« Yanıtla #5 : Nisan 19, 2016, 15:20:55 ÖS »

Teşekkürler. vpr.net 'teki Jazz radyosu açık. Hem güzel seçimleri var hem de sıfır monolog ve reklam... Önerilir

Bu arada, C128'de doğrudan u36 GEOS EPROM'u çözümünü de denemiştim. ROM+1571 yaklaşık 46 saniyede açıldı. Bir ara farklı yöntemlerle açılış sürelerini tablolamalı.

Logged

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



Üyelik Bilgileri WWW
« Yanıtla #6 : Nisan 19, 2016, 23:29:15 ÖS »

Başarılı bir çalışma olmuş. Bir sd card daha aldım geçenlerde, nihayet ben de sd2iec irqhack64 kombosu deneyebileceğim.

tam da bu anda aslında geos ile kullanmak için bir mouse adaptörü süper olurdu.

Bu arada IRQHack64'ün I/O altına transfer yapmaması tamamen bir tercih oldu. Yapamaması için bence hiç bir sebep yok zira kendisi CIA/VIC/SID vesaire hiç bir i/o cihazını kullanmıyor. Prg'ler genelde diskten yüklenecek şekilde hazırlandığından i/o altına yükleme isteyen bir örnekle karşılaşmamıştım. Teypten yükleme yapılabiliyordur muhtemelen ancak diskten yükleme için herhalde bir önyükleyici şart oluyordur.

Eprom'da değişikliğe gidilerek i/o altına yükleme yapılabilir.

Pratik örnekleri varsa denemek isterim.
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.122


Üyelik Bilgileri WWW
« Yanıtla #7 : Nisan 20, 2016, 00:19:53 ÖÖ »

Olsun, böyle daha zorlayıcı oldu İlk deneme 213 bloktu.

Genelde bir Freezer'la kaydedilen oyunlar vb. böyle büyük boyutlu oluyor. Kendi yükleyicileri olduğundan sorun olmuyordu normal kullanımda. Artık hemen her oyun online bulunabildiğinden pek de gerekli değil gibi. Yine de Eprom'da A9 37'yi A9 34 yaparak çözebiliriz gibi. Bu arada, bir düşünce deneyi olarak byte başına 40 mikrosaniye daha kazanamaz mıyız acaba?

Mouse adaptörü yeni bir proje fikri gibi gözüküyor.

Bense yazılımla halletmeye çalışıyorum. Son hali verilmemiş üç ayrı yöntem için GEOS mouse driver:

1. NEOS mouse için. Yazdığım driver gerçek cihazda az sorunluyken (ivmesiz) VICE'ta sorunlu (zıplıyor pointer).
2. Modifiye seri mouse için. Seri mouse mu kaldı diyerek öyle bıraktım. Sitede bir yerlerde olacak yirmi yıllık sürücüsü.
3. PS/2 mouse için. Bunu eskiden yazmıştım. Şimdiyse GEOS driver için ayrılan alana sığması ve polling ile çalışması gerekecek (PS/2 protokolündeki remote mode ile [0xF0]).

Bağlantı için dümdüz datasette portundan bağlantı düşündüm:

Kod:
Teyp PS/2 USB
---- ---- ---
  A    3   4
  B    4   1
  F    1   2
 D,E   5   3

Gerisi bildiğimiz PS/2 protokolü.

Okuma işlemini borderlarda yapmak lazım. Doğru dürüst çalıştırabilirsem, kablosuz mouse'un alıcı devresini C64'ün içine tıkıştırma planındayım.

Yine de Arduino mouse adaptörü daha uyumlu bir çözüm olacaktır. Ama 1351 mouse'u taklit ettirmek zor olabilir.

Bu arada, light pen ile de fena kullanılmıyor GEOS. Kablosuz light-pen yapılırsa o da kullanışlı bir çözüm olur. Dokunmatik ekran kaplaması da bir çözüm, ama baktıklarım epeyi pahalıydı. Aslında, C64c'de sağ alt köşeye, logo'nun olduğu kısma bir touch pad de eklenebilir bir olasılık.

Logged

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



Üyelik Bilgileri WWW
« Yanıtla #8 : Nisan 20, 2016, 00:41:58 ÖÖ »

Mouse için bence joystick portundan standart olandan bir şey düşünmek lazım. Ben o konuya girersem çıkamam Daha sırada bekleyen projeler var.

Biri şu aşağıdaki projeyi üretime geçirse aslında biz de nemalansak
http://svo.2.staticpublic.s3-website-us-east-1.amazonaws.com/[m]ouse/

Sonrası bir kaç ucuz ps/2 mouse edinmeye bakıyor

Şu an 1 byte'ı 37 mikrosaniyede falan transfer ediyoruz, 40 mikrosaniye nasıl azaltacağız? Ben fizikçi değilim valla anlamam o işlerden

Ancak arduino ile c64 sallıyorum her 8 byte transferinde senkron olabilirlerse interrupt'a girme / çıkma overhead'i kısmen ortadan kaybolacağı için 3-4 misli hızlanma sağlanabilir. Soru işareti şu : Senkronizasyon sağlanabilir mi? Kanaatim şu : assembly kodu yazılırsa sağlanabilir.

Yarın osiloskopum gelecek, timing anlamında denemeler yaparım belki önümüzdeki hafta.

interrupt rutini içinde ardı ardına 2'nin katlarında load ve store yapmak, load sonralarında eprom'da bank switch yapma üzerine düşündüğüm şey.

sen de mi aynı şeyi düşünmüştün?
Logged

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

twitter | blog
KNG
Üye
****
Mesaj Sayısı: 315



Üyelik Bilgileri
« Yanıtla #9 : Nisan 20, 2016, 10:22:55 ÖÖ »

http://svo.2.staticpublic.s3-website-us-east-1.amazonaws.com/%5Bm%5Douse/

Bu uzun zamandır aklımda fakat tek sorunum zaman. Keşke Özay bunu gündemine alsa
Logged
ilkerficicilar
Uzman
*****
Mesaj Sayısı: 1.122


Üyelik Bilgileri WWW
« Yanıtla #10 : Nisan 21, 2016, 06:19:29 ÖÖ »

bir zaman makinesi yerleştirmemiz gerekecek demek ki IRQhack64'ün 37 mikrosaniyelik transferini 40 mikrosaniye daha kısaltmak için.

Senkronize transferde bilmediğim bir durum var: Acaba Atmel ısındığında hız düşürür mü? Farklı modüllerde farklı kristal kullanılmış olabilir mi gibi.

Yine de daha bir instant olabilirmiş gibi geliyor. 50K'yı 1-2 saniye içinde atabilmeliydi aslında. Hedef: 2 Saniyede GEOS boot

Logged

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



Üyelik Bilgileri WWW
« Yanıtla #11 : Nisan 21, 2016, 17:20:06 ÖS »

Pro mini üstündeki internal oscilator kullanılmıyor aslında. Baktım da orjinal pro mini tasarımında resonator kullanıldığı ve bunun hassasiyetinin %0.2 olduğu söyleniyor. Benim kullandıklarımdaki kristal görünümlü ancak alıcı gözle bakmadım.

Osiloskopum geldi, şu an şehir dışındayım. Gelince transferi 6502 saatine senkron edebiliyor muyuz bakacağım.

2 saniyeye rahat ineriz bence
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 #12 : Nisan 27, 2016, 00:35:38 ÖÖ »

Hesaplamalarıma göre nmi handler içindeki veri transfer bloğunu 4 defa uygularsak 2.5 misli hız artışı sağlanabiliyor. Sallıyorum 16 defa tekrarlarsak ve senkronize olabilirsek ise bu hız artışı 3.23 misli falan oluyor.

Yani kod şöyle bir şey olacak,

Kod:
	LDA #$EA		
STA (ACTUAL_LOW), Y
INY

LDA #$EA
STA (ACTUAL_LOW), Y
INY

LDA #$EA
STA (ACTUAL_LOW), Y
INY

LDA #$EA
STA (ACTUAL_LOW), Y
INY

Yani LDA #$EA (*) sonrası arduino'nun her seferinde yaklaşık 8 c64 cycle'ı bekleyip bank switch yapması lazım.

*burada EA aslında arduino'nun switch ettiği eprom bank'ına işaret ediyor.

Osiloskop ile istediğim ölçümü yapamadım, bir de logic analyzer ile denerim belki. Ancak deneme yanılma ile de tutturulur bence.

Esas problem bütün transfer kodlarını 4'er byte gönderecek şekilde değiştirmekte. Zamanlama önemli olduğu için döngü kullanmak işi bozabilir. Bu yüzden nmi zamanlamasına dokunmadan transferi yapan metoda 4'er byte göndermem lazı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.122


Üyelik Bilgileri WWW
« Yanıtla #13 : Nisan 27, 2016, 08:00:09 ÖÖ »

Bence bu olur. Önemli olan LDA'lar ve her biri arasındaki o 8 mikrosaniye page değiştirmek için fazlasıyla yeterli.

Konuyu takip edemeyenler için kısa not: Yukarıdaki LDA-STA-INY grupları aslında EPROM'un apayrı yerlerinde yer alıyor, ardışık gibi ama değil. Hangi grubun çalışacağına Arduino karar veriyor, 6510 ise onları ardışık olarak görüyor.

Şimdi bu örnekte anlaşılan 10 mikro saniyede bir page değiştirilecek. Önemli olansa, zamanlamayı kaydırmamak gibi görünüyor. Örneğin, 2.1 mikrosaniyelik bir kayma 4. grubun doğru eprom page'i içinden okunamamasına yol açabilecek.
Logged

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



Üyelik Bilgileri WWW
« Yanıtla #14 : Mayıs 04, 2016, 01:27:11 ÖÖ »

Osiloskop ve logic analyzer'ı kenarda bırakıp deneme yanılma ile bir şeyler yapmaya çalıştım. 4 byte transferi başarısız oldu.

Şöyle bir sorunsal var, Interrupt'a girmeden önce ana döngü var. Interrupt geldiğinde burada kaç cycle bekleneceği belirsiz.

Kod:
WAIT
BIT BITTARGET
BVC WAIT

BIT komutu ve BVC (dallandığı için) 3 cycle'lık komutlar. Interrupt'a girilmeden önce 0-3 cycle belirsiz bir süre var. Uzun transferlerde senkron olmaya engel durumlardan biri bu.

Ancak yaşadığım problem muhtemelen bundan kaynaklanmıyor. Zira aralara NOP'lar serpiştirdiğimde de zamanlama tutmadı.

 

2 byte transferi ile uğraştım, menüye dosya isimlerinin transferinde bir abukluk oluyor ancak onun dışında her şeyi güzel güzel transfer ediyor. Hazır optimize etmişken şu nefret edilen şeritleri de kaldırdım. Nop'ları azalttım. 51K'lık Ghost'n goblins'i mesela data transferi anlamında sadece 1.8 saniye zaman alıyor

Senin GEOS yükleme süresine ne kadar etki eder bilemem.

Videodaki Karateka 45K, SynthCart ise 8k. Kahverengi renk falan siyah ile değişecek, normalde debug amaçlı olarak rom'da duran değişik renkler var kartuş takılırsa nerede takıldığını anlamak için.



ps: Wizofwor'un menü ile deneyemedim, en son under construction durumda olduğu için.
Logged

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

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