commodore.gen.tr

Genel Kategori => Proje => Konuyu başlatan: i_r_on üzerinde Aralık 19, 2014, 00:31:31 ÖÖ



Konu Başlığı: Psid player projesi
Gönderen: i_r_on üzerinde Aralık 19, 2014, 00:31:31 ÖÖ
Devrenin şu an çalışan versiyonu şu şekilde

9efYJg13XQw


---

Eski demonte ettiğim harddisklerin kontrol kartlarında işe yarar bir şey var mıdır diye bakınıyordum. Parçaların datasheet'lerine ulaşmaya çalıştım internette. OTP rom buldum, harddisklerde kullanılan logic entegreler buldum. Nispeten yeni olanında DRAM buldum falan derken 64kx8 bir SRAM çipi buldum.

Şimdi OTP rom bir işe yaramaz, adı üstünde One time programmable rom. Bunu üreticiler tek sefer yazacakları upgrade etmeyecekleri firmware'lerini yazmak için kullanıyorlar. İkinciye yazmak mümkün değil. DRAM'i kullanmak ise benim tecrübe seviyeme göre biraz ağır kaçıyor. Veriyi aklında tutamayan ram'ler bunlar, sürekli tazelemek için ek devre ile donatmanız gerekiyor. SRAM'i (Static ram) görünce bir yerlerde yatan kullanmadığım 16f877 pic mikro işlemciyi hatırladım.

Pic ile yapılmış benzer bir proje görmüştüm (http://code.lardcave.net/entries/2012/10/06/173014/ (http://code.lardcave.net/entries/2012/10/06/173014/)), benzer bir proje yapabilir miyim acaba diye düşünmeye başladım.

Analog devreler konusunda bilgi seviyem iyi olmadığı için muhtemelen devreye gerilimi düzgün bir şekilde sağlama, ses çıkışını yükseltme konusunda falan epey tökezleyeceğim. Çözülmesi gereken bir sürü problem olduğu için aşama aşama ilerlemeyi düşünüyorum.

Üstte linkini verdiğim elemanın yaptığı projeden farklı olarak 6502 yerine 6510 yahut W65C02 kullanacağım. İki çipde de adres bus'ı tristate kullanma imkanı var. W65C02 kullanılırsa düşük güç tüketimi söz konusu ancak temin etmesi zor. (Ebay'de tanesi 5 dolara almak mümkün gerçi) 6510 söz konusu olduğunda en azından benim elimde dahi iki tane arızalı c64 board'unda bir tane de hardsid kartımda olmak üzere  üç tane mevcut. (Stok kontrolü yapmak lazım yine de 6502'ye rastlamak da söz konusu olabilir :) )

Düzeltme : Hardsid üzerinde 6510 yok, işlemci kullanmak yerine pc'nin sid'i sürmesini sağlayan bir kart bu. İlaveten 6510 kullanmak temin edilebilite açısından çok yanlış bir seçim olurdu.

Baktığım benzer projelerde genellikle tam uyumluluk için cpu/vic ve cia çipleri emüle edilmiş. Birincisi bu şekilde bir projeden çok tat almayacağımı düşünüyorum. İkincisi de bunların emülasyonu için yüksek hızlarda çalışan bir mikro işlemci gerekiyor ve bu şekilde çalışması da sonuçta çıkan devrenin ciddi güç tüketmesi anlamına gelecek.

Benim tercihimin dezavantajı ise sadece psid formatında olan sid'leri çalabilecek olması. Vic'i yahut cia'yı emüle etmediğim ya da direkt olarak devremde kullanmadığım için mecburen sid'in yanısıra bir de player rutini göndermek zorunda kalacağım ram'e.

Kullanacağım Pic 16f877. Üstünde 33 tane io bacağı var,

3 adedi ileride ekleyeceğim sd kart desteği için (clock / data in / data out)
16 adedi address bus için
8 adedi data bus için
6510'un reset ve interrupt hatları için iki tane (6510 clock doğrudan pic'in clockout'undan beslenecek)

Belki pic'i saniyede 50/60 kere interrupt üretmek için kullanmak yerine hariçten bir timer da kullanılabilir ama şu an bunları düşünmek için çok erken.

4 tane bacak boşa çıkıyor, bunlarla display sürmek, dışarıdan kontrol sağlamak pek mümkün olmayacak. Ancak o aşamaya getirirsem ya port'ları multiplex ederek yahut devreye spi üzerinden ikinci bir mikro işlemci koyup bununla iletişime geçerek display / kontrol vesaire kısmını halledebilirim gibi. (Edit: 4 bacak boşa çıkmıyor aslında, sram'a yazabilmek için en az iki io portuna daha ihtiyacım var, OE ve WE hatları için)

Kafamdaki ilerleme aşamaları da şu şekilde,

1 - Pic ile sram'i kullan, öncelikle program hafızasındaki belli bir pattern'deki bir datayı sram'e yazıp okuyarak doğru çalıştığından emin ol. Gerekli pic kodlarını kütüphane haline getir. Proteus üzerinde 64k ram yerine 32k / 8k gibi daha düşük kombinasyon


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Simon (Özay Turay) üzerinde Aralık 19, 2014, 10:58:20 ÖÖ
Çok güzel bir proje bence. Aşamalandırman da çok güzel olmuş. Birer birer tamamlarken çok şey öğreneceğin kesin.

PIC'i bilmiyorum ama display olarak 5$ civarına bulabileceğin I2C OLED kullanırsan iki pin yeterli gelecektir, veya dediğin gibi 74HC595 gibi bir SIPO ile (gerekirse birden fazlasını cascade edebiliyorsun) üç pin kullanarak (data, clock ve latch) istediğin kadar ekstra pine sahip olabilirsin. ;)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Aralık 19, 2014, 11:09:54 ÖÖ
Çok güzel bir proje bence. Aşamalandırman da çok güzel olmuş. Birer birer tamamlarken çok şey öğreneceğin kesin.

PIC'i bilmiyorum ama display olarak 5$ civarına bulabileceğin I2C OLED kullanırsan iki pin yeterli gelecektir, veya dediğin gibi 74HC595 gibi bir SIPO ile (gerekirse birden fazlasını cascade edebiliyorsun) üç pin kullanarak (data, clock ve latch) istediğin kadar ekstra pine sahip olabilirsin. ;)

PIC'in hep SPI hem de I2C desteği var gördüğüm kadarıyla. Aynı bacaklar kullanılıyor, aynı bacaklara CS sinyalleri ile aynı zamanda sadece birisi bağlı olacak şekilde ayrılabilecek şekilde bağlanabilirler sanıyorum. Ancak bu durumda aynı anda sadece bir tanesi kullanılabilir.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Simon (Özay Turay) üzerinde Aralık 19, 2014, 11:48:21 ÖÖ
Aynı pinlerin kullanılması kötü olmuş, bana saçma geldi şahsen. ATmega328'de SPI ve I2C farklı pinlerde olduğundan aynı anda sorunsuz kullanılıyor.

PIC32 kullansan mesela, hem 3'er set SPI ve I2C var gördüğüm kadarıyla hem de forumda tolga abacı arkadaşımız var bu konuda hepimizden çok yardımı dokunur sana. ;)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Aralık 19, 2014, 12:37:35 ÖS
Aynı pinlerin kullanılması kötü olmuş, bana saçma geldi şahsen. ATmega328'de SPI ve I2C farklı pinlerde olduğundan aynı anda sorunsuz kullanılıyor.

PIC32 kullansan mesela, hem 3'er set SPI ve I2C var gördüğüm kadarıyla hem de forumda tolga abacı arkadaşımız var bu konuda hepimizden çok yardımı dokunur sana. ;)

Aslında I2C'ye şimdilik hiç girmesem daha iyi :) SPI'dan daha kompleks gözüktü gözüme. 8 bit mcu hali hazırda elimde varken onunla ilerlerim muhtemelen. Daha fazla örnek proje/kaynak kod bulma ihtimali var gibi. Belli de olmaz, daha yeterince araştırmadım çünkü :)

Display+controller işin içine girince ikinci bir pic lazım olacak gibi. Aslında o da güzel bir deneyim olur. Ancak oraya kadar daha çok zaman var :)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Aralık 21, 2014, 00:52:45 ÖÖ
Öncelikle dedim indireyim şu SidReloc'u kullanayım, güzel sevdiğim müziklerden birini kullanayım.
Adresi şurası : http://www.linusakesson.net/software/sidreloc/ (http://www.linusakesson.net/software/sidreloc/)

Program source formundaymış. Hani lan windows binary? Yok kendin yapıcan. Visual studio'da unix/linux vesaire c source'unu compile etmek ölümdür, ben yine de fantaziye girmeyeyim diye açtım Visual Studio'yu. Proje oluştur, ayarla, build et... 104 tane hata.. dahası da varmış, fazla olmasın diye göstermemiş sağolsun. stdint.h , err.h, getopt.h sıkıntılı.. biraz uğraşayım dedim header'larını hallettim derken kütüphane olmayan yerlerde de sıkıntı var. Eytere beah deyip baktım başka ne kullanabilirim diye. Hayır iki dakkada sanal makine altına linux kurarım ya da gider cygwin yahut mingw gibi şeylerle de compile ederim bunu da inat ettim. Eclipse'in c derleyicisi fena değil yazmış birileri bi yerde, şansımı deneyeyim dedim. Bir tek err.h için şamar attı bu, onu da bir yerlerden buldum sadece header imiş. Macro'lar falan var içinde. Derlendi meret. (İsteyen olursa windows executable var elimizde :) )

Başladım denemeye,

Kod:
sidreloc -p E0 Cybernoid.sid CybernoidE0.sid
Neither the source nor the destination relocation range may overlap with the zer
o-page.

Olmadı... Denediğim çoğu sid bunu dedi, derken Rob Hubbard abimize bakayım dedim o neler yapmış.
Spellbound'u denedim..

Aha,

Kod:
Spellbound, Rob Hubbard, 1986 MAD/Mastertronic, $e000-$effe, 13 subtunes
Relocating from $e000-$ffff to $e000-$ffff

Lan dedim ben relocator'ı ne demeye kullanıyorum, zaten müzik tam da kernal'ın olduğu yere yükleniyor, orada çalışıyor. Bingo dedim kendi kendime. (Ancak bkz. yazının sonları)

Şimdi psid formatına göre Sid dosyası içinde $7E'den itibaren header bitip sid içeriği başlıyor.
CCS64 emülatörü altındaki KERNAL.ROM'u yedekledim, yeni bir kopya yaptım içini 00'lar ile doldurdum. Kernal rom'u tam 8k (8192 bayt). $7E'den itibaren sid'i kopyalayıp boşalttığım kernal.rom'un başına yapıştırdım.

Dosya içinde $1C00'a yani $FC00'a init ve play'i çağıracak kod parçamızı yazacağız.

Bu arada reset vektörü haricindeki vektörleri de RTI yani return from interrupt opcode'unu çalıştıran bir adrese göndermek istiyorum. Sonuçta emülatör altında çalışıyoruz, interrupt oluşursa rastgele bir yere gitmesin. Aslında ben interrupt'ları disable edersem bir yere gidemez ama neme lazım müzik açar falan.

Sırasıyla
$FFFA - NMI seris rutini
$FFFC - Cold reset rutini
$FFFE - Irq servis rutini

Vektörlerini değiştiriyorum. $FB00 adresine gelecek şekilde RTI instruction'ı koydum, vektörleri sırasıyla şu şekilde set ediyorum.

$FFFA : 00 FB 00 FC 00 FB


Sıra geldi, init ve play'i çağıracak rutinimize. Burada parçayı doğru hızda duyabilmek için sid'in play rutinini, benim elimdeki sid için $E012 adresinde, saniyede 50 defa çağırmam lazım. Yapacağım donanım içinde raster interrupt'ları kullanamayacağım için mecburen döngülerle bunu sağlamalıyım. c64 saniyede 1 milyon cycle çalıştırıyor dersek, bunu 50'ye bölüp her iki play çağrısı arasında kaç cycle beklemem gerektiğini bulabilirim.

1.000.000 / 50 = 20.000 cycle. Harcamak için epey bir cycle. Çok fazla doğru sonuç elde etmeye çalışmayacağım çünkü 20000 rakamı da doğru bir rakam değil zaten, biraz hızlı biraz yavaş olması çok da fark etmez benim için şu aşamada. Gerçek donanım üzerinde zaten doğru hızda çalışacak. (Zamanlamayı pic ile sağlayacağız)

Bu kadar çok cycle harcayabilmek için en az iki döngü kurmak lazım, ya da tek döngü içinde masraflı bir iş yapmak lazım.
Heyecan olsun masraflı bir iş yapalım diyorum. INC Absolute, DEC Absolute işlemleri 6 cycle yiyormuş. $FB02 adresini 7 defa arttırıp 7 defa azaltarak tek döngü içinde 7 * 12 = 84 cycle yerim. Bir adet register azaltma işlemi yapmam lazım örn. DEY, iki cycle o, bir tane karşılaştırma yapmam lazım BNE o da 3 cycle. (Yaptığımız dallanma aynı sayfa içine olacağı için, başka sayfaya olaydı 2 eklemek gerekecekti) Yani toplamda 84 + 2 + 3 = 89 cycle harcayacağız tek döngüde. 20000 / 89 = 224 defa dönersek aşağı yukarı 20000 cycle'ı yiyoruz.


Kodu yazdık, Assemble to memory deyip, kodun assemble edilmiş halini sid dosyası içinde başlangıç adresimiz olan $FC00 adresine kopyalayalım. Herhangi bir relokasyona gerek yok zira bu sid dosyasını emülatörün kernal.rom'u ile değiştireceğimiz için zaten E000'dan itibaren yüklenecek. Assemble ettiğimiz kod tam da başlangıcını verdiğimiz yerden başlayacak. Gerçi kodu hangi sayfaya yerleştirirsek yerleştirelim çalışır zira içinde iki adet sabit adres (init ve play adresleri) ve iki adet relatif adres geçiyor (loop'ların relatif adresleri) Kod tek sayfaya (256 byte) sığdığı için bu sayfa dışına dallanma imkanı yok, dolayısıyla hangi sayfaya yerleştirirsek yerleştirelim çalışır. Neyse bizim durumumuzda böyle bir şey söz konusu değil zaten.

Bir şeyleri eksik yaptığıma dair bir his var içimde, gelelim denemeye. Bakalım çalışacak mı.

Aha, harbiden de çalışmadı. Bir sıkıntı var.

Anlaşılan o ki biz kernal'i rom diye verip peşine ram gibi kullanmaya kalktık... Bizim kodumuz pek ram gibi kullanmasa da Rob Hubbard'ın müziği E000'dan başlamak üzere oranın ram olduğu varsayımıyla çalışıyor. Epey bir uğraştım 6510'un 01 adresindeki processor port register'ı ile ancak Hubbard'ın sid'ini çalıştırmayı başaramadım. Alakasız yerlere erişip yazdığım kodu da eziyor olabilir ya da ben denemelerim esnasında bir şeyi gözden kaçırdım.

Neyse Kernal Kernal diyerek gittim yattım,

Ertesi gün, bir hikmeti vardır bu kernal'in diye biraz daha inceledim. Temelde yaptığı şuymuş : Interrupt'ları disable et, stack pointer'ını ilk değerine getir, falan filan. Aynı kodu ben de koydum başa, yok yine başarılı olmadı.

Sonradan aklıma geldi, lan ben niye ille de kernal altından su yürütmeye çalışıyorum dedim. Bulsana bir tane $1000 adresli sid, reset vectörünü yiyince kopyala kendini müzik sonrasındaki bir adrese oradan çalışmaya devam et. $01 adresindeki processor port'u ile de iştigal etmeye gerek yok.

Açtım hvsc arşivini, girdim MUSICIANS klasörüne kafada Z harfi var, Zyron babadan bir şeyler bakayım bari dedim. Şansa çoğu da $1000'e yüklenen sid'lerden. Baktım beğendiğim bir tanesini seçtim. Kodu açılışta kendini $1000'den itibaren kopyalayacak şekle çevirdim, bunun init adresi $1000, play adresi $1003.

Evet ilk deneme CCS65'ü modifiye kernal ile açıyorum... başarısız... Tune indeksi yanlış gönderiyor olabilir miyim acaba? #$01'i #$00 yaptım. Tekrar denedim... Voila! Çalıştı! Azıcık olması gerekenden biraz yavaş. Demekki saniyenin 50'de birinde öyle hunharca harcayacağımız 20000 küsür cycle'ımız yokmuş. Kesin VIC girmiştir araya, neyse bizim donanımımızda VIC olmayacak, SID ile başbaşa kalacağız.

Kod şu bu arada

Kod:
	*=$FC00
LDX #$FF ; Default stack pointer'ı
SEI ; Interrupt'ları disable et. Açmıycaz bir daha
TXS ; X register'ını stack pointer'ına gönder
CLD ; Decimal modu kapat

LDA #$37 ; Processor port için default değer, c64 default açılışı gibi
STA $01  ; Processor port'a yaz.

LDA #$00 ; Belleği $E000'dan $1000'a
STA $FC ; transfer etmek için hazırlık
LDA #$E0 ; $FB/$FC = Kaynak
STA $FD  ; $E000 adresini yazıyoruz bu iki ZP belleğe

LDA #$00 ; Belleği $E000'dan $1000'a
STA $FA ; transfer etmek için hazırlık
LDA #$10 ; $FA/$FB = Hedef
STA $FB ; $1000 adresini yazıyoruz bu iki ZP belleğe

LDX #$00 ; $20 sayfa kopyalayacağız. X'i sıfırlıyoruz.
TO:
LDY #$00 ; Her bir sayfa transferi için Y'yi kullanıyoruz.
; El mecbur, indexed indirect kullanacağız çünkü
TX:
LDA ($FC), Y ; $E000 + (X * $100) + Y'den A'e oku
STA ($FA), Y ; $1000 + (X * $100) + Y'ye yaz
INY ; Aynı sayfadaki bir sonraki adrese
BNE TX; Sayfa dolmadıysa devam
INC $FD ; Bir sayfa doldu, diğer sayfaya
INC $FB ; Bir sayfa doldu, diğer sayfaya
INX ; Sayfa sayısını takip ediyorduk, arttıralım.
CPX #$20 ; $20 sayfa oldu mu?
BNE TO; Olmadıysa yeni bir sayfa daha.

JMP $2C30; Kod $FC00'a derlensin diye ayarladık ama bu ne alaka?
THIS: ; Kodu kopyaladıktan sonra kernal rom'u altında execute etmekten
; kurtulup daha güvenli bir yerde çalışmaya devam etmek lazım.
; o bakımdan. Macro falan da yazılabilirdi, uğraşmak istemedim.
; Kod bir alt satıra dallanıyor burada ama başka bir bellek bölgesinde.
PLAY:
LDA #$00; Müzik init
JSR $1000 ;
OUTERLOOP:
JSR $1003 ; Play rutinini çağır
LDY #$E0 ; 224 defa dönelim demiştik, bu o.
LOOP:
INC $FB02 ; İşlemci ziyan etme kısmı.
INC $FB02
INC $FB02
INC $FB02
INC $FB02
INC $FB02
INC $FB02
DEC $FB02
DEC $FB02
DEC $FB02
DEC $FB02
DEC $FB02
DEC $FB02
DEC $FB02
DEY
BNE LOOP
JMP $2C35 ; Kod burada PLAY'e dallanıyor. RAM'a kopyalanmış yere.

2. ve 3. maddeler tamam... Ancak kernal ile ilgili sağlam dersler aldım. Bir kere sid psid bile olsa kernal ile ya da basic rom'u ile iştigal ediyorsa sıçtık. Hele burayı hem rom gibi hem de ram gibi kullanmaya kalkıyorsa katmerli sıçtık. Neyse bunları çok sonra düşünmek zorunda kalacağım inşallah.

Resim falan da koyacaktım ama işler yolunda gitmedi, kod 3-4 defa yazıldı falan, artık bir sonraki sefere.

Mesajın ekinde oluşturduğum kernal rom mevcut, emülatörünüzde deneyebilirsiniz.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Aralık 25, 2014, 23:20:35 ÖS
Dün ve önceki gün devre için gerekli bazı siparişler verdim.

1KOHM 1/4W * 50
820OHM 1/4W * 50
33K 1/4W * 50
74HC04 * 3 - 8'li NOT kapısı, Address decoding için
74HC11 * 4 - Triple AND gate, Address decoding için
74HC74 * 2 - 4Mhz kristal'den 2Mhz saat sinyali üretebilmek için flip flop. (Muhtemelen gerek kalmayacak buna bkz. aşağısı)
2.2NF 63V POLYSTER * 10 - Sid filtresi için
UT62256 Ram Entegre Geniş * 2 - Elimdeki sram smd olduğu için daha kolay uğraşırım diye bunlardan alıyorum.

Bunları direnc.net'ten sipariş ettim. Bunların yanı sıra en önemli eksiğim eprom ve bir eprom programlama aletiydi. Onları da aliexpress'ten sipariş ettim.

V6.0 MiniPro TL866CS : http://www.aliexpress.com/snapshot/6417199803.html (http://www.aliexpress.com/snapshot/6417199803.html)
ST M27C512 Eprom : http://www.aliexpress.com/snapshot/6420314724.html (http://www.aliexpress.com/snapshot/6420314724.html)

Eprom silici olarak epey eskiden aldığım diş fırçası temizleyici var onunla şansımı deneyeceğim.

Bu siparişleri yurtdışından yapmak canlı denemeleri yapma aşamasını rahat 1 ay ötelemiş oldu.

4 no'lu maddemi uygularken 6510'a saat sinyali üretmem gerekiyordu. Öncelikle daha önce linkini verdiğim şu sayfadan örnek devreleri inceledim.
http://wilsonminesco.com/6502primer/ClkGen.html (http://wilsonminesco.com/6502primer/ClkGen.html)

Piyasada 1Mhz kristal olmadığı için ve 6510 işlemci 2Mhz hızında çalışabildiği için c64'deki PAL için olan 0.985MHz yerine aşağıdaki iki devre ile 2Mhz kullanmaya karar vermiştim. Bulabildiğim en düşük kristal 4Mhz.

Osilatör devresi
(http://wilsonminesco.com/6502primer/LS04XtalOsc.jpg)

Flip flop yardımıyla osilatör frekansını yarıya indiren devre.
(http://wilsonminesco.com/6502primer/ClkDiv.jpg)

Dün araştırmalarıma devam ederken hazır osilatör elemanlarının satıldığını gördüm, önce 4 bacaklı diye bunları es geçiyordum. Biraz araştırınca bütün bu devre yumaklarına girmeden işimi kolayca halledebileceğimi gördüm. Hem de 1Mhz hızında osilatör bulmak da mümkün.

http://www.ersinelektronik.com/1-Mhz-Kristal-Osilator-100000-Mhz,PR-4641.html (http://www.ersinelektronik.com/1-Mhz-Kristal-Osilator-100000-Mhz,PR-4641.html)

(http://www.ersinelektronik.com/modules/catalog/products/pr_01_4641_min.jpg?rev=1383143871)

Address decoding kısmı zaten And ve Not kapıları ile hallolacak, bunlardan yeterince sipariş verdim. $D4XX ve kernal rom'unun $E000-$FFFF aralığını decode etmem gerekecek.

Sid çipi için adreslemede A0-A4 bacakları kullanılacak.
Geri kalan bacaklardan address decoding şu şekilde.

$D4 = 1101 0100 -> A15 A14 A13 A12   A11 A10 A9 A8

SID CS = (A15 AND A14 AND A12 AND A10) AND (NOT A13 AND NOT A11 AND NOT A9 AND NOT A8)

Kernal rom'u 8kb yani toplam address bus'ın 8'de birini kapladığı için en üst üç bacak hariç A0-A12 aralığı eprom'a bağlanacak.

$E0/FF = 1110 / 1111  yani en üst 3 adres bacağının 1 olması yeterli.

KERNAL CS = (A15 AND A14 AND A13)


Uygulayacağım referans implementasyon şu

(http://www.waitingforfriday.com/images/thumb/7/72/SID_Typical_Application.PNG/600px-SID_Typical_Application.PNG)

Bu arada ilk testimi yaparken bir sid kullanmayı düşünmüştüm ama sonradan aklıma daha cin bir fikir geldi. Mevcut testim için devreye SRAM'ı da entegre etmem gerekiyor çünkü çalacağım sid illaki ram kullanıyor. Ancak hiç ram kullanmayan basit bir test müzik rutini yazıp 6510 + 6581 + EPROM kombinasyonu ile de devreyi test etmek mümkün.

6510'un register'ları ve sid'e hali hazırda erişebiliyor olması bunun için yeterli. Yapacağım ilk devrede interrupt'lar çalışmıyor olacak ve dolayısıyla 0x100 adresinden başlayan ram'deki stack kullanımına ihtiyaç olmayacak. Yazacağım rutin içinde RTS / PHA / PLA / PHP gibi stack'e dolayısıyla RAM'e erişen komutlar olmayacak, diğer komutlarda da sid'in belleğe map'lendiği bölge dışı adreslenmeyecek.

Şimdilik gelişmeler bunlar, direnç.net'ten siparişim gelirse en azından breadboard üzerine 6510 ve 6581'i monte etmeye başlayabileceğim.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Aralık 30, 2014, 02:45:48 ÖÖ
Projede ufak bir tasarım değişikliğine gittim. 16 bit address bus ile pic'in io port'larını harcamak yerine pic'in erişiminin rastgele olmaması sebebiyle bir optimizasyon yapacağım. Adres bacaklarını pic'e bağlamak yerine toplamda 16 bit bir counter'a bağlayacağım. Böylece pic sadece counter'ın clk hattına sayması için sinyal gönderecek. Counter'lar kenar tetiklemeli çalışıyorlar. Böylece counter'ı arttırana kadar adres bacaklarında benim istediğim adres yer almış olacak.

Burada beni kurtaran pic'den sram'a olan erişiminin muhteviyatının data transferi şeklinde olması oldu.
Kabaca pic'in yapacağı şu,

1. Counter'ı resetle
2. 1 byte yaz (Adres bacakları 0)
3. Counter'ı clock'la (Adres bacaklarının decimal değeri 1 artacak)
4. 65535'e ulaştıysak bitir yoksa 2'den devam et.

Pek tabii öncelikle denememi 4k yahut düşük bir veri ile yapacağım. Bunun için 12 bit bir counter yeterli. Counter'lara baktığımda çıktıları three state olan bir entegre bulamadığım için ve address bus'a başka entegreler de erişeceği için araya bir de three state buffer entegresi/entegreleri yerleştirmem gerekecek.

Bu arada counter ile SRAM'a yazma testini MPLAB ve Proteus üzerinde gerçekleştirdim, çalıştı. Vakit olaydı daha detaylı görsel bir şeyler de paylaşırdım. Daha sonra inşallah,

Böylece Pic'in 16 bacağını kurtarmış olduk, ikinci bir pic vesaire karmaşasına da gerek kalmadı. Gerçi daha önce benzer projeyi yapan eleman gibi 6510'a üç kağıt çevirerek de adres bacaklarından kurtulabilinirdi ancak ben baştan 6510'u pic üzerinden değil, haricen clock'lamayı tercih ettim.

Bu arada daha önce resmini paylaştığım osilatör elemanını yazıcıoğlunda hiç bir yerde bulamadım. Satıcıların çoğu kristal ile karıştırdı, kimisi de ufo görmüş masum köylü gibi baktı :) Mecbur ersin elektronikten sipariş edicem sanırım.

Şimdilik durum bu merkezde, sanırım depoya inip hurda c64'lerin 6510'larını sökme vakti geldi, eprom programmer gelmeden yakında duyulabilir bir şeyler elde etmek mümkün olabilir.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: GnoStiC üzerinde Aralık 30, 2014, 17:07:08 ÖS
tasinabilir bir urun olarak yapip satmayi dusunursen ben bir tane talibim :)

zamaninda SIDcog'u yanimda tasiyip dinlerdim, onun sesine bile raziydim.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Aralık 31, 2014, 00:24:33 ÖÖ
tasinabilir bir urun olarak yapip satmayi dusunursen ben bir tane talibim :)

zamaninda SIDcog'u yanimda tasiyip dinlerdim, onun sesine bile raziydim.

Üretim konusunda çok başarılı olabileceğimi sanmıyorum ama bakalım zaman neyi gösterir. Muhtemelen taşınabilir olur parçalar bread board'dan çıkıp da bir pcb üstünde bir araya gelirse.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: LW3D üzerinde Aralık 31, 2014, 13:27:17 ÖS
Oldukça teknik olduğu için şimdiye kadar bir yorum yazmadım. yazamadım :) forumda benim durumumda çok arkadaş vardır. İlgiyle takip ediyoruz...


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Simon (Özay Turay) üzerinde Aralık 31, 2014, 13:46:33 ÖS
İtiraf edeyim çoğunu ben de anlamadım ama gaz kesilmesin diye elimden geldiğince birşeyler yazıyorum. Gaz önemli, esirgemeyin. :D


Konu Başlığı: Ynt: Psid player projesi
Gönderen: ibo1973 üzerinde Aralık 31, 2014, 16:10:44 ÖS
kolay gelsin arkadaşa sanırım çok ama çok zor ve çok çok zaman gereken bir proje


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Aralık 31, 2014, 17:13:49 ÖS
Gazı eksik etmeyin, gaz önemli :)

Bugün depodaki üç adet arızalı c64 board'undan birinden 6510 çıkarmaya çalıştım. board diğerlerine nazaran daha kötü durumdaydı, pek çok parçası hali hazırda çıkarılmıştı.

Neyse efendim operasyon başarısızlıkla sonuçlandı :( IC'nin bir kaç bacağı koptu. İçlerinden bir tanesinde kablo lehimlemeye bile yer kalmadı ki o da çok lazım olan bir bacak D5. Bugün bir adet 6510 öldürdüm, evet :(


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Extremist üzerinde Aralık 31, 2014, 18:58:42 ÖS
:( abi kolay gelsin. 6510 un öldüğü kötü olmuş. Benim de bir midibox sid projem vardı. Elektronik bilen birilerini ikna edip yapmam gerekiyor. İlgilenen bir iki arkadaş var şimdilik bir türlü başlayamadık. Psid player da süper proje takipdeyim.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Ocak 21, 2015, 02:34:34 ÖÖ
Bu projede çok fazla bir ilerleme olmadı. Tape adaptörüne, pcb olaylarına falan biraz fazla kendimi kaptırdım sanırım :)

Geçenlerde counter entegrelerim geldi. 74HCT4040 12 bit ripple counter ve 74HC390N dual 4 bit ripple counter. Toplamda 16 biti bulacak senkron bir counter bulamadığım için bu şekilde bir kombinasyon oluşturdum. Ripple counter'ların senkron counter'lardan farkı clock uygulandığında sayma işlemini yapan flip flop'ların birbirlerinden sırayla beslenerek işlemi yapmaları. Senkron'da ise clock sinyali ile beraber eş zamanlı tüm flip flop'lar çalışıp sonuç üretiliyor.

Aldığım entegrelerin Datasheet'lerine baktığımda iki entegre ile 16 bit saymayı oluşturabilmek için toplamda 300ns kadar bir bekleme süresi gerekecek. Bu da ram'e birazcık yavaş erişim demek. Hesabıma göre tüm 64k'yı doldurmak 1 saniyeyi bulmayacak.

Biraz bu kısmına odaklandım işin. Daha önce tam yazma kısmını yazmıştım, ona okuma özelliği de ekleyip pic'in 8 bacağını ledlere bağladım. Proteus'ta 16 byte yazma ve okuma denedim. Counter'larım da geldiğine göre artık gerçek aksiyon zamanı geldi. İlk iş ram test programını breadboard üzerinde gerçekleyip test etmek olacak.

Bu arada öldürdüğümü düşündüğüm 6510 ile ilgili de olumlu gelişmeler var. Eğeyi elime alıp kopan bacağın olduğu yeri biraz eğeledim ve lehim yapabileceğim bir noktaya ulaştım. Gerçi niyetim wdc65c02 kullanmak zira temin etmesi 6510 temin etmekten bir nebze daha kolay. Beri yandan ondan daha kolayı herhalde değişik 6502 clone'larını temin etmek. Counter çıkışını tri-state buffer'lardan geçirmem lazım 6510 ile çakışmamaları için bu durumda 6510'un adress hatlarını tristate edebilme özelliğine ihtiyacım kalmıyor. Processor port'unu kullanan sid de herhalde çok fazla yoktur. Kullansa dahi onun implement edilmesi de başlı başına bir iş.


Bu arada PIC + SRAM + 4 bit counter ile 16 byte'lık yazma okuma denemeleri yaptım. PIC üstünde delay rutinini istediğim gibi oturtamadım. Düzgün mü çalışıyor yanlış mı çalışıyor şu an anlaşılmıyor. Proteus'ta düzgün çalışıyor en azından. Şimdilik 16 byte yazma / okuma yazdım. Bunun yerine 8k delay olmadan komple data yazıp, sonra hepsini belli bir checksum algoritmasıyla okuyup sonucunu led'lerle göstermek daha sağlam sonuç verecek muhtemelen. Bu arada sürpriz, 16f877'nin stack boyutu en fazla iç içe 8 çağrıya izin verecek boyuttaymış. Daha sonra entegre edeceğim fat kütüphanesinde sorun olacak gibi bu. Hali hazırda proteus'ta stack overflow'u daha basit şeylerle bile gözlemledim :)

Beri yandan dün ve bugün ptt'nin takip sistemi düzgün çalıştı, bir anda tek günde bir sürü hareket oldu benim programmer'ın gelişinde. Gümrüğe takılmazsa 1 hafta içinde elimde.  İlk sid denemelerimi yapabilirim bu şekilde. Eski vesa local bus ekran kartımdan bir adet 27c256 32k eprom buldum bu arada. Evde sram bolluğu oldu bu arada eski bir 486 dx board'undan 9 adet PDM41256 32k sram söktüm. Aklınızda olsun sram lazım olursa eski board'lara bir bakın. Eskiden bu bellekler cpu'lar için harici cache bellek olarak kullanılıyordu.

ps: Ptt cayır cayır tracking kasıyor, son iki haftaki halinden eser yok :) Paket gümrüğe takılmamış, bana 30-40 km mesafeye kadar gelmiş :)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Simon (Özay Turay) üzerinde Ocak 21, 2015, 16:22:50 ÖS
3.5 ay önce aldığım ve gelmediği için parasını bile geri aldığım (USD 1.38) 18650 şarj aleti bugün postadan çıktı benim de. PTT sürprizlerle dolu. :)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Ocak 23, 2015, 00:51:50 ÖÖ
PTT'yi övdüğümüz gibi bozdu kendini, iki gündür dağıtım merkezinde bekletiyolar paketi, "handed over to the postman in order to be delivered" yazısını bir türlü göremedim :)

Bugün bahsettiğim ram testi olayının pic için kodunu yazıp proteus üzerinde denedim. Mplab'ın xc8 compiler'ının kesin telepatik güçleri var.

Basit bir algoritma bulayım dedim, 12 bitlik counter ile 4096 byte adresleyebiliyorum. Başlangıcı belli sahte rastgele (pseudo random) sayılar yazayım dedim bu ram'e. Sonra aynı algoritma ile geri okuyup okuma hatası var mı yok sayayım, sonucu da led'lerde göstereyim dedim.

Şöyle bir algoritma,
yazma kısmı
-----------
a = 73
i 0'dan 4095'e kadar
  ram'in i adresine a değerini yaz
  a = a xor (a>>1)

okuma kısmı
-------------
a = 73
i 0'dan 4095'e kadar
  ram'in i adresinden r değerini oku
  r eşit değil a ise hata sayısını bir arttır
  a = a xor (a>>1)

hata sayısı sıfırdan büyükse LED1'i yak
PORTC'deki 8 led'e a değerini yaz


Aynı kodu doğrulama olsun diye bir de c#'ta yazıp çalıştırdım. Sonuç 73 (01001001) çıkıyordu.

Devrem zaten hazırdı, proteus üzerinde simüle ettim. Baktım sonucu veren led'ler doğru. Ancak hata sayısının 0'dan büyük olduğunu müjdeleyen LED1'de yanıyordu. Debug ettim, okumalar hatalıymış. Rastgele değerler okunuyor. Ancak nedense döngünün dışına çıkıp ram'den son okuduğum değeri PORTC'ye yazarken 73 değerini bulup yazıyor. Değişkenin eski değerini görüyor herhalde bu dedim. Okuma sayısını bir azalttım ki farklı bir değer verecek mi bakalım. Yine doğru sonucu verdi meret (103 müydü neydi) ki işin enteresanı bu değer kodda sabit olarak da geçmiyor.

PORTC'yi set etme işini döngünün scope'una koyup eğer döngü indisi 4096 ise PORTC'yi set et deyince doğru değer yerine hatalı değeri PORTC'ye bağlı ledlerde görebildim.

Düşün yani devre hatalı hali çalışabilsin diye özel çaba sarfediyoruz :)

Bu arada tam olarak da mantıklı bir açıklamasını bulamadım bu mevhumun. Sonra dur dedim şu okuma aşamasını satır satır takip edeyim entegrelerin bacaklarındaki sinyallere de bakarak. Daha ilk değeri yanlış okuduğunda baktım okuması gereken değere aslında çok benziyor ama birebir de aynı değil. Sram'in data bus'ına göz attığımda daha önceki testler sırasında data bus'ının 0. pin'inin bağlantısını kopardığımı fark ettim.

Bağlantıyı geri yerine koydum ve çalıştırdım. Bu sefer hiç okuma hatası olmadı, LED1'de buna göre doğru bir şekilde yanmadı. Artık önceki halinin hatalı olduğunu kabul ettiğim PORTC'ye bağlı led'ler de düzgün sonucu verdi ve oldu dedim.

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


Bakalım yarın şu alttaki devredeki 4 bit counter'ı 12 bit olanla değiştirip programı deneyeceğim. Simülasyonla gerçek hayat arasında zamanlama vesaire açısından bir sıkıntı olacak mı anlaşılacak. Bu arada çok sık yaşadığım ciddi bir problem var. Ya pic restart olduğu için ya da breadboard'da temassızlık olduğu için devreyi çalıştırabilmek için bir kaç kez sök tak yapmak zorunda kalıyorum. 5v'u 9v'tan regülatör üstünden aldım ama herhangi bir capacitor bağlamadım bunlara filtre için. Belki de bundan.

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

Mesajın ekinde pic kodu, test için yazdığım c# kodu mevcut. SRAM ile uğraşmak isteyenler başlangıç için kullanabilirler. Nette kaynak bulmak güç bu konuda. Bir elemanın güzel bir forum post'undan bulmuştum CS, WE ve OE'nin nasıl set edilmesi gerektiğini. Okumada problem çıkınca ilk iş tekrar onu fellik fellik aradım ama bulamadım :) Kağıda yazdım ne de olsa deyip linki almamıştım sonra da tekrar arar bulurum ya deyip kağıdı da bir yere tıkıştırdım.

İşyerinde yaptıklarımdan bahsederken yaşadığım diyaloglardan biri ile bitireyim

- Çinden paket gelecekti gelmedi anasını satayım
- Ne sipariş verdin ki?
- Eprom programmer
- Hayırdır ne yapıyosun?
- C64 müziklerini çalacak bir devre yapıyorum
- Youtube'dan dinlesene youtube'da var.
- Aynı kalite olmuyor. Gerçi parçaların orjinal cihazdan kaydedilmiş halleri de var ancak  bir de hobi amaçlı tabii, kendini geliştirme falan.
- C64 hala var mı yav? [Bu kısım genelde diyaloglarda standart olarak geçiyor]


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Simon (Özay Turay) üzerinde Ocak 23, 2015, 09:33:42 ÖÖ
Tüm bunları görünce elektronik hakkında ne kadar az şey bildiğimi farkediyorum.

Her zaman derim Keşke Anadolu Lisesi'nde okuyacağıma Endüstri Meslek Lisesi Elektronik Bölümü'nde okuyup yolumu ona göre çizseymişim. Tam benlik işler bunlar da ağaç artık yaş değil, kolay eğilmiyor. :)

Senin de okuldan gelen bir temelin var, yanılıyor muyum? Bir de mahsuru yoksa  mesleğini öğrenebilir miyim?


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Ocak 23, 2015, 09:41:13 ÖÖ
Tüm bunları görünce elektronik hakkında ne kadar az şey bildiğimi farkediyorum.

Her zaman derim Keşke Anadolu Lisesi'nde okuyacağıma Endüstri Meslek Lisesi Elektronik Bölümü'nde okuyup yolumu ona göre çizseymişim. Tam benlik işler bunlar da ağaç artık yaş değil, kolay eğilmiyor. :)

Senin de okuldan gelen bir temelin var, yanılıyor muyum? Bir de mahsuru yoksa  mesleğini öğrenebilir miyim?

Bilg. müh. okudum, yazılım ile uğraşıyorum. Önemli olan ne okuduğun değil aslında. Bizim bölümden mezun olmuş 50 kişiden 3'ü ya da 4'ü ancak okul sonrası bu bilgileri hatırlayıp kullanmış yahut kullanıyordur. (Destekli sallamadım, doğrudan bizim sınıftan uğraşanları bildiğim için bu rakamı verdim :) )

Ya da şöyle diyeyim, abim alakasız bir müh. bölümünden mezun. Onun da ilgisi vardı ve ufak tefek şeyler yapmıştır. İlgi meselesi tamamen.

Ha bu arada ben de çok acemiyim hala :) Analog tarafım külliyen zayıf. Yavaş yavaş pratikle ben de geliştiririm umarım.

Neresi sana karışık geldi bu arada?


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Simon (Özay Turay) üzerinde Ocak 23, 2015, 10:45:18 ÖÖ
Karışık gelen birşey yok aslında da bir ara şu temel mantık işlemlerinde öteye geçerek Adder, BCD, Decoder, Multiplexer, De-Multiplexer gibi konuları incelemem lazım, gerekirse senin yaptığın gibi microcontroller, logic entegreler ve ledler ile sonuç görerek kafamda netleştirmem lazım ne gibi durumlarda kullanılabileceğini.

Bir de bit işlemlerini kullanmak gerek bol bol, yüksek seviyeli diller ile çalışmak insanı köreltiyor, standart işlemlerin dışında işlem kullanamaz hale geliyor insan. Temelde Matematik Bölümü mezunu olduğum için (her ne kadar şu anda memur olsam da) çok sıkıntı olmayacaktır. ;)

Sonuçta dönüyor dolaşıyor zamana bağlanıyor konu. Ama gecenin bir yarısında da olsa bir led doğru koşulda yandığı zaman çok mutlu oluyor insan. :D


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Ocak 23, 2015, 11:42:49 ÖÖ
İhtiyaç üzerine uğraşırsan daha iyi öğrenirsin. Bu nasıl çalışıyormuş dur deneyeyim de öğretiyor ama bilgi elementer düzeyde kalıyor ve sürekli taze olması gerekiyor. Bunların kombinasyonu ile ilgili çok fazla fikir vermiyor sana. Küçük bir proje belirleyip yapmaya çalış bence.

Teori de aynı şekilde sürekli taze kalmalı ki işine yarasın. Örn. geçen counter'lar elime ulaşmamışken dur yav elimdeki flip flop'larla yapayım diye bir araştırdım. Anlatımı yapan yerlerde karnaugh map kullanarak teorisinden çözüyorlardı olayı. Flip flop'lar artı and ve not kapıları kullanılıyordu. Okulda  logic dersinde karnaugh map görmüştük ama nasıl yaptığımızı net hatırlayamadım. Tekrar girmeye üşendim açıkçası, daha pratik bir şeyler aradım ve bir yerde daha pratik olarak mux ile flip flop'ları kombine ederek de counter yapılabileceğinden bahsetmişti. Yani her zaman teori üstünden gitmek yerine pratiğe dönmek daha faydalı olabiliyor :)

Gerçi ne oldu yaptığım counter devresi çalışmadı :) Logic analyzer'ım da gelmediği için üşendim debug etmeye, sonra counter'lar geldi zaten.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Ocak 23, 2015, 22:29:26 ÖS
Bu arada bugün gidip posta dağıtım merkezinden aldım tl866'ımı :) Çalışıyor canavar gibi.

Bir adet 27c256 üstünden 5 tur antibakteriyel diş fırçası kabı ile geçtim bir kaç yer hariç nerdeyse tamamını sildi. İki tur daha geçersem tertemiz olur herhalde :)

Şimdilik bir şey yazmayacağım için ram entegrelerini falan test ettim. Sipariş ettiğim 10 adet eprom da gelirse silme işlemleri ile vakit kaybetmeden çalışmaları yaparım. Tabii önce o bacağını eline verdiğim 6510'u tamir edip bacağa sabitleyeceğim kablonun oynama yapmadan duracağı bir break out board tarzı bir şey hazırlamam lazım. Aslında görüntü problemi olan c64'lerden birine de hallenebilirim ama şansımı denemek istiyorum.

Bir an önce işlemci siparişlerini vermek lazım.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Ocak 24, 2015, 03:14:26 ÖÖ
Bugünün özdeyişi şu : Kodda büyük sıçışlar sağlam debug gerektirir.
Ha bir de telepatik bir durum olduğunu görüyorsan koda çok dikkatli bakacakmışsın. Yanlış kurulmuş devrede bile sonuç düzgün çıkıyor ve buna anlam veremiyorsan sonucu yazdığın yere bakacaksın.

Neyse efendim, proteus'ta cayır cayır çalışan devreyi bugün 12 bit'lik counter ile kurdum. Çalıştırdım, baktım sonucu doğru üretiyor ama hata bulduğunda yaktığım yeşil led de parıl parıl parlıyor.  Kodu tekrar incelediğimde telepatik güçlerin kaynağını buldum. Kodda sonucu göstermek için şunu kullanmışım         

PORTC = eqVal;

Halbuki benim ram'den okuduğum değer readByte değişkeninde. Neyse efendim kodu düzelttim. Baktım harbiden de saçma sapan değerler okuyorum ram'den gerçek devremde (proteus'ta hala düzgün çalışıyor) O zaman devrede problem var. Ne olabilir ne olabilir derken, 32kb'lik bellek kullandığımı ancak counter'ın yetmediği en anlamlı iki adres bacağını bir yere bağlamadığımı farkettim. 32KB'lik bellekte adres bacakları A0, A1...A13, A14 şeklinde 15 tane. Aslında iki değişik ram kullanıyorum, diğeri bununla pin uyumlu ve 8kb yani bir tane adres bacağını ground'a yani 0'a bağlamam yetiyordu. Breadboard'a düzgün oturmadığı için ondan da kıllandığım için değiştirmiştim.

Neyse efendim sram'in gereksiz olan adres bacaklarını toprağa bağladım. Bu arada data bus'ı yanlış bağladıysam diye programı değiştirdim. Checksum yerine 0-255 arası sayıları yazıp okumaya çalıştım. Pic için doğru delay rutinini de bulup yerleştirdim ve okumaları izlemeye başladım. Bu sefer de okunan sayılar gayet mantıklı birer birer artıyordu ama tüm okumalar hatalı gibi algılıyordu program. Yeni programa bakınca bir hata daha farkettim. Onu da düzeltince yeni program devre üstünde hatasız çalıştı sonunda.

Sonra bakayım tüm 12 bit'le adreslediğim yerlere düzgün yazıp okuyabiliyor muyum diye orjinal programın fix edilmiş halini devrede çalıştırdım. Nihayet o da düzgün çalıştı, doğru sonucu buldu ve bu sefer hataları müjdeleyen yeşil ledi yakmadı.

Böylece projenin önemli bir aşamasını daha atlatmış oldum. Okumaya gerek yok aslında nihai projede ancak yazmanın doğruluğunu test etmek için bunu da yapmak şarttı.

Bu arada devrenin sağını solunu mıncıklamak gerekiyor çalışması için demiştim. Bunun çaresi de benim kaynak olarak aldığım orjinal devrede bulunan direnç ve kapasitör üstünden MCLR hattına yapılan bağlantıymış, reset butonu da bağladım. O kısmı da taktıktan sonra artık kablolarla haşır neşir olmadan çalıştırabiliyorum mereti.

Sırada 6510'u kurtarma çalışması var... 6510'u adam edersek basit bir ses test programını kernal rom'u gibi kullanıp sid'den blip blop duymaya çalışacağım.

ps1 : Bu arada ilk mesajıma tekrar baktım da. Pcb işine olmaz olmaz olmaz demişim, halbuki paralelde çok başarılı olmasa da bu konuda da ilerleme kaydettim aslında. Bu güzel bir şey.

ps2 : Sipariş ettiğim eprom'lar ve logic analyzer da yurda girmiş. Umarım önümüzdeki hafta da onları teslim alırım.

Logic analyzer şöyle bir şey : http://www.aliexpress.com/item/1pcs-New-Arrival-USB-Logic-Analyzer-24M-8CH-MCU-ARM-FPGA-DSP-debug-tool/1710322113.html (http://www.aliexpress.com/item/1pcs-New-Arrival-USB-Logic-Analyzer-24M-8CH-MCU-ARM-FPGA-DSP-debug-tool/1710322113.html)

7 küsür dolar, dijital devrelerde osiloskopun yerine geçiyor diyebiliriz. Tam sinyali değil zamana göre lojik seviyeleri gösteriyor. Daha önce hiç kullanmadım bakalım ne kadar işe yarayacak.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Ocak 25, 2015, 18:27:45 ÖS
Maalesef 6510'un kopuk bacaklarına bağlantı lehimleme çalışması başarısızlıkla sonuçlandı.

6510 yahut 6502'yi tedarik etmem lazım. Aklıma ilk gelen Elimdeki 1541-II drive'ın içindeki 6502'yi çıkarmak. Netten baktığım resimlerde soketli olduğu gözüküyor. Ya da soketli 6502 içeren başka bir cihazdan temin etmek..

Elinde fazladan 6510 yahut 6502 olan varsa ve satabilirse sevinirim :)

ps1: Dayanamayıp eldeki kuşa bir bakayım dedim ve 1541-II'nin içini açtım. 6502 soketli değilmiş :(
ps2: Ebay ve aliexpress üzerinde mekik dokuduktan sonra şansıma Türkiyede UM6502 satan bir yer buldum ve oradan sipariş verdim. Allahtan Ebay'de 6502'nin bulgar klonunu satan eleman ilanında 5 adet alıma sınır koymuş. Yoksa oradan alıp bekleyecektim. (Buradan aldığımı beklemem inşallah :) )  28 pin ve 40 pin zif soket de sipariş ettim. Bu entegrelerin bacaklarına iyi bakmak lazım.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Ocak 26, 2015, 01:21:22 ÖÖ
6502'leri beklerken diğer işlerle biraz ilgileneyim dedim. Öncelikle sd kart erişim olayını biraz araştırdım, sd kart ile spi üzerinden haberleşme için örnek kodlar buldum. Mplab kullandığım için adapte etmek zorunda kalacağım muhtemelen bazı kısımlarını. Sd kart için 3.3v regülatör lazım, ayrıca sd kart konnektörü lazım.

Bu arada araştırmalarım sonucunda 8 bit micro'lar için filesystem işine pek girişilmemiş gibi gördüm. 16f877'de 368 byte ram var aslında yeterli gibi okuma yapmak için ki hali hazırda sram'e yazacağım için büyük bir buffer'a falan da ihtiyacım yok benim. Petit fs içinde bit banging ile SPI yapan generic bir kod örneği de var. XC8 ile nasıl sonuç verir derlenmesi görmek lazım. Aslında forumları okuduğumda filesystem kullanmam sektör sektör özel bir formatta raw bir şekilde okurum diyordum ama derleme işleri hallolduktan sonra filesystem de kullanabilirim gibi. Derleme işleri zora girerse ya compiler değiştirilecek ya da raw erişim çözümüne döneceğim.

Proteus bu anlamda büyük nimet, sd kartı bilgisayardaki bir dosyaya yönlendirebiliyorsun, sram'ın da içeriğini görebiliyorsun. Mikroyu doğru programlamaya ve basitçe devreyi çizmeye kalıyor iş. Yazılım kısmını halletmek için çok güzel ortam sağlıyor.

Sd card araştırmasından sonra ikinci sid test rutini ile ilgilendim. Sid'in referans uygulamasında ilk testi sram kullanmadan sadece eprom ile yapmaya karar vermiştim. Sıfırdan bir şey yazmama gerek kalmadı, örnek olarak faydalandığım projede elemanın kullandığı ufak bir sid test rutini vardı. Bunu 6502 simulator & debugger'da yazıp derledim ve kernal.rom'u haline getirdim.

Program şu

Kod:
	*=$FF00

LDA 3
STA $d418
LDA #$be
STA $d405
LDA #$f8
STA $d406
LDA #$18
STA $d400
LDA #$0E
STA $d401
LDA #$11
STA $d404
HOP CLC
BCC HOP

.ORG $FFFC

.BYTE $00, $FF

CCS64'ün altındaki rom dosyasını bu dosya ile değiştirip test ettim. Program kare dalga kullanarak ses çıkarıyor. Referans uygulamayı yaptığımda bu sesi duymayı bekliyorum.

Bu testi yapmadan önce halletmem gereken 2 mevzu daha var.

1. Clock sinyali : Ben işlemciyi 2mhz ile çalıştırırım diyordum ama sid'i unutmuşum. 2mhz desteklediğine dair bir bilgi bulamadım. Muhtemelen flip flop kullanarak 4mhz'i 2mhz'e indirmeyi bir adım öteye götürüp 4mhz'yi hali hazırda devreye 12 bit'i 16 bit'e tamamlamak için ekleyeceğim dual 4 bit counter'lardan boşta kalan birini kullanıp elde edeceğim.

counter'ın 0 nolu çıkışı her clock sinyalinde 0 ile 1 arasında gidip geliyor. Sinyali buradan almak demek frekansı 2'ye bölmek demek. 1 nolu çıkıştan alırsak da 4'e bölmüş olacağız.


2. 6502/6510 için reset sinyali. Orjinal uygulamalarda reset bacağına yarım saniyelik tek bir pulse gönderiliyor. Bu da 555 entegresi ile oluşturulmuş bir devre yardımı ile yapılıyor. Projenin finalinde reset bacağını pic ile kontrol etmeyi düşündüğüm için 555 kullanmama gerek yok. İlk test için de bu devre yerine elimdeki 16f84'lerden birini kullanmayı düşünüyorum. Çıkış bacaklarından birini yüksek seviyedeyken yarım saniye boyunca düşük seviyeye geçirmek sonra tekrar yüksek seviyeye çekmek yeterli olacak.

Şuradaki c64'ün servis kitabındaki 5. sayfada bahsettiğim devre mevcut.
http://www.bombjack.org/commodore/commodore/C64-C64C_Service_Manual_314001-03_%281992_Mar%29.pdf (http://www.bombjack.org/commodore/commodore/C64-C64C_Service_Manual_314001-03_%281992_Mar%29.pdf)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: joker_ üzerinde Ocak 26, 2015, 08:01:58 ÖÖ
i_r_on, paylaşımların için çok teşekkürler. Proje ait içeriklerde çok güzel bilgiler veriyorsun. İlgiyle takip ediyorum ;)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: AmigaMan üzerinde Ocak 26, 2015, 08:33:23 ÖÖ
Emeklerin bizler icin degerli birer altin bilezik tesekkurler


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Ocak 28, 2015, 00:02:53 ÖÖ
@joker, @AmigaMan : Sağolun, ben de aslında bir yandan öğreniyorum. Bu esnada sizlere yanlış yahut eksik bilgiler de verebilirim, kusura bakmayın. İdeali yapmak yerine biraz kolaya kaçmayı seviyorum herhalde. Benim çözümlerime biraz da o gözle bakın. Pic'lerle bu şekilde bir Sram entegrasyonunu görmedim misal, tembellikten fantaziye kaçtım biraz. Bu şekilde erişim otomatikman counter'ların yavaşlığını bellek erişimine ekliyor, bellek erişimi bir kaç kat yavaş oluyor. Max 64k doldurmak için benim devremde önemli değil ancak ses kaydetme çalma gibi işlerde bu hız yetmeyebilir.

Bu arada dün elde yeni malzeme olmadığı için elimdeki dandik ancak çok akım çekmeyeceğini bildiğim speaker'ı test etmek istedim. Başarısız bir deneme oldu, speaker'dan gürültü şeklinde sesler elde ettim daha çok. Elimdeki tek olan 16f877'yi harcamayayım dedim belki başarılı olursa ucu bir oyuncağa falan gidebilir diyerek elimdeki 16f84'lere 12+3=15 bit counter ile eprom'a (27C256) bağladım. Eprom'a da raw 8 bit bir ses kaydı koydum yaklaşık 15k'lık.

Önce PWM yapmayı deneyerek tek bir output bacağından sürmeye çalıştım speaker'ı. Hışırtı hariç bir şey duyamadım. 16f84 üzerinde ya da başka bir DAC entegre olarak olmadığı için direnç merdiveni yöntemi ile 3 bit çalayım bari dedim. O da yemedi. Artık ses kaydının formatı mı özel onu araştırmam lazım. Daha sonra 16f877'nin üzerindeki DAC ile tekrar deneyeceğim.

Neyse, yeni malzemeler elime ulaştı bugün. Şu şekilde,

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

Referans sid uygulamasını yapmayı deneyeceğim bugün. Aklıma address decoding'i bertaraf etmek için yine kaçak bir yöntem geldi. Daha önce paylaştığım minik assembly programında sid'in base adresini $D400 adresi yerine $8000'den küçük herhangi bir 32 byte'lık sayfadan kullanacağım. Eprom'a erişim sadece $FF00-$FF23 adreslerinden ve $FFFC-$FFFD adreslerinden olacağı için sid için tüm adresi decode etmek yerine adres hattının en anlamlı biti olan A15'in 1 olup olmadığını anlamak yeterli olacak. Sid'in CS sinyali low active yani 0 gönderdiğimizde sid'i enable edecek. Herhangi bir inverter'a vesaireye de böylece ihtiyaç olmayacak. A15'i doğrudan Sid'in /CS hattına bağlayabilirim.

Eprom'un CS sinyali de low active, eprom'a erişimler hep F (1111) ile başlıyor. Burada aynı üç kağıt yemiyor ne yazık ki. Eprom'da kullanılan adreslerde değişmeyen bir bit bulursam sid'i A15'in 0 olduğu ve o bit'in de sıfır olduğu bir adrese yerleştirmem durumunda Eprom'un CS sinyalinde kullanabilirim. Devreden bir inverter eksik edeceğiz de daha az elemanla test yapacağız diye attığımız taklalara bak.

Bunun için $00-$23 aralığını ve $FC-$FD sayılarını 8 bit binary olarak bir yazıyorum. Hissiyatım aradığım bit'in A6 olduğunu söylüyor bu arada.

A7 - A0 arası
$00 - 00000000
$01 - 00000001
..
$07 - 00000111
$08 - 00001000
$09 - 00001001
...
$0F - 00001111
....
$23 - 00100011

Bunların haricinde

$FC = 11111100
$FD = 11111101

Yanlış hesap. O inverter devreye girecek anlaşılan :) Adreslerde 0'dan 1'e değişimin olmadığı hiç bir bit yok. Cold reset vektörünün adreslenen bölgenin en sonuna yerleştirilmiş olması işimizi bozdu. Kod ardışık yazıldığı için mecbur en alt 5 bit'te hem 1'ler hem 0'lar var.  $FC - $FD adresleri el mahkum kullanılıyor çünkü işlemci kullanıyor bu adresleri. Bu iki değerde göze çarpan düşük anlamlı 2. sıradaki bit'in sıfır olması. Kodu bu bitin hep sıfır olduğu adreslere yazarsak olabilir. Ancak bu da mümkün değil zira üç byte tutan STA komutları kullanmak mecburiyetindeyiz. Hadi zero page'i de bir şekilde kullandın ve 2 byte ile yazdın diyelim. Peşine dallanmak gerekecek...

Neyse tembellik başa bela, o inverter devreye girecek :)

İşe clock sinyali ile başlamayı düşünüyorum. Yeni gelen logic analyzer'ı test etmek için çok iyi bir fırsat bu.


ps : Logic analyzer beklediğimden tırt çıktı... Ya da ben bir şeyleri yanlış yaptım... İlk baktığımda counter'ı eklemeden devre 4mhz clock üretiyordu. Sonra counter'ı ekledim, doğru düzgün sonuç vermedi.  Sonra bir ara devreyi baştan yaptım counter'sız hali 12Mhz verdi... sonra da hiç sinyal alamadım. En iyisi devreyi proteus üstünde bir denemek. Clock sinyalini üretme kısmında kaldık anlayacağınız.




Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Ocak 28, 2015, 22:38:47 ÖS
Biraz geç oldu ama 1mhz'i üretmeyi başardım :)
Sorun counter'ın low active MR yani Master Reset bacağını toprağa bağlamamış olmam imiş. Başka bir noktadan sorunu yakalamaya çalışırken şurada cümle arasında görüp tespit ettim. http://electronics.stackexchange.com/questions/44786/hef4060b-counter-doesnt-count (http://electronics.stackexchange.com/questions/44786/hef4060b-counter-doesnt-count)

Eleman MR'yi ground'a bağladım, vesaire vesaire yaptım demiş.. Lan ben bağlamadım dedim :) Daha önceki kullanımlarda MR bacağını Pic'e bağlamıştım. O zaman gerçekten sıfırlama amacıyla idi. Sıfırlama amacı olsun olmasın bağlamak lazımmış. Daha önce adres bacağını sıfırlamadığım için yediğim golden sonra bu da çalıştığım yerden geldi.

Logic analyzer'da şöyle gözüküyor. En üstteki 4mhz crystal'den ürettiğim sinyal. Sırasıyla alttakiler, 2mhz, 1mhz, 500khz şeklinde gidiyor. Bu arada epey komplike bir devre oluşuyor board'da sırf osilatör için. Şu dört bacaklı osilatörlerden kesin almam lazım.

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

ps: Sırada reset devresi var. Bunda vakit harcamam umarım.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Ocak 28, 2015, 23:15:57 ÖS
Reset devresi de tamamdır. 0.5sn logic sıfırda kalan onun haricinde 1 olarak giden bir sinyal üretmem gerekiyordu. Pic16f84a delay komutu ile kısaca yazdım.

Program ekte. Orjinal devrede böyle ekstra bir pic kullanımı olmayacak bu arada. Bu sadece test için.

ps: Bu arada dünkü başarısız denemelerden sonra logic analyzer'a az daha bok atıyordum. 1Mhz Osilatör devresini de Reset devresini de bu aletle debug ettim. Kullanması oldukça basit ve başarılı. Sadece devrenizin yanlış çalıştığına inanmanız gerekiyor :)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Ocak 29, 2015, 01:38:31 ÖÖ
Test devresini kurdum. Logic analyzer'ın en çok işe yarayacağı an bu an. Sid'i öldürmemek için devreye bağlamadım. Logic analyzer ile 6502 / Eprom ve Sid'in bacakları açısından işler yolunda gidiyor mu diye önden bir test etmek istiyorum. Elimde fazla Eprom ve 6502 var ancak 8580 (En yeni kasalarda kullanılan sid modeli) bir tane.

8580 6581'den farklı olarak 9v gerilim istiyor. Benim elimde 12v elde etme imkanı olmadığı için mecbur böyle bir seçim yapmak zorunda kalıyorum şimdilik.  Pc power supply'ı kullanılabilirdi belki ki elimde de fazla var ancak bu konuda deneyimim yok. Şimdilik 9v pil ile şansımı deneyeceğim bakalım.

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

Bu arada eprom konusunda bir tüyo, elinizde eprom sayısı az ise ve/veya silmekte zorlanıyor iseniz aynı eprom'u tekrar tekrar yazabilirsiniz. Yapmanız gereken ihtiyacınız olmayan bölgeleri yazacağınız dosyada FF şeklinde bırakmak. Eprom'un default içeriği FF olduğu için bir kere yazdıktan sonra FF kalan yerler değiştirilebiliyor.  Eldeki eprom atıyorum 64k ise ve siz de 8k 8k kullanacaksanız. Devrenize bağlarken sadece adres bacaklarını değiştirip aynı eprom'u silmeden 8 defa kullanabilirsiniz.

Bu OTP eprom'lar için de geçerli. Elinizde silinebilir eprom yoksa ancak içinde size yetecek kadar bitişik FF bulunan bir OTP eprom varsa bunun FF bölgelerini programlayıp kullanabilirsiniz. Geri kalan içeriği olduğu gibi aynı yapmalısınız dosyanızda.



Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Ocak 29, 2015, 02:23:36 ÖÖ
Devreyi logic analyzer ile çalıştırdım. İlk problemler, board'ların arasındaki +5v, GND geçişleri düzgün yapılmamış. Ancak devamında modüler çalışmanın hediyesi olsa gerek 6502'ye reset atıp çalıştırmayı başardım. Sid testi daha sonraya kaldı. C64 açıp ciğerinden sid'i çıkarmam lazım falan... iş güç var yarın.

Devre çalıştığında logic analyzer'daki görüntüsü...
Sırasıyla, Clock, Eprom /CS, Reset, A0, A1, A2

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

Elimdeki logic analyzer 8'den fazla kanallı olaydı belki 8 adres bacağına da bağlamak mantıklı olabilirdi. Diğer testleri sonraya bırakıyorum artık. Herkese iyi geceler.



Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Ocak 30, 2015, 02:51:11 ÖÖ
Bugün sid'i takıp denedim. Sonuç hüsran :( En azından çip yakma falan yok şimdilik bu iyi.

1. Kesinlikle daha fazla kanalı olan logic analyzer almalıymışım. Analiz seçeneklerinden Simple Parallel tam bana göre. Program istediğiniz kanalları D0'dan D15'e atıyor sonra sinyalleri otomatikman Text ve/veya Hex değerlerine çeviriyor. Sallıyorum 8 Data, 8 adres bus'dan 16 kanal bağlansa hangi adresten ne yazılıyor ne okunuyor görmek mümkün.

2. Salae logic analyzer programının bir sıkıntısı var, iki de bir crash olup duruyor. Doğru düzgün analiz yapamadım bu yüzden. (belki ram'den belki de disk alanının azlığından... ssd yetersizliği...)

3. ZIF soket fikri iyi bir fikir değilmiş. Özellikle de taktıktan sonra yerinden çok da oynatmayacağınız entegreler için breadboard söz konusu olduğunda kolaylıktan çok zorluk getiriyor. Sid için bacaklarını koruma maksatlı kullanılabilirdi ancak aldığım zif soket sid için darmış. Sid'i c64'ten çıkarıp da bunları bir araya getirince anladım :) Alınan malzemenin enine boyuna bakmak lazım.

4. Sesi daha çalamadım ama devredeki gürültüyü engellemek için epey çalışmak gerekecek bunu anladım.

5. Devreyi değiştirdim. Logic analyzer'ı düzgün kullanmak ve bağlantıları doğru yaptığımdan emin olmak için 6502'nin adres bacaklarını ve data hatlarını boş bir bölgeye çıkarıp diğer entegrelere hatları buradan gönderdim. Daha fazla kablolama gerekti ancak logic analyzer'ı data yahut adres bacaklarına daha rahat ve doğru bir şekilde takabiliyorum. Aynı şekilde çiplere doğru sinyalleri göndermek daha az çaba istiyor.

Son gelinen noktada data bus'ı logic analyzer'dan test ettiğimde 6502'nin yazma yapana kadar düzgün çalıştığını görüyorum. Başlangıçta FFFC ve FFFD adreslerindeki değeri okuyor, sonra oraya gidip ilk komut olan LDA #$03'ü de okuyor. STA komutunu da okuduğunu görüyorum ancak sonrasında bus'ta alakasız değerler gözüküyor. Muhtemelen eprom ve/veya sid de o sırada data bus'ı kontrol ediyor. Eprom üstünde iki tane seçici pin var, biri /G hattı, diğeri de /CE. Ben /CE'yi A15'in ters'ine bağladım, /G'yi de R-/W hattının ters'ine. Derken dur lan deneyeyim bari dedim en azından Eprom /W sinyali oluştuğunda enable olmasın diye /G'ye gönderdiğim sinyali oraya da gönderdim. (Aslında A15'le de and'lemek lazım)  Neyse nihayetinde ses elde ettim :) Monoton olmayan bir deneme programı yazıp tam emin olmak lazım.

Sram'i de entegre edip ikinci testi gerçek sid ile yaptığımızda geriye Sd kart erişimi, kontroller ve display sürme kalıyor. Ben herhalde esas kolay kısmını atlattım henüz :)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 02, 2015, 00:18:52 ÖÖ
Son gelişmeleri de aktarayım.

Eprom'un /E ve /G bacakları doğru bir şekilde select edilmediğinden öncesinde devre düzgün çalışmıyordu. Sonra bunu hallettim. Deneme programım sabit frekanslı bir şey çalıyordu. Çıktıdan tam emin olmak için döngü içinde frekansı değiştirip efektli bir program elde edip bunu denedim. Program devrede istediğim gibi çalışıyordu. Ancak bir sıkıntı vardı. Efekt bir kaç saniye çalıyor sonrasında ise kesiliyordu. Hatta süresi duruma göre bazen uzun bazen kısa oluyordu. Büyük ihtimalle data bus'taki contention problemi yani birden fazla cihazın data bus'a aynı anda write yapması problemini gideremedim.

En büyük problem bu arada en az problem beklenecek yerden bağlantı kablolarında çıkıyor, şöyle ki meretler yetmiyor :) Hafta sonu gittim bir miktar daha aldım, onlar da yetişmedi. Artık türlü taklalar atıyorum.

Mevcut problemi tam olarak halletmemişken dur dedim ikinci test'imi yapayım. Devreye Sram de ekleyip konunun başlarında daha önce emulatör ile çalışmasını yaptığım rom'u kullanıp gerçek bir sid çalayım dedim. Bir kaç saniye de olsa çalışırsa belki sevindirik olurum diye, motivasyon olayı :)

Öncelikle olması gerektiği gibi eprom'u ayrı bir board'a zif sokete aldım. Onun yerine devrede sabit olacak sram'ı yerleştirdim. Bacak dizilimleri çok farklı olmadığından çok fazla uğraştırmadı.

Sonra devrenin final halinde de hafif değiştirilip kullanılabilecek bir address decoding devresi oluşturdum yine ayrı bir board'da. Led'lerle address decoding'i test ettim.

Bu konuda şurası oldukça güzel bir kaynak : http://www.wilsonminesco.com/6502primer/index.html (http://www.wilsonminesco.com/6502primer/index.html)

Yalnız burada yaşadığım bus contention problemi ile ilgili pek bir şey bulamadım.

Address decoding kısmında AND yerine NAND kapısı kullanıldığında oluşan sinyali tekrar invert etmeye gerek kalmıyor. O yüzden sadece NAND kapıları kullandım. (Logic yazılırken Nand diye yazılmıyor ama idare edin, devre şemasını vermeye üşendim şimdi) Sebebi ise üretmeye çalıştığımız sinyal low active bir sinyal. 0 elde etmeye çalışıyoruz.

Bu arada bir not : Propagation delay'i azaltmak için logic kapıları tekrar tekrar kullanmamak gerekiyor. Yani bir yerde ürettiğiniz sonucu diğer sonucu üretmek için input olarak kullanmamak gerekiyor.
Gerçi 1Mhz için çok da bir şey farketmiyor. Bir cycle tam 1000 ns, bellek erişimi yarısında yapılıyor yani totalde 500ns süre var. Logic entegrelerin propagation delay'leri ise 15-30ns arasında. İşi abartmadıkça bir miktar cascading yapılabilir. Elimdeki sram'in erişim süresi 35-70ns aralığında. Eprom'unki 45ns. 6502'nin adresi setup zamanı vesairesi de var ancak bellek erişimi harici totalinin 430ns'lere ulaşması lazımki bana problem olsun.


RAM /CS /OE = (PHI2 NAND NOT A15) ; PHI2 sinyali 1 iken ve A15 0 iken 0 üretiyor. Diğer türlü 1. 32K ram adresliyoruz bu şekilde 0000-7FFF aralığı

EPROM /CS /OE = (A15 NAND A14 NAND A13) ; A15, A14 ve A13 bir iken 0 üretiyor. E000-FFFF arası 8K rom adresliyoruz.

SID /CS = (A15 NAND A14 NAND NOT A13 NAND A12) ; A15, A14, A12 1 ve A13 0 iken 0 üretiyor. D000-DFFF aralığında I/O adresliyoruz. Yani sid register'ları her 32 byte'da bir bu 4k'lık alanı kaplıyor. Nokta atış D400 yapmak istersek address decoding biraz karışıyor o yüzden şimdilik basit tuttum. Şu an bağlayacağım başka I/O cihaz yok zaten. C64'de bu decoding üstüne demultiplexer kullanılarak birden fazla I/O cihazı select edilmiş.


Doğruluk tablosu (Belleğe yazma PHI2 yüksek iken olduğu için 1 kabul ediyorum)

---A15/A14/A13/A12-------RAM /CS-----EPROM /CS----SID /CS
---------------------------------------------------------
0-0/0/0/0-----------------0------------1------------1----
1-0/0/0/1-----------------0------------1------------1----
2-0/0/1/0-----------------0------------1------------1----
3-0/0/1/1-----------------0------------1------------1----
4-0/1/0/0-----------------0------------1------------1----
5-0/1/0/1-----------------0------------1------------1----
6-0/1/1/0-----------------0------------1------------1----
7-0/1/1/1-----------------0------------1------------1----
8-1/0/0/0-----------------1------------1------------1----
9-1/0/0/1-----------------1------------1------------1----
A-1/0/1/0-----------------1------------1------------1----
B-1/0/1/1-----------------1------------1------------1----
C-1/1/0/0-----------------1------------1------------1----
D-1/1/0/1-----------------1------------1------------0----
E-1/1/1/0-----------------1------------0------------1----
F-1/1/1/1-----------------1------------0------------1----

Dikkat edilirse 8000 ile D000 aralığında hiç bir bölge seçilmiyor. Çünkü şu an işi basit tutmak için 32k sram kullanıyorum. Elimdeki tüm sram'ler 32k'lık.

Zaten şu anda ram ile çalışmasını da geçtim, address decoding sonrası yine sid'i D400'de gören basit efektimi çalıştırmaya çalışıyorum ama çalışmıyor. Yine bir debugging faslı geçmem gerekiyor.

Dünkü debugging faslında az kalsın 8580'i (Sid'in 9v ile de çalışabilen versiyonu) elime alıyordum. 9 voltu bir ara yanlışlıkla Vdd hattı yerine Audio out hattına bağlamışım. Sonra neyse ki C64'de denedim bir şey olmamış. Ancak gidişat proje bitene kadar en az bir kaç sid hacemat edeceğim gibi gösteriyor.

Bu arada sorun clock sinyalinin çapaklı olması, devreye yeterince akım gitmemesi (pil kullanıyorum) gibi sebepler de olabilir.

İlk iş tüm güç girişlerine birer kapasitör bağlamak olacak. Yine belki bir güç kaynağı alıp pil mevzunu ortadan kaldırmak ta en azından sorunun kaynağı noktasında bir noktayı daha ekarte etmek adına önemli olabilir.

Yine aynı şekilde clock generator devresi yerine 1mhz oscillator'ü acilen temin etmem lazım.

Devrenin son hali şu şekilde bu arada. Epey saçaklandı.

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

Beri yandan sid için sid datasheet'inde verilmiş implementasyon ile c64'deki uygulama arasında ciddi farklar varmış bunu farkettim. Eski sid versiyonlarında gürültü azaltmak için ferrite bead kullanılmış. 8580'i içeren uygulamada ise kaldırılmış bu, hatta sanırım 8580 için filtre bacaklarına kapasitör bağlamanın da bir esprisi yokmuş. Referans implementasyona göre en büyük fark çıkışta bir adet transistör bulunması c64'deki uygulamada. Sesin kısık olması problemini bu transistör çözecek. Bu arada çıkışa 10uF yerine 1uF kapasitör koymuşum, yüksek parazitin ana kaynağı da bu olsa gerek. Onu da değiştireceğim.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: barone üzerinde Şubat 02, 2015, 02:38:17 ÖÖ
Benzer şeyler söylenmiş ama ben de kendi adıma belirtmek istedim:

Daha önce, hemen hiçbir şey anlamadığım bir meseleyi bu kadar ilgiyle takip etmemiştim.

Genelde forum ortamında başlığa gelen cevap/yorum sayısı, konuya duyulan ilgiyi gösteren bir ölçüdür. Ama burada olduğu gibi, mevzunun genel bilgi ve deneyim seviyesini aştığı durumlarda, ister isemez bir "monolog" ortaya çıkıyor.

Gelişim sürecindeki detayları anlamayan veya "az anlayan" bir insan olarak; "Neticede ortaya çıkacak 'ürün'den faydalanma/edinme/üretme" fikrinden bağımsız bir şekilde, bu ve benzeri başlıkları takip etmekten mutluluk duyuyorum.

Lütfen bu konulara kafa yormaya ve deneyimlerinizi paylaşmaya devam edin.

Kolay gelsin. :)



Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 02, 2015, 03:01:37 ÖÖ
@barone : hakaten bazen ben de bu şekilde hissediyorum, yani bir monolog içindeymişim gibi. uzun süredir elektronik ile uğraşmadığım için elektronik ile alakalı bir yere de üye değilim. interneti eprom gibi kullanıyorum, sadece değişik kaynaklardan okuyup bilgi elde etmeye çalışıyorum.

Okuyup keyif alanlar, yahut bir şeyler öğrenenler varsa ne mutlu bana.

Yazmışken bugün yazacaklarımın geri kalanını da yazayım bari yeni mesaj oluşturmayayım.
--

Sanırım biraz şom ağızlıyım. Devreyi gözümle takip edip ilk bug'ı buldum. Eprom'a giden A0-A7 arası adres hatlarını ters bağlamışım. Düzelttim. Sonra test eprom'unu çalıştırdığımda çalıştı, beklediğim sesi duydum. Yine bir yerden sonra kesiliyordu ses, yine oldukça fazla gürültü mevcuttu.

C64'deki uygulamadaki gibi 1uF kapasitör yerine 10uF kapasitör kullanayım dedim ses çıkışında, belki dedim gürültü azalır. Kullanmam gereken 25v elimdeki kapasitör ise 100V'luk idi. Devamında muhtemelen sid'in ses çıkışı cortayı çekti. Eski haline getirdim ama bir daha aynı sonucu vermedi.

Bacaklarına zarar vermemek için şimdilik deneyemiyorum c64 üstünde. Uygun malzemeler elime geçince bir kontrol edeceğim bakalım. 12v elde edebilirsem direkt 6581'lere geçeceğim artık mecburen.

Bir yandan da projenin mantığını sorguluyorum kendi kendime, böyle sid ezmeye devam edersek günün birinde elimizde sid kalmayacak herhalde. Bunu yapmak yerine mp3 olarak kaydedilmiş olan sid'leri mi kullansak acep?

Ancak bu noktaya kadar gelmişken bir yanım da projeye devam etmek istiyor. Belki ileride çok parası olan bir c64 gönüllüsü reverse engineer edilmiş sid çiplerini eski teknoloji ile yeniden üretir diye düşünüyorum. Beri yandan insanlar "c64 mü hala var mı onlardan?" derken sayılarımız azalıp öldürdüğümüz çiplerden kalanlar bile bize yetebilir.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Simon (Özay Turay) üzerinde Şubat 02, 2015, 08:45:14 ÖÖ
İlgiyle takip ediyorum ben de.

Kafama birşey takıldı, kondansatörlerdeki voltaj değeri maksimumu belirtmiyor muydu ya? Sonuçta sen ne kadar voltaj verirsen o kadar voltaj alman gerekiyor konsansatör'den. Bence bir yerlerde kısa devre falan olmuştur o yüzden yakmışsındır çıkışı. Üzüldüm emektar SID için. :(


Konu Başlığı: Ynt: Psid player projesi
Gönderen: LW3D üzerinde Şubat 02, 2015, 10:00:08 ÖÖ
Bende ilgiyle takip ediyorum, ama bazen kendimi Güldür Güldür'ün Plaza Dili skecindeki gibi hissediyorum :) Merakla takipteyim..


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 02, 2015, 20:19:13 ÖS
@Özay : Haklısın, ben de öyle düşünüyordum aslında ama işte bir sıkıntı olunca insan suçlayacak bir yer arıyor :) Bu arada ölmemiş olma ihtimali az da olsa var. Hala içindeki osilatörler çalışıyor, zaman zaman saçma sapan sesler üretiyor. Belki tek başına sid testi için ayrı bir devre yapabilirim. Pic'den doğrudan sid'in 8 bit data bus ve 5 bit adres bacaklarına çalışıp basitçe ses testi yapan bir devre iş görür. Kenarda durur sid'leri öldürüyor muyum ayakta kalıyorlar mı kontrol etmiş olurum.

@LW3D : Terminolojiyi Türkçe de kullanabilirim aslında ama bu sefer de mevzudan anlayan birinin türkçesinden anlamama riski var :)

--

Bu arada bu geceki çalışmanın konusu NOP komutu ile Eprom + 6502 testi. NOP yani No operation komutu adı üstünde hiç bir şey yapmıyor. Bunun makine kodundaki opcode'u $EA. 6502 reset'i yediğinde $FFFC adresinde düşük $FFFD adresinde yüksek baytını bulduğu adrese dallanıyordu. Şimdi devreye bağladığımız 8K eprom'un içinin $EA değerleri ile dolu olduğunu düşünelim. $FFFC ve $FFFD adreslerinde $EAEA adresi olduğu için cpu bu adrese dallanacak. $EAEA adresinde ne var peki? $EA var, sonra ne var? Yine $EA var. Peki devre ne yapıyor? Hiç bir şey.

Bu test sayesinde logic analyzer'ı A0-A7 arasına, A8-A15 arasına veya D0-D7 arasına koyduğumuzda oluşan sinyalin hep $EA olduğunu görmemiz lazım. Komut hiç bir şey yapmadığı için tekrar eden ve hiç bitmeyen bir desen yakalamalıyız logic analyzer'da. Aksi taktirde devrenin bileşenlerinde yahut bağlantılarında sıkıntı var demektir.



Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 04, 2015, 22:39:07 ÖS
Bu arada geçenlerde NOP testini yaptım. Üç şey farkettim,

1. 6502 düzgün çalışıyor gibi. 8 bit birden analiz edemediğim için düşük 4 bit üstünden gittim. Sadece data bus'a baktım. Tam anlamı ile bir test olmadı ama sürekli ardarda gelen düşük dört bit içinde A'yı gördüm. $EAEA'dan $0000'a başa dönünceye kadar cpu'nun crash olmaması lazımdı. Ancak en fazla 1800 civarı read'dan sonra cpu'nun crash olduğunu gördüm.

2. İlk reset'ten sonra ikinci reset'i atamadığımı gördüm. Nette araştırdım ama sebebini bulamadım.

3. En önemlisi bu bir süre sonra crash etme mevzunun muhtemelen /IRQ ve /NMI bacaklarını bağlamamamdan kaynaklanabileceğini öğrendim. Kullanılmayacaklarsa Pull up direnç ile 5v'a bağlanmaları gerekiyormuş. RDY line'ı da aynı şekilde, ancak pull up'sız bir şekilde de bağlanabilirmiş bu.

Neyse sonrasında teste mecalim kalmamıştı artık, crash etmeden en azından $EAEA'dan $0000'a kadar okumaların olduğunu görmem lazım bir sonraki testte. Neden $0000'a kadar derseniz mevcut devremde bu bölge RAM olduğu için ve açılışta boş olacağı için orada BRK'ya tekabül eden 00 olacak muhtemelen. (Emin değilim gerçi bundan)

ROM testini tekrar yapıp ok'ledikten sonra RAM testinde de EA'ya benzer bir  pattern üstünden test yaparım muhtemelen.

Ancak beni şu an esas endişelendiren, 8580'e ne olduğu. Elimde kablo da kalmadığı için devreden sid'i kabloları ile ayırdım. Bu gecenin konusu sid'i ayrı breadboard üstünde breakout board şeklinde ayırmak. Daha önce ram yazmak için yazdığım programı bu sefer sid'in 5 address pin'i pic'e bağlanacak şekilde modifiye edip sid'i doğrudan kontrol etmek. Doğru sonuç elde ettiğim noktada da bu devreyi bir kenarda tutup devamında sid testi için kullanmak. Diğer bir amaç da sid'i orjinal devreye ayrı breadboard ile bağlayabilmek.

Sid'in clock'unu kolaya kaçıp yine orjinal devreden kullanacağım şimdilik, osilatör alana dek.

ps1: Devre yapıldı, çalıştırıldı ancak sid'den pek bir ses seda çıkmadı. Artık yarın ilk deneme 8580'i tekrar c64'e takıp yapılacak. Orada da çalışmıyorsa bu sefer test devresine bir adet 6581 takılacak.

ps2: Yarını bekleyemedim, 8580'i c64'e takıp yaptığım teyp adaptörü ile barbarian'ı yükledim. loader sırasında müzik çalmaya başlayınca şu saatte sevindirik oldum :) Öldürmemişim haylazı. Dışarıdan işkenceye karşı o kadar da nazik değilmiş demek ki çip :)

Neyse, her iki devrede de anlaşılan temel bir hata var. Herşeye sıfırdan başlayacağız. Öncelikle test devresine yoğunlaşıp düzgün çalışmasını istiyorum. Hatta oradan da sid çaldırabilirim. Sid dump'ını doğrudan sid'e gönderip. Sid pek tabii pic kodu içerisinde gömülü data olarak duracak. Dump çok fazla yer kapladığı için bir 3-4 saniyelik bir şey olur muhtemelen çalacağım şey.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 08, 2015, 04:45:04 ÖÖ
Sevindirik olma anı :) İlk sid'imi çalmayı başardım sonunda. Ses kalitesi hayalimdekinin çok gerisinde ancak bir adım ileri gittiğim için bunu da düzeltmek için yeterli motivasyonu topladım :)

4y7DDIrCmfE

Bu arada daha önce verdiğim yanlış bilgileri düzelteyim.

- 8580'de filtre kapasitörleri işe yaramıyormuş gibi bir şey demiştim. Yokmuş öyle bir şey.

- Data bus contention sıkıntısı demiştim. Sorun aslında IRQ ve NMI'nın logic 1'e çekilmemesiymiş. 3.3K pull up'larla 5v'a bağladım bunları. RDY ve SO bacaklarını da doğrudan 5v'a bağladım.

Yani esas sıkıntım IRQ ve/veya NMI hatlarından cpu'nun interrupt olmasıymış.

Bu arada videoda müzik iki defa başlıyor, bunun sebebi 6502'ye iki defa reset atıyor olmam. Pic'deki kodu düzeltmem lazım bunun için. Çok da önemli değil. Şu an esas sorun sesi düzeltmek. Bu konuda elektronik bilgisi iyi olan arkadaşların yardımına ihtiyacım var.

Şu servis kitapçığı içindeki son board üstündeki sid'in çıkışı ile benzer çıkış kullanıyorum şu anda.
http://www.bombjack.org/commodore/commodore/C64-C64C_Service_Manual_314001-03_%281992_Mar%29.pdf (http://www.bombjack.org/commodore/commodore/C64-C64C_Service_Manual_314001-03_%281992_Mar%29.pdf)

470pf kondansatör yerine elimdeki 560pf'yi kullandım, orjinal transistör yoktu, sid ile yapılmış midi devrelerinde kullandıkları 2n2222 de yoktu. Elimde 2n3093 vardı bunu kullandım. Sid'e filtre kapasitörü olarak 22nf kapasitör kullanıyorum. Çıkış doğrudan videoda gördüğünüz speaker'lara bağlı. Yüksek frekanslar filtrelenmiyor gibi geldi bana.

Videoda, soldaki address decoder, ön kısımda eprom var. Ortadaki ilk board'da 6502 var. Arkadaki board'da Sid ve SRAM var. Sağdaki board'da ise clock ve reset devreleri var.

Bir kaç set daha kablo ve breadboard alıp daha kompakt bir şey çıkaracağım. Reset ve clock devresindeki kablolar bu anlamda çok iyi. Bu arada gürültünün bir sebebi de devrede bu kadar çok havada kablo dolaşması.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Simon (Özay Turay) üzerinde Şubat 08, 2015, 11:37:38 ÖÖ
Tebrikler, büyük azim doğrusu o kadar kabloyla uğraşmak. En sonunda çalışmasına sevindim. Baskı devre olayına girince parazitler de gider tahminimce. ;)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 08, 2015, 13:53:01 ÖS
Tebrikler, büyük azim doğrusu o kadar kabloyla uğraşmak. En sonunda çalışmasına sevindim. Baskı devre olayına girince parazitler de gider tahminimce. ;)

Kabloların karmaşık görüntüsü aslında biraz da benim tercihim / hatam. 3 büyük, 2 küçük breadboard yerine 2 breadboard'a da sığardı aslında. Alt devreleri kendi başına test edebileyim istedim. Aslında işe yaradı geliştirme anlamında ama nihayetinde bunu ufaltmak lazım. Şu  saçak yapmayan breadboard kabloları büyük nimet. Yeterince kablo+breadboard ve osilatör temin edince iki board'a indiricem.

Hala pcb aşamasına geçemiyorum çünkü daha işin içine esas pic girecek, sd kart ve lcd display kısmı da var.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 08, 2015, 21:42:32 ÖS
Devredeki ana haylazı buldum bu arada. Ext in girişini ground'a bağlamıştım ama öyle tek başına ground'a bağlamak yetmiyormuş :) Bir adet 220nf seramik kapasitörü kendisine kardeş yapınca ses yükseldi ve düzeldi... lan diyorum hala patlak patlak gelen bir yer var. Sonra kafama dank etti, benim digi desteğim yok. Bu sid digi kullanıyor olmasın bas hattında :) Demonstrasyon için yanlış sid seçmişim :)

Şimdi digi kullanmayan bir sid bulup eprom'u ona uygun hale getirip bir daha deneyeceğim.

ps: PotX ve PotY'yi de ground'a 220nf ile bağladım bu arada, ancak onlar ext in kadar etraftan gürültü toplamıyorlarmış bunu anladım.

Devredeki ana haylazı buldum bu arada. Ext in girişini ground'a bağlamıştım ama öyle tek başına ground'a bağlamak yetmiyormuş :) Bir adet 220nf seramik kapasitörü kendisine kardeş yapınca ses yükseldi ve düzeldi... lan diyorum hala patlak patlak gelen bir yer var. Sonra kafama dank etti, benim digi desteğim yok. Bu sid digi kullanıyor olmasın bas hattında :) Demonstrasyon için yanlış sid seçmişim :)

Şimdi digi kullanmayan bir sid bulup eprom'u ona uygun hale getirip bir daha deneyeceğim.

ps: PotX ve PotY'yi de ground'a 220nf ile bağladım bu arada, ancak onlar ext in kadar etraftan gürültü toplamıyorlarmış bunu anladım.

Şu nane digi kullanıyor mu teyit edebilir misiniz?
http://hvsc.etv.cx/?info=please&path=C64Music/MUSICIANS/Z/Zyron/Access_Time.sid (http://hvsc.etv.cx/?info=please&path=C64Music/MUSICIANS/Z/Zyron/Access_Time.sid)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 09, 2015, 01:17:15 ÖÖ
Yeni video geldi. Ses bug'lı malesef. Frekans kaymalarının sebebi bu arada saniyede 50 defa play rutinini çağıramamdan dolayı. İkinci bir test sid'i arayışındayım. $0000-$8000 adresi dışına tebelleş olmayacak (devrede şu an sadece 32k ram var) ve digi içermeyen bir şey lazım.

DMp6xKlpuqs

ps: Odanın dağınıklığını bilerek çektim, çay bardağını da özellikle kaldırmadım ki Turkish bir hava girsin videoya :p Bug'ları fix ettiğimde artık odayı da toplar yeni video çekerim :)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Simon (Özay Turay) üzerinde Şubat 09, 2015, 09:57:13 ÖÖ
Bu sefer sesler daha hoş geldi, baslar gelince biraz bozuluyor sanki ama SID tadı verdi bana. ;)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: joker_ üzerinde Şubat 09, 2015, 10:02:56 ÖÖ
Tebrikler, finale 1 adım daha yaklaştın ;)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 09, 2015, 23:52:34 ÖS
Bugün 8 sid ile test edeceğim. Bir iki tane sid denedim hiç ses alamadım. Tahmin ettiğim bir kaç potansiyel sebebi var.

50% - Sid $8000 sonrasını kullanıyorsa bizim şu anki devrede o iş cacık. Ya I/O ya ROM ya da ram'in başlangıcından itibaren alakasız şeyler okur.

30% - Ses çıkış devresinde sorun olabilir. 2sc945 yerine BC237 kullandım. Buradaki transistör anladığım kadarıyla hem sesi yükseltmek hem de gelecek ters akımlara karşı diyot vazifesi görerek çıkışı sağlama alıyor. Nette ne olduğu önemli değil diyenler var ama yanıldıklarını düşünüyorum. Yarın muhtemelen orjinal transistörlerim gelecek. Bundan ise sorun bu gece çıkmaz çözümü.

19% - Data yahut adres hatlarında bağlantısızlık yahut karışma olabilir. Sid'e giden 8 data hattı, 5 de adres hattı var. Aslında güzel kontrol ettim ama bir daha kontrol etmem lazım. Bazı kanalların düzgün çıkıp bazılarının çıkmaması bana bunu çağrıştırıyor.

1% - 6581 / 8850 farkı. Bu da bir ihtimal. Denediğim sid özelinde söylüyorum tabii yoksa tek başına ana neden asla olamaz. Çünkü başka bir kaç sid'de hiç ses alamadığım da oldu. Test sid'i olarak ünlü isimlerin sid'lerinden, oyunlarda kullanılan sid'lerden falan uzak durmak lazım.

8 tane sid seçtim $1000 init / $1003 play adresli, hepsi de 8k'dan küçük. Bunları Eprom'a 0-2-4-6-8-A-C-E000 adreslerinden başlamak üzere eprom'a son sayfalarında da player rutinim ve cold reset rutinimi içerecek şekilde yazacağım.

Normalde Eprom'un 16 adres bacağı da cpu'ya bağlı. A13,A14 ve A15 bacaklarını  doğrudan cpu'ya bağlamak yerine dip switch'lere bağlayacağım. Böylece 3 dip switch ile bu hatlara 1 ya da 0 göndererek 8 değişik sid'i test etme imkanım olacak.

Elimdeki boş eprom'lar tükendi artık, diş fırçası temizleyicisine yolum düştü :) Bir tenesini temizlemek git gel'ler ile rahat yarım saatimi alıyor. (3-5 dk. gibi bir süre açık kalıp otomatik kapanıyor alet)

Neyse işe koyulayım ben. Bakalım tespit edebilecek miyim sorunu.

Ha bu arada deneyeceğim bir şey daha var, şu anda devreyi bir adet 4.5V (3*1.5V) pil ve 9v'luk diğer bir pil ile besliyorum. Bunlardan 4.5 olanını usb'den gelecek 5v ile değiştirip deneme  yapacağım bir de. O yarım volt bir sürpriz yapar mı acep bize? En kısa zamanda bir power supply edinmek lazım.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 10, 2015, 02:38:45 ÖÖ
Sorun bulundu, Sid'e giden D6 ile D7 hatları kablodaki kıvrılma nedeniyle karışmış. Garip seslerin sebebi buymuş :)

Şimdi daha büyük bir problemim var. 1 dakika boyunca tatlı tatlı çalan devre bir süre sonra saçmalamaya başlıyor. Acaba 5v niyetine kullandığım 3 adet kalem pilden midir diye değiştirdim pilleri ama sorun düzelmedi.

İşin garibi bunu bugün bir kaç defa yaptı ve sonrasında kendiliğinden düzeldi. Kapasitörlerden biri şarj olunca falan mı sıkıntı çıkıyor acep?

Ya da benim sid yavaş yavaş yolcu.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 10, 2015, 03:28:13 ÖÖ
Düzeltilmiş hali,

Bk3O5r_YwZo

shy9O0qigQ4

Sid'in abartma problemi pilden yahut devredeki gevşek bir elemandan kaynaklanıyormuş.

Şimdi nurtopu gibi yeni bir problemim var :) Cpu crash olmaya başladı bu sefer. İnşallah o da clock devresinden kaynaklanıyordur. Yarın osilatörüm geliyor inşallah.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: LW3D üzerinde Şubat 10, 2015, 18:59:09 ÖS
Ben videoyu ilk izlediğimde sesi düzgü duyamamıştım :P internette ya da makinada bir sorun var sandım... Şimdi videoyu izleyince, canavar gibi SID sesi geliyor... Şu kablo karmaşasını görmezsek :P harika bir çalışma... Tebrikler..


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 10, 2015, 21:11:45 ÖS
Ben videoyu ilk izlediğimde sesi düzgü duyamamıştım :P internette ya da makinada bir sorun var sandım... Şimdi videoyu izleyince, canavar gibi SID sesi geliyor... Şu kablo karmaşasını görmezsek :P harika bir çalışma... Tebrikler..

Geç saat olduğu için sesini kısmıştım biraz. Video çekiminde iyice kısık çıkmış. Bir sonraki aşama olan Pic'i devreye sokma kısmında daha derli toplu bir şeyler yapacağım. 8850 ve kablolar hariç tüm malzemelerin yedeği mevcut. Gerçekten de en beklemediğim yer olan kablolarda en büyük sıkıntıyı yaşadım, 3 set yaklaşık 150 tane falan kablonun çoğu videodaki devreye gitti. Sağ tarafta gözüken Reset ve Clock devresindeki kablolardan mümkün mertebe kullanmaya çalışacağım yeni prototipte.

Bunlar bu arada hep test idi.
Kalan aşamalar şunlar

1. Pic hafızasındaki sid'i sram'e transfer edip çalma. (Tristate buffer, ekstra sram ve pic devreye dahil olacak. Eprom devreden çıkacak.)

2. Sd kart ile pic entegrasyonu yapılacak

3. Devreye led display eklenecek.

Bu arada ne yazık ki bu cihazın portable olması zor gözüküyor. Çünkü güç tüketimi çok fazla. Herhangi bir ölçüm yapmadım ama Yaklaşık 15-20 dk.lık çalma sonrası piller 4.70v'tan 4.20 volt'a düşmüş.

Evde kullanılabilecek bir şey olacak gibi sonuçta. Gücü neyin tükettiğine de bakmak lazım. Sid tüketiyorsa pek alternatif yok. 6502 tüketiyorsa 65c02'ye geçilebilir. Onun güç tüketimi daha az. Diğer logic entegreler de CPLD haline getirilebilir. Hatta 6502 ile tüm logic entegreler bir FPGA haline getirilebilir. Bunlar tabii şu an beni aşan şeyler :)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: GnoStiC üzerinde Şubat 11, 2015, 07:51:52 ÖÖ
kendim adina bu konuda i_ir_on (http://www.commodore.gen.tr/forum/index.php?action=profile;u=364)'a katiliyorum. benim gibi yasli olunca haliyle elektronik ve bilgisayari ingilizce kaynaklardan ogrenmis oluyoruz ve terminoloji tamamen ingilizce.

hadi elektronik bir yere kadar Turkce anlamli karsiliklari var. resistor=direnc gibi, hic garipsemiyor insan. ama pull-up direnci yerine baska birsey deniyor mu bilmiyorum bile :)

@LW3D : Terminolojiyi Türkçe de kullanabilirim aslında ama bu sefer de mevzudan anlayan birinin türkçesinden anlamama riski var :)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: GnoStiC üzerinde Şubat 11, 2015, 07:56:33 ÖÖ
@i_r_on: ellerine saglik, heyecanla takip ediyoruz :)

1) fpga asamasinda allahtan cok kaynak var, opencores'da hazir seyler bulabilirsin belki.
2) logic analyzer ne var elinde?


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 11, 2015, 10:20:26 ÖÖ
@i_r_on: ellerine saglik, heyecanla takip ediyoruz :)

1) fpga asamasinda allahtan cok kaynak var, opencores'da hazir seyler bulabilirsin belki.
2) logic analyzer ne var elinde?

Fpga ile aslında basit bir şeyler yapıp deneme anlamında işler kolay. Aliexpress'de altera'nın yahut xilinx'in usb blaster'ları ve fpga kitlerinin çakmaları ucuza satılıyor. Oradan giriş yapılabilir. Ancak fpga'yı tek başına alıp son ürünün içine oturtma kısmı benim için soru işareti. Bir de tabii birazcık vhdl öğrenme kısmı var.

Logic analyzer olarak şu var : http://www.aliexpress.com/item/1pcs-New-Arrival-USB-Logic-Analyzer-24M-8CH-MCU-ARM-FPGA-DSP-debug-tool/1710322113.html (http://www.aliexpress.com/item/1pcs-New-Arrival-USB-Logic-Analyzer-24M-8CH-MCU-ARM-FPGA-DSP-debug-tool/1710322113.html)

Salae'nin logic analyzer'ının çakması 150 dolara karşılık 7 küsür dolar iyi fiyat :) 8 bit - 16 bit takip etmem gereken yerleri mecbur 4'er bit'e bölüp takip ediyorum. 8 bit parallel bus analyzer'ında clock için kanallardan birini seçmeni istiyor çünkü. Zaten 8 kanal olduğu için en fazla 7 bit takip edebiliyor.

En az 16 kanalı clock hariç kullanabilen bir analyzer olsaydı daha rahat ederdim ama bu da işimi gördü.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: GnoStiC üzerinde Şubat 11, 2015, 11:58:35 ÖÖ
saleae $150 yine iyi bulmussun. $200'dan asagi gormedim ben.
senin $7 bedava resmen :)

hizlarini kale almazsan, iyiymis bu aliexpress'de oyuncaklar;
http://www.aliexpress.com/item/Free-shipping-PC-USB-Analog-Virtual-oscilloscope-16-Channel-Logic-Analyzer-Bandwidth-20M-Sampling-rate-48M/690002295.html (http://www.aliexpress.com/item/Free-shipping-PC-USB-Analog-Virtual-oscilloscope-16-Channel-Logic-Analyzer-Bandwidth-20M-Sampling-rate-48M/690002295.html)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 11, 2015, 14:56:28 ÖS
Hız şu an çok önemli değil. Şu an osiloskop'a da çok fazla ihtiyaç duymadım ama analog tarafı biraz öğrenirsem ihtiyacım olur. İleride hız gereksinimi olan bir şeye girersem linkini verdiğin ürünün fiyatı uygunmuş.

Ama tabii önemli olan yazılım kısmı. Zırt pırt crash olmayan bir şey lazım. Salae'nin yazılımı bu açıdan kötü.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 12, 2015, 02:30:21 ÖÖ
Şu aşamada Pic16 serisine elveda deme vakti geliyor.
Zira Petit fs'nin değişkenlerine ram yetmiyor 16f877'de.
Kod:
error: (1250) could not find space (558 bytes) for variable _FatFs

Opsiyonlar,

1. Pic18'e geç
--a. Ram yeterli ama XC8 bu sefer recursive function çağrılarını compile etmiyor. Pro lisansın yoksa sana şöyle diyor.
Kod:
Omniscient Code Generation not available in Free mod
--- i. Kırığını bul.
--- ii. Compiler'ı değiştir.

2. Salla pic'i Atmel AVR'ye geç

3. Olduğun yerde kal filesystem'siz sd kartı block device olarak kullan.

4. Pic'i de AVR'yi de salla, 6522 VIA (Rockwell hala üretiyor) ekleyip sd kartı ve display'i de 6502 ile kontrol et. Şurada yapılmışı var : http://www.ele.uva.es/~jesus/6502copy/proto.html (http://www.ele.uva.es/~jesus/6502copy/proto.html)

5. FATFS struct'ı içindeki 512 byte'lık pencereyi uçurup bütün fat kütüphanesini sram'i kullanacak şekilde modifiye et.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: GnoStiC üzerinde Şubat 12, 2015, 08:27:19 ÖÖ
@i_r_on:
lite, pro vs arasi optimizasyonda cok farkediyor.

PIC zamaninda acikcasi yazilimlarimi lisansli kullandigim icin ve mplab'in urunleride ASIRI pahali oldugundan dolayi picbasic alip, code'umun cogunu asm-endasm arasina yazmistim.
(sdcc denemistim ama 10+ yil once icin watchdog ile ilgili problem yasadigimi hatirliyorum)

simdi propeller/arm/atmel vs varken pic guzel bir ani olarak kaldi :)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 12, 2015, 08:47:04 ÖÖ
@Gnostic : Valla code hafızasının tamamını kullanmayı düşünmediğim için çok da önemsemiyordum optimizasyon özelliğini. Ancak recursive fonksiyonlardan vurdu beni.

Şu an zaman kısıtından dolayı (partiye pcb olarak yetiştiririm belki diye düşünüyorum) bana en sıcak gelen seçenek 5 no'lu seçenek. Diğer türlü 2 no'lu seçeneği bir denerdim herhalde.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 13, 2015, 01:23:38 ÖÖ
5 ve 2 no'lu seçenekler iptal.
5 no'lu seçenek iptal çünkü kütüphane içinde bir sürü yerde kullanılan buffer'a erişim var. c++ yazsaydık bir class ile falan işi çözerdik, c ile her yeri sağlam mıncıklamak gerekecek. Beri yandan sram'a sıralı (sequential) eriştiğimi hatırladım, mıncıklama kısmı basit bir mıncıklama olmayacak yani. kullandığım counter da up/down counter değil. sadece yukarı sayıyor. data yazdıktan sonra okuyabilmek için counter'ı resetleyip başa sarmam lazım. İmkansız değil ama gereksiz karmaşık hale getirecek.

2 no'lu seçeneğe yani avr'ye geçmeye gelince. WinAVR indirdim, Kod derlendi sıkıntı yok, proteus'ta falan bir şekilde simüle de eder, debug da ederim ancak bir yandan da huyunu suyunu bildiğim pic dururken avr'ye geçmek beni biraz ürküttü açıkçası.

Güvenli liman olan pic'e geri dönüş. Seçeneğimiz bol. "3. Olduğun yerde kal filesystem'siz sd kartı block device olarak kullan." seçeneği için biraz araştırma yaptım. Öğrenip sıfırdan kod yazacak kadar *kaliteli* vaktim ne yazık ki yok. Aşağıdaki sitede örnek bir proje buldum. Amcam XC8'e uyarlanmış kodunu dahi vermiş. Kullandığı pic de benimkine çok benzer. Sdcard'dan okuduğu bilgileri doğrudan kullanmış bir yere saklamamış. Benim durumumda ben sram'a saklayacağım.

http://www.moty22.co.uk/sd.php?dl=1 (http://www.moty22.co.uk/sd.php?dl=1)

Sd kart içinde büyük tek bir dosya olacak. Basit bir dosya sistemi ve sid'leri saklayacak bu tek dosya. Karta yazma yapmayacağım için bozulma ihtimali çok düşük, pc'de mıncıklanmaz ise başına bir iş gelmez. Pc için de müzikleri aktarmak için ufak bir program yazarız. Şimdilik iş görsün.

Yan ürün olarak da elemanın devresi ile çocuklar için talking tom tarzı bir oyuncak yapılabilir. Konuştuğunda kaydedecek sonra da bunu geri çalacak bi devre.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: GnoStiC üzerinde Şubat 13, 2015, 08:12:16 ÖÖ
raw olarak kaydetmek simdilik bir cozum olabilir ama uzun vadede ister istemez fat destekli birsey yapman gerekmeyecek mi?

bu Joel Test (http://www.joelonsoftware.com/articles/fog0000000043.html) madde 5'e uyuyor biraz.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 13, 2015, 12:50:30 ÖS
raw olarak kaydetmek simdilik bir cozum olabilir ama uzun vadede ister istemez fat destekli birsey yapman gerekmeyecek mi?

bu Joel Test (http://www.joelonsoftware.com/articles/fog0000000043.html) madde 5'e uyuyor biraz.


Aslında tam olarak uymuyor. Çünkü projenin mevcut tasarimi moduler. Sram'i doldurup 6502'yi ve sid' resetleyen başka bir devre orjinalin yerine kullanilabilir. Aklimda bunlari birbirinden ayri ve ustuste konumlandirma gibi bir dusunce de var. Daughterboard modeli. Boylece pcb tasarimi da daha basit olacak ve kullanici ile esas etkilesimi yapan kismi yeniden dizayn edip değiştirme imkanim olacak. Değişik iletişim metodlari ile çalışan boardlar yapilabilir. Ya da değişik display'ler.



Konu Başlığı: Ynt: Psid player projesi
Gönderen: GnoStiC üzerinde Şubat 13, 2015, 13:35:49 ÖS
programciya karisilmaz :)

ben kafamda 5-10 sid'i birbiri arkasina append edip tek dosya olusturup bunu raw olarak sd'ye yazip, sonrasinda hangi pointer'da hangi isimli sid var vs gibinden birsey dusundugum icin baska cozume yoneldim. en azindan http://www.seeedstudio.com/wiki/SDLogger_-_Open_Hardware_Data_Logger (http://www.seeedstudio.com/wiki/SDLogger_-_Open_Hardware_Data_Logger) gibisinden birsey kullanirdim heralde.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 13, 2015, 14:10:22 ÖS
Yok zaten dediğin gibi olacak. Sid isimleri ve sid'lerin büyük dosya içerisindeki lokasyonları dosyanın başında olacak. Esas sid dosyaları da peşinden gelecek. Bu dosya pc'de sd kartın neredeyse tamamını kaplayacak şekilde yazıldıktan sonra artık pc tarafındaki program dosyayı bırakıp sd kartta verileri blok bir şekilde düzenlemeli. (Tek faydası en azından windows'a kartı takınca kart tanınacak. )

Yoksa pic filesystem ile uğraşmayacak.

O linkteki herhalde daha çok yazma amaçlı kullanım için olan bir modül. Pic ile sd kart kullanmak isteyenlerin çoğu okumadan çok yazmaya uğraşıyor :)

"Yöneldim" derken benzer bir proje ile mi uğraştın / uğraşıyorsun yoksa çözüm düşüncesine yöneldim mi demek istedin?



Konu Başlığı: Ynt: Psid player projesi
Gönderen: GnoStiC üzerinde Şubat 13, 2015, 17:08:22 ÖS
@i_r_on: her programcida vardir heralde, ne gorsem/duysam, bunu nasil code'lardim diye dusunuyorum. ordan dusunce sadece :)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 13, 2015, 23:44:19 ÖS
@i_r_on: her programcida vardir heralde, ne gorsem/duysam, bunu nasil code'lardim diye dusunuyorum. ordan dusunce sadece :)

Valla benim düşünce tarzı da tam tersine, bunu kodlamaktan nasıl kurturuldum şeklinde :)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 15, 2015, 16:01:57 ÖS
Bu arada devreye osilatör eklendi, iki adet entegre (counter ve inverter), 3 direnç, bir kristal yerine 4 bacaklı ufak bir şey yetiyor artık. 5v'u Kalem pil ile elde etme dönemi bitti (Sid'i gerçi yine 9v pil ile besliyorum). Şu an devre canavar gibi, daha önce bahsettiğim cpu'nun crash olması durumu ile karşılaşmadım epey uzun süreler çalmasına rağmen.

Şöyle ucuz bir power supply aldım (15V-2A), resimdeki ile birebir aynı değil.

(http://www.alkayaelektronik.com/modules/catalog/products/pr_01_90911_min.jpg?rev=1371802569)

Bugünkü alışveriş sonrası kablo/board ihtiyacını da giderdim ve Pic16f876 yerine Pic16F887 aldım. 876'ya göre daha güncel bir model. İlaveten tornistan yaparım belki diye de bir adet ATMEGA32A aldım. Sipariş listesini yazdığım kağıdı kaybettiğim için lcd display'i unuttum. Elimde seneler önce almış olduğum bir tane var ancak iki değişik örnek kodla proteusta simülasyonda sorun olmamasına rağmen devrede çalıştıramadım.

Geri kalan kısma ilk lcd ile gireyim dedim. Bir nevi debug imkanı olur benim için diye düşündüm. Gerçi devreye rs232 iletişim özelliği ekleseydim daha iyi debug imkanı olurdu. Max232 gibi ucuz bir naneyi almayı akıl edemediğim için buradan da devam edemiyorum.

Şu an en iyisi, yeni board'larla ana projeye bir adım daha yaklaşacak şekilde minimum board ile finale yakın olan devreyi kurmak.

Bu arada aklımda bazı soru işaretleri var henüz çözemediğim. Pic'den sram'a sid'i aktarma esnasında 6502'yi nasıl durduracağız. Burası soru işareti. Rdy pin'i var 6502'nin ancak datasheet'i okuyunca kafamı karıştırdı biraz. Adres bacaklarında son eriştiği adres kalır diyor. Bu pic'in address bus'ı doğru bir şekilde idare edip edemeyeceği ile ilgili bir sorun olur mu bilemedim. Kristal kontrol edebileceğim bir eleman değil dolayısıyla daha devre başlar başlamaz saat sinyali 6502'ye besleniyor olacak, sorun burada.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Simon (Özay Turay) üzerinde Şubat 15, 2015, 16:33:16 ÖS
6502 reset pin'i low tuttuğun sürece çalışmaya başlamıyor sanırım. PIC'te boş bir pinin varsa SRAM popüle olana kadar işlemciyi bekletebilirsin gibime geliyor.

http://lateblt.tripod.com/bit63.txt (http://lateblt.tripod.com/bit63.txt)

http://lateblt.tripod.com/6502prj1.htm (http://lateblt.tripod.com/6502prj1.htm)

http://lateblt.tripod.com/6502prj2.htm (http://lateblt.tripod.com/6502prj2.htm)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: EMREZ üzerinde Şubat 15, 2015, 16:55:34 ÖS
Selam, pic32 ile hiç sram kullanmadan sd kart üzerinden dosya seçip sid sürebilirsin. dma kullanıp uygun spi ayarı ile şaşırtıcı hızlarda işlem yapılabiliyor, örnek 30-40 sn de 8 mb dosya yazma vs. ki sid dosyaları çoğunlukla 3-4 kb bir şey. sram kullanmak daha maliyetli olur, ayrıca projeden sıkılırsan pic32 yi başka projelerdede kullanabilirsin.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: EMREZ üzerinde Şubat 15, 2015, 17:01:11 ÖS
ayrıca istersen pic32 ile çok basit pal ve vga kodları ile birde biraz modifiye ile c64 arayüzlü bir cihaz gibi monitörde çalışmasını sağlayabilirsin, pic32 bunların hepsini yapabilecek durumda. (pic32 microcontroller Lucio Di Jasio çok yararlı bir kaynak olacaktır.) ben üniversite ye ağırlık verdiğimden artık çok fırsat bulamıyorum ileride pic32 250 mhz lik microchipleri ile ilgilenmek istiyorum.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 15, 2015, 18:25:38 ÖS
@Ozay : Aslında reset pin low'dan high'a geçiş yaptığında reset süreci başlıyor 6502 için. Benim problem ilk çalışmadan ziyade ikinci sid'e geçiş yapmak için devreye girmem gerektiğinde ortaya çıkıyor. Reset pin'i 0'a çekmek işe yaramaz çünkü 6502'nin ilgilendiği 0'dan 1'e geçiş.

@Emrez : Emülasyonla uğraşmak istemiyorum o yüzden yüksek frekanslı ve potansiyeli yüksek bir mcu tercih etmedim. Emüle ettiğin şeyi sabit bir frekans ile çalıştırmak ta başlı başına bir problem. Benim öyle bir derdim yok çünkü 6502 için ayrı bir oscillatörüm var. Ucuz / Pahalı tartışılır.

Osilatör : 6tl
6502 : 7tl
2*UT62256 SRAM (toplam 64k) :  6*2  = 12tl
Pic 16f887 : 8.5tl

Ana entegrelerin toplam ederi 35 tl'yi bulmuyor. Sid hariç ıvır zıvırla beraber taş çatlasın 50 tl eder.

Sid dosyası 3-4 k ancak bunlar birer program ve belleğin herhangi bir bölgesinde çalışabiliyorlar. Nispeten yüksek boyutta olanları da var bu yüzden 64k sram şart.

Ayrıca eski 486dx board'larından falan sram bulmak mümkün. (Ben bir tanesinden 6-7 tane 32kb'lik çıkardım)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 16, 2015, 01:27:07 ÖÖ
Oturdum devreyi sıfırdan yapmaya, bir entegrelere, bir de board'lara bakıp düşünceye daldım. Düşün, düşün, bir sürü jumper kablo olmadan 16 adres 8 data bacağını 4 lokasyon arasında dolandırmanın öyle kolay yolu yok.

Şu andaki test devresinde cpu, ram, eprom, sid şeklinde, yeni versiyonda cpu, ram, ram sürücü devre, sid şeklinde. Şimdi eski çalışan devreyi de bozmamaya karar vermiştim, neyse kafamda yeşil ışık yandı. Dedim eski çalışanı bozma, ona eklenti yap.

Elimde 64k sram yok, bunları zaten üstüste koyarak kullanmayı düşünüyordum. 486dx board'dan çıkardığım iki Paradigm PDM41256'yı üstüste geçirdim. Üstteki çipin /OE ve /CS bacaklarını alttaki çip ile kontak yapmasın diye kıvırıp bunlara bir kablo lehimledim.


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

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

Adres decoding kısmında ufak bir iki değişiklik yapıp burası için de ayrı bir sinyal üretmem lazım. Bu bacaklar dışındaki bacaklar ortak kullanılabilir. Alttaki çip sallıyorum $0000-$7FFF arasına bakarken, üstteki $8000-$FFFF aralığına bakacak.

Görünen o ki en fazla değişikliği içerecek olan parça adres decoder olacak. Mecburen onu devreden çıkartıp yeni bir tane oluşturmam. Adres decoder'a giden sinyallerim modüler, adres decoder'a A15, A14, A13, A12, PHI gidiyor oradan da SID /CS, EPROM /CS ve RAM /CS geliyor. Devreden Eprom çıkınca aslında logic daha basit olacak. Eskisinde SID /CS'yi nasıl üretiyorsam aynı şekilde üreteceğim bunun tersi de RAM /CS olacak. Diye düşünürken adres decoder devreme bakıyorum NAND kapılarından birini kullanmamışım. Hali hazırda ürettiğim SID /CS'nin tersini üretmek için bu NAND kapısını kullanabilirim.

Bu arada bir şeyi atladım, orjinal decoder'da diğer chip select'lerden farklı olarak Ram chip select'ine phi2'yi de dahil etmiştim, 6502 primer'deki (http://www.wilsonminesco.com/6502primer/addr_decoding.html (http://www.wilsonminesco.com/6502primer/addr_decoding.html))  amcam öyle öğütlemiş. Belki dedim benim devrede çalışır, bir deneyeyim. Phi2 yerine 1 verdim bağlantıyı kesip, ancak çalışmadı. Benim hali hazırda iki ram çipi arasında da bir ayrıma gitmem gerekiyor. Bu yüzden yeni bir adres decoder oluşturmak şart oldu. Elimde 4 girişli nand kapısı sadece bir adet varmış. Bunun yerine mecbur 3x 3 girişli nand kapısı içeren 74XX10'lardan kullanacağım.

Test devresinde Pic'i işin içine dahil etmekten bahsetmiştim. Bunu da şöyle yapacağım, test devresinde daha önce yayınladığım videolarda farkettiyseniz eprom küçük bir board'da en altta yer alıyor. Eprom burada bir zif sokette. Toplamda 14 x 2 pin'lik bir yer işgal ediyor. Adres bus ve Data bus komple burada mevcut. Zif soketi yerinde sökmeyeceğim bu arada, üzerine ya 28 pin'li bir zif soket monte edeceğim ya da 28 pin'li bir precision soket.

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

Böylece hali hazırda geliştirilmiş test edilmiş kısımları bozmadan devreye ek yapabileceğim. Herhangi bir anda dur lan sid'i mi yaktım acaba dediğim noktada mevcut zif'in üstüne taktığım zif'i yahut precision soket'i çıkartıp eprom'u takarak ve adress decoder'ı değiştirerek sid'i test etmem mümkün olacak.

Vakit dar olunca bunları düşünmek dışında başka bir şey yapamadım. Şimdilik bu kadar.

ps: Bu arada sd kart erişimi ve lcd olaylarına da girdik ama aslında sırada bir test daha var. Bunun için boyutu 1.5-2k arasında en az iki sid'i pic program alanında data olarak tutup bunları bir butonla sırayla çalma var. Devre bu hale gelince aslında işin en büyük kısmı bitmiş olacak. Lcd ve sd kart artık işin pic tarafındaki detaylara dönüşüyor. Gerçi en fazla kod da orada yazılacak. Sd kart demek, yığınla sid'i saklayabilmek demek. Playlist çalmaya, oluşturmaya kadar gider o kısım.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 18, 2015, 22:10:38 ÖS
Gelişmeleri aktarayım,

Geçen zaman içinde adres decoding kısmını yaptım. Şema şu şekilde,

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


Bahsettiğim Eprom yerine bağlanacak devrenin ana beynini oluşturacak Pic ve şurekasını kapsayan Pic + counter'lar + tristate buffer'ları içeren devreyi tamamladım.

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

En doyurucu olanı ise hafta içinde gelen Max232 türevi olan HIN232 vasıtası ile bir seri haberleşme denemesi yapmam ve sonunda gerçekleştirebilmem oldu.
Önce evdeki prolific chipset'li usb to seri kablo ile denemeler yaptım ancak başarısız oldum. Araştırdığımda bu kabloların bazılarının rs232 standardına çok da uygun olmadıklarını okudum. Şansımı normal com port ile denemeye karar verdim. Etrafa bakındaım com port'u olan neyim var diye. Bilgisayarın anakartında com port'u vardı ancak board'un çıkışları arasında yoktu. Şansıma evde ne zaman aldıysam hariçten takılan bir com port bracket'i varmış. Onu taktım bilgisayara, uygun bir kablo hazırladım ve denedim. Çalıştı :)

Bir sıkıntı vardı, com port üzerinden gönderdiğim yazı ile alakasız karakterler basılıyordu terminale. Bulduğum örnek kod bug'lıymış, onu düzelttim. Bu tip bir şey yaşandığında ilk bakılması gereken yer pic'in clock frekansının uart başlatılırken doğru set edilip edilmediğiymiş bu arada.

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

Üstteki seri iletişimi ayrı bir pic ile test ettiğim devre, alttaki ise adres decoder + ana pic devresi. (board çokluğundan kurtulamadık bir türlü :) )

Neyse efendim, yazılım dünyasına geri döndük. Hemen bir menü yapıverdim terminalde göstereceğim. Terminal ile debug oldukça interaktif bir yöntem olacağı için test süreci daha sağlıklı geçecek diye umuyorum.

En basitinden hiç 6502'yi ve Sid'i bağlamadan kolayca Pic'in belleği düzgün doldurup dolduramadığını test edip sonucu terminale göndermem mümkün olacak.

Menü şu şekilde,
Kod:
***********************************************
-------- Hardware PSID Player by I.R.on--------
-----------------------------------------------
-- Select an operation
1. Test RAM Access
2. Reset 6502
3. Fill Sram with NOP and reset 6502
4. Play Test Sound
5. Take Address Bus and Halt 6502
6. Transfer Sid#1 and Play
7. Transfer Sid#2 and Play
8. Transfer Sid
***********************************************


Öncelikle işe 1,2,3,4,5 no'lu seçenekleri yazmakla başlıyorum. 6 ve 8 no'lu seçenek için sid'in header'ını parse etmek ve play rutin'ini sid üstündeki relocation bilgisine göre adreslemek falan gerekiyor. 8 no'lu seçenek için terminalden dosya upload etmek gerekiyor. Terminali doğrudan kullanabilir miyim bu iş için bilmiyorum. Haberleşmeyi yapacak özel bir  program yazmak da gerekebilir ancak sanmıyorum. ::)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 20, 2015, 00:36:43 ÖÖ
Bindik bir alamete sonumuz hayırlı olsun bakalım. Test etmeden önce tüm bağlantıları yapılmış (unuttuklarım hariç tabii :) ) devrenin son hali.

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


Sol üstte
- HIN232 içeren seri komünikasyon için voltaj düzenleyici devre

Hemen yanında üstte
- Sid + 64K Ram (daha önce uygunsuz pozisyonda resimlerini yayınlamıştım :) )

Onun altında
- Osilatör + Adres / Data bus'ı dağıtan bacaklar + 6502

Ortada solda
- Adres decoder (74LS14 + 2*74S20), Ekstra bir tane daha 74LS14 var, normalde 0 ile çıkış aldığımız chip select sinyallerini led'ler ile gösterebilmek için invert ediyor.

Onun sağında
- Bir önceki devrede eprom'u zif soketle yerleştirdiğim board. Şu an alttaki board'a Adres + Data bus sinyallerini sağlıyor. Buradaki zif soketin üstünden zif soket ve precision soket ile bağlantı almayı denedim. Zif soket bütün kabloları sıkıştıramadı, precision soket için ise kabloların uçları kalın geldi. Mecbur 24 bacağı tek tek kabloyla bağladım.

İşler yolunda gitmez sid'i test etmek istersem biraz uğraştıracak. Precision sokete lehim yapıp onu oraya yerleştirmek daha iyi bir çözüm. Ondan daha iyisi 6502'den çıkan adres + data bus'ı daha geniş bir alana almak. Bugün farkettim, elimdeki board'ların besleme kısımları sökülebiliyormuş. Bu şekilde iki board birleştirilip 6502  için güzel bir hareket alanı açılabilir. 6502 bas bas bağırıyor buranın müdürü benim, açın benim önümü diye :)

En altta
- Pic + 12 bit ve 4 bit counter + tristate bus

İlk testleri 8580'i söküp yapacağım. Elimde başka 6502 olduğu için o kalacak devrede. Pic'i programlama ve test zamanı!


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 20, 2015, 02:15:28 ÖÖ
Devreyi çalıştırdım. Kısa günün karı, en azından seri haberleşme kısmı düzgün çalıştı, pic'den çıktı alabildim, pic'e komut gönderebildim.

Ancak aldığım güç kaynağı malesef tırt çıktı, belki benim devrede sorun var bilemiyorum ancak sabit 5V'u sağlayamadı devreye. Ayar düğmeleri ile oynamak gerekiyor, ayarlansa bile devrenin çalışması esnasında gerilim düşüyor. Başta pic'in BOREN flag'i (düşük gerilime karşı koruma) açıktı, sürekli restart olup durdu Pic. Bunu kapatınca haliyle seri komünikasyon ram erişimi sırasında hepten saçmaladı.

Bunun yanısıra tasarımımda ciddi bir hata tespit ettim. Address decoder'ı yanlış tasarlamışım, pic'in ram'e erişeceğini tam olarak hesaba katmamışım. Şöyle ki Ram high ve Ram low seçiminde cpu'dan gelen Phi2'yi kullanıyorum. Halbuki 6502'yi devreden çıkardığımızda Phi2'nin önemi kalmıyor. Decoding kısmı bu durumu da dikkate almalı.

Yine aynı şekilde ben ram'a erişirken /CS ve /OE'yi ayrı ayrı kontrol ediyordum önceki testlerimde. Halbuki 6502'nin dahil olduğu devrede bunlar birbirine bağlı. Pic'te yazılım olarak ve pin olarak bir tane fazla yer işgal etmişim.

Yine address decoding ile ilgili bir sıkıntı da pic'ten yapacağım ram erişiminde sid yani i/o bölgesini de, şu an için ($D000-$DFFF), ram olarak görüp okuyup yazabilmeliyim. İleride sid'i doğrudan pic ile kontrol edebilmek için buradaki logic geliştirilebilir.

Bir de soru işareti var. 6502'nin RDY bacağını ve RESET bacağını 0'a çekip etkisiz hale getirdiğimi düşünüyorum. R-/W bacağının bu durumda ne olduğu ise belirsiz. Bir adet daha tristate buffer kullanıp cpu'nun devreye yaptığı kritik bağlantıları da pic tarafından kontrol edilebilir yapmak gerekebilir.

Yatmadan önce son bir test yapacağım, cpu'yu devreden çıkarıp PHI2 yerine pic'ten çıkan Ram'ı select etmek için kullandığım /CS sinyalinin invert edilmiş halini bağlayacağım. Devreden 6502 çıktığı için belki power supply'ın da başı biraz az ağrır.
En azından ram testlerimi yaparım.




Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 20, 2015, 03:25:53 ÖÖ
Testler sırasında devre beslemesinde düşük gerilim, yüksek akım söz konusu oldu. Dedim kesin bir şeyler yandı. Çünkü farkettim ki inverter niyetiyle nand kapılarından birinin girişlerinden birine pic'in çıkışını diğer girişinden de çıkış alıp diğer logic entegreye göndermişim. Arada voltajı kontrol edeyim derken muhtemelen yüksek akım geçti.

TL866CS'nin lojik entegre test özelliğini kullandım. Address decoder'daki 4 adet lojik entegreyi test ettim. 2 nand entegresinin (74S20) kullandığım kısımları bozulmuş. Projede 6510'dan sonra ikinci kayıp da nand chipleri oldu. 6502 ve 8580'i kurtardık en azından :)

Demek ki neymiş, ayarlı power supply yanlış kullanıldığında entegreler açısından ölümcülmüş. Power supply'ın baştaki stabil 5v sağlayamama kusurunu gidermiyor bu.

Neyse efendim test sonucu fail bu arada. Yanlış giden adres hatlarını tespit etmek için farklı bir test rutini yazmam lazım. Yahut logic analyzer'ı işin içine sokmam lazım. Şu an en azından 6502 hariç devreye power supply düzgün gerilim sağlayabiliyor.

Bir daha bunları yaşamamak için Power supply'ın devreye girdiği noktaya bir diyot falan bağlamak lazım herhalde.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 21, 2015, 17:53:38 ÖS
Dünün ve bugünün bombası kullandığım 74XX390 counter chip'inin dual 4 bit decade counter yani 9'a kadar sayan değişik bir counter olduğunu farketmem oldu. 4'er pin çıkışı olmasına rağmen 10, 11, 12, 13, 14, 15 çıkışlarını vermiyormuş bu çip. Mecbur yerine 12 bit bir counter bağladım.

Sorunlardan dolayı sorunları elimine etme adına devreyi basite indirgedim. Memory testlerini yapabilmek için Adres decoder'ı devreden çıkartıp doğrudan pic'ten sram'e bağlantı yaptım.

390'dan yediğim golden sonra bir golü de son yaptığım 8 sid içeren eprom denemesinden yedim. A15, A14 ve A13'ü adres bus'tan çıkarıp 0 ile 7 arasında bir değer üretsin diye toprağa yahut beslemeye bağlamışım bunları. Tekrar yerlerine kondu.

Sonrası 8mhz'de çalışan pic ile timing ayarları ve programdaki bug'ların fix'i şeklinde oldu.

Sayısız denemeden sonra nihayet hatasız bir sonuca ulaştım :) Daha yapacak bir sürü iş var.

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


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Simon (Özay Turay) üzerinde Şubat 24, 2015, 11:58:18 ÖÖ
Güzel gidiyor. Elemanın biri de Raspberry Pi ile sürmüş SID çipini.

up9tZVzffEo


Konu Başlığı: Ynt: Psid player projesi
Gönderen: EMREZ üzerinde Şubat 24, 2015, 12:43:24 ÖS
elektronik bir şeylerleri geliştirmek insanın kendisinin bir şeyleri yapması çok keyif verici, tebrik ederim, decre pcb ile daha güzel görünür ve sorunları çözmen kolay olur, şuan bir yerde temassızlık olsa sıkıntı yaşarsın. ütü vs yöntem ile en azında protatip bir devre yapmak faydalı olurdu.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 24, 2015, 16:54:04 ÖS
Halen devrede bug'lar olduğu için pcb'ye geçemiyorum. Değişik parçalar break out board şeklinde yapılabilir aslında. Ev ortamında pcb eritmek istemiyorum o yüzden şimdiye kadar erteledim. (Sid kısmı ayrı board, 6502 kısmı ayrı board)

Bugün kısmet olursa bir adet Pickit2 yahut Pickit3 alıcam. Çünkü sorunsuz olan bellek okuma yazma kısmını adres decoder'ı devreye yerleştirdikten sonra nasıl becerdiysem bozdum. Adres decoder'ı çıkarttıktan sonra CE/ OE/ doğrudan pic'ten bağlandığında da daha önceki sıfır hatalı case'imi yaratamadım.

Devrede CS/ OE/'yi 6502'nin yaptığı gibi tek sinyal ile kullanmayı düşünüyordum ama araya bir buffer 6502 ram'i kontrol etsin, Pic ram'i kontrol etsin şeklinde switch etmek zorunda kalacağım sanırım. Tabii daha önce hatasız çalıştırmayı başardığım haline getirmem lazım.

Artık Çinden bekleyemeyeceğim için 50-60 tl zarar ile buradan alacağım Pickit'i.

@Ozay : Sid'i doğrudan Pic'ten sürmek mümkün, 5 adres bacağı, 8 data bacağı var. Geri kalanı emüle etmek gerekiyor. (6526 ve 6502/6510) Raspberry pi gayet yeterli bu iş için. Pic 32'lerle de yapılabilir ya da üst model AVR'lerle.

ps: Bu arada sorunu buldum, adres hatlarında temassızlık problemi varmış. Başarılı okuma sayısı sürekli farklı çıktığı için bu ihtimal aklıma gelmemişti. Kablo tam yerinde değilmiş, bazen temas edip bazen etmiyormuş. Dün devrenin üstüne bir şeyler koyunca şansıma bağlantısı tamamen çıkmış ki uart'tan hatalı adresleri capture ettiğimde pattern'i yakalayıp hangi hat olduğunu bulabildim. En sakatı böyle tam temas etmediği zamanlar. Pickit2'nin acil debug olayına şimdilik ihtiyacım kalmadı gibi. Mecbur bir adet daha tristate buffer daha ekleyeceğim.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 25, 2015, 01:20:10 ÖÖ
Ortalık epey karışmış :)
Nihayet address decoder da dahil ram'i de 64k'ya çıkarıp adreslemeyi başardım :)

Her bir 32k ram chip'inin CS ve OE'leri birbirine bağlı (6502'nin kullanacağı gibi) ve address decoder tarafından sürülüyorlar. Ayrı bir tristate buffer kullanmaya gerek kalmadı gibi. Sadece WE bacağını (Her şeye bağlı aslında bu, sid, 6502 ve ram'ler) pic üzerinden sürüyorum. Bunu da ram'i doldurduktan sonra output değil input'a çevireceğim. Sid ve 6502 aynı anda reset konumunda duracağı için sorun olmaz diye umuyorum.

Şu aşamada aslında sid'i bağlamadan ve logic analyzer da kullanmadan bir işlemci testi yapabilirim. 6502 için ufak bir test programı yazıp sallıyorum tüm belleği (ilk iki sayfa(stack) ve son sayfa(vektörler) hariç, ) belli değerlerle doldurup daha sonra 6502'yi bekletip pic tarafında belleği okuyup değerler doğru mu diye kontrol edebilirim.

Bunu yapayım ben en iyisi.

@Özay : Bu arada raspberry ile yapan eleman siddump almış onu basıyor sid'e. 6502 emülasyonu yok yani. Siddump ciddi data üretiyor, bunu compress etmek ve hızlı bir şekilde açabiliyor olmak lazım. Benim kullandığım pic'ler böyle bir iş için yeterli değil. Bu dump'lar yüksek kapasiteli bir sd card'a koyulup oradan çalınabilir ancak pratik değil. Sağlam işlemci gücü olan bir cihaz kullanılıyorsa 6502'yi emüle etmek lazım. Bu devreyi pcb halinde sağ salim bitirebilirsem zaten 6502 ve 6526 cia çipini de emüle eden bir çözüme doğru koşmayı düşünüyorum. Bu çiplerin sid ile olan interface'leri  neredeyse tamamen dijital olduğu için sid'in otantik havasını bozmazlar.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Şubat 27, 2015, 02:03:29 ÖÖ
Büyük bir tasarım hatası yapmışım. Aslında başta özellikle dikkat etmiştim, ya 6510 kullanırım ya da 65c02 demiştim sonra nerede gördüysem artık UM6502'lerin de adres bus'ı tristate edebildiğini yanlış bir şekilde okumuştum. Çünkü sonradan datasheet'i inceleyince böyle olmadığını gördüm. Ancak kafamda uzak bir köşeye atmış olacağım bu bilgiyi ki iş gerçek teste gelince meseleye uyandım. Elimdeki UM6502 address bus'ı tristate edemiyor.

6502 işlemci doğuşundan beri böyle aslında, sonradan 6510 c64 için yapılırken address bus'ı tristate edebilme özelliği ve c64'te PLA'ya bağlanan özel bir i/o port'u eklenmiş. 6502'nin tasarımcılarından biri olan Bill Mencsh Western Design Center firmasının başında hala 6502'nin onunla uyumlu ve gelişmiş bir versiyonu olan 65c02'yi üretmeye devam ediyor. Daha çok IP core (Intellectual property core) olarak kullanılsa da çip olarak üretimi ve satışı da mevcut.

Bu arada bilmeyenler için Tristate'in ne demek olduğunu biraz açayım. Bilgisayar mimarilerinde belli devre elemanları arasındaki bağlantılar ortak kullanılan elemanlar söz konusu olduğunda ortak kullanılmak durumunda kalıyorlar. En çok rastlanılan örneği ise tahmin edilebileceği gibi bellek.

İşlemci belleğin adres hatlarını kontrol ediyor yani sürüyor. 6502 örneğinde TTL seviyesinde düşük yahut yüksek seviyede gerilim uyguluyor yani. Şimdi işlemci bunu yaparken devredeki başka bir elemanın, dur kardeşim belleği hep sen mi kullanacaksın, biraz da biz faydalanalım şu kaynaktan deyip o hata bağlandığında işler karışıyor.  Hatların lojik durumu belirsiz bir hale geliyor.

Tam bu noktada işte devre elemanlarının bağlantılarını Tristate edebilme özelliği işe yarıyor. Bir elemanın bağlantısını tristate etmesi demek o bağlantının ulaştığı devre elemanı ile arasındaki hattı açık hale getirmesi demek. Yani hattın ortasından bir switch ile bağlantı kesilmiş gibi oluyor.

C64'te örneğin belleğe ulaşmak isteyen iki temel eleman var. Bunlar işlemci 6510 ve görüntü işlemcisi olan VIC-II çipi. Bugün bile paylaşımlı ekran kartı dediğimiz olayda işlemci ile ekran kartı belleği paylaşıyorlar yani sıra ile erişiyorlar. 6510 ve VIC-II örneğinde bu çipler üzerinde belleğe erişimi senkronize eden pin'ler mevcut. 6510 üzerinde RDY ve AEC, VIC-II üzerinde de BA (Bus access) ve AEC pin'leri. Bu pinler vasıtası ile birbirlerine sıra vererek kardeş kardeşi belleğe erişiyorlar. Biri belleğe erişirken diğeri adres bağlantılarını koparıyor yani tristate ediyor.

Gelelim benim soruna. Benim devremde de Pic (counter'lar ile adresleyerek ) belleğe erişiyor, aynı şekilde 6502 de belleğe erişiyor. Ben her ne kadar 6502 kafasına göre takılsın diye counter'ların çıkışını tristate etsem de, Pic bellekle takılmaya çalıştığında 6502 ona posta koyuyor.

Çözüm? 6502'nin belleğe erişimini de 74s244 tristate buffer'lar ile açık/kapalı hale getirilebilecek şekilde PIC'in kontrol etmesini sağlamak.

Aslında iş bu noktaya geldiğinde ilk mesajımda verdiğim örnek projeye göre tasarım epey kötü bir noktaya geldi.

Diğer projede eleman 6502 ile sadece databus üzerinden bağlantı kurup pic bellekmişçesine 6502'yi kandırmış. Adres bus'a hiç dokunmamış.  Ama onun da handikapı şu, 6502'ye saat sinyalini her zaman kendisi vermek durumunda kalıyor. Sid'i transfer etmek için belleği doldurma aşamasında 6502'yi yavaşlatması ve kontrol etmesi gerekiyor. Harici bir clock sinyali kullansa bunu yapması mümkün değil. 6502 resetlendikten hemen sonra hot reset vektörünü data bus'a yükleyip ardından 6502'nin erişeceği her adresi bildiği için sırayla data bus üzerinden 6502'ye erişmek istediği datayı veriyor. Ta ki belleğe sid'i ve player'ını transfer edene dek.

Tristate buffer'ı o bellek işe karışmasın diye başlangıçtaki bu transfer esnasında kullanıyor. Yani bellek ile 6502 arasındaki databus'ın bağlantısını kesip pic'in data bus'ı güvenle sürmesini sağlıyor.

Bir ince nokta daha. Sizce 8Mhz pic mi harici belleğe daha hızlı erişiyor yoksa 1 Mhz 6502 mi? Cevap : 1Mhz'lik 6502 daha hızlı erişiyor. Pic'in bir komutunun çalışma süresi 4 cycle. 6502'nin belleğe erişen komutlarının çalışma süresi de 5-6 cycle. Ancak 6502 tasarımı itibariyle sürekli belleğe erişirken pic ile o tasarımın karşılığı olarak program yazmanız gerekiyor. Pic üzerinde 24 i/o pin'ini bellek erişimine ayırmış olsanız ve ekstradan da kontrol sinyalleri için i/o pin'leri ayırmış olsanız belleğe erişmek için bunların set edilmesi, data bus olarak ayırdığınız pin'lerin okunması falan derken sadece tek bir adresin okunması için rahat 8-10 komut vermeniz lazım.  6502 ise bu işi 1-2 cycle'da hallediyor.

8 komut * 4 pic cycle = 64 pic cycle = 8 6502 cycle

Neyse, ileride tasarım değişikliğine gitmem gerekiyor ancak şimdilik mecbur 6502'nin adres hatlarını tristate etme yoluna gideceğim. Tristate edilmeyi bekleyen bir hat daha var:  6502'nin R-/W çıkışı. Uyuz olduğum nokta burası. Tek bir hat için 8 tristate buffer'ı olan ekstra bir 74S244 daha kullanacağım.

Bu arada 6502'nin çok az kullanılan enteresan bir giriş hattı var. S.O. (Set Overflow) pini. Buraya logic 1 verdiğinizde işlemcinin statü register'ı üzerindeki overflow bit'i 1 oluyor. Bu özellik 1541 sürücülerinde 3 cycle'lık  bir döngü içinde dışarıdan gelecek bir haberi beklemek için kullanılmış. 6502 ile en sıkı döngü bu pin vasıtası ile yaratılabiliyor.

Şu şekilde,
Kod:
 CLV
LOOP:
 BVC LOOP

Dışarıdan S.O. pin'i set edilip 3 cycle'lık bu loop'tan çıkılabiliyor. Bu şekilde çok hızlı cevap verilmesi gereken bir dış habere hemen cevap verilebiliyor.

Amacı dışında bu pini data transferi için de kullanabileceğimi düşündüm. Belki sırf enteresanlık olsun diye daha sonra bununla da bir deneme yapabilirim.

Veri transferi şu şekilde yapılacak. Pic'ten 6502'ye sadece reset bacağı ve s.o. bacağı bağlı olacak. Veri transferi için gereken kodu içeren ufak bir eprom 6502'ye bağlanacak. Kod overflow flag'i set eden aritmetik bir işlem içermeyecek, başlangıçta pic'ten gelecek bir 1 sinyalini bekleyecek. Belirli bir süre sonunda 1 gelmemişse 0 kabul edilecek, 1 gelirse 1 olarak işlem görecek. Arada belirlenmiş bir protokole göre önce başlangıç adresi sonrasında da sid datası bu yöntemle transfer edilecek.

Oldukça yavaş kalacak bir yöntem aslında. 40 cycle ile bir bit transfer etsek.

Ortalama 4k boyutundaki bir sid'i transfer etmek için :

40 cycle * 8 bit * 4096 byte = 1310720 cycle.

Eh o kadar da yavaş değil gibi sanki, saniyede 1 milyon cycle'dan 1.31 sn. gibi bir süre yapıyor.

74S244'leri devreye yerleştirebilmek için mecbur devreyi bozuyorum çünkü klasik aldığım kablolar yine bitti. Artık ya herro ya merro. Eprom'dan sid çalan test devresine dönüş yok.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mart 01, 2015, 05:34:14 ÖÖ
Bir sürü talihsizlikten sonra nihayet 6502 devredeyken belleğe program transfer edip çalıştırmayı başardım.

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

Hali hazırda çip söküp takma tekniğinden elimdeki brenner8 programcıya icsp için kablo lehimleyip devredeyken programlama yöntemine geçmiştim. İşleri epey rahatlatıyor bu. Devreye tristate buffer'ları ve 6502'yi monte edip epey bir deneme yaptım ancak bir türlü belleği düzgün yazıp okuyamıyordum. Uğraş uğraş olmadı. Tek eksiğimiz debug kalmıştı, onu da yapabilmek için bugün bir adet clone Pickit 2 aldım. Baktım debug'dan da bir şey çıkmadı.

Sonra acaba dedim, databus için kullandığım d port'unun giriş/çıkış ayarını mı yanlış yapıyorum diye programa bir göz gezdirdim. Çalışan programa dokunmayacaksın boşuna dememişler. Gereksiz gördüğüm bir yeri sadeleştirirken ram'e bir byte yazan fonksiyonun sonunda TRISD = 0xff kaldığını gördüm. Yani D portunu okumaya ayarlıyor bu. O satırı silince program düzgün çalıştı. Tabii bu arada ben devreden 6502'yi ve tristate buffer'ları çıkarmıştım sorun onlardan mı acaba diye. Sonra 2 saat de onları takmaya uğraştım. Onlar takılıyken de neyseki çalıştı.

Ancak mevcut tasarımdan kesinlikle memnun değilim zira devre şu an 0.50 amper akım çekiyor. Devrede 6502, PIC, 8850, 2*RAM entegrelerinden sonra 13 adet entegre daha mevcut. Bu haliyle işi becerdikten sonra S.O. ile data transferi tekniğine kesin geçmek istiyorum. Bunu yaparsam PIC üzerinden 6502'ye sadece READY, RESET, S.O. ve IRQ (belki NMI da devreye sokulabilir) bacaklarını kullanarak belleğe transfer gerçekleştirebileceğim. Tristate buffer için kullandığım 5 adet entegre gerekmeyecek, yine aynı şekilde counter olarak kullandığım 2 adet entegre de gerekmeyecek. Belleğe pic doğrudan erişmeyeceği için adres decoder da sadeleşecek.

Sadece S.O. pin'i üzerinden pic ile 6502'yi haberleştirebilir miyim diye düşündüm ancak bu epey karışık. Bir protokol oluşturmak gerekiyor ve iki tarafta da zamanlamanın çok iyi ayarlanması lazım. Yani yazılan kodun nerde kaç cycle yediğini iyice hesaplamak lazım. Senkron tutturamama ihtimali de söz konusu. Gönderilen 1'ler için overflow flag'i set olacak ancak 0'lar için belli bir süre pic'in S.O. pin'ini low'da tutması gerekiyor. Senkronizasyon kaybolabileceği için arada sabit bir desende data gönderip senkronizasyonun sağlanması gerekiyor falan.

Bunun yerine data gönderimini interrupt ile yapmak daha makul bir çözüm gibi geldi bana. Diğer çözümdeki zamanlama için harcanacak cycle'lar düşünüldüğünde 7 cycle interrupt ile yemek çok da büyük külfet getirmez.

Mantık olarak 6502 başlangıçta interrupt'ları açıp transferin bitip bitmediğini kontrol eden bir kod çalıştırıp döngüye girecek, başlangıçta overflow flag'i temizlenecek. PIC
göndereceği dataya göre overflow flag'i set edecek yahut etmeyecek (1 yahut 0) ve IRQ hattını lojik 0'a çekip interrupt yaratacak. 6502'de çalışan interrupt handler ise overflow flag'ine bakıp 1 mi 0 mı transfer edildiğini anlayıp belleği dolduracak. IRQ'ya bakan program karışık olmasın diye başlangıç adresi ve datanın uzunluğu gönderilirken IRQ yerine NMI kullanılabilir. Bu çözümde senkronizasyon sorunu yok. Sadece Pic tarafında yapılacak ardışık interrupt'ların interrupt'ı karşılayan 6502 kodu bittikten sonra yapılacak şekilde ufak bir bekleme yapmak lazım.

Bunun testi daha zor olduğu için şu anki tasarım aslında işe yaramış olacak. Yeni tasarımı mevcutun üstüne uygularsam 6502 bağlıyken bellekten okuma özelliğini test için kullanabilirim.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mart 02, 2015, 21:27:27 ÖS
Hatalar olsa da yeni devre ile sid çalmayı başardım :) Video yükleniyor.

Sırada interrupt hacking var umarım. 7dx partiye devre halinde yetiştirmeyi planlıyordum ama şu an zor görünüyor.

ps: Hali hazırda rs232 üzerinden sid dosya alımı ile ilgili kod yazmıştım. Onu birazcık düzenleyip değişik sid'leri bir deneyeceğim bu arada.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: joker_ üzerinde Mart 02, 2015, 21:40:53 ÖS

Sırada interrupt hacking var umarım. 7dx partiye devre halinde yetiştirmeyi planlıyordum ama şu an zor görünüyor.


Devre halinde olmasa bile, son halini 7dx'e getirirsen çok seviniriz. Merakla bekliyoruz ;)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mart 02, 2015, 22:06:06 ÖS
Devre halinde olmasa bile, son halini 7dx'e getirirsen çok seviniriz. Merakla bekliyoruz ;)

Getiririm getirmesine ama çalışacağının garantisi yok :) Silikon tabancası ile sabitlemem lazım her bir tarafını :)

Video yüklenmiş bu arada

nUYjcpNh58M

(Sonda kesiliyor, telefonun azizliği... ikinciye de çaldı bu arada)

ps: Çok pis utandım, yazılım sahteciliği kurbanı olabilirsiniz kalmış arkada :-/


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mart 04, 2015, 21:27:26 ÖS
Transfer için ekteki gibi bir kod yazdım. Ancak sonradan farkettim ki ön planda çalışan uygulamaya ait statü register'ı interrupt geldiğinde stack'e basılıyor. Interrupt'tan çıkıldığında da tekrar geri çekiliyor. Yani benim interrupt rutinin sonunda overflow flag'ini temizlemem yetmeyecek.

Bunun bir yöntemi, stack'teki statü register'ına ellemek. Bütün bunları düşünürken bir başka yöntem daha geldi aklıma. NMI interrupt'ı 0, IRQ interrupt'ı ise 1 biti olarak kabul edip transfer yapmam da mümkün aslında. Bu durumda Overflow flag'ine ihtiyacım kalmıyor. Rutin içinde hiç overflow flag'ini set edecek bir işlem yapmaz isem bunu da bitiş durumunu algılamak için kullanabilirim. Ekteki rutinde bitiş durumunu algılamak için başlangıç adresi iletildikten sonra çağrılan nmi interrupt'ı kullanıyorum.

Bu arada bu uygulayacağım yöntemin bir dezavantajı var o da uyumluluğu sağlamak biraz daha zor. Kodu $FF00'dan itibaren koydum ancak rom'u kaldırıp oraları da kullanan sid'ler mevcut. Transfer rutini çalışırken rom'u kapatamam.

İki alternatifim var,  şimdilik mecbur ilkini seçiyorum daha basit olmasından dolayı.

1. Şimdilik uyumluluğu salla, kodu minimize edip $FF00 yerine $FF80'den başlayacak hale getirirsek uyumluluğu arttırırız. Bu arad sid'leri tarayıp header'larından kaç tanesini kaçırıyoruz diye tespit etseydik iyi ederdik. (Hemen bir program yazılabilir ancak üşendim yazmaya)

2. Ram'a aktarılacak Player kodu yer değiştirebilir olacak. $FF00 ve sonrasını kullanan bir sid olursa sid'in yerini çalmaya başlamadan önce değiştirecek, nmi rutinini de sid'in ezmeyeceği bir yere alacak (pic kontrolü onun üstünden sağlayacağı için). Doğal olarak rom address decoding logic kullanılarak kapatılacak.


Bu arada kodu 6502 debugger & simulator uygulamasında nmi ve irq'ları manuel verip, overflow flag'i program üzerinden set ederek denedim. Bir iki sıkıntısı  var ya benim rutinden kaynaklanıyor ya da bu programdan.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mart 05, 2015, 02:12:14 ÖÖ
Önceki mesajdaki koda hiç bakmayın. Muhtemelen ciddi bug'ları vardır :)
Çoktan diğer yöntemle yapılacak kodu yazdım. 6502 simulator'de de debug ettim. Pic'ten kontrol sinyallerini doğru zamanlama ile gönderdiğim sürece doğru çalışacağını umuyorum.

Yeni kodda NMI da IRQ da 1 bitlik data transferi sağlıyor, PIC 0 transfer etmek istediğinde NMI, 1 transfer etmek istediğinde IRQ hattını tetikleyecek. Donanım seviyesinde interrupt'lar ile çalışmadığım için bakalım nasıl çalışacak göreceğiz. Kodu yazmakla uğraştığım için donanım kısmı ile uğraşamadım.

Overflow flag'ini bu arada yeni kodda 6502'nin tasarımcılarının amaçladığı şekilde kullanmış oldum. Interrupt rutini artık tüm sürecin durumunu sadece kontrol ediyor. Reset rutini ise bir durumdan diğerine geçmek için overflow flag'inin set olmasını bekliyor. Böylece interrupt rutinleri hızlandı. Önceki rutinlerde bir bit için max 69 cycle harcanırken. Yeni rutinde 55 cycle harcanıyor. Esas yükü içeren sid'in transferi için bu böyle. Az sayıda verinin transfer edileceği kısımlarda pic işi biraz daha yavaş yapacak.

Kurgu şu şekilde,

1. 6502 reset edilir.
2. Reset rutini kullanılacak değişkenleri sıfırlayıp Overflow flag'inin set edilmesini bekler. Overflow set olduğunda adres transferi tamamlanmış demektir.
3. PIC toplam 4 byte transfer eder. Her bit için bir IRQ yahut NMI oluşturarak. İlk iki byte player'ın yükleneceği adres. Sonraki iki byte sid'in yükleneceği adres olmak üzere.
4. PIC S.O. (Set overflow) çıkışını 1'den 0'a çekerek 6502 üstündeki overflow flag'ini set eder.
5. 6502 reset rutini overflow flag'ini görüp durumu player transfer edilecek'e çeker. Overflow flag'ini temizler.
6. PIC player rutinini transfer eder.
7. 4 ile aynı
8. 6502 reset rutini overflow flag'ini görüp durumu sid transfer edilecek'e çeker. Overflow flag'ini temizler.
9. PIC sid'i transfer eder.
10. 4 ile aynı
11. 6502 reset rutini overflow flag'ini görüp tüm transferin bittiğini anlar ve kontrolü player'a devreder.

Sırada PIC kodunu yazmak var. Esas yükü tutacak sid transfer işlemi için 8mhz ile çalışan pic'in her bitin transferi için 440 cycle'lık süresi var. PIC tarafında iki bit transferi arasında bekleme yapmak gerekecek.

Donanım seviyesinde interrupt'lar ile uğraşmış biri varsa ve kurgumda bir hata varsa bana lütfen ben daha fazla ileri gitmeden dur desin. İşin sonu hüsran ile bitmesin.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mart 06, 2015, 02:44:15 ÖÖ
Bu iş tamamdır :)

Hesaplarda da yanılma olmadı.6502 için yazdığım rutinde bir iki bugfix'den sonra çalışır hale getirdim. Interrupt rutinlere Pic tarafından çalışmalarının bitmesi için 30-40 cycle marj vererek yaklaşık 2 saniyede 2k'lık bir sid'i yükleyebildim. Interrupt rutinleri optimize edip marjı da azaltırsam 4k tutan bir sid'i 1 saniye gibi bir sürede yükleyebilirim.

En güzeli donanım oldukça hafifleyecek. Testimi yaparken eprom bağlamak yerine mevcut devremde ram'a nihai projede epromda çalışacak programı aktarıyorum. Bu şekilde address decoding ile alakalı yahut eprom'un bağlantı problemi vesaire gibi şeylerle şimdilik uğraşmamış oldum.

İlgilenenler için 6502 tarafındaki kodun fix edilmiş hali ekte.

Daha sonra PIC tarafındaki kodları da paylaşacağım. Şimdilik epey iğrenç gözüküyorlar. Şimdilik IRQ üç kağıdı ile ilgili kısmını paylaşıyorum.

ps: Projenin bundan sonrasını blog'umda ingilizce olarak yazmaya devam edeceğim. Arada yine buradan gelişmeleri aktarırım.



Konu Başlığı: Ynt: Psid player projesi
Gönderen: Simon (Özay Turay) üzerinde Mart 06, 2015, 11:55:36 ÖÖ
Julian Ilett'ten SID ile alakalı olmasa da analog elektronik ve ses üretimiyle ilgili bir video. ;)

yxtXMC7suuQ


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mart 06, 2015, 23:30:44 ÖS
@Ozay : Elemanın o kadar uğraşıp yaptığı şeyi benim devre doğal olarak yapıyor :p  Data transferi sırasında sağlam gürültü oluyor. Gerçi yeni yöntemde epey azaldı gürültü.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Voltron üzerinde Mart 06, 2015, 23:41:33 ÖS
Uğraşlarınız gerçekten takdire şayan. Benim de hayalim sammichsid isimli sid synthesizer kitinden bir adet edinip, kendi müziğimi kendim çalmak.  Tabi herseyden once kolayca sid bulamayacagim icin, ve c128 imde kalan son saglam 6581 e de kiyamayacagim icin, bir kac tane nano swinsid yapmayi planliyorum. Gerci pek nano filan olacagini zammetmem ilk denemelerde buzdolabi gibi cihaz olacak sanirim.  Bu asamada yardimlarinizi esirgemezseniz cok  sevinirim.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mart 07, 2015, 00:19:29 ÖÖ
5'e 10'luk bir pcb'ye rahatça olur bence. Öyle aman aman eleman yok devrede. Parçalar da kolayca bulunur. Aslında iyi fikirmiş orjinal sid yerine swinsid kullanmak. Yazık benim emektar 8580'in başına gelmeyen kalmadı. Gerçi yine de sağlamlar meretler :)

Bu arada yılmaz azmim devam ederse, sid player'ı kat kat yapmayı düşünüyorum.
Sallıyorum en altta PIC, üstünde 6502, onun üstünde Sid. Arduino'lar gibi. Sid devresini çıkartıp daha sonraki başka bir projeye doğrudan oturtacak şekilde.  Veya 6502'yi... Yine bu parçalar kullanılıp midibox tarzı bir şey de yapılabilir. Gerçi o noktaya geldiğimde muhtemelen azimden eser kalmaz :)

Sammischsid'e de biraz baktım da epey pahalı galiba, 220 avustralya doları. Control surface'i olmayan bir çözüm daha ucuza gelmez mi? Hazır kontrol imkanı olan Midi klavye falan kullanılsa? Mssiah da 50 avro imiş.

ps: Bu arada montaj vesaire konularında benden çok daha ustaları var forumda. O konuda ben biraz acemiyim.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Simon (Özay Turay) üzerinde Mart 07, 2015, 15:02:48 ÖS
@Ozay : Elemanın o kadar uğraşıp yaptığı şeyi benim devre doğal olarak yapıyor :p  Data transferi sırasında sağlam gürültü oluyor. Gerçi yeni yöntemde epey azaldı gürültü.

O kadar kablo ile gürültü olmaması mümkün değil zaten. Devre kartına geçince sorun kalmayacağını düşünüyorum. ;)

Julian Ilett'in videoları genelde seri halinde oluyor. Gelişme oldukça devam videosu koyar. Yapmaya çalıştığı sey ses üzerinde analog olarak efektler oluşturabilen bir devre. Tasarım olarak Electronics Today International (http://en.wikipedia.org/wiki/Electronics_Today_International) dergisinde yayınlanan 1980'lerden kalma ETI VOCODER (https://sites.google.com/site/analogvocoderinfo/analog-vocoder/e-t-i) tasarımını kullanacak. Hatta bir önceki videosunda eski çalıştığı yere gidip ön panelini kestirip pot deliklerini deldirmişti.

YWUH-w-m1h8

Çok basit şeyleri de çok karmaşık şeyleri de kafa karıştırmadan anlatabilen ve konuşması insanı rahatlatan bir eleman. Sabaha kadar konuşsa dinlerim dediğin insanlar vardır ya onlardan işte. :)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mart 08, 2015, 04:30:22 ÖÖ
Bakalım, Sid devresini eagle'da çizmeye başladım. Kütüphaneden temin edebileceğin parçaya ait elemanı bulmak çok zor, baya uğraştırıyor. Keşke aldığımız malzemelerin standart bi numarası bir şeyi olsaydı da eşleştirebilseydik.

Eagle'ın boyut kısıtlamalarına takılmamak için hem de modüler olsun diye parça parça çiziyorum ama bakalım ne olacak. Olmadı express pcb'ye dönebilirim. Eagle'ı belki çok sayıda board'u profesyonel bir şekilde ürettiririm diye düşünüyorum ama o da kolay olmayacağı için muallaktayım.


ps: Bu arada 4-5 adet logic entegre kullanmak yerine final devrede GAL22V10D kullanmaya karar verdim. Tanesi logic entegrelerin toplamı ile kafa kafaya geliyor (2.5 lira gibi ) ancak devrede 14 * 5 = 70 bacakla uğraşmak yerine 24 bacakla işi halledebiliyorsun. Elimdeki TLS866cs bu cihazları programlayabiliyor. 12 input'u ve 10 output'u var. Arada uygulanacak logic programlanabiliyor. Tüm address decoding işini tek bir çip ile yapmak mümkün.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mart 12, 2015, 04:15:26 ÖÖ
Geçen zaman içinde çok fazla çalışma fırsatı bulamadım, yine de bir şeyler yaptım. GAL (Generic array logic) çipim geldi hafta içinde. Atmel'in WinCupl programını biraz zorlanarak da olsa kullanmayı becererek GAL16v8d çipimi programlayabildim.

Yeni tasarımdaki devrenin pic ve rs232 converter hariç hali şu şekilde

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

Sol üstteki address decoder, 22v10d kullansaydım 74HC20'ye de ihtiyacım olmayacaktı aslında ama temin etmek vakit alacak. İkiyi, üçü geçtikten sonra standart logic elemanları yerine bunu kullanmak çok mantıklı. Benim devremde önemli olmasa da 4Mhz'yi falan geçtikten sonra lojik karmaşıklaştıkça propagation delay'in yani decoder'a giren sinyal ile çıkan sinyal arasındaki zaman farkının da önemi çok artıyor. GAL ile düz lojik kullanılıyorsa (flip flop'lar ile karmaşık lojik de kurulabiliyor bu aletlerle) max propagation delay 3.5ns. Muhteşem bir rakam bu. Standart lojik entegrelerinin her katmanı için 20-25ns ise sıradan rakamlar.

Şu an için tek dezavantajı güç tüketimi gibi gözüküyor. Onu da pratikte bir test etmek lazım.



Konu Başlığı: Ynt: Psid player projesi
Gönderen: Simon (Özay Turay) üzerinde Mart 12, 2015, 09:52:51 ÖÖ
74xx, GAL derken iş CPLD ve FPGA'ya doğru gidiyor haberin ola. :D

Ama bu tasarım daha sade ve güzel olmuş. ;)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mart 12, 2015, 15:07:53 ÖS
Aslında GAL'lerin artık eski teknoloji sayılıp üretilmemesinden (Atmel üretiyor gerçi Lattice bırakmış) dolayı CPLD olur mu acaba diye de bir gözattım ancak ucuz ve kolay kaynaşacağım bir CPLD bulamadım.

GAL programlamak çok karmaşık değil, VHDL falan öğrenmeye gerek yok. Basit şekilde pin'leri tanımlayıp sonra da çıkışların lojik ifadelerini yazarak programlama için kullanılacak kod oluşturulabiliyor.

Zaten benim bu devremde address decoding haricinde de programlanabilir lojik'e ihtiyacım olmayacak. Kapasitesi yüksek bir CPLD olsaydı bir ihtimal eprom kullanmak yerine eprom'u da CPLD içine gömmek mümkün olabilirdi. Mevcutta 80-90 byte'lık bir eprom kodum var. En büyük sıkıntı 5v desteğinin artık yavaş yavaş çekiliyor olması.

http://forum.6502.org/viewtopic.php?f=10&t=2973 (http://forum.6502.org/viewtopic.php?f=10&t=2973)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: EMREZ üzerinde Mart 12, 2015, 23:30:14 ÖS
devre böyle daha güzel derli toplu olmuş, tebrikler dostum, pcb li modelide bizler için üretirsen belki biraz maddi desteğimizde olur daha iyi projelerede imza atarsın. sid teknolojisi vazgeçilmez bir nostalji.
- pic32 ile bu işi yapmak istersen okulumu tamamladıktan sonra sd spi dma rs232 usb veri transferi, vs her konuda yardımcı olurum. neden pic18 değil 32 dersen pic18 in hafızasının son noktalarına kadar kullandım ve hızından derleyicinin oluşturduğu asm kodlarından usandm ::))


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mart 15, 2015, 01:02:44 ÖÖ
EMREZ sağolasın, PIC32'ye geçtiğimde yardımlarını beklerim. Özellikle yüksek frekanslı clock ile çalışırken yardıma ihtiyacım olacak gibi gözüküyor.

@Özay : Devrelerdeki gerilim düşmelerinde uzmansın :) Devrenin basit halini kurdum ama sıkıntım var, tüm bağlantıları kontrol ettim ama çalıştıramadım. Entegrelerin üzerindeki gerilimi ölçeyim dedim, devreyi stabil 5v - 0.25A ile beslememe rağmen entegrelerin VCC / GND aralarında 3V görüyorum. Sıkıntımın muhtemelen bu olduğunu düşünüyorum. Var mı bir fikrin?

Bakalım bugün bir de logic analyzer ile el atacağım 6502 reset olduktan sonra bir müddet de olsa çalışıyor mu diye kontrol etmek için. PIC üstünden RAM'e erişebildiğim diğer devreyi bir kenara kaldırdım. Bu yeni devrede belleği okuma imkanım yok. İş logic analyzer'a kalıyor.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Simon (Özay Turay) üzerinde Mart 15, 2015, 20:24:49 ÖS
* Decoupling capacitor kullanıyor musun? Kullanmıyorsan mutlaka kullanmalısın.

* Besleme için ayarlı güç kaynağı kullanıyorsan ve sabit akıma ayarladıysan devre fazla akım çekmeye çalışıyorsa güç kaynağı otomatik olarak voltajı düşürüyor olabilir.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mart 15, 2015, 22:55:44 ÖS
Sid üzerinde var ama diğer çiplerde yok, daha sonra bir deneyeyim bakalım. Bu arada GAL'i devreden çıkartıp babaannemin address decoder yöntemine geçince devredeki gerilim 1v yükseldi. Şu an 4V civarında ölçüyorum. Güç kaynağını sabit gerilim modunda kullanıyorum.

Çalışsın diye şimdilik $0000-$7FFF arasını RAM (tek çiple), $E000-$FFFF arası ROM, $C000-$DFFF arası Sid olarak decode ediyorum. Eski devreyi bozmak istemediğim için yine kablo sıkıntısına gireceğimden basitleştirdim. Sadece bir adet 74LS138 (3 to 8 decoder) ve bir adet 74LS10 (3 girişli 3'lü nand kapısı) ile 3 adet chip select'i çıkartan basit bir decoder yaptım. Deneyeceğim sid'lerin $8000-$FFFF aralığını kullanmaması gerekiyor.

Player rutinini yer değiştirebilir (relocatable) yapmadığımı farkettim. JMP komutu kullanmışım. 6502'nin çalışması düzgün gibiydi ama sid seçilmiyordu. Şimdi onu düzeltip bir deneme daha yapacağım bakayım. 4V ile logic entegreler şimdilik idare eder gibi geliyor.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mart 17, 2015, 02:14:28 ÖÖ
Decoupling capacitor UART'ın 2 denemeden birinde senkronu kaybedip saçmalaması problemini giderdi. Gerilim de 4V'lardan 4.33V'a çıktı. Esas Sid'i beslediğim pil beni kıllandırdı sid pilden gelen akım yetmeyince 5v besleme üstündeki gerilimi mi düşürüyor acaba. Demişken onu da çıkartıp ölçtüm, bu sefer 4.55V oldu... Logic analyzer'dan okuduğum databus için de mantıklı değerler gördüm bu sefer. Eldeki hafif zayıflamış 9v bataryama bir 1.5V ek yapıp deneyeyim bari. Sağlam bir güç kaynağı şart.


ps: Sorunlar tam anlamıyla düzeldi mi peki? Hayır pek tabii :) Şimdi en azından memory'i okuyup yazabildiğim diğer devreme geçip belki sorunu bulabilirim. Pek tabii orada GAL uğruna bozduğum address decoder'ı yeniden yapmam gerekebilir. Ya da mevzu sid'in beslendiği batarya ise yırtabilirim de bundan.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mart 21, 2015, 03:09:56 ÖÖ
Malesef son denemeler esnasında 8580'i kaybettik :( 93 senesinde ilk edindiğim c64 içindeki sid idi. Başta devreyi pil ile beslemenin getirdiği bir kazık oldu bu.

Bugün Swinsid'in eski versiyonunu yapabilmek için malzemelerim ulaştı,
Atmel 8515 ve TDA 1543 DAC. Sonradan farkettim ki elemanlar kristal ile olmaz demişler ki olmadı harbiden de :) Yarın kadıköyden osilatör alıp parti ortamında deneyeceğim bakalım. Pek ümidim yok açıkçası, 6581 içeren çalışan c64'ler var ancak onlardan da bunları söküp daha sonra da son yolculuklarına uğurlamak hiç içimden gelmiyor :( Hali hazırda hardsid'e taktığım bir tane vardı, kart kayıp. Bulursam belki ona yamanırım en kötü ihtimalle.

ps: 6502 prime'daki wilson amcama döndüm yine, şu an blip blop'lar duyabiliyorum. En azından atmega çalışıyor :)
http://wilsonminesco.com/6502primer/ClkGen.html (http://wilsonminesco.com/6502primer/ClkGen.html)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mart 27, 2015, 02:32:40 ÖÖ
Partiye getirdiğim devreye sid çaldıramamıştım.
Son bir kaç günkü denemelerde test devresi üzerinden başarı sağlayamadım. GAL'i devreden zaplamama, swinsid'in kullandığı atmega88'i değişik fuse bit kombinasyonları ile yazmama rağmen sonuca ulaşamamıştım.

Bugün test devremi bir kenara kaldırdım, yeni tasarım basit devre üstünden denemelere devam ettim. Onda da sıkıntı oldu. Sonra eski denemelere benzer bir deneme yapmaya karar verdim. Devremin basit halinde eprom olduğu için 8 adet sid bulunduran eprom'u devreye taktım. Adres decoder'ı ve eprom'un devredeki bağlantılarını ayarladım.

Sonra logic analyzer ile eprom / ram ve swinsid'in chip select sinyallerini inceleyince bir şey farkettim. Swinsid'e giden chip select olması gerekenden daha uzun gibiydi. Orada kafama dank etti, c64'de sid phi2 clock'unu kullanıyor. Bu alet de c64'e takılmak üzere tasarlandığı için orada düzgün chip select sinyali alıyor. Ben ise sadece A15 / A14 / A13 bacakları üstünden logic ile chip select sinyali oluşturmuştum. (74LS138 3 to 8 decoder'ın D6 çıkışından chip select alabilmek için bu şekilde basit yaptım şimdilik, normal şartlarda A12'yi de kullanmam lazım. C000-D000 aralığı da sid'e decode oluyor. Bu aralığı kullanmayan sidleri test etmek için sorun değil.)

Neyse efendim, bir şeyler duymaya başladım müziğe dair ama hala sıkıntı devam ediyordu. En son kullandığım low fuse bitleri 60 idi. Dur şunu default değeri olan E0 yapayım dedim ve bingo :)  Çok iyi kalitede bir ses çıkış devresi yapmamış olsam da tatmin edici bir şeyler duydum.

IRQ/NMI üzerinden üçkağıdımı çalıştıramadım ama orada en azından data transferini yapabildiğime ama işin player'a geçme kısmında sıkıntı olduğunu bildiğimden içim rahat. Kodda düzenleme yapınca düzeleceğini düşünüyorum.

Swinsid ile devrenin çektiği akım da epey düşük, sadece 150mA.

Yeni devrede PIC'ten 6502'ye bağlantılara dikkat, sadece 5 adet bağlantı var. NMI / IRQ / RESET / READY ve SO bacaklarına.

2CBaKDYYxWY


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Voltron üzerinde Mart 27, 2015, 19:43:18 ÖS
Çok güzel bir iş çıkmış gerçekten tebrik ediyorum. Ses gerçekten güzel. Bu swinsid hangi model ? Micro mu yaptiniz  acaba ?  Kullanilan malzemelerin listesini bir turlu bulamadim micro yapmak icin.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: LW3D üzerinde Mart 27, 2015, 22:53:32 ÖS
Çok güzel haber.. Müzik kulağım yoktur..Bu nedenle Swinsid'de bana bayap güzel geldi...


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mart 28, 2015, 01:34:02 ÖÖ
@Voltron : Şu forumdaki mesajlarda gerekli bilgilere ulaşabilirsin : http://www.forum64.de/wbb3/board65-neue-hardware/board288-sid-co/board294-swinsid/36481-swinsid-atmega88/ (http://www.forum64.de/wbb3/board65-neue-hardware/board288-sid-co/board294-swinsid/36481-swinsid-atmega88/)

Evet micro diye geçiyor, devresi dışında nano'dan bir farkı yok. Nano'da TQFP pakette bir atmega88 var bunda PDIP pakette.

Videonun 8. saniyesinde swinsid'in devre üstündeki hali gözüküyor. Swinsid'i c64 ya da sid çipi destekleyen bir şey için yapacaksan orada gördüğün 1uf elektrolitik kapasitöre ve 2sc945 transistöre de ihtiyacın yok. Dirençlerin değerleri öyle çok önemli değil. İki bacaktan ses çıkışı sağlanıyor, orjinal devrede bir bacakta 240k diğer bacakta 1k direnç var. Benim videoda swinsid'in yanında gözükmeyen bir de 32mhz osilatör mevcut.

Malzemelerin temini noktasında şöyle söyleyeyim, hepsini bir yerden bulamayabilirsin ama tüm parçaları bulman mümkün. Nano için olanları dahi bulabilirsin.

Ben swinsid'in eski versiyonu için gereken malzemeleri dahi buldum, şanssızlık bu ya kendi bug'larımı bulamadığım için ondan ses çıkaramamıştım.


Ekteki zipteki dosyalar

final2pop.pnp : SwinSID SE devre şeması (tek yüzlü pcb tasarımı swinsid'in web sitesinde mevcut)
Micro_SwinSID_JargoVpcb.sch : Micro için kullanıcılardan birinin paylaştığı devre şeması. Ben buna göre yaptım. Osilatör'ün vcc'sine 4.7k direnci bağlamadım, herhalde eleman 3.3v ile çalışan osilatör kullandığı için bunu bağladı.
Micro_SwinSID_JargoVpcb.brd : Üstteki devre şemasının pcb tasarımı.
swinsid88_1_0.sch : Micro için Swinkels'in paylaştığı devre şeması
swinsid88_1_0.brd : Micro için Swinkels'in paylaştığı pcb tasarımı
SwinSID88_schematic.png : Micro için bir başka kullanıcının paylaştığı devre şeması.

Swinsid SE için ana malzemeler
ATMEGA 8515 :
http://www.direnc.net/ATMEGA8515-IC-8BIT-8K-FLASH-MCU-DIP40-8515-,PR-8080.html (http://www.direnc.net/ATMEGA8515-IC-8BIT-8K-FLASH-MCU-DIP40-8515-,PR-8080.html) (9,82 TL)
http://www.dorukanstore.com/ATMEGA8515-16PU-RoHS,PR-7164.html (http://www.dorukanstore.com/ATMEGA8515-16PU-RoHS,PR-7164.html) (8,36 TL)
http://www.dorukanstore.com/ATMEGA8515-16AU-RoHS,PR-7165.html (http://www.dorukanstore.com/ATMEGA8515-16AU-RoHS,PR-7165.html) (8,36 TL - TQFP)

TDA 1543 DAC : http://www.ersinelektronik.com/TDA1543,PR-7706.html (http://www.ersinelektronik.com/TDA1543,PR-7706.html) (7,67 TL)

Swinsid Micro için ana malzemeler
ATMEGA 88 :
http://www.dorukanstore.com/ATMEGA88PA-PU,PR-19930.html (http://www.dorukanstore.com/ATMEGA88PA-PU,PR-19930.html) (8,06 TL)
http://www.direnc.net/ATMEGA88PA-PU-MCU-8BIT-ATMEGA-20MHZ-DIP-28,PR-15922.html (http://www.direnc.net/ATMEGA88PA-PU-MCU-8BIT-ATMEGA-20MHZ-DIP-28,PR-15922.html) (10,74 TL, geçen cumartesi ellerinde bir tane vardı ben almıştım)

SE için 24MHz, Micro için 32Mhz osilatör lazım. 3-4 ay önce ben fazla alternatif bulamamıştım, şimdi heryerde var :)

http://www.ersinelektronik.com/index.php?do=catalog/results&q=osilat%C3%B6r&tp=2 (http://www.ersinelektronik.com/index.php?do=catalog/results&q=osilat%C3%B6r&tp=2)
http://www.dorukanstore.com/Kristal-Osilatorler-,LA_1209-2.html#labels=1209-2 (http://www.dorukanstore.com/Kristal-Osilatorler-,LA_1209-2.html#labels=1209-2)
http://www.direnc.net/OSILATOR-KRISTAL-CESITLERI,LA_1591-2.html#labels=1591-2 (http://www.direnc.net/OSILATOR-KRISTAL-CESITLERI,LA_1591-2.html#labels=1591-2)

Osilatör almak yerine kendi osilatörünü de yapabilirsin. Bunun için uygun frekanslı kristal alacaksın ve şu sayfada gösterilen ilk devreyi yapacaksın. (http://wilsonminesco.com/6502primer/ClkGen.html (http://wilsonminesco.com/6502primer/ClkGen.html))

Daha ucuza mal olur ama board'da yer israfı yaratır ve muhtemelen daha fazla güç tüketir.

Micro'nun devre şemasını görmediğim için Swinsid SE'ye yönelmiştim daha önce, atmega 8515'lerden ve TDA 1543'lerden 3'er tane almıştım. Önümüzdeki günlerde diğer test devreme de SE'yi uygulayacağım. DAC'tan dolayı belki ses kalitesi biraz daha iyi olabilir ama emin değilim.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Voltron üzerinde Nisan 01, 2015, 11:52:08 ÖÖ
Çok teşekkürler. Bu kadar güzel bilgiden sonra, dayanamadım ve hemen malzeme siparişlerini verdim. Bu gün, siparişlerim geldi. ilk etapta iki adet swinsid deneyeceğim.

Ben bu linkteki 2. tasarımı baz aldım.

http://www.forum64.de/wbb3/board65-neue-hardware/board288-sid-co/board294-swinsid/p615653-swinsid-atmega88/#post615653 (http://www.forum64.de/wbb3/board65-neue-hardware/board288-sid-co/board294-swinsid/p615653-swinsid-atmega88/#post615653)

 PCB leri bile yarım yamalak da olsa (porçöz ile) bastım hazırladım. Şimdi iş montaja kalıyor.

Sormak istediğim asıl şey ise, Atmega88'in herhangi bir özel parametresi var mı yoksa default mu bırakayım programlarken ?


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Nisan 01, 2015, 14:00:16 ÖS
Harici osilatör kullanacaksan hex üstündeki fuse bit değerlerine dokunmana gerek yok. Daha kritik olanı low fuse bit'leri. E0 olacak bu.

İmkanını bulabilirsem ben de pcb'sini yapacağım.

Nerede deneyeceksin yaptığın swinsid'i? C64'te mi?


Konu Başlığı: Ynt: Psid player projesi
Gönderen: EMREZ üzerinde Nisan 01, 2015, 14:07:44 ÖS
Atmelde fuse lanet birşeydi, yine öylemi, zamanında fuse resetleme için programlayıcılar pahalı geldiğinden ve fuse sorunu ile kullanamadığım atmel çipler birikince kendim birşeyler yapmıştım.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Voltron üzerinde Nisan 01, 2015, 14:19:42 ÖS
Nerede deneyeceksin yaptığın swinsid'i? C64'te mi?

Aynen. C64 ve c64c üzerinde deneyeceğim. 32 MHz kristal osilatör satın aldım bluemavi.com dan.

6581 / 8580 farkı için bir jumper eklenebilirmiş nanoda olduğu gibi.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Nisan 01, 2015, 15:57:57 ÖS
@EMREZ : Herhalde pcb haline getirdikten sonra programlama ile ilgili sıkıntı yaşanıyor. Clock source'u düzgün seçilmez ise falan. Benim başıma gelmedi böyle bir şey çünkü bread board üstünde yapıyorum devreyi. Atmel için de mecbur şu an Minipro'nun zif soketini kullanıyorum. Bende sıkıntı yok bu açıdan.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Simon (Özay Turay) üzerinde Nisan 01, 2015, 16:06:55 ÖS
Denemedim ama TL866 FuseBit'leri bozuk mikrodenetleyicileri yüksek voltajla tamir edebiliyormuş.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: EMREZ üzerinde Nisan 01, 2015, 16:08:27 ÖS
ben atmega8 programlıyordum, fuse yazdıktan sonra microchip pic serisi gibi silemiyordum nedense. kaydettiğim fuse ayarı kalıyordu sürekli üzerinde hvprogram vs gibş bir programlama gerekiyordu o da benim programlama kartımda yoktu.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Voltron üzerinde Nisan 01, 2015, 20:57:13 ÖS
Atmegayi programladim,

http://www.engbedded.com/fusecalc/ (http://www.engbedded.com/fusecalc/)

Adresinden  low fuse bitleri 0e olacak sekilde konfigure edip cipe yazdim. Yazim esnasinda en son security islemi yapmadim sanirim chipi kitliyor bir daha yazima karsi.  Sanirim sorun olmaz. Hersey hazir, derken uyduruk drill basi yalama oldu bozuldu... Hobi  Drill seti siparisi verdim bekliyorum.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Simon (Özay Turay) üzerinde Nisan 01, 2015, 21:07:53 ÖS
Aman diyim lock bitleri kurcalama alırsın eline mikrodenetleyiciyi. :D

Aynı zamanda ICSP'yi devre dışı bırakmamak gerek, yoksa TL866 benzeri bir programlayıcı olmadan tekrar ayarlanamıyor fuse bitler.

Bir de her seferinde tekrar tekrar yazmaya gerek yok fuse bitleri. Bir sefer amaca göre programlayıp daha sonra gerektikçe sadece firmware'i yazmak gerekiyor.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Nisan 01, 2015, 21:36:22 ÖS
Aslında fusebitlerinin bozulmasından ziyade onlara çekilen ayar icsp ile programlamayı etkiliyormuş.

Şurada : tafsilatlı bilgi mevcut : http://www.gammon.com.au/forum/?id=11643 (http://www.gammon.com.au/forum/?id=11643)

Kritik bitlerde (reset, clock vesaire) yanlışlık yapılmadığı sürece sıkıntı çıkmaz.

@voltron: yanlış yazdın herhalde 0e değil e0 olacak.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Voltron üzerinde Nisan 01, 2015, 21:49:09 ÖS
Aman diyim lock bitleri kurcalama alırsın eline mikrodenetleyiciyi. :D

Aynı zamanda ICSP'yi devre dışı bırakmamak gerek, yoksa TL866 benzeri bir programlayıcı olmadan tekrar ayarlanamıyor fuse bitler.

Bir de her seferinde tekrar tekrar yazmaya gerek yok fuse bitleri. Bir sefer amaca göre programlayıp daha sonra gerektikçe sadece firmware'i yazmak gerekiyor.

Zaten bir kere yazdım ve bıraktım. :D


@voltron: yanlış yazdın herhalde 0e değil e0 olacak.

Evet ben yanlış yazdım. E0 olarak hesaplattim yukardaki siteye. Bana verdiği bitleri aynen programlayıcı ya girdim.  Yazımdan sonra verify edince low fuse=e0 değerini aldım.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Nisan 06, 2015, 02:49:52 ÖÖ
O kadar yazdım, sonra neye bastıysam artık silindi. Neyse özet geçeyim,
2 hafta önceki gelişmelerin sonucu aşağıdaki videoda. IRQ üçkağıdı 38400bps UART ile pc'den sid transferi ile artık çalışıyor. Şu an için $C000'ın üstüne yüklenen sid'ler çalışmıyor ama diğerlerinde sorun yok.

2a2mD4njS84

GAL'lere yüklediğim günahın muhtemelen bozuk sid kaynaklı olması gibi bir ihtimal olabileceğinden GAL kullanımına geri döneceğim zira $c000'ın üstüne yüklenen sid'leri çalabilmek için sid transferi sonrası rom'u kapatabilmeliyim. Bu da Address decoder'a tüm chip select'leri etkileyecek yeni bir kontrol sinyali eklemek demek. Discrete logic elemanları ile karışık oluyor bu iş.

Sonrasında düzgün playback yapabilmek için sıkı döngü yerine interrupt kullanmam lazım. Bunun için transfer sonrası irq/nmi vektörlerini player'ın arkasına yazacağım bir koda yönlendireceğim. 50 hz'lik bir sinyal pic'in PWM üreticisi için oldukça düşük. Bu işi cycle sayarak yapanlar var ancak çok da güzel bir çözüm değil. Bunun yerine 50 ve 60'ın katı olan ve pic'in desteklediği bir sinyal üretmeyi düşünüyorum, misal 3000hz. Player'ın arkasına koyacağım interrupt rutini ise örneğin PAL sid'ler için 3000/50 = 60, NTSC sid'ler için 3000/60 = 50 sayarak play rutinini çağıracak.

Sonra pic player'ı transfer ederken sid üzerindeki relocation bilgisini kullanmalı ki çalan sid ile yüklediğimiz player çakışmasın.

Şöyle de bir durum var. Transferi yaparken interrupt bacaklarına bit banging yapılırken, çalma esnasında pwm kullanmam lazım. Bunun için de ya pic tarafında jonglörlük yapılacak ya da interrupt bacaklarından biri GAL üzerinden logic ile beslenecek. Bu arada artık elimde 20v8d de var. Yani GAL üzerinde bu işler için yeterince input bacağı olacak. (12 input, 8 output bacağı var)

Bunları da halledersem sd kart erişimi işine dalabilirim.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: LW3D üzerinde Nisan 06, 2015, 10:02:22 ÖÖ
Sadece kolonları görüp, müziği dinlesek :) Kabloları görünce insan korkuyor :P

Tebrikler...


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Nisan 06, 2015, 22:25:00 ÖS
Sadece kolonları görüp, müziği dinlesek :) Kabloları görünce insan korkuyor :P

Tebrikler...

Şu an ne kolonları görebiliyoruz ne de kabloları. Youtube'u kapatmışlar :)

Şu an breadboard benim için büyük rahatlık. Kafa iznimi alana kadar da böyle gider herhalde. Ondan sonra pcb / kutu işlerine falan girersem daha güzel görüntülerle video çekerim herhalde.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Voltron üzerinde Nisan 06, 2015, 23:05:23 ÖS
Hala SwinSID mi bu çalan ? Gerçek SID gibi geliyor bana. :)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Nisan 06, 2015, 23:36:56 ÖS
Hala SwinSID mi bu çalan ? Gerçek SID gibi geliyor bana. :)

Malesef swinsid. Swinsid ile tüm geliştirme bittikten sonra ses board'u yapmayı düşünüyorum, gerçek sid'i bir daha o noktada deneyeceğim sadece.

Bazı parçalarda swinsid bariz sırıtıyor, özellikle sırıtmayan parçaları seçtim ben :) Tabii benim devrede de sırıtıyor olabilir daha önce yazdığım gibi interrupt'lar ile çalışan bir player'a geçmem lazım. O zaman gerçek anlamda bir karşılaştırma yapılabilir. Bir de bu speaker'lar sağlam kulakların gerçek bir karşılaştırma yapabilmesi için çok kötü.

Şu anda çok önemsemiyorum zira sid kısmından çok pic + 6502 tarafında çok işim var.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Voltron üzerinde Nisan 07, 2015, 00:32:22 ÖÖ
Malesef swinsid. Swinsid ile tüm geliştirme bittikten sonra ses board'u yapmayı düşünüyorum, gerçek sid'i bir daha o noktada deneyeceğim sadece.

Ama yine de çok güzel. Hiç yoktan iyidir. Bazı parçalarda özel efetkler için özellikle sid -bug- larından faydalanan dijital seslerde başarısız olabiliyormuş, 8580'in sevilmeme nedenlerinden birisi de bu. Bir de ADSR değerlerinin farklı olması. Gerçi ben şu yukarıdakini bu hali ile bir 8580 den ayırt edemedim.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Nisan 18, 2015, 00:01:14 ÖÖ
Malesef swinsid. Swinsid ile tüm geliştirme bittikten sonra ses board'u yapmayı düşünüyorum, gerçek sid'i bir daha o noktada deneyeceğim sadece.

Ama yine de çok güzel. Hiç yoktan iyidir. Bazı parçalarda özel efetkler için özellikle sid -bug- larından faydalanan dijital seslerde başarısız olabiliyormuş, 8580'in sevilmeme nedenlerinden birisi de bu. Bir de ADSR değerlerinin farklı olması. Gerçi ben şu yukarıdakini bu hali ile bir 8580 den ayırt edemedim.

Sid dinleme tecrübem c64c'deki 8580 ve bunun haricinde seneler boyunca emülasyonlar ile olduğu için rafine bir eğilimim yok. Bir ara hardsid üstünde 6581R3 kullanıyordum sanıyorum. Projeyi ilerletip buraya sid'i takacaksın, şu jumper'dan sid versiyonun seçeceksin (swinsid / 6581 / 8580) aşamasına getirirsem herhalde doyasıya dinleyip aradaki farkları tam olarak test etme imkanım olacak.

Bu arada en son kaldığım nokta hakkında da biraz bilgi vereyim.

En son Atmega8515'li Swinsid SE denemeleri yaptım test devresi üstünde, GAL'i de tekrar işin içine soktum. Her ne kadar sid çalmada başarılı olsa da sorunları var. Swinsid'e yahut GAL'e sorunu izole edemedim. Sd kart tarafında da ilerleyebilmek için geçenlerde Arduino için olan sd kart modüllerinden ve atmega88 sipariş ettim. İsmini vermek istemediğim alışveriş sitesi hem müşteri hizmetleri hem de stok takibi açısından tırt çıktı. Atmega88 olmadan mallar elime ancak pazartesi ulaşacak.

Şimdi basit devrede bol bol sid dinliyorum. Irq rutinini yazmak falan içimden gelmiyor ikinci swinsid'i test devresinde devreye sokana kadar. Basit olan devrede DMA yapamadığım için eprom yazmam lazım, uğraşmak istemiyorum.



Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Nisan 19, 2015, 23:06:55 ÖS
Hazır arduino için sd kart shield'ım pazartesi gelecek iken dur dedim şu bizim işi arduino'ya çevireyim. Ttl2Usb olayı olsun, gücünün usb'den olması olsun daha hızlı yol alınabiliyor. En büyük avantajlardan biri de yüksek kapasite tabii. 32k flash ve 2k ram var, sd kart, serial, lcd vesaire kütüphaneleri hazır.

Pcb tasarlamaktansa şu nanelerle de üstüste tüm devreyi halledebilirim. Tabii bunları Türkiyede bulmak yahut aliexpress'ten gelmesini beklemek te var işin içinde.

(http://img.alibaba.com/img/pb/712/155/814/814155712_808.jpg)

Arduino'ya aktarmak oldukça kolay oldu, ilk denemede çalıştı meret. Program basit olunca haliyle böyle. (Videonun sonunda Atmega328'de çalışan kodun tam source'u mevcut)

XROsaQGulUM


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Nisan 26, 2015, 23:45:02 ÖS
Sd kart erişimini de hallettik. Şimdilik, 5-10 tane sid'i doğrudan adı ile okuyup çaldırıyorum.

Pic'ten Atmega işlemciye geçmenin faydasını şu anda görüyorum. Pic'te kalsaydım yeni devrede 384 byte ram ile bırak display sürmeyi, sd kart bile hayaldi. Atmega328 üzerinde 32k flash ve 2k sram var. Şu basit haliyle bile ram'de ancak 600 küsür byte yer kalıyor.

Uzun dosya ismi desteği ile dosya browse etme işi epey zor. Bunu yapmak yerine sidplayer'ın playlistlerini kullanmayı düşünüyorum. Zaten Hvsc de sid browse etmek için oldukça karışık. Herhangi bir sid'i çalmak için seri port üzerinden haberleşmeyi kullanabilirim.

Sdfat kütüphanesinin dosya açmak için ne kadar uzun bir yolu desteklediği de önemli. Çünkü yol playlist'ten okuduğunda ram'den yiyecek. (Hvsc içinde bazı sid'lerde 100 karaktere kadar çıkıyor)

Problemler de yok değil, aşağıdaki videoda da görüldüğü gibi enteresan bir problemim var. 1. sid'i çalıyorum, düzgün, 2.yi çalıyorum o da düzgün. 3.'yü çalıyorum 1. sid tekrar çalınıyor :)  Sebebi 3. sid'in transfer olmaması. Bu arada 2. sid 1.'yi ezmediği için çalınıyor. Reset rutini / SO pin'indeki gürültü yahut irq / nmi handler'lar ve ön plandaki rutin içinde bir race condition var.

2-4k arası bir sid 2sn. gibi bir sürede transfer oluyor, 7-8k olanlar 4sn. sürüyor. Bu tasarımda artık çok daha fazla değişikliğe gitmeyeceğim. Benim için bu süreler yeterli. Zaten ortamı bir CIA çipi yahut emülasyonu ile şenlendirmeden RSID'ler ve digi'ler hayal. 8k üstü sid'lerin çoğunda da digi var.

Aynı tasarım üstünden 6526(CIA) yerine 6522 (VIA, hala temin edilebiliyor bu çip) ile ileride digi denemesi yapacağım. Daha çok zaman var bunun için.

Devrenin sd kart kullanan hali aşağıda. Kayıtta belli olmuyor ama ortalama bir pc ses sisteminde ses çok tatmin edici, özellikle de baslar.

V7z8GimJoj8



Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Nisan 30, 2015, 23:47:28 ÖS
Dün akşam biraz kod yazmıştım, bugün de biraz debug yaptım ve biraz daha kod yazdım. Arduino içindeki SD wrapper yerine doğrudan SDFatLib'i kullanmaya başladım. Hem daha fazla ram boşta kalıyor hem de uzun dosya ismi desteği var. Sid'lerin dosya isimleri uzun olduğu için bu tam bana göre. Ne zamandan beri var bilmiyorum ancak birden fazla dosyanın aynı anda açık olabilmesi de mevcut. Şükür ki her açılan dosya için ayrı bir 512 byte buffer istemiyor bu kütüphane.

Playlist dosyasının tamamını hafızaya atamayacağım için ve her önceki / sonraki şarkı seçiminde baştan okumak verimsiz olacağı için başlangıçta bir indeksleme işlemi yapıyorum. Program playlist dosyasını parse edip her şarkının tanımının başladığı yeri bir indeks dosyasına 5. byte'tan başlamak üzere yazıyor sırasıyla. İlk 4 byte'a da toplam sid sayısını yazıyor. Çalma aşamasına geldiğimde de sid sayısı ve o an çalmakta olan sid indeksi üzerinden yeni indeksi buluyor. Index dosyasını açıp playlist dosyasında doğrudan o sid'in bilgileri olduğu satıra gidiyor.

Eski bug'lar baki ancak şu an önceki / sonraki şeklinde güzelce çalıyor. Sırada display var, peşinden de haşin bug'ların temizlenmesi ana uyumluluk geliştirmelerinin (address decoder, interrupt ile çalma) yapılması var. Sonrasında da ilk ürünün montajı :)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: LW3D üzerinde Nisan 30, 2015, 23:53:46 ÖS
Eline sağlık...Öncekine de yorum yazacaktım. Ama hem bir faydası olmayıp, her seferinde eline sağlık demek kolay olmuyor. Çok güzel proje...


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mayıs 01, 2015, 00:44:40 ÖÖ
Eline sağlık...Öncekine de yorum yazacaktım. Ama hem bir faydası olmayıp, her seferinde eline sağlık demek kolay olmuyor. Çok güzel proje...

Sorun değil, bir süre sonra insan kendi başına motive olmayı da başarabiliyor :) İlle de birilerinin alkış tutmasına çok da gerek yok aslında. Test amaçlı olsa bile yıllarca pc'de dinlediğim sid'leri pc'den bağımsız devre üstünde dinliyor olmak bile başlı başına bir motivasyon kaynağı.

Veya işyerime bunu güzel bir kutuya monte edilmiş şekilde götürüp kullanma düşüncesi.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mayıs 02, 2015, 02:29:50 ÖÖ
Arduino üstünden 6 i/o pin daha kullanarak display işini de hallettim. 2x16 display kullanıyorum, elimde i2c entegreli display olmadığı için mecburen 4-bit modunda bağladım. Hala elimde boşta 6 tane i/o pin'i var. Bunların üçü kontrol amaçlı butonlara gidecek. 3 tane de boşa çıkacak.

Günahıyla sevabıyla artık monte edilebilir hale az çok geldi. Address decoder'daki düzeltme ve gürültü filtreleme işlerini saymazsak artık gerisi yazılım. İlk prototip montaj işini öne alayım diyorum. Display ve arduino üzerinde timer interrupt kullanımı ile beraber gelen gürültüden de belki kurtulurum.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mayıs 03, 2015, 00:12:51 ÖÖ
İstemeden de olsa bump yapıyorum, benzer problem yaşayanlar faydalanırlar.

Timer interrupt çalışırken oluşan gürültü, sd card'ın her zaman initialize olmaması (özellikle de lcd'nin backlight takılıyken), seri bağlantıyı aç / kapa yaparken aldığım hatalar. Ve hatta arada rastgele sid transferinin yapılamaması... işte bütün bunlar hep usb'nin gücünün devreye yetmemesinden kaynaklanıyormuş.

Arduino uno'ya eski bir tp-link switch'in adaptörü ile 9v-0.6a harici güç verdim, her şey oldukça leziz şu an :)

9efYJg13XQw


Konu Başlığı: Ynt: Psid player projesi
Gönderen: wizofwor üzerinde Mayıs 03, 2015, 02:33:20 ÖÖ
Arduino'larda en büyük sorunlardan biri bu güç meselesi galiba. Özellikle çok güç çeken devrelerde kart üzerindeki regülatöre fazla yüklenmeyip harici besleme yapmak öneriliyor.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mayıs 03, 2015, 02:59:06 ÖÖ
Arduino'larda en büyük sorunlardan biri bu güç meselesi galiba. Özellikle çok güç çeken devrelerde kart üzerindeki regülatöre fazla yüklenmeyip harici besleme yapmak öneriliyor.

Aslında harici güç de versen regülatöre mecburen yüklenilmiş olunuyor. Benim kullandığım misal 9v, mecburen üstündeki regülatör bunu 5v'a indiriyor. (VIN yahut power jack'tan beslersen)

Ama doğrudan regüle edilmiş 5 voltu 5v pin'inden vermek de mümkünmüş. Daha düzgün bir supply ve regülatörle dışarıdan beslenebilir bu şekilde.

Uzun süre çalıştırayım bir ara bakayım, çok fazla ısınan bir eleman olacak mı. Bu hali ile iş görüyorsa uno'nun form faktörünü bozmaya gerek yok bence. Dc jack'ı ve Usb jack'i oldukça kullanışlı.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mayıs 23, 2015, 03:50:00 ÖÖ
Uzun zamandır adam akıllı bir şey yapamıyordum. Devrenin modüllerini delikli pertinaks üzerinde inşa etmek ile pcb yapma arasında gidip geldim. En sonunda delikli pertinaks / çift taraflı proto board'larda karar kıldım. Tüm malzemeleri toparladım. (board'lar arası idc kablo kullanmayı düşünüyorum becerebilirsem)

Sonra araya elimdeki arcade kabini mame sisteme çevirme projesi girdi. Onda da jamma fingerboard kısmında takıldım, onunda siparişini verdim derken bu sefer de çinden 3 ay önce sipariş ettiğim dispute açıp para iadesini aldığım 320x240 spi tft ekranım geldi. (amcamlara geri ödedim haliyle parayı, çok sevindirik oldular)

Önümüzdeki bir hafta tatildeyim. arduino uno'yu devreden söktüm. gelen bu tft ekran ile bağladım, örnek kodlar çalıştı. 2x16 display yerine bunu kullanmak oldukça cool olacak :) Tatildeyken bu basit kurulum ile commodore açılış ekranını gösterme, sid'ler arasında geçiş yapılırken sanki sid disket sürücüden yükleniyormuş gibi gösterme gibi şeyler ile biraz uğraşayım diyorum.

ps: aldığım display şu : http://www.aliexpress.com/item/Wholesale-1PC-2-2-Inch-240-320-Dots-SPI-TFT-LCD-Serial-Port-Module-Display-ILI9341/1776409033.html (http://www.aliexpress.com/item/Wholesale-1PC-2-2-Inch-240-320-Dots-SPI-TFT-LCD-Serial-Port-Module-Display-ILI9341/1776409033.html)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Simon (Özay Turay) üzerinde Mayıs 23, 2015, 08:45:18 ÖÖ
Aynı ekrandan bende de var. Şu gameboy kasasına taktığım var ya işte o.

ESP8266 Sming Framework için sürücüsünü yazan bir Türk arkadaş için yaptığım test esnasında fotoğrafını çekmiştim:
(https://dl.dropboxusercontent.com/u/18575245/%23CGTr/alonewolf_3.jpg)

Oldukça güzel bir ekran. Linux'ta sürücüleri OpenGL desteklemediği için GameBoyPi projesini rafa kaldırdım ama Arduino, PIC ve ESP8266 gibi platformlar için biçilmiş kaftan. PSid Player projeve renk getirecek. :)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mayıs 23, 2015, 16:57:37 ÖS
Opengl ve bu displayi hayal edemedim. Spi ile 50/60 fps yakalanamaz ki bu display ile. Yoksa yapilabilir mi?

Arduino ile ekran doldurulurken dolusunu gorebiliyorsun :)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Simon (Özay Turay) üzerinde Mayıs 23, 2015, 19:57:22 ÖS
ESP8266 ile daha hızlı çalışıyor 80MHz hızında olduğu için işlemci.

k7AoWxAitVA


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mayıs 24, 2015, 01:15:10 ÖÖ
Arduino ceyrek hizda 4mhz kullaniyor default spi icin. Performans asagi yukari bu videodaki seviyede. 4mhz saniyede 4megabite denk gelir herhalde. 320x240x3 byte x 8 bit =1.843.200. Yani tam performans pixelleri koyabilirse yarim saniyede ekran doldurabilir. Adresleme nasil bilmiyorum. Adreslenerek dolduruyorsa hiz cok daha duser.

Spi ile saniyede 10 megabyte transfer edilebiliyormus. Bunun icin 80mhz spi clock lazim herhalde. 80mhz cihaz ile de zor.

40-50 frame goruntu alabilmek icin i2c ve spi dan daha hizli bir display interface lazim.

Ps: raspberry pi icin olan ekranlar yuksek spi clock kullanabiliyormus. Renk bilgisi 24 bit degil 16 bitmis bu arada. Su sayfada degisik urunler var : http://www.hwlevel.com/hwlevel/RPiDisplays/RPiDisplays.html (http://www.hwlevel.com/hwlevel/RPiDisplays/RPiDisplays.html)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: usagi üzerinde Mayıs 24, 2015, 14:39:28 ÖS
Bu 320x240 renkli TFT LCD floppy emulatorlerde görüntüleme birimi olarak kullanılsa nasıl olur.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mayıs 24, 2015, 14:56:24 ÖS
Firmware'i modifiye edilirse kullanilabilir. Guzel olur muhtemelen. Ancak amiga disketlerinde standart bicim ve lokasyonlarda gorsel olmayacagi icin (bildigim kadariyla) ne gosterilecegi biraz soru isareti.

Ilaveten amiga icin floppy emulatoru open source degil gordugum kadariyla, olsa da bu degisikligi yapmak icin bir arm gelistiricisine ihtiyac var.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mayıs 28, 2015, 02:00:41 ÖÖ
Bu arada ILI9341'in datasheet'i incelendiğinde paralel sürmeye de imkan veren bir çipmiş bu. Çip herhalde ekranın arkasında ve bize çipten sadece seri olarak kullanılabilmesi için gerekli pin'leri çıkarmışlar.

Adresleme pencere belirleme şeklindeymiş. Önce çizim yapılacak pencereyi belirliyorsunuz, sonra da basıyorsunuz renkleri. Her pixel 2 byte (RGB565 kullanılıyor)

Tatildeyken biraz uğraşayım demiştim.

Şunları yaptım,

1. C64 character rom'unun içeriğinden arduino için adafruit tarafından yazılmış ILI9341 sürücüsü ve genel grafik kütüphanesine uygun font ürettim. (ILI9341 sürücüsü içindeki drawChar metodunu değiştirmem gerekti. Metod 5x7 boyutunda font kullanıyordu. Bunu 8x8 yaptım.) İlaveten genel grafik kütüphanesindeki println metodunu da yine bu fontu destekler hale getirdim. (6 vardı bir tane onu 8 yaptım :) )

2. C64'ün rgb paletini bulmaya çalıştım. Çalıştım diyorum çünkü bulamadım. Wikipedia üzerinde YPbPr renk sisteminde vardı. Dur dedim sürüsü ile renk çevirici program vardır. YPbPr'ye gelince bir bok yokmuş afedersin. Şu aşağıdaki sitede nasıl çevrileceği yazılmış.
http://www.equasys.de/colorconversion.html (http://www.equasys.de/colorconversion.html)

Dur dedim iki saniye html+javascript ortaya bir şeyler çıkartırız. Benim matematik zayıflamış. Dünyayı yeniden keşfetmeyelim dedim ve matris çarpma kodunu arakladım stackoverflow'dan. Neyse çeviriciyi yazdım, siyahla beyazı güzel çeviriyor da diğer renkler fail. Ya matris yanlış, ya da program.

Dur dedim rgb kodlarını biraz daha araştırayım belki bulurum. Buldum hakaten de. Bildiğimiz html içinde de kullanılan RGB888. Bunları RGB565'e çevirmek lazım. Çevirecek ufak bir program yapıp renk değerlerini sabit olarak ILI9341 sürücüsünün içine koydum. (Merak edenler için : Çevirirken R>>3, G>>2, B>>3 yapılıp yani sırasıyla 8'e, 4'e ve 8'e bölünüp sonra tekrar iki byte içinde toplanıyor... (R>>3)<<11 | (G>>2)<<5 | (B>>3)

3. Sıra geldi ekranı çizmek için arduino altında grafik kütüphanesi ile çizim yapıp yazı yazmaya. Biraz uğraştırsa da en kolay kısmı burası oldu. Font datasını döndürmem gerekti çünkü adafruit fontu koyarken karakter başına 7 byte yerine 5 byte kullanmak için fontun 90 derece döndürülmüş halinden datayı çıkarmış. Ha ufak bir sorun da CHAR.ROM içinde karakterlerin ASCII tablosuna uygun olmayışı. Şimdilik 64 ve yukarısı karakterlerden 64 çıkartıp font datasına bak deyip kurtuldum.

Netice itibariyle görüntü şu :

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


Esas devreye gömüldüğünde orijinal c64 fontu ve renkleri ile bir gui hazırlayabilirim artık.

ps: Baya bir dur demişim bu arada :)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: wizofwor üzerinde Mayıs 28, 2015, 08:09:05 ÖÖ
Şurada  (http://spritesmods.com/?art=rpi_arcade&page=2)ILI9325 ekranın raspi ile paralel olarak sürüldüğü bir örnek var. Belki bir fikir verebilir.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Simon (Özay Turay) üzerinde Mayıs 28, 2015, 10:07:41 ÖÖ
Güzel bir tatil olmuş. Darısı başımıza. :)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mayıs 28, 2015, 10:45:00 ÖÖ
Şurada  (http://spritesmods.com/?art=rpi_arcade&page=2)ILI9325 ekranın raspi ile paralel olarak sürüldüğü bir örnek var. Belki bir fikir verebilir.


Eleman direkt kernel sürücüsünü modifiye etmiş sanırım. Ileride raspi'de kullanmak üzere not ettim. Arduino uno'da belirgin bir hiz artışı sağlamaz tahminimce bu interface. Çünkü hardware spi kullanıldığında da shift register'ı hardware doldurduğu için pratikte bizim yazdığımız kod 8 bit interface kullanıyormuş gibi oluyor. Hani 7-8 misli değil de 2-3 misli bir hız artışı olur gibi. 

Güzel bir tatil olmuş. Darısı başımıza. :)

Tapuino pcb'sini test edene kadar sana tatil yok :p


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Simon (Özay Turay) üzerinde Mayıs 28, 2015, 10:52:19 ÖÖ
Benim için de tatil demek tıpkı senin gibi projelere daha fazla vakit ayırabilmek demek. ;)

TapuinoMini'lerin bir tanesini akşam popüle edip denerim diyordum ama önce oğlan sonra da üstüme çöken ağırlık bu düşüncemi teoriden pratiğe geçirmeme engel oldu. Havadan mıdır nedir bilmiyorum oğlanı uyuttuktan sonra gecenin ikisine üçüne kadar takıln ben gitti yerime tavuklarla bir uyuyan bir ben geldi. :D


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Mayıs 28, 2015, 11:17:31 ÖÖ
@Simon: Uyku benim için çok sorun olmuyor (vücudumun yere 60-120 derece arası eğimde olması lazım) . Esas sorun yeterince motive olmadıysam işe hiç başlayamamak oluyor.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Haziran 05, 2015, 22:18:41 ÖS
Tatilde ektiklerimi biçeyim dedim. 16x2 lcd display'i çıkarıp tft'yi devreye bağladım. Ekranda sid ile ilgili bir kaç bilgi gösterecek kod yazdım.

Ortaya çıkan sonuç

MBIUJIpaeXw

ps: Ha unutmadan. TFT lcd üzerinde sd kart interface'ine sahip. Harici sd modülünü de devreden çıkarıp TFT üstündekini kullandım. Böyle çok daha kompakt oldu.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: wizofwor üzerinde Haziran 05, 2015, 22:35:27 ÖS
Adım adım sona yaklaşıyorsun. Ben bu TFT'lerin arkasındaki SD modülünü sadece ekranda gösterilecek görseller için olduğunu sanıyordum. Arduino'nun buna erişebiliyor olması çok iyi.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Simon (Özay Turay) üzerinde Haziran 05, 2015, 22:39:18 ÖS
SD için pinler ekran pinlerinin zıt istikametinde bulunuyor. İkisi de SPI olduğu için çoğu ortak zaten. Bir tek CS sinyalini farklı pinlere bağlamak yetiyor yanlış hatırlamıyorsam.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: volkytolky üzerinde Haziran 05, 2015, 22:44:50 ÖS
i_r_on Hocam ellerine sağlık.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Haziran 05, 2015, 23:23:17 ÖS
@wizofwor : Evet ekstra bir pcb ihtiyacı ortadan kalkıyor. Ayrıca 3.3V ve GND de ekran ile ortak. Gerçi diğer hatları da ortak bağlayabilecek iken bağlamamışlar.

@Simon : Aynen, SPI'da CS hariç pin'ler hep ortak. Ben şimdilik header falan lehimlemedim. Senin icsp programlamada kullandığın kablo bükme taktiğini kullandım :)


Devre şu an 23 io pin'inden sadece 11'ini kullanıyor. 5v-3.3v logic conversion için kullandığım 74xx125 entegresini daha yaygın kullanılan CD4050 ile değiştireceğim. Hatta bu entegreyi içeren giriş çıkışları header'lı ufak bir pcb yapmak lazım. Breadboard üzerinde gereksiz kalabalık yapıyorlar. Bu ekranları 5v'a uygun satsalardı keşke.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: LW3D üzerinde Haziran 05, 2015, 23:50:21 ÖS
Eline sağlık... Ekran, bilgileri sunumuyla çok üzel olmuş...


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Temmuz 06, 2015, 01:13:36 ÖÖ
Ben Heck'in bus lehimleme işini gördükten sonra dur belki yaparım diye işe koyuldum. 8x12 cm'lik protoboard'a 6502, 2xSram ve Eprom için 4 adet soketi monte ettim. İş kablolama %30 seviyesine geldiğinde cortladı :) Kablolar kalın tek tel olduğu ilerlemek pek mümkün olmadı.

Sonra biraz ara verdim, geçen gün tekrar biraz üzerine düşündüm. Eldeki malzemeler düşünüldüğünde pcb yapmadan iş zor gözüktü. Tek parça tek yüz pcb yapsam hem boyuttan hem de routing'in karışıklığından hem de bir sürü delme işi çıkacağı için sıkıntı olacağını düşündüm. Eagle'da tasarlayıp yurtdışına üretime göndersem bir sürü bekleyeceğim. Hiç test edilmediği için sonunda sıkıntılı bir durum çıkma ihtimali de var.

Sonra aklıma Arduino'da kullanılan mantık geldi. 4 çipi birbirine kablolarla lehimlemek yerine bir adaptör yapsam nasıl olur diye düşündüm. Benim devrenin cpu board'unda (Devrede en yoğun kablolamanın olduğu şu an tek breadboard'daki) sinyallerin hepsi 6502 üstünde var. Bu 40 pin'lik bir çip. Diğer SRAM/EPROM çiplerini 40 pin'e adapte edersem bunları üstüste monte edebilirim diye düşündüm.

Eldeki header'lara vesaireye baktım. Eldeki malzemelerle mümkün değil. Bu iş için stacking female header denen header'lardan lazım. Pahalıymış da meretler. Bizde uzun bacaklı header diye geçiyor ve 40 pin'lik olanı 3 tl. Para kısmını geçeyim onu seve seve verdik :)

Neyse efendim biraz oryantasyon biraz manipülasyon 3 katı çıktık :) Özay'a da buradan header lehimleme kısmında verdiği tüyolardan dolayı teşekkürler, kendi bildiğim gibi takılsaydım muhtemelen birbirine geçmeyen board'lar elde edecektim :)

En alt kat cpu, onun üstüne iki kat sram yahut eprom gelecek.

Sırada Swinsid'e de bir kat çıkmak var. Address decoder'ı üstünde çalışmam gerektiği için şimdilik breadboard'dan kullanacağım. Finalize olduğunda ona da bir kat çıkacağım.

İlk prototip bayağı apartman gibi bir şey olacak :)

Ha unutmadan, başta beni yakan kablo aşağıdaki board'larda gözüken beyaz kablo. Diğer bacaklar için saçaklı daha ince bir kablo kullandım.

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


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

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


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Simon (Özay Turay) üzerinde Temmuz 06, 2015, 03:33:06 ÖÖ
Yalnız belediye 3 kattan fazlaya izin vermiyor haberin olsun. :)

Şaka bir yana heyecanla takip ediyorum. ;)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Temmuz 07, 2015, 00:15:38 ÖÖ
Harç bitti son katı çıkamadım :)

Keriz gibi iki tane 40'lı header'ı iade edip yerlerine 4 tane 10'lu almıştım.
Swinsid katını şimdilik header'sız ve ince kablolama olmadan yaptım. Elimde 2 tane 19'lu header kaldı :)

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

Şöyle bir sorunsalım var şimdi. Kabloların yalıtkanları ince olduğu için lehimlendikleri yere yakın yerlerden soyulmalar oldu. Teferruatlı bir kısa devre testi yapmam lazım. Sadece birbirine yakın olan noktaları test etmek yetmeyecek.

40 pin'i hızlıca test edecek bir sistem var mıdır acaba arduino ile falan yapılabilen?

Çünkü elle yapmaya kalksam 39 + 38 + 37 + .... + 2 + 1 = n*(n+1)/2 = 780 tane test yapmam lazım.

Tabii 40 pin test edileceği için ya i/o bacağı yeterli bir çip kullanmak lazım ya da parallel input to serial output entegreleri kullanmak.

Bu projeyi yapana kadar 780 denemeyi yaparım gerçi :) Ancak elimizde kullanabileceğimiz güzel bir araç olur. Dur ben bunu projelerin arasına ekleyeyim belki yapan biri çıkar.

ps1: Bu arada bu board'lar için kısa devre testini yapmak için kolay bir yol buldum. Hatta testi yaptım bile. Board'lar üstüste iken en üstteki dişi header'lara boydan boya erkek header taktım. Multimetrenin bir probe'unu sıradan pinlerden birine, diğerini de diğer pin'lere sırasıyla çok da yavaş olmayacak şekilde sürterek ilerlettim. Temas halinde multimetre bir saniye sonra falan ötüyor ancak ekranda muhtemelen direnç öncesinde gösterilmeye başlanıyor. Gözle onu takip ettim. Board'lardan birinde kısa devre varmış bu arada.

ps2: Sorun cpu board'unda imiş, düzelttim. Bu kadar kolay olacağını tahmin etmiyordum :)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Temmuz 16, 2015, 02:51:30 ÖÖ
Kaçak katı da çıktım sonunda. Şimdilik test etmeye vaktim kalmadı. Bayramda inşallah. Bu arada soldaki header'ları memory / swinsid(sid) / eprom katlarına chip select sinyallerini göndermek için ekledim.

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

Üstteki 4 adet board aşağıdaki iki breadboard'a denk geliyor. Resimde görünen kısmı tüm devreden kontrol sinyallerini etiket ile işaretleyerek ayırdım. Apartman çözüm çalıştığında (çalışacak!) görevini tamamlamış olacak. (Atmega'nın osilatör breadboardlarda gözükmüyor çünkü orjinal devrede address decoder'ı içeren breadboard üstündeydi.)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: EMREZ üzerinde Temmuz 16, 2015, 09:18:51 ÖÖ
Bugün web sitesi çok yavaş açılıyor bir sorun var sanırım. Tebrikler güzel bir proje olmuş.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Metallic üzerinde Temmuz 16, 2015, 15:27:46 ÖS
i_r_on, geceleri sıkı çalışıyorsun gerçekten. Bu arada yandaş mütahitler gibi göstere göstere kaçak kat çıkıyorsun projeye =) Breadboard'lar fıtık ediyor sanırım, ben de o kadar değişik çeşit breadboard aldım ama hala iyi bir tane bulamadım, deli ediyorlar insanı. Elimiz mecbur sinir ola ola kullanmaya devam ediyoruz, ne yapalım.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Temmuz 16, 2015, 21:58:43 ÖS
@Metallic : Bu 4-5 gecenin falan ürünü. Her zaman uğraşamıyorum malesef. Aslında breadboardlardan yana çok derdim yok. Ama bir yerden sonra gerçek devreye gitmesi lazım işin. Breadboard'u sid dinlemek için işyerime götüremem mesela :)



Konu Başlığı: Ynt: Psid player projesi
Gönderen: EMREZ üzerinde Temmuz 17, 2015, 09:23:43 ÖÖ
http://dangerousprototypes.com/forum/viewtopic.php?f=56&t=2197 (http://dangerousprototypes.com/forum/viewtopic.php?f=56&t=2197) bu linkte pic32 ile hard sid çalışması var. bunu Lucio Di Jasio vga, elm-chan fat32 ile birleştirip, microchip dma fast sd protokollerini kullanıp güzel bir proje çıkarabiliriz. hem basit ve derli toplu olur, daha ucuz olur ama hem 9 hem 5 volt ayrı ayrı gereksinimi mi var sid çipinin. 9 voltu 7805 ile 5 volta çevirsem çok ısıl sorunu olur mu bilmiyorum, 12 volttan 5 volta indirmede aşırı ısındığını görmüştüm. Bu çekilen akımla da orantılı olabilir ama emin değilim.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Temmuz 17, 2015, 10:07:37 ÖÖ
Markus Gritch hali hazirda yapti projesini. Cia'i falan da emule ettigi icin digi de destekliyor. Fat/display desteği falan var.

Şu aşamada ben oldschool gitmeye meyilliyim. Diğer türlüsü tamamen software projesine dönüşüyor.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: EMREZ üzerinde Temmuz 17, 2015, 10:52:55 ÖÖ
benim dediğim tv yada vga ya mavi ekran c64 tarzı pc klavyesi bağlı bir şey. sadece sid için değil mod s3m vs de çalacak bir alet. güzel olmaz mıydı ? bu aleti incelemedim ama resimde görünen bataryalar ve LCD ile maliyeti çok yüksek olur.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Temmuz 17, 2015, 11:10:50 ÖÖ
Oled 128x64 ekranlar 10-15 tl aliexpresste. Bataryayı bilmiyorum. Vga çıkışı opsiyonel olarak kullanılabilir ancak yaygın kullanımda ben kendine ait ekranı olmasını hatta daha da iyisi networke bağlı bir şekilde kumanda edilmesini tercih ederim.

Dediğin de yapilabilir ancak mod/s3m/xm formatındaki müzikler hali hazırda asılları gihi çalınabiliyor.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: EMREZ üzerinde Temmuz 17, 2015, 11:18:51 ÖÖ
bende mk4 pci var, line çıkışını ses kartının girişine takıyorum, line in sessiz yapmazsam az da olsa bir gürültü geliyor, sid ile mi ilgili m4k kaynaklımı bilmiyorum. devreyi kulaklık ile denediğinde az da olsa bir gürültü geliyor mu ?


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Temmuz 17, 2015, 12:16:51 ÖS
Gürültü odaklı yaklaşamadım henüz devreye. Breadboard uzerinde zor. Hoparlorden dahi gurultu var su anki devrede.

Mk3 icin sayfasinda 12v supply hattina pc donaniminin gurultu bindirdigi yazilmis. Mk4 dc-dc converter kullaniyor o yuzden ayni gurultu bunda yok demisler.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: EMREZ üzerinde Temmuz 17, 2015, 12:29:45 ÖS
Çok değil ama MK4'te de bir gürültü var. hiç bir sid yürütmeden bile ses kartına taktığımda duyabiliyorum. Birde doğru düzgün yeni yazılım çıkarmıyorlar, eski programları iş görüyor ama yeni yazılım ile daha kullanışlı iş çıkarılabilir.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Temmuz 22, 2015, 02:48:05 ÖÖ
Oku oku nereye kadar Garth Wilson amcamızla tanışma zamanı geldi diye düşündüm ve 6502.org'a kayıt oldum.

http://forum.6502.org/viewtopic.php?f=4&t=3378 (http://forum.6502.org/viewtopic.php?f=4&t=3378)

Prototip board'larımı apartman modeli dizip çalışmadığını görünce lan bunları test edebilmek lazım düşüncesi ile arayışa girdim. Önce şu aralar çok sevdiğim 74165 parallel input serial output shift register'ı 6502'ye memory mapped IO device olarak gösterebilir miyim diye biraz uğraştım. Artık yazılımı mı buglı yazdım, epromu mu düzgün yazamadım yoksa devreyi kurarken dikkatsiz mi davrandım bilmiyorum (bu üçünden biri olduğuna %99 eminim) beklediğim sonucu alamadım.

Yapmak istediğim şu : Benim devre hali hazırda 6502'nin ne databus'ına ne de address bus'ına bağlanmaksızın memory'e data transfer etme yeteneğine sahipti. Ancak tersini yani kontrol eden arduino'ya ( ya da başka mcu, çok önemi yok) geri bilgi gönderebilme yeteneğine sahip değildi. PIC ile ilk kurguladığım devre adres bus'a ve data bus'a neredeyse tam bağlıydı (adresleri sırasıyla sürebiliyordu, şimdiki aklım ve bilgim olsa shift register kullanırdım orası ayrı) ancak prototip board'ları test etmek için o devreyi kullanamazdım. İlaveten devreyi de aynı suda iki kez yıkanılmaz deyip geçenlerde söktüm. (Şaka öyle bir şey demedim :) PIC'ten Arduino'ya geçirmediğim için arduino için tekrar çalışır hale getirmeye üşendim ve ortalıkta kalabalık olarak dolaşmasını da istemedim.)

Neyse ne diyorduk, eldeki devre mevcut tasarımla arduino'ya geri veri gönderemiyordu. 74165'i denedik olmadı, dur dedim elimde 74373 latch var, paralel input olarak alayım arduino'dan, o da yemedi. (Mantığı 6502.org'daki yazımda görebilirsiniz)

Türkün aklım ya otobüste giderken ya da belli faaliyetlerle iştigal ederken gelirmiş. Dedim 6502'ye data gönderirken kullandığım mantığın aynısını arduino tarafı için niye yapmıyorum. Senkronizasyon derdi de yok hem, arduino'ya göndereceğim data da debug datası. Hız falan önemli değil. Rom tamam, ram tamam, devre kalkış için hazır falan filan. 1 adet 74138 3 to 8 decoder ve arduino'ya 4 adet bağlantı... RESET, READY ve 74138'den iki adet rom kodunda belirlediğim adres decode sinyali ile bu iş halloldu.

Merak edenler 6502.org'da biraz daha detaylı yazıma bakabilir. Üç kağıt şöyle, 6502 tarafında gönderilecek byte sol baştan bitlerine ayrılıyor. Bit 0 ise 6502 $8000 adresinden okuma yapıyor, 1 ise $A000 adresinden okuma yapıyor... $8000-$9FFF aralığına erişim olduğunda arduino'nun 0. interrupt pin'ine bir pulse gidiyor, $A000-$BFFF aralığına erişim olduğunda ise 1. interrupt pin'ine bir pulse gidiyor. Böylece veri gönderiliyor... Tabii her bit gönderimi arasında bol bol NOP var... Arduino bu kadar hızlı üretilen interrupt ile kolay kolay başa çıkamıyor çünkü.


Şunu diyen çıkabilir (çıkmayabilir de :) ), lan niye belli faaliyetlerle iştigal ederken bulduğun yöntemlerle uğraşıyorsun, standart iletişim protokollerini kullansana...

Cevap,

1. Tembellik
2. Basitlik
3. Seviyorum çünkü
4. Standart iletişim yöntemlerini uygulamam daha fazla vaktimi alır. Seri/Paralel komünikasyon yapılacak bir VIA 6522 yahut bu iş için özel tasarlanmış bir IC kullanıp datasheet'ini hatmedeceksin, uygulayacaksın, sonra da debug edeceksin. Zaten biz bu işi debug için yapıyorduk?

Osiloskopum zaten yok da, tüm bu testleri logic analyzer'ım ile de yapabilirdim ancak ona da üşendim sanırım. Ve bir de tekrar tekrar kolayca kullanabileceğim bir test yöntemim olsun istedim. (Logic analyzer meme yaptı aslında, bütün bunların sorumlusu o :) )

Fazla kafa şişirdim, hepinize iyi geceler :)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Metallic üzerinde Temmuz 22, 2015, 19:50:20 ÖS
i_r_on,   Garth'ın belirttiği gibi devrenin bir şemasını hazırla bence. Şemaya bakarak çok daha rahat yorum yapılabilir. Sorunun çözümü için daha çok kişi cevap verir diye düşünüyorum.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Temmuz 22, 2015, 22:41:38 ÖS
i_r_on,   Garth'ın belirttiği gibi devrenin bir şemasını hazırla bence. Şemaya bakarak çok daha rahat yorum yapılabilir. Sorunun çözümü için daha çok kişi cevap verir diye düşünüyorum.


Aslında doğru diyorsun, yaptığın işi görsellerle desteklemek her zaman işe yarıyor. Şema çizimi konusunda çok iyi değilim bir de üşendim çizmek için. Şu an işimi gördüğüm için de yine çok hevesli değilim :)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Metallic üzerinde Temmuz 22, 2015, 23:41:16 ÖS
Sen projeyi bitirdikten sonra pcb bastırmak için devrenin şemasını çizmeye başlayacaksın eninde sonunda ama bitirene kadar biraz daha bekle bakalım =)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Temmuz 23, 2015, 02:22:57 ÖÖ
Aslında yap boz tarzında çizdim bir şeyler ama o zamanlar ilk önceliğim pcb'yi tek yüzlü olarak kendim basmaktı. Eagle'da tek yüzlü pcb olayını pek beceremedim. Şu anki düşüncem dirtypcb gibi bir yere göndermek. Tabii öncelikle kendime kutuladığım bir prototip yapmam lazım.

Bu arada 6502 tarafında ram katını da çıkabilmek için test kodu yazdım. Stack'i, Sıfırıncı sayfayı ve Belleği test eden üç testten ibaret. Fail edenler için arduino'ya $CC, başarılı testler için $77 gönderiyor test kodu.
Katı çıktım, eprom'a kodu yazdırdım ve test ettim. Temiz iş oldu, ilk denemede testten başarılı çıktı devre :)

Sırada Swinsid katı var.. Swinsid katını da çıkarabilirsem sırada planladığım yazılımsal değişiklikler var. Irq ile sid çaldırma ilk sırada geliyor. Sonrasında bol bol test ve bu da bittiğinde bu board paket olacak :)

Sonrasında apartman modelinin tek tek pcb tasarımlarını yapıp dirtypcbs'e göndereceğim. Belki bu noktada cpu+sram+eprom'u 10x10 cm üstünde tek başına da tasarlayabilirim. Apartman modeli de devrenin nispeten boş bir kısmında bir nevi expansion bus olarak kalır. Isınma problemi olabilir zira.

Swinsid'in dışında gerçek sid için de bir modül yapıp tekrar tehlikeli sularda yüzmem de gerekiyor. Bu sefer kurban bir adet 6581 olacak.  Devreye gücü nasıl sağlayayım bu noktada yorumlarınızı esirgemezseniz sevinirim.

Bir güç hattı yapıp burada 5V standart, 9v ve 12v'u da opsiyonel olarak diğer katlara iletmem lazım. Dışarıdan 12v alınıp 6581 kullanılıyorsa bunu doğrudan 6581'e vermek.. Diğerlerini de 5v'a kadar regüle etmek nasıl olur? 5v regülatör aşırı ısınır gibi bu durumda sanki. Ya da dışarıdan sallıyorum 9v alıp bunu normal regülatör ile 5v'a çevirmek, 12v için dc to dc boost converter gibi bir şey kullanmak daha mı akıllıca olur? Tabii 12v'un ilgili sid modülü üzerinden seçilmesi durumunda devrede olması lazım.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: yavuzg üzerinde Temmuz 23, 2015, 02:56:46 ÖÖ
...

Devreye gücü nasıl sağlayayım bu noktada yorumlarınızı esirgemezseniz sevinirim.

...


@i_r_on, öncelikle bu muhteşem emek sarfettiğin proje için tebriklerimi sunuyorum. konuya sadece küçüklüğümdeki C64 tecrübeme binaen aşina olmakla birlikte, bu derece C64 donanım ve yazılımı bilgim olmadığından pek yorum yapamadım ancak tebriklerimi sunuyorum...

Power konusunda basit bir tecrübemi paylaşayım belki bir fikir verir. Ben genelde 7805, 7809 vs türü lineer regületörler kullanmak yerine daha modern switching reguletörleri kullanmayı tercih ediyorum. Sebebi;

1) Isınmıyorlar (en azından lineerler kadar değil)
2) Step-up, step-down lineer'ler ile mümkün değil.

Bu yüzden 12V veya 9V alıp onu indirmek (ve ısı üretmek) yerine 5V alıp onu çıkartmayı tercih ediyorum. Bu sayede "temelde" devreye değil güç kaynağına yüklenip ısıdan kurtuluyorsun ;)

Benim kullandığım switching regületör LM2577-ADJ (Simple switcher)

Hem ucuz hem de 5V'u alıp 12V'a kadar ciddi bir ısınma sorunu olmadan step-up yükseltmek kolay. Evet lineer'lerden daha fazla eleman kullanman gerekiyor, özellikle bobin. Ama bobini de SMD veya minik bir DIP olarak hazır alıyorsun, yani sarmaya vs gerek yok.

5V hem kullanıp hem de gerektiğinde step-up yaparak devreleri olası USB'den besleme senaryoları da mümkün oluyor.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Temmuz 23, 2015, 09:49:56 ÖÖ
@yavuzg : Sağolasın :)

Özay dc to dc boost converter ve bu bahsettiğin lm2577 olduğunu tahmin ettiğim entegreden bana göndermişti. (öyle hatırlıyorum)

5v->9v, 12v olayını bu malzemelerle zarar görmeyecek bir denek üstünde deneyeyim.

Peki güç yönetimi merkezi mi olmalı? Yoksa değişik voltajlara ihtiyacı olan değişik modüller üstünde kendilerine has mı olmalı.

5v genel ancak, 9v ve 12v'a ihtiyaç duyacak bağımsız elemanlar olacak.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Simon (Özay Turay) üzerinde Temmuz 23, 2015, 11:45:19 ÖÖ
Gönderdiğim boost'lar ayarlı değil maalesef 5V altını sabit 5V'a çıkarıyor. Ayarlı olanlar buck (step down) olduğundan devreyi 12V ile besleyip 9V ve 5V'a indirmek için kullanabilirsin ancak.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: EMREZ üzerinde Temmuz 23, 2015, 12:00:46 ÖS
sid çipleri biri 12v bir modeli 9v ye ihtiyaç duyuyordu yanlış hatırlamıyorsam. 9v besleme ile 5v ye düşürüp tek adaptörle devreyi tamamlayabilirsin.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Temmuz 23, 2015, 12:05:47 ÖS
@Simon : Olsun, onları da başka projede kullanırız :) Aliexpress'te başka ürünler gördüm onlardan sipariş vereyim.

Şu işimi görür sanırım.

http://www.aliexpress.com/item/DC-DC-Auto-Boost-Buck-Step-Down-Converter-Module-Solar-Voltage-LM2577-A858/32271553425.html (http://www.aliexpress.com/item/DC-DC-Auto-Boost-Buck-Step-Down-Converter-Module-Solar-Voltage-LM2577-A858/32271553425.html)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: EMREZ üzerinde Temmuz 23, 2015, 12:38:13 ÖS
LM7805 ve LM7809 ile bu işlemi yapabilirsin, daha ucuza olur.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Temmuz 23, 2015, 14:23:53 ÖS
LM7805 ve LM7809 ile bu işlemi yapabilirsin, daha ucuza olur.

Emre selam, ilk akla gelen o zaten ancak 7805 ile sallıyorum 12v'u 5v'a indirmek gereksiz yere enerji tüketimi ve ortama fazladan bir ısı açığa çıkması anlamına geleceği için sıkıntılı.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: EMREZ üzerinde Temmuz 23, 2015, 14:44:37 ÖS
Haklısın, lm317 ile 12v -> 5v çevirici yapmıştım bir ara, ateş gibi ısınıyordu.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Metallic üzerinde Temmuz 23, 2015, 19:40:31 ÖS
5v->9v, 12v olayını bu malzemelerle zarar görmeyecek bir denek üstünde deneyeyim.
>i_r_on   Cihazı usb'den çalıştırmayı düşünüyorsan 9v ve 12v elde etmek için step-up/boost regülatörleri kullanırsın, ama cihazı bir adaptör ile çalıştıracaksan önce 5v'u nasıl elde ederim diye de düşünmek gerekiyor. Adaptör ile çalışacak diyorsan 9v adaptörlerin fiyatı uygun.

9v -> 5v çevriminde sabit gerilim regülatörü olarak klasik 7805'nin yanında AMS1117-5V (http://www.ebay.com/itm/6-0V-12V-to-5V-AMS1117-5V-Power-Supply-Module-Voltage-Regulator-AMS1117-/161514343656?pt=LH_DefaultDomain_15&hash=item259b014ce8)'yi denemek iyi olur. Bunlar ısınma yapıyorsa 48k Spectrum'larda hararet yapan 7805'lerin yerine kullanılan LM2576-5 veya LM2576-ADJ step-down regülatörleri denersin.
https://dl.dropboxusercontent.com/s/zotrtc5kz3awr49/stepdownreg_LM2576-5.jpg (https://dl.dropboxusercontent.com/s/zotrtc5kz3awr49/stepdownreg_LM2576-5.jpg)

5v -> 9v/12v çevrimi için LM2577-12 ve LM2577-ADJ step-up reg.leri kullanılabilir. LM2577-12'yi 48k Spectrum'daki LM1889 video modulator'ı beslemek için denemiştim ama görüntü daha kötü hale geldiği için kullanmadım. Ölçtüğünde 12v veriyor ama sonuçta switching regulator olduğu için çıkış gerilimindeki ripples/noise, video entegresine iyi gelmiyor. Aynı şey SID chip'i için de geçerli olabilir. Hybrid SID (http://dangerousprototypes.com/forum/viewtopic.php?f=56&t=2197)'in şemasını incele istersen, ikinci bir 7805'den 5v çıkış alarak ST662 ile 12v'a yükseltip 7809 ile 9v'a düşürerek 8580 SID'e vermiş. Switching regülatörün çıkışındaki gürültüden kurtulmak için yapıyor sanırım bunu. Smps'lerin çıkışını düzeltmekle ilgili şu (http://electronics.stackexchange.com/questions/18111/can-the-noise-of-any-switching-psu-be-attenuated-if-i-put-linear-regulator-befor) soruda da bundan bahsedilmiş. Gerçi SIDblaster (http://wiki.forskningsavd.se/SIDblaster)'daki arkadaş bu tür detaylarla uğraşmayıp usb'den gelen 5v'u RNM-0512S ile 12v'a çıkartıp 6581 SID'e vermiş geçmiş =)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Temmuz 23, 2015, 22:53:09 ÖS
@Metallic : Aslında 9v adaptör düşünüyorum, yahut 12v adaptör. Ana board üstünde 5v setup fix, sid board'ların üstünde de converter olsa daha iyi ederim gibi. Sid bildiğim kadarıyla 12V yahut 9V tipine göre bir tık aşağı gerilim de kullanabiliyor. İki ayrı sid board yapıp 8580 üstünde sadece regülatör. 6581 board'unun üstünde ise step up converter (12v'un biraz üstüne ayarlanabilir) ve 7812 regülatör iş görebilir.

Malzemeleri bir tedarik edeyim bakayım. Bu arada LM2577'leri kendim uygulamayı tercih etmem muhtemelen. Aliexpress'teki ucuz ürünler muhtemelen benim yapacağımdan daha sağlıklı olacaktır :)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Metallic üzerinde Temmuz 23, 2015, 23:11:35 ÖS
Ok kolay gelsin. İyi ki var şu ebay ve aliexpress. Fiyatlar ucuz ama bir de uzun bekleme süresi olmasa. Neyse hiç bulamamaktan iyidir, malzemeleri beklerken başka bir projeye geçme fırsatı çıkıyor hem =)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Temmuz 27, 2015, 00:33:21 ÖÖ
Apartman modeli reel anlamda iş görmeye başladı. En son 32k ram'ın kullanılabildiğini eprom'a yazdığım koddan aldığım sinyallerle anlayabilmiştim.

Sırada swinsid'i çalıştırma aşaması vardı. Tabii display'i ve sd card'ı bağladığımda 6502 tarafı düzgün çalışmasa da bunların çalışması gerekiyordu. Bu aşamada tekrar sd karttan okuma sorunları başgösterdi, display hiç çalışmadı (bozulmuş olma ihtimali de mevcut)

Elimde bir osiloskop olsaydı en azından sinyallerdeki sorunla ilgili bir bilgi sahibi olabilirdim, sorun gerçek anlamda yazılımda mı yoksa donanımda mı ortaya çıkartabilirdim.

İttir kaktır sd card'a erişim hızını düşürüp çalıştırmayı becerdim.

Sonra breadboard'da çalışan swinsid'i apartman'a kabloladım. Devreden sid dinlediğim günlere neyse ki geri döndüm :)  Swinsid katında yaptığım bağlantı kontrollerinde tespit ettiğim sorunları düzeltince o da çalışmaya başladı. Birini orta hoparlöre, birini diğerlerine gönderip falan ikisi bir arada da çalıştı :)

Apartman modelinde olmazsa olmaz olarak nmi ve irq bağlantılarını ac decouple etmem gerektiği de ortaya çıktı. Cpu board'unda yapmamıştım bunu. Hatta genel pratikten uzaklaşmayıp tüm power hatlarına da mutlaka uygulamak lazım.

Sırada 64k eprom'dan kurtulup 32 byte'lık eprom'a geçmek var. 6502.org'dakilerin de yardımı ile 256 byte'lık transfer yapacak 32 byte uzunluğunda bir loader oluşturdum. Bunu bir GAL'e yazarak (üç kağıtla) yahut 32 byte Prom (74S288) çipe yazarak kullanacağım. Eprom 28 pin, Prom çip 16 pin. GAL daha önceki deneyimimden dolayı sıcak gelmiyor, prom da buna yazacak donanımım olmadığı için. Aslında epromda kalmak şu an için daha mantıklı ancak sadece 128 byte'ını kullandığım 64k bir eprom da bana hiç sıcak gelmiyor. Pratikte en azından şimdilik bu 32 byte'lık loader'ı eprom ile deneyeceğim diğer yazılım geliştirmelerini yapabilmek için.

Adres decoder'dan kurtulmak için de her katın decoding'ini kendisinin yapmasını sağlayacağım. Şu anda dışarıda adres decoder ve sd kart bağlantıları kaldı sadece. Bu şekilde dışarıda sadece arduino'ya bağlı çevre birimleri kalacak.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: EMREZ üzerinde Temmuz 27, 2015, 11:11:20 ÖÖ
Dostum tebrik ederim gerçekten, ciddi bir emek ile bu işi başardın. umarım son kullanıcılarında temin edebileceği duruma getirebilirsin.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Ağustos 05, 2015, 02:26:02 ÖÖ
@Emre : İnşallah, bu kaplumbağa hızı ile biraz zor olacak gözüküyor. Kendime yapsam yeter gibi :)

Şu daha önce bahsettiğim GAL içine 32 byte boot loader yükleme işini kıvıramadım. Görüntüde her şey ok gibi ancak test etmesi zor ve daha önce uyguladığım test yöntemi de çalışmadı. Temel bir şeylerde sıkıntı var gibi.

Adres decoding kısmında oluşan çip yumağı beni yine benden aldı ve tekrar GAL kullanmayı denemek istedim. Denedim ve bu sefer başarılı oldu :)

Allah ayırmasın bizi demek istiyorum zira çok güzel bir nimet.


32k ram var,
rom BC=1 iken devrede ve $F000-$FFFF arasında, RAM $0000-$7FFF arasında
rom BC=0 iken devreden çıkıyor, RAM $0000-$6FFF ve $F000-$FFFF (nmi/irq handler'larını değiştirebilmek için) arasında
sid her zaman $D000-$DFFF arasındaki tüm 8k'yı kaplıyor.

Kullandığım adres decoder'ın PLD kodu şu şekilde,

Kod:
Name     address decoder for sid player;
PartNo   00 ;
Date     05.08.2015 ;
Revision 01 ;
Designer i_r_on ;
Company  none;
Assembly None ;
Location  ;
Device   G20V8AS;

/* *************** INPUT PINS *********************/
PIN   2  =  S5                    ;
PIN   3  =  S4                     ;
PIN   4  =  S3                     ;
PIN   5  =  S2                     ;
PIN   6  =  S1                     ;
PIN   7  =  S0                     ;
PIN  13  = !OE                     ;

/* *************** OUTPUT PINS *********************/
PIN   15  =  CS0                     ;
PIN   16  =  CS1                     ;
PIN   17  =  CS2                     ;

FIELD SIGNALS = [S5..0];  /* [BC, PHI2, A15, A14, A13, A12]; */

FIELD SEL = [CS2..0]; /*SIDCS, RAMCS, ROMCS*/

TABLE SIGNALS => SEL {
/* BC = 0, PHI2 = 0 */
['b'000000] => 'b'111;
['b'000001] => 'b'111;
['b'000010] => 'b'111;
['b'000011] => 'b'111;
['b'000100] => 'b'111;
['b'000101] => 'b'111;
['b'000110] => 'b'111;
['b'000111] => 'b'111;
['b'001000] => 'b'111;
['b'001001] => 'b'111;
['b'001010] => 'b'111;
['b'001011] => 'b'111;
['b'001100] => 'b'111;
['b'001101] => 'b'111;
['b'001110] => 'b'111;
['b'001111] => 'b'111;

/* BC = 0, PHI2 = 1 */
['b'010000] => 'b'101;
['b'010001] => 'b'101;
['b'010010] => 'b'101;
['b'010011] => 'b'101;
['b'010100] => 'b'101;
['b'010101] => 'b'101;
['b'010110] => 'b'101;
['b'010111] => 'b'101;
['b'011000] => 'b'111;
['b'011001] => 'b'111;
['b'011010] => 'b'111;
['b'011011] => 'b'111;
['b'011100] => 'b'111;
['b'011101] => 'b'011;
['b'011110] => 'b'111;
['b'011111] => 'b'111;


/* BC = 1,  PHI2 = 0 */
['b'100000] => 'b'111;
['b'100001] => 'b'111;
['b'100010] => 'b'111;
['b'100011] => 'b'111;
['b'100100] => 'b'111;
['b'100101] => 'b'111;
['b'100110] => 'b'111;
['b'100111] => 'b'111;
['b'101000] => 'b'111;
['b'101001] => 'b'111;
['b'101010] => 'b'111;
['b'101011] => 'b'111;
['b'101100] => 'b'111;
['b'101101] => 'b'111;
['b'101110] => 'b'111;
['b'101111] => 'b'110;

/* BC = 1, PHI2 = 1 */
['b'110000] => 'b'101;
['b'110001] => 'b'101;
['b'110010] => 'b'101;
['b'110011] => 'b'101;
['b'110100] => 'b'101;
['b'110101] => 'b'101;
['b'110110] => 'b'101;
['b'110111] => 'b'101;
['b'111000] => 'b'111;
['b'111001] => 'b'111;
['b'111010] => 'b'111;
['b'111011] => 'b'111;
['b'111100] => 'b'111;
['b'111101] => 'b'011;
['b'111110] => 'b'111;
['b'111111] => 'b'110;
}


Şimdilik 32 byte bootloader fantazisine ara verdim. Devreye VIA bağlayıp adam akıllı output imkanlarına kavuşursam yahut bir adet 65C02 alıp buna bus analyzer bağlarsam tekrar dönerim.

Hali hazırda ROM'u RAM'a switch edebildiğim için aslında yazılımsal iyileştirmeleri EPROM'a elleşmeden de yapabilirim. 32 byte boot loader işi son ürünün daha basit olabilmesi için sona kalabilir yani.

Tembelliği bırakıp 64k içeren bir modül yaparsam da bunu aslında ilk prototip olarak paketleyebilirim de. Ne gıcık ki adam akıllı tek 64k yahut daha büyük SRAM bulamadım.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Eylül 08, 2015, 01:08:27 ÖÖ
NoFlash64 fail ettikten sonra kürkçü dükkanına geri döndük. ROM'u kapatıp RAM'de takılma işini hallettikten sonra projenin önü epey açılmıştı aslında. Nimetlerinden faydalanmak için ta fii tarihinde daha proje PIC'te iken yazdığım basit player rutinini biraz elledim. O zamandan daha amacım normalde sid'ler çalınırken kullanılan raster interrupt ile yahut CIA interrupt'ları ile sağlanan 50hz/60hz sinyali PIC ile üretmekti. İncelediğim kadarıyla PIC yahut ATMEL işlemcilerle sorunsuz, temiz bir 50hz yahut 60hz sinyal üretmek düşük hassasiyetten dolayı zordu. Ben bunun yerine bundan daha yüksek bir sinyal üretip 6502 tarafında yazacağım kodla bu sinyali bölerek 50hz ve 60hz'e ulaşmayı planlamıştım. Aklıma ilk gelen değer 50*60'ın karşılığı olan 3000hz yani 3khz oldu.

Parça NTSC istiyor ise nmi ile gelen 3khz sinyal 50'ye bölünecek ve 60hz bulunacak, PAL istiyor ise de 60'a bölünüp 50hz bulunacak.

Elemanın biri güzel bir PWM kütüphanesi yazmış. Bunu aldım ve arduino üstünde kullandığım pin'leri tekrar organize ettim. Uno'da toplamda 6 pwm pin'i var ancak bunlar ikişer olarak toplamda 3 timer'a bağlı. Yani pin'in birinden pwm alınca aynı timer'a bağlı diğer pin'i kaybediyoruz.

ROM'u kapattıktan sonra belleğin IRQ/NMI ve RESET vektörlerini içeren son 4k'lık bölümü kontrolümde olduğu için NMI rutinini değiştirmek kolay oldu. Şansıma da ilk denediğimde çalıştı.

Player şöyle bir şey,

Kod:
	*=$FC00&nbsp; ; Fixed here but the code should be relocatable
CLD ; Close decimal mode
LDA #$20 ; Operand of this command is a placeholder (will be patched by PIC)
STA $FFFA
LDA #$FC ; Placeholder
STA $FFFB
LDA #$00&nbsp; ; Init music - Placeholder
JSR $1000 ; Placeholder
CLV
THERE: BVC THERE ; Idle main loop
COUNTER: .BYTE 00
*=$FC20
; NMI routine is here....
PHA
INC COUNTER ; Placeholder
LDA #$32&nbsp; &nbsp; ; Placeholder
CMP COUNTER
BNE OUT
LDA #$00
STA COUNTER ; Placeholder
; Call the play routine. $1003 here is just a placeholder.
; PIC will send the actual play address
JSR $1003&nbsp; &nbsp;; Placeholder
OUT:
PLA
RTI

;#define ROUTINELO&nbsp; = 0x02
;#define ROUTINEHI&nbsp; = 0x07
;#define STARTMUSIC = 0x0C
;#define INITLO&nbsp; &nbsp; &nbsp;= 0x0E
;#define INITHI&nbsp; &nbsp; &nbsp;= 0x0F
;#define COUNTERLO&nbsp; = 0x22
;#define COUNTERHI&nbsp; = 0x23
;#define PALNTSC&nbsp; &nbsp; = 0x25
;#define COUNTERLO2 = 0x27
;#define COUNTERHI2 = 0x28
;#define COUNTERLO3 = 0x2E
;#define COUNTERHI3 = 0x2F
;#define PLAYLO &nbsp; &nbsp; = 0x31
;#define PLAYHI &nbsp; &nbsp; = 0x32

İçinde geçen sabitlere takılmamak lazım, arduino onları memory'e gönderirken yamayıp gönderiyor. (Kodun en altındaki define'ların hepsi yamanıyor) Çok da temiz bir yaklaşım değil aslında :) Sid'i doğrudan 6502 koduna da parse ettirebilirdim.

Şu an arka planda çok enteresan işler dönüyor devrede.

1. Öncelikle eprom'da belleğe transfer yapabilmek için bir rutin mevcut. Reset'te bu çalışıyor.

2. Arduino bu transfer rutininin soft bir kopyasını da içeren bir bootloader gönderiyor. Bootloader'ı çalıştırmadan önce de ROM'u kapatıyor. Bootloader çalıştığında transfer rutininin soft kopyası belleğin son sayfasına ($FF00-$FFFF) yerleşiyor.

3. Arduino sid'in kendisini ve sid'e uygun bir transfer rutinini gönderiyor. Sonra da nmi pin'inde pwm ile 3khz beslemeye başlıyor.

Bir taraf hardware, bir taraf software olunca ve rutinlerin arduino tarafında bir kaç kopyası olunca ve yazdığın / kurduğun donanım ilk seferde çalışınca insan şüpheye düşüyor :) O yüzden seri bağlantıdan eriştiğim arayüze 3khz sinyali 100hz arttıran ve azaltan iki seçenek daha ekledim ve evet doğru hardware ve doğru software diyebildim.

Apartman içindeki bellek miktarı hala 32k olduğu için her sid'i çalamıyorum, aşağıdaki videoda atladığım sid'in sebebi bu. Ancak artık GAL'in tasarım dosyasında RAM'i istediğim bloklar için açabiliyorum. Hani uğraşılırsa 32k ile 24k'nın altındaki digi içermeyen tüm sid'leri çalması mümkün. GAL içindeki product term'lerin yetmesi lazım. Bu yola gitmeyeceğim muhtemelen ve 64k sram mecbur koyacağım. WinCUPL tam bir başbelası çünkü.

Demo videosu şurada :

wW5FI8Fg1Jc



Konu Başlığı: Ynt: Psid player projesi
Gönderen: joker_ üzerinde Eylül 08, 2015, 08:00:27 ÖÖ
Yavaş yavaş projenin sonuna geliyorsun kardeşim ;)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Eylül 09, 2015, 02:25:55 ÖÖ
Yavaş yavaş projenin sonuna geliyorsun kardeşim ;)

Kaplumbağa hızıyla da olsa evet :)

Bugün de subtune çalma özelliği ekledim. "Çok da temiz bir yaklaşım değil aslında. Sid'i doğrudan 6502 koduna da parse ettirebilirdim." derken golün geleceği yeri belli etmişim :) Player'ın içine bir de IRQ rutini ekledim. Player kodunda yamanacak şeylere yenileri eklendi, varolanların pozisyonları değişti derken epey bir makine kodu ile cebelleştim.

Arduino NMI'dan pwm vermeyi kesip IRQ üretince bir sonraki parçaya geçiyor, sonra tekrar NMI'dan pwm sinyalini vermeye devam ediyor.

Yalnız son subtune kontrolünü yanlış yapmışım, bazı parçalarda sid dosyası içindeki son tune değeri aşılınca da yine ufak tefek bölümler varmış sid'lerin içinde. Besteleyenlerin deneysel tadda bıraktıkları şeyler olsa gerek yahut alakasız bir yerden başlıyor müzik init kodunun yapısından dolayı.

Daha yapacak çok iş var bu arada...


Konu Başlığı: Ynt: Psid player projesi
Gönderen: joker_ üzerinde Eylül 09, 2015, 07:38:41 ÖÖ
bazı parçalarda sid dosyası içindeki son tune değeri aşılınca da yine ufak tefek bölümler varmış sid'lerin içinde. Besteleyenlerin deneysel tadda bıraktıkları şeyler olsa gerek yahut alakasız bir yerden başlıyor müzik init kodunun yapısından dolayı.

Player konusunda herhangi bir şey söyleyemem. Bazı sid'lerin içerisinde değişik sample'lar olabiliyor. Genelde oyun müziklerinde sık kullanılan bir yöntem.
Tam olarak nasıl bir kod yazdığını bilmiyorum, belki de alakasız olacak yazdıklarım fakat sid müziklerini çaldırmadan önce, aşağıdaki minik kod ilk önce bir kez çalıştırılıp,

lda #$00 ;Burada hangi sample'ı çaldıracağımızı belirtiyoruz.
jsr $1000 ;müziğin hafızaya yüklendiği örnek adres

daha sonra da irq içerisinde,
jsr $1003

diyerek müzik çalıştırılır. Yüklenecek sıradaki müzik önce hafızada başka bir yere yüklenip, oradan transfer edilebilir. Her seferinde, isteğimiz yerden ve adresten başlatma şansımız olur bu sayede.

Bunları zaten biliyor ve yapmışsındır. Ben sadece sesli düşündüm :D


Konu Başlığı: Ynt: Psid player projesi
Gönderen: ggolem üzerinde Ağustos 05, 2017, 15:56:28 ÖS
Unexpected end of file error.

eee, sonra? proje pause mu edildi?

Harika projeymis bu, cok fazla is yapmissin, hem de cok minimal imkanlar kullanarak, tebrikler. Hala projenin yapiminda kaybedilen 6510 ve SID'in uzgunlugu icinde olsam da tebrikler.

SID uzerinden SID Tune calacak birseyler yapmak istiyordum ben de son 5-6 senedir, ama isin buyuklugu hep gozumu korkutuyordu. Istedigim tasarimi olusturamadim bir turlu kafamda. Bir gun olabilir diyorum hala. O yuzden bunu okumak hosuma gitti. Biraz gaza da getirdi dogrusu. Tesekkurler, proje icin de paylasim icin de.

Acaba, c64 demo scene'de buldun mu o yillarda? O yillarda derken 90-95 civarini kastediyorum.


Konu Başlığı: Ynt: Psid player projesi
Gönderen: i_r_on üzerinde Ağustos 06, 2017, 15:35:35 ÖS
Bu benim için biraz öğrenme projesi oldu. Sayesinde epey bir şeye el atıp deneme şansım oldu. En sonda apartman versiyonun şemalarının ve pcb'sinin çiziminde durdu, başka projeler girdi araya.

C64'e oldukça geç sahip olabildim. Tam olarak 93 senesinde. Bu yüzden camiayı sanırım teğet geçtim :)


Konu Başlığı: Ynt: Psid player projesi
Gönderen: Simon (Özay Turay) üzerinde Mayıs 20, 2021, 04:27:49 ÖÖ
Hort. :D

Malzeme çekmecelerimi karıştırırken senin gönderdiğin 6502, SRAM, Osilatör, GAL v.b. parçaları buldum. Ben Eater'ın BE6502 video serisinin de gazıyla kendi 6502 bilgisayarımı yapmak için ufaktan çalışmalara başladım. Görsel olarak Z80 tabanlı RC2014 projesindeki gibi bir "busboard" ve üzerine takılabilen modüller düşünüyorum.

https://rc2014.co.uk/ (https://rc2014.co.uk/)

(http://rc2014.co.uk/wp-content/uploads/2014/10/RC2014_Overview.jpg)

(http://rc2014.co.uk/wp-content/uploads/2014/10/DSCN2553.jpg)



Konu Başlığı: Ynt: Psid player projesi
Gönderen: aeymur üzerinde Mayıs 28, 2021, 17:10:00 ÖS
RC2014 çok güzel görünüyor. CP/M de çalistirabiliyormus. Genis bir zamanda daha detay inceleyececegim. Sayende haberim oldu, sagol.