Daha önceki sid player projemi belki hatırlayanlar olacaktır. Aşağıdaki linkte :
http://www.commodore.gen.tr/forum/index.php?topic=9562.0O projede tamamen çalışan bir mini 6502 temelli bilgisayar ile sid çipini kullanarak sid çalma amacı ile yola çıkmıştım. Epey bir yol katettikten sonra iş devreyi pcb haline getirme aşamasında tıkanmıştı.
Geçenlerde forumdan Volkan (Voltron) arkadaşımız sid çipi olmayan c64'leri için swinsid imal ettiğini ancak çalışmalarında bir sıkıntı olduğunu ve yardım edip edemeyeceğimi sordu. Daha önce swinsid ile cebelleştiğim için yardımım dokunabileceğini düşünüp zevkle kabul ettim. Tembel bir adam olduğum için tabii şeytan direkt dürttü. Gelecek swinsid'i c64'e takmadan deneyeceğim bir devre yapsam ya diye düşündüm.
Gerçi swinsid'in çalışmama sebebini anlama aşamasına iş pratikte yine tembellikten ötürü dönüşemedi zira swinsid board'ları breadboard üstünde kablolamaya pek müsait değildi. Sorunu hali hazırda tespit edip c64'de de denediğim için o konu kapandı. Ancak fikir mini bir projeye dönüştü.
Yine tembellikten, hali hazırda daha önceki sid player için yaptığım swinsid katını kullanmak geldi aklıma. Arduino'dakine benzer iki yanına dişi header'lar koyulmuş bir board bu. Orjinal projede bir katta bellek, bir katta rom, bir katta da cpu var, buna ek ıvır zıvır falan var. Alttaki resimde soldaki board.

Bunun üstüne orjinal projedekine göre nispeten basit bir arduino katı çıkarsam kontrol ederim diye düşündüm. Yeni mini projede mantık şu : Bilgisayarda basitçe 6502 emülasyonu ile sid'lerin register dump'ları üretilebiliyor. Hatta bir amcam uğraşıp bunları fazla boyut kaplamadan saklayacak bir yöntem de geliştirmiş.
Tartışması şurada :
https://www.ist-schlau.de/phpBB3/viewtopic.php?f=8&t=11Bunu alayım, arduino'da bir timer interrupt ile swinsid'e 5 adres pin'i ve 8 data pin'ini kontrol ederek boca ederek sid çalayım diye düşündüm. Yarın öbür gün istenirse gerçek sid de kullanılabilir. Gerek yaşın ilerlemiş olması, gerek audiophile olmamam gerekse de bir sid çipini daha öldürebilme ihtimali bana swinsid kullanmayı dikte ediyor orası ayrı.
Arduino'daki i/o pin'leri nihayetinde bana yetmez diyerek 74hc595 serial in parallel out shift register da sokuşturdum işin içine.
Düşünce güzeldi. Ancak uygulamada yeni yaptığım arduino pro mini / sd modül ve shift register içeren board üstünde shift register'ın pin'lerini aynalanmış bir şekilde ters lehimlediğimi anlayınca bir dizi hata ayıklama evresinden sonra ve 2 adet shift register'ı yaktıktan sonra çiplerin bacaklarını tersine çevirip sokete öyle sokuşturma gibi aktivitelere girmek durumunda kaldım

Bir süre de swinsid'in açılıştaki 1000hz'lik karşılama tonunu almak ile cebelleştim. Sorun çok daha önceden swinsid kullanırken yaşadığım sorunun aynısı çıktı. Low fuse bit'ler doğru set edilmediği için tırmalamış durmuşum yine. Hatta elimde hali hazırda çalışan programlanmış atmega çip varken de nasıl becerdiysem yanlış programlanmış olanı ile hata ayıklama işine de girişmiş ve farklı hataları kovalamışım.
Bu işi de hallettikten sonra en son konu blip blop'lar seviyesine geldi ve bugün de en nihayetine swinsid'e giden /CS sinyali ile shift register'ın /OE sinyalini ayırınca mutlu sona ulaşabildim. Daha pek tabii hem yazılımsal hem de donanımsal olarak olarak düzeltilmesi gereken bir sürü şey var. Buradan yürüyüp devam eder miyim bilmiyorum. Daha güçlü bir işlemcisi olan bir mikro işlemci ile (stm yahut esp) 6502 ve cia'yı emüle eden bir çözüm bir sonraki proje olur muhtemelen.
Sonuç aşağıdaki videoda olduğu gibi.
Zımbırtının bitmiş hali

74HC595 entegreye dikkat, pin'ler ters tarafına kıvrılmış halde

Referans olması açısından arduino kodu aşağıdaki şekilde. Önceki sid player'dan kalan Sidplay playlist özelliği de var ancak henüz entegre etmedim. Kodu buraya yapıştıramadım site dağılıyor,
http://pastie.org/10973604