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 KategoriProjeDoberman (DMA Tabanlı Kartuş Projesi)
Sayfa: 1 [2] 3 4 ... 15   Aşağı git
Yazdır
Gönderen Konu: Doberman (DMA Tabanlı Kartuş Projesi)  (Okunma Sayısı 151994 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
F_P_G_A
Üye
****
Mesaj Sayısı: 299



Üyelik Bilgileri
« Yanıtla #15 : Eylül 24, 2015, 23:43:31 ÖS »

Alıntı
TDI ve TDO yu dediğiniz gibi ters çevirip de denedim ama zaten LTP üzerinde 2,3,4.. vb olmayan diğer ayrık olan pin genelde LPT tarafına giriş pini. Buradan emin olabiliyorum. TCK da bir clock göreceğimi ben de tahmin ettim ama protkolü bilmediğim için bunu bir anlamı yoktu, hiç kontrol etmedim. Yani Clock üretmeye başlamadan önce bir şekilde orada bir cihaz var mı yok mu detect etmeye çalışmak gibi bir algoritma yada yöntemi olabilir belki diye düşündüm.

Configuration tool'u (sizin durumda PC'de çalışan tool) önce cihazın JEDEC ID kodunu okumak isteyecektir. Bunun için TCK'da clock sinyali ve TDI'da (evet bu kafa karıştırıcı oluyor, slave cihazın data input pini) JEDEC ID okuma komutu datası oluşmalı. Aynı zamanda da TDO'da JEDEC ID'si çıkacaktır.   Programmer-> Device Under Test ->Programmer gibi bir chain aslında JTAG. Ve evet SPI gibi düşünebilirsiniz. En azından PC'de çalıştırdığınız tool'un porta fiziksel olarak erişebildiğinden emin olmuş olursunuz.

Logged
eins
Uzman
*****
Mesaj Sayısı: 1.816


A.K.A. deliMawi


Üyelik Bilgileri
« Yanıtla #16 : Eylül 25, 2015, 00:00:42 ÖÖ »

O zaman TCK sinyalini kontrol ederim tabiki. Bu fikir verecektir.

Gerçi benim demek istediğim aşağıdaki şemaya bakacak olursanız mesela, bir transistor ile karşıda power-on durumunda bir devre var mı kontrol ediyor sanki LPT üzerinden. Bu sinyali almadığı sürece hiç ID okuma ve dolayısı ile TCK üretmeden belki de hatayı çakıyordur emin olamam diye bakmadım bile bu hatlara...

Logged

Doberman ♦ megaOne ♦ HDMI-64 ♦ HDMI-520 ♦ NewSchool
Decypher
Deneyimli
*****
Mesaj Sayısı: 689



Üyelik Bilgileri
« Yanıtla #17 : Eylül 25, 2015, 01:07:45 ÖÖ »

Bu tarz projeler beni aşıyor olsa da başlığı baştan sona büyük bir ilgiyle okudum, fikir olarak gerçekten de çok çok iyi bir proje bu. Sonucunu da merakla bekliyor olacağım. Kolay gelsin delimawi
Logged
F_P_G_A
Üye
****
Mesaj Sayısı: 299



Üyelik Bilgileri
« Yanıtla #18 : Eylül 25, 2015, 17:27:11 ÖS »

Benim de seneler once bastirdigim Byteblaster kartlari bir yerlerde olacak. Altera'nin serisini hatirlamadigim 84pin PLCC kiliftaki FPGAlerini programlamak icin kullaniyordum.  Hafta ici bakacagim. Bulabilirsem ve sizdeki karttaki sorun cozulmemis olursa size gonderirim. Ulvi bir ise yaramis olurlar.
Logged
eins
Uzman
*****
Mesaj Sayısı: 1.816


A.K.A. deliMawi


Üyelik Bilgileri
« Yanıtla #19 : Eylül 25, 2015, 23:49:15 ÖS »

Merhaba,

Bugün CPLD'yi programlayabilmek için diğer PC yi bir güzel kurup, WinXP yükledim. Günün yarısı driverlar, güncellemeler vb ile geçti. Herşey bitip de JTAG kablosunu takıp tekrar denediğimde gene çalışmadığını gördüm. :/

En sonunda LPT konnektörünün bozuk olduğuna karar verip değiştirmeye karar verdim ve o anda farkettim ki, konnektör üzerindeki numaraları ters taraftan lehimlemişim. Yani önceki gün ve bugünümün yarsını boşa harcamış oldum. Neyse kabloyu düzeltince CPLD gayet güzel programlandı.

Zamanlama, Phi2 senkronizasyonu, DMA giriş çıkış vb tüm kritik işleri CPLD içerisinde bitirmek istiyorum. Bu bağlamda CPLD tarafına aşağıdaki işleri yıkmayı planlamış durumdayım:

1-Doğru zamanda DMA'ya giriş.
2-Doğru zamanda DMA'dan çıkış.
3-Doğru zamanda R/W, Adress Enable edilerek C64'e byte yazma (poke)
4-Doğru zamanda R/W, Adress Enable edilerek C64'den byte okuma (peek)
5-C64' Reset atma

Hatta Phi2 ve BA gibi sinyalleri bile hiç PIC tarafına taşımamaya karar verdim. Şu şekilde çalışacak;

- PIC DMA başlatmak istediğinde 'DMA Request' pinini kaldıracak.
- CPLD uygun zamanı bekleyerek DMA başlatacak ve DMA'nın başlamış olduğunu PIC'e IN_DMA pini ile bildirecek.
- PIC Adres latchlerine yazmak yada okuma istediği adresi strobe edecek. Ama latch outputlar CPLD tarafından kontrol edildiğinden C64 tarafına henüz giden birşey yok.
- PIC hazır olduğunda yazmak istediği DATA'yı bus'a koyarak, 'WR Request' pinini kaldıracak.
- CPLD komutu aldığını 'WR Busy' pini ile PIC'e bildirecek.
- CPLD ilk uygun zamanda Phi2 ile senkronize olarak işlemi yerine getirecek ve sonra 'WR Busy' pinini tekrar low yapacak.
- PIC bu sayede işlemin bittiğini anlayacak ve varsa sonraki işlemi request edecek vb...

Çok fazla detaya girmeden bu sistemin nasıl işlediğini gösteren bir kaç foto:

CPLD içerisinde Flip-Flop lar ile küçük bir timer yaptım. Bu sayede BA sinyali low'a düştükten sonra 3 cycle daha sayıp, gerçekten güvenli olarak DMA başlatılabilecek zamanı belirliyor. Aşağıdaki foto da en altta görülen sinyal bu.


Burada da DMA ya giriş prosedürü görülüyor. PIC yeşil sinyal ile, herhangi bir zamanda DMA Request ediyor. CPLD ilk uygun zamanı (BadLine+3Cycle) bekliyor ve gerçek DMA'yı başlatıyor. (Sarı Sinyal).
DMA'dan çıkarken de benzer bir mantık var. Aynı şekilde bir sonraki Bad Line beklenio DMA kapatılıyor. Fotoda ayrıca iki Bad Line arasında DMA açık iken, 6510 AEC hattının hep low da kaldığı görülebiliyor. Yani kontrol bu aralıkta tamamen PIC'te.


Burada da DMA ile C64'e bilgi aktarılması görülüyor. PIC yeşil sinyalde görüleceği üzere herhangi bir yere senkronize olmadan WR Request yapıyor. CPLD mavi ile görülen BUSY sinyalini kaldırıyor. PIC Bekliyor. İlk uygun zamanda Phi2 high iken işlemi yapıyor ve BUSY sinyalini tekrar indiriyor.


İşlemlerin sonucu aşağıdaki fotoda. Burada DMA ile gene ekran rengi değiştirme işini test ediyorum. Gayet başarılı şimdilik. Dikkat edilirse DMA sadece Bad Line olan satırlda gerçekleşiyor. Ekranın üst ve alt kısmında DMA başlatılamıyor. Ayrıca her bir karakter satırının ilk raster hattında DMA olduğundan, çizgiler 8 pixel yani bir karakter yüksekliğinde görülüyor.


Son olarak kartın Latchler de takılmış bugünlük son hali.


CPLD ile DMA giriş çıkış işleri çok güzel oldu, içime sindi. Artık tekrar fırsat bulduğumda CPLD'nin RD ev WR algroitmalarını geliştireceğim. En son olarak karta bir de SPI flash eklenince sona iyice yaklaşmış olacağız...

İyi geceler.
Logged

Doberman ♦ megaOne ♦ HDMI-64 ♦ HDMI-520 ♦ NewSchool
F_P_G_A
Üye
****
Mesaj Sayısı: 299



Üyelik Bilgileri
« Yanıtla #20 : Eylül 26, 2015, 00:03:13 ÖÖ »

Mukemmel olmus tebrikler
Logged
Levent
Deneyimli
*****
Mesaj Sayısı: 527


4'294'967'296


Üyelik Bilgileri
« Yanıtla #21 : Eylül 26, 2015, 01:04:05 ÖÖ »

Gözlerim felfecir okudu resmen. Ne güzel imrenilesi işler yapıyorsunuz. Yakında yeni tasarlanmış amiga board, c64 board çıkarırsanız şaşırmam gibi geliyor. Ellerinize sağlık.
Logged

█ Commodore 64C + MPS1230 █ Commodore 128D █ 2x Naked Amiga500 █ Apple eMac-700 █ WinXp PC █ Win11 PC █
msvstpl
Üye
***
Mesaj Sayısı: 64


Üyelik Bilgileri
« Yanıtla #22 : Eylül 26, 2015, 10:06:52 ÖÖ »

Tebrikler. DMA duvarını aştınız.

I_ron_n’ un “NoFlash64-Eprom kullanmayan 8k/16k kartuş” projesinde sürükleyerek kenarına kadar getirdiği  konuyu siz çözdünüz.

DMA’yı geçtikten sonra artık her şey daha ‘kolay’ olacaktır, yada (daha çok) zaman-bağımlı olacaktır.

Hepsinden önemlisi artık bundan sonra hiçbirşey eskisi gibi olamayacaktır.

İnternet ortamında telif hakları, proje yapıp satma kaygısı.. vb nedenlerle DMA hakkındaki bilgiler dağınık ve sınırlı. Bu  forumda şu ana kadar yazılanlar internette olanların  derli toplu , anlaşılır  çok daha ileri olan hali. Logic analizer’ın sağladığı görsellik (görmeden el ve baston ile yol almaya çalışanların önüne) yepyeni bir pencere , anlama  ve düşünme alanı açıyor.

DMA için  bilgileri özetleyen İngilizce (ve Türkçe) ayrı bir başlık açılması yararlı olur. Projenin ilerleyen sıcaklığında ek bir yük gibi görünsede, başka insanların anlamak için bizim kadar uğraşmayacakları onlara da kolaylık sağlayabilecek bir şekle sokulması faydalı olacaktır. Son 10 gün içinde yazılanlar yüzlerce ingilizce web sayfasının içinde C64 literatürüne şimdiye dek yapılmamış bir katkının bu forum içinde olanaklı olduğunu ve bunun zamanının da geldiğini anlatıyor.

Kolay gelsin..
Logged
KNG
Üye
****
Mesaj Sayısı: 315



Üyelik Bilgileri
« Yanıtla #23 : Eylül 26, 2015, 11:49:14 ÖÖ »

Tebrikler delimawi, çok güzel çalışma oldu. Forumdan harika projeler çıkıyor, buradan iron, metallic ve simon arkadaşlarımızı da tebrik etmek lazım, forumdaki proje yapma bilinci onların sayesinde çok yukarılara çıktı, bu işlere zaman ayırmak kolay değil.
Logged
ibeser (Ayak Takımı)
Deneyimli
*****
Mesaj Sayısı: 2.411


Sega<Nintendo<Amiga


Üyelik Bilgileri WWW
« Yanıtla #24 : Eylül 26, 2015, 12:07:56 ÖS »

Tebrikler. Forumumuz her geçen gün daha da güzel oluyor. Elinize sağlık.
Logged

LW3D
Yönetici
*****
Mesaj Sayısı: 11.418


Günü Kurtaran Avam Hiooargggh :)


Üyelik Bilgileri WWW
« Yanıtla #25 : Eylül 26, 2015, 12:12:13 ÖS »

@delimawi bir yerde "Teşekkürler, umarım proje başarılı olur. Açıkçası proje ile ilgilnen insların olduğunu görmek çok güzel bir duygu. Her ne kadar bir çok kişi için boş bir işle uğraşıyor bile olsam, destekleyen sesleri duymak güç veriyor." yazmışsın...

Ne demek boş işle uğraşmak...Diğer arkadaşların projeleride harika, çok güzel...Ama bu proje hayallerin gerçeğe ulaşacağı bir proje... Anladığım kadarıyla tek parça istediğimiz oyunu, programı tek tıkla çalıştıracağız... Bu harika...Hatta bir de geri kayıttan bahsetmişsin ki, bu da inanılmaz güzel olacak....Sanrım bir oyunu kaldığımız yerden kayıt edip, sonra kaldığımız yerden devam edebileceğiz...

Harika...hem anlatım (her ne kadar teknik kapasitem yetmese de), hem fotoğraflar, herşey 10 numara... Bizlerle birlikte olduğun, paylaşımların için çok teşekkürler...
Logged

eins
Uzman
*****
Mesaj Sayısı: 1.816


A.K.A. deliMawi


Üyelik Bilgileri
« Yanıtla #26 : Eylül 27, 2015, 00:40:05 ÖÖ »

Arkadaşlar iyi niyetleriniz için teşekkür ederim.
Bayram bitmeden yarın bir yarım gün daha ayırabileceğim. Artık bir PRG atıp çalıştırabilirsek gerisi gelir. Sonrasında gündelik işlerden kalan zamanlar bu kadar bol olmasa da bir şekilde devam edeceğim projeye.

İlgi ve destleriniz için tekrar teşekkürler,
Logged

Doberman ♦ megaOne ♦ HDMI-64 ♦ HDMI-520 ♦ NewSchool
hades
Üye
****
Mesaj Sayısı: 392



Üyelik Bilgileri
« Yanıtla #27 : Eylül 27, 2015, 18:12:05 ÖS »

Merhabalar
Forumdaki projeler içinde en çok bu proje hoşuma gitti.
Hem 6510 hem de Z80 bilen biri olarak kafamdaki büyük!! proje için epey katkısı olacak gibi gözüküyor.
Proje kısaca şu: C64 donanımını IO bölgesi olarak kullanan Z80 tabanlı bir bilgisayar.
CPLD, FPGA vs. konulardan hiç anlamadığım için tüm tasarımı TTL olarak yapmıştım.
Doberman-64 6510'u disable ederek okuma-yazma yaptığına göre 6510 yerine başka bir CPU C64 donanımını kullanabilir diye düşünüyorum.

Konuyu başından itibaren sadece okuyucu olarak takip ediyorum.
C64 çalışırken Doberman-64 tarafından hafızaya atılan bir PRG'nin çalıştırılması konusunda aklıma gelenler şunlar.

1a - JRS $A659 - JMP $A7AE komutlarına karşılık gelen op-code'ları hafızada uygun bir yere yazmak. Mesela tape buffer olabilir. Bahsettiğim komutlar RUN komutuna karşılık gelir.
b - opcodeların bulunduğu hafıza bölgesinin adresini yığına atmak

2 - Bir kaç byte ile Klavye buffer kullanarak RUN komutunu vermiş gibi işlem yapmak.

3 - IRQ vektörünü değiştirerek, kısa bir interrupt rutini ile PRG'yi çalıştırmak.
$0313'e $3C, $0314'e $03 yazarak IRQ vektörü Tape buffer adresini gösterecek.
Tape bufferde ise JSR $A659 - JMP $A7AE komutları olacak. 6510 tekrar çalışmaya başladığında IRQ rutini de devreye gireceğinden bizim komutlar işlenecektir.

PRG yüklenecek ve /DMA serbest bırakılacak. Eğer C64'e /RESET sinyali gönderilirse yukarıdaki değişikliklerin hiç bir anlamı kalmaz.

Çalıştırma konusunda aklıma gelenler bunlar ama işe yarar mı bilemem.


Başlığın ilk mesajında "Sadece istendiği durumlarda (örneğin butonuna basılınca) devreye giren, anlık olarak 6510 CPU'yu durdurarak, C64'ün tüm RAM'bölgesine erişebilen, istediği adresteki bilgiyi okuyabilen ve yazabilen bir donanım." demişsin.
Burada 6510'un 0-1 adreslerine erişim yaparak tüm hafızayı Ram yapma durumu mu var yoksa 6510 ve PLA?? devreden çıktığı için mi tüm okuma/yazma işlemleri Ram'e ait oluyor. Ayrıca Doberman-64 ile C64'ün IO bölgesine erişmek mümkün değil mi?
 
Kolay gelsin.
« Son Düzenleme: Eylül 27, 2015, 18:27:15 ÖS Gönderen: hades » Logged
joker_
Deneyimli
*****
Mesaj Sayısı: 2.120



Üyelik Bilgileri
« Yanıtla #28 : Eylül 28, 2015, 07:46:57 ÖÖ »

@delimawi tebrikler, süper bir çıkartıyorsun. Tabii I_ron_n, Metallic ve Simon'ı da unutmamak gerek. Forumdaki proje sayılarının artması sevindirici bir durum.

Aslında Yavuzg'nin yaptığı arcade tarzı projelerin, forumdaki bu tür projelerin artmasın da çok önemli bir yeri var diyebilirim.

@Hades, forumda birbirinden önemli projeler hayata geçmiş durumda. Abi senin rüya projeni de forumca hayata geçirelim diyorum.
Logged
eins
Uzman
*****
Mesaj Sayısı: 1.816


A.K.A. deliMawi


Üyelik Bilgileri
« Yanıtla #29 : Eylül 28, 2015, 23:32:56 ÖS »

Merhabalar,

Bayramın son günü basit bir loader yazmak için kolları sıvadım. Ancak üzerinden geçen bunca yıldan sonra c64 assembly programlama düşündüğüm kadar hızlı sonuç vermedi. Loader'ı istediğim hale getirene kadar bir miktar daha çalışmam gerekiyor.

Bunun haricinde, CPLD kısmındaki son detaylar ve ince ayarları bitirdim. Hatta ilk fırsatta CPLD içerisindeki logic mantığı biraz detaylı anlatan bir post atacağım.

Gel gelelim, iki gündür 17KB lık bir imajı DMA ile RAM'e atıp çalıştırmak için debeleniyorum ama çalışmıyor... :/
Her seferinde farklı bazı byte'lar bozuk gidiyor. Denemediğim olasılık kalmadı. Artık C64'ün DRAM sinyalleri olan, RAS, CAS vb'yi de problayıp hatanın ne olduğunu anlamaya uğraştım durdum.

Sonra madem DMA yapıyorum, her byte'ı attıktan sonra tekrar DMA ile kontrol ederim dedim, ama gene sonuç vermedi.

Phi2'den çok şüphelendim. Dalga şekli hiç kare dalgaya benzemiyordu. C64'ün 8MHz civarında olan Dot Clok'unu alıp, bunu CPLD ile işleme tabi tutarak kendi Phi2 sinyalimi ürettim, gene olmadı.

Ne yaptıysam transfer sırasında bazı byte'lar bouluyor.
Hatta bu akşamüzeri bu DMA işi olmayacak galiba noktasına kadar geldim.

Artık o kadar inat ettim ki, mesai gününü tamamen harcayıp daha derinlere indim. Bu sefer data bus üzerindeki her bir biti de problayıp bozulan byte'ı yakalamaya çalıştım.

Gerçi bu foto'da aslında problem kabak gibi görünüyormuş ama ben artık o ruh hali ile farkedemedim bile:


Bus üzerinde gidip gelen tüm trafiği incelerken farkettim ki bozulan byte'ların bozulmasında bir mantık var. Şöyle ki bozulan bir byte'ın 6.biti bazen 1 iken 0 olarak RAM'e gidiyor, bazen de 0 iken 1 oluyor:


Zaten bir önceki foto'da 6. bitin neredeyse hep 0 seviyesinde olduğu görülüyormuş. (Alttan ikinci sinyal)

Hatayı tespit ettikten sonra nedenini bulmaya geldi sıra. CPLD'nin o biti süren bacağı yada içerisindeki MacroCell uçtu herhalde dedim hemen, yeni CPLD lehimlendi. Sonuç aynı.
C64 tarafında bir sıkıntı var dedim, 2. bir C64'te denedim. Sonuç aynı.
Emin olmak için ilgili bitin yolunu C64 kartuş slotundan kestim. Bu sefer 6. bit hiç 1 olmadı, hep sıfır da kaldı. Hemen büyüteci elime alıp Doberman-64'e yakından bakınca hatayı buldum.

Lütfen kırmızı ile işaretlediğim yere bakın. O yolun kalınlığı 12 mil. İşaretli yerde ise kılcal bile denemeyecek bir kesik var. (Tahmin ediyorum 1-2mil kalınlığında bir kesik)


Bu PCB'yi ilk bastığımda yoktu. Yada bazen temas ediyordu bilemiyorum, zira elektriksel kontrol yapmıştım, ve hata yoktu PCB de.
Neyse lafı çok uzatmadan, hemen burayı lehimledim ve sonuç kısa bir video ile aşağıda:


Uzun lafın kısası, artık PRG atıp çalıştırabiliyorum. Tabi iki gün boşa gitmiş oldu gene.
Artık iş loader'ı yazıp bitirmeye kaldı.

Son olarak aşağıda 17KB lık imajın yüklenme plot'u var. Yaklaşık 125ms sürüyor ki herhangi bir optimazasyon henüz yapmadım. Örneğin addrh değişmediği sürece sadece addrl 'yi latchlemek yeterli olacak vb... Bu şekilde kaba bir hesapla 64KB yı bile 0.5 sn de yükleyebiliyor olacağız.



@delimawi tebrikler, süper bir çıkartıyorsun. Tabii I_ron_n, Metallic ve Simon'ı da unutmamak gerek. Forumdaki proje sayılarının artması sevindirici bir durum.
Aslında Yavuzg'nin yaptığı arcade tarzı projelerin, forumdaki bu tür projelerin artmasın da çok önemli bir yeri var diyebilirim.


joker_, sana aynen katılıyorum. Bir kartuş projesi yapma enerjisini zaten i_r_on ve Simon'dan aldım.
Yaparken de resimli olarak anlatıyor olma fikri de Yavuzg'nin arcade kabinleri serisini zevkle okurken oluştu.

CPLD, FPGA vs. konulardan hiç anlamadığım için tüm tasarımı TTL olarak yapmıştım.
Doberman-64 6510'u disable ederek okuma-yazma yaptığına göre 6510 yerine başka bir CPU C64 donanımını kullanabilir diye düşünüyorum.


TTL tasarım yaptığınıza göre bence hiç vakit kaybetmeden tasarımı CPLD'ye taşıyın. Çok rahat edersiniz. Hem de CPLD öğrnemiş olursunuz ki hiç te zor değil aslında.
Ben ilk uygun zamanımda Doberman-64 için yaptığım CPLD tasarımını detaylı olarak anlatacağım. Umarım ilginizi çeker.

Evet, DMA ile 6510 devre dışı kalıyor, yada duruyor, bekliyor, tüm adres, data ve RW hatlarını siz kullanabiliyorsunuz. Ama tabiki başından beri yazılmış olan VIC ile senkronize olma kısmını atlamamak gerekiyor.
Ben ilk mesajımda 6510'u devre dışı bıraktığım anda (DMA açıldığı anda yani), hiç VIC ile falan uğraşmadan kullanacağım sistemi diye düşünüyordum. HAtta ilk sorum da o idi.
Ama o kadar basit değilmiş konu. Detayları zaten yazdım...

1a - JRS $A659 - JMP $A7AE komutlarına karşılık gelen op-code'ları hafızada uygun bir yere yazmak. Mesela tape buffer olabilir. Bahsettiğim komutlar RUN komutuna karşılık gelir.
b - opcodeların bulunduğu hafıza bölgesinin adresini yığına atmak
2 - Bir kaç byte ile Klavye buffer kullanarak RUN komutunu vermiş gibi işlem yapmak.
3 - IRQ vektörünü değiştirerek, kısa bir interrupt rutini ile PRG'yi çalıştırmak.
$0313'e $3C, $0314'e $03 yazarak IRQ vektörü Tape buffer adresini gösterecek.
Tape bufferde ise JSR $A659 - JMP $A7AE komutları olacak. 6510 tekrar çalışmaya başladığında IRQ rutini de devreye gireceğinden bizim komutlar işlenecektir.


Ben de KERNAL'daki RUN komutunu çağıracak bir kodu orya buraya bir yere koyarak, raster interrupt vectoru ile dallanmayı düşünmüştüm.
Daha doğrusu olasılıklardan biriydi.
Ama 2. çözüm çok hoşuma gitti. Dedim ya çok uun zaman oldu, klavye buffer'ı olduğunu bile hatırlamıyorum C64 de. Eğer var ise en basit çözüm bu.
Bunu deneyeceğim ilk fırsatta.
RESET'i ise, transfer başlamadan önce atmayı düşünüyorum, bu sayede transfer öncesinde hafıza temiz olacak, VIC çalışıyor olacak vb herşeyden emin olacağım yani.
DMA serbest bırakılınca ikinci bir reset olmayacak.

Başlığın ilk mesajında "Sadece istendiği durumlarda (örneğin butonuna basılınca) devreye giren, anlık olarak 6510 CPU'yu durdurarak, C64'ün tüm RAM'bölgesine erişebilen, istediği adresteki bilgiyi okuyabilen ve yazabilen bir donanım." demişsin.
Burada 6510'un 0-1 adreslerine erişim yaparak tüm hafızayı Ram yapma durumu mu var yoksa 6510 ve PLA?? devreden çıktığı için mi tüm okuma/yazma işlemleri Ram'e ait oluyor. Ayrıca Doberman-64 ile C64'ün IO bölgesine erişmek mümkün değil mi?


Malesef sadece 6510 devreden çıkıyor. Yani PLA devrede. Bu sebeple 0 ve 1 adreslerindeki konfig ne ise, o şekilde erişim oluyor.
Yani ROM'lar kapatılmış ise, RAM okunuyor ama ROM açık ise ROM okunuyor o adreste.
Kısaca 6510 nereyi nasıl görüyor idi ise, DMA anında da o oluyor. Dolayısı ile IO bölgesi konfigürasyona bağlı olarak erişilebilir.

Bu konuda benim denemek istediğim bir DMA FREEZE fonksiyonu var. O işlem esnasında bir şekilde örneğin tape buffer a bir kod atıp, 0 ve 1 aderslerinin durumunu da okuyup gerekiyor ise değiştirip DMA yapacağım.
0 ve 1 adreslerine yazılan değerler tamamen 6510 içerisinde yapıldığı için adres ve data busdan o iki adrese erişilemiyor. Sadece 6510 içerisinde çalışacak bir kod ile okunup yazılması mümkün bildiğim kadarı ile.
Logged

Doberman ♦ megaOne ♦ HDMI-64 ♦ HDMI-520 ♦ NewSchool
Sayfa: 1 [2] 3 4 ... 15   Yukarı git
Yazdır
Gitmek istediğiniz yer: