|
Konu Başlığı: Homebrew 8 bit computer yapalım mı? Gönderen: hades üzerinde Aralık 14, 2010, 23:27:45 ÖS Hani şöyle Z80 kullanan yanında VIC ve SID olan, program RAM ile video RAM'i ayrı olan, hatta SID dataları için ayrı RAM'i olan, 82c55'lerle klavye, hdd, sd/mmc vs... IO işleri halledilen bir homebrew projesi nasıl olur?
Temel özellikler Z80B - 32K LOWER RAM - 32K UPPER RAM(Upper RAM 512K'ya yükseltilebilir.) 8K'lık bloklar halinde seçilebilir 64K EPROM (Bios, Dos vs...) VIC - 32K veya 64K VIDEO RAM - 8*1K COLOR RAM - KARAKTER ROM (Stero) SID - 8K mono veya 2*4K SID DATA RAM 82c55'ler ile Bellek düzenleme, 2*joystick port, Hdd, Klavye vs...işlemleri. (Vakit buldukça projeyi çiziyorum. Şu anda en karmaşık olan Z80-VIC-VİDEO RAM-COLOR RAM-KARAKTER ROM-arasındaki bağlantıları çiziyorum.) MEMORY MAP $0000 - $1FFF : 8K ROM $0000 - $7FFF : 32K LOWER RAM $8000 - $FFFF : 32K UPPER RAM (32K*16 BANK) I/O MAP $0000 - $7FFF : VIDEO RAM (32K*2 BANK) $8000 - $CFFF : RTC, 82C55'LER VS... $D000 - $D3FF : VIC $D400 - $D41F : SID 1 $D420 - $D43F : SID 2 $D800 - $DBFF : COLOR RAM (1K*8 BANK) $DC00 - $DFFF : BOŞ $E000 - $FFFF : 8K SID DATA RAM Konu Başlığı: Ynt: Homebrew 8 bit computer yapalım mı? Gönderen: Skate üzerinde Aralık 15, 2010, 02:28:39 ÖÖ bu tür bir proje hayal gibi birşey olur.
Hayal listem; 1) VIC+GTIA kullanan bir donanım. 2) Copper ya da Display List benzeri bir yapı. Bunun için VIC'in yanı sıra optional ya da paralel çalışabilecek şekilde Antic chip desteği süper olurdu. 3) Hardware scrolling ve hardware eor filling gibi destekler. Bunun bir örneği Commodore için yıllardır Stingray tarafından geliştiriliyor aslında. (bkz: http://noname.c64.org/csdb/forums/?roomid=11&topicid=13046 (http://noname.c64.org/csdb/forums/?roomid=11&topicid=13046)). Aslında blitter benzeri bir yapı da hani hiç fena olmaz. 4) 16 hardware sprite desteği. Ya X'de sınırlı Y'de tüm ekranı kaplayan ve free memory pointer tanımlanabilen bir yapısı olmalı ya da display list kullanımı ile kolayca multiplex edilebilmeli. Bu donanımı yapın, size demonun kralını kodlarım, kraliçesini bonus disk yaparım. Konu Başlığı: Ynt: Homebrew 8 bit computer yapalım mı? Gönderen: tolga abaci üzerinde Aralık 15, 2010, 08:00:13 ÖÖ Alıntı sahibi: hades Hani şöyle Z80 kullanan yanında VIC ve SID olan, program RAM ile video RAM'i ayrı olan, hatta SID dataları için ayrı RAM'i olan, 82c55'lerle klavye, hdd, sd/mmc vs... IO işleri halledilen bir homebrew projesi nasıl olur? Güzel olur :). Alıntı sahibi: hades (Vakit buldukça projeyi çiziyorum. Şu anda en karmaşık olan Z80-VIC-VİDEO RAM-COLOR RAM-KARAKTER ROM-arasındaki bağlantıları çiziyorum.) Burada aradaki logic bağlantıları sağlamak için (address decoding vs.) glue logic olarak ne kullanmayı düşünüyorsun? 74 serisi entegrelerle mi yapacaksın yoksa CPLD gibi birşeylerle mi? Alıntı sahibi: Skate (Bu donanımı yapın, size demonun kralını kodlarım, kraliçesini bonus disk yaparım..) En önemlisi bu işte... Software olmadan hardware hiç bir halta yaramaz. Adamlar Oric gibi gayet kıytırık (Oric'ci arkadaşlar kusuruma bakmasın, kişisel fikrimi söylüyorum) bir donanıma bile neler neler yapmışlar. Konu Başlığı: Ynt: Homebrew 8 bit computer yapalım mı? Gönderen: coze üzerinde Aralık 15, 2010, 09:43:54 ÖÖ http://www.retroleum.co.uk/v6z80p/ (http://www.retroleum.co.uk/v6z80p/)
Konu Başlığı: Ynt: Homebrew 8 bit computer yapalım mı? Gönderen: endo64 üzerinde Aralık 15, 2010, 14:01:53 ÖS http://www.retroleum.co.uk/v6z80p/ (http://www.retroleum.co.uk/v6z80p/) harbiden adamlar hades'in tarif ettiğini yapmış neredeyse. @skate: sen de Amiga'yı tarif etmişsin :) Kral demonu bekliyoruz Amiga'da ;) Konu Başlığı: Ynt: Homebrew 8 bit computer yapalım mı? Gönderen: Skate üzerinde Aralık 15, 2010, 15:03:24 ÖS @Endo: Amiga'yı değil daha çok Atari'yi tarif ettim. Sadece Blitter Amiga'nın özelliği bahsettiklerimden. Copper Atari'de de Display List olarak geçiyor ve Antic chipinin bir parçası. GTIA de Atari'de kullanılan bir chip. Yani ben VIC ve SID harici Atari'nin Chipleri kullanılsın ve işlemci Z80 olsun diyorum. Bir tür Atari, Commodore, Spectrum/Amstrad karışımı bir makine. Amiga ile bu açılardan alakası yok. Amiga 16-bit aileye girdiği için konu dışı.
Amiga demosu için beni boşuna gazlamayın, ben sıramı son yıllarda bu konuda tutorial yazmış kişilere devrediyorum. ;) Edit: Aslında 16 sprite da Amiga ile örtüşüyor haklısın, onu hiç düşünemeden yazmıştım. Hani gevurlar der ya "double the amount while you are dreaming" diye. (nasıl da böyle demezler, süper salladım hahaha) Konu Başlığı: Ynt: Homebrew 8 bit computer yapalım mı? Gönderen: nightlord üzerinde Aralık 15, 2010, 21:28:43 ÖS Enteresan bir topic. Hic yoksa guzel bi beyin firtinasi egzersizi :) Bana gozuken iki nokta var:
1- hw gurusu degilim ama bana sanki clocklama ve memory sharing bakimindan potansiyel problemler cok olacakmis gibi gorunuyor. VIC'in tavsiye edilen clock hizi 1 Mhz. ve bu hizda hem hi hem lo fazlarda VIC bellege erisiyor. bu durumda z80'i de mi 1 Mhz clocklayacaksiniz. O zaman yazik degil mi o z80'e :) Ayrica VIC'in bus access pin'indeki davranis da 6502 ailesi ile kullanilmak uzere dizayn edilmis. su an tam detayini hatirlamiyorum ama VIC badline'larda memory erisimini tamamen almak icin 6510'a sinyal gonderdiginde, sinyalden 3 clock cycle sonra erisiyor (BA ve AEC sinyalleri arasinda 3 cycle delay var). o delayin 3 cycle olmasi 6510 instruction setinde hic 3 cycle dan fazla bellek erisimi olan opcode olmamasi. Dolayisiyla benzer bir yapida vic ile z80 kullaniyor olsak, mesela z80'in bazi 16 bitlik opcodelari BA/AEC sistemi ile saglikli sekilde durdurulamayabilir gibi geldi bana. 2- bellek static mi dram mi? static ise VIC'in RAS/CAS tabanli erisimini duz adres/data'ya cevirecek glue logic lazim. dinamik ise bellek refresh'ten kim sorumlu olacak (VIC mi) Konu Başlığı: Ynt: Homebrew 8 bit computer yapalım mı? Gönderen: hades üzerinde Aralık 15, 2010, 22:46:15 ÖS @Tolga
Bütün bağlantılar 74 serisi ve gereken yerlerde 4000 serisi entegrelerle olacak. Kullanacağım malzemelerin hepsi piyasada bulunabilen türden. (Gerçi bana beleş gelir. :)) Enteresan bir topic. Hic yoksa guzel bi beyin firtinasi egzersizi :) Bana gozuken iki nokta var: 1- hw gurusu degilim ama bana sanki clocklama ve memory sharing bakimindan potansiyel problemler cok olacakmis gibi gorunuyor. VIC'in tavsiye edilen clock hizi 1 Mhz. ve bu hizda hem hi hem lo fazlarda VIC bellege erisiyor. bu durumda z80'i de mi 1 Mhz clocklayacaksiniz. O zaman yazik degil mi o z80'e :) Ayrica VIC'in bus access pin'indeki davranis da 6502 ailesi ile kullanilmak uzere dizayn edilmis. su an tam detayini hatirlamiyorum ama VIC badline'larda memory erisimini tamamen almak icin 6510'a sinyal gonderdiginde, sinyalden 3 clock cycle sonra erisiyor (BA ve AEC sinyalleri arasinda 3 cycle delay var). o delayin 3 cycle olmasi 6510 instruction setinde hic 3 cycle dan fazla bellek erisimi olan opcode olmamasi. Dolayisiyla benzer bir yapida vic ile z80 kullaniyor olsak, mesela z80'in bazi 16 bitlik opcodelari BA/AEC sistemi ile saglikli sekilde durdurulamayabilir gibi geldi bana. 2- bellek static mi dram mi? static ise VIC'in RAS/CAS tabanli erisimini duz adres/data'ya cevirecek glue logic lazim. dinamik ise bellek refresh'ten kim sorumlu olacak (VIC mi) 1 - Memory sharing sorun olmaz ama clocklama problem çıkartabilir. VIC kendi başına bir işlemci olup videoram, colorram ve karakterrom'a herzaman erişecektir. Bu bölgeler Z80'e I/O olarak gözükecek şekilde bağlı olacaktır. Dolayısıyla Z80 bu bölgelere erişeceği zaman VIC'ten bu memorylere giden Adress ve data buslarındaki 3-State bufferler disable edilip Z80 tarafından gelen hatlardaki bufferlar enable ediliyor. Aynı zamanda /RD, /WR ve /CS hatları anahtarlanıyor. Z80 VIC'ten hızlı olduğu için I/O işlemleri hemen bitiyor. Bu anahtarlama işlemi genel olarak tüm I/O erişiminde geçerli. Yani Z80 VIC'in kendisinede erişse, 82c55'lerede erişse alt adreslerde çakışma olmaması için gerekli. C64'te ise VIC, 6510'a bus erişimi için izin veriyor. Yani benim projenin tam tersi. Normalde VIC adı geçen bölgelerden sadece okuma yapabilir. Ekran belleğinin C64'teki gibi $0400'te olduğunu kabul edelim. ..... LD BC,0400h LD A,00h OUT (C),A ..... gibi bir programda Z80 OUT komutunu işleme koyduğu anda VIC'ten çıkan adres ve data hatları ayrılıyor, işlem yapılıyor ve bitince hatlar VIC'e bağlanıyor. LD BC,D020h LD A,0Fh OUT (C),A Burada ise VIC'in kendisine erişim var. Ancak bunun için Phiout ve AEC çıkışlarının "1" olması gerekli. Z80'in hızlı olması dolayısıyla belki bu iki sinyalin "1" olması kontrol edildikten sonra VIC erişimi olabilir. Çizimler bitsin, yavaş yavaş delikli plaket üzerinde montaja başlayacağım. 2 - Bellek static ram olacak. VIC'in RAS/CAS işaretlerini kullanarak adres hatları latch edilecek. Latch'ten sonra zaten bufferler olacak. Boot Rom için geçici olarak PIC'li ufak bir devre olacak. Devre Z80'i resette tutarak veya /BUSREQ üzerinden memorye erişim yapacak. PIC'teki deneme kodları açılışta RAM'e aktarılacak. Aktarma işi bitince kontrol Z80'e verilecek. Uzun ince bir yoldayım... Konu Başlığı: Ynt: Homebrew 8 bit computer yapalım mı? Gönderen: nightlord üzerinde Aralık 15, 2010, 23:05:51 ÖS Alıntı LD BC,0400h LD A,00h OUT (C),A ..... gibi bir programda Z80 OUT komutunu işleme koyduğu anda VIC'ten çıkan adres ve data hatları ayrılıyor, işlem yapılıyor ve bitince hatlar VIC'e bağlanıyor. Ya tam o anda VIC tam char data veya sprite datasi okuyorsa? VIC'i boyle bus'tan ayirmak ekrandaki goruntuyu bozmayacak mi? Konu Başlığı: Ynt: Homebrew 8 bit computer yapalım mı? Gönderen: hades üzerinde Aralık 15, 2010, 23:25:52 ÖS Böyle bir durumda BA ve AEC sinyalleri kontrol edilerek, VIC'in işini bitirmesi beklenebilir. Daha sonra I/O işlemi yapılır.
Konu Başlığı: Ynt: Homebrew 8 bit computer yapalım mı? Gönderen: hades üzerinde Aralık 15, 2010, 23:27:59 ÖS Skate, GTIA - VIC arasındaki farklar neler?
Konu Başlığı: Ynt: Homebrew 8 bit computer yapalım mı? Gönderen: Gökçe Bozkurt üzerinde Aralık 15, 2010, 23:59:00 ÖS Agalar nece konuşuyorsunuz siz yaw ? :)
Konu Başlığı: Ynt: Homebrew 8 bit computer yapalım mı? Gönderen: toddler üzerinde Aralık 16, 2010, 00:11:37 ÖÖ Agalar nece konuşuyorsunuz siz yaw ? :) Al bendende o kadar :) Konu Başlığı: Ynt: Homebrew 8 bit computer yapalım mı? Gönderen: newzort üzerinde Aralık 16, 2010, 00:24:19 ÖÖ babalar konuşmuş susup dinleyelim bence :o
Konu Başlığı: Ynt: Homebrew 8 bit computer yapalım mı? Gönderen: Skate üzerinde Aralık 16, 2010, 02:15:58 ÖÖ GTIA bir tür overlay video chip'i gibi birşey. Ben bu arada gerçek tanımı değil de kendi algıladığım şekilde anlatıyorum, doğru değilse bile hayalimdeki chip böyle birşey. Atari 800 XL'de VIC'in asıl muadili Antic Chip'i GTIA değil. GTIA video sinyali Monitöre/TV'ye ulaşmadan önce son bir katman. Burada mevcut ekran üzerine teletext'de olduğu gibi birşeyler çizdirmek, transparency, brightness v.b. renk manipülasyonları yapmak mümkün oluyor. Yanılmıyorsam hardware spritelar da bu chip'in marifeti. Overlay olan herşeyden o sorumlu bir bakıma. Ekranda fullscreen bir efekt olduğunu düşünün. Bu efektden bağımsız belli bir bölgeye transparent bir grafik koyabiliyoruz, hatta spriteları bile transparent basabiliyoruz. Border v.s. gibi dertlerimiz de yok bu katmanda. Fade in fade out gibi şeyleri renk paleti oluşturmaksızın yapabiliyoruz. Tabii dediğim gibi bu benim seneler önce okuduklarımdan aklımda kalanlar, hatalarım olabilir. Eminim parallax gibi şeylerde de son derece işe yarayacaktır. :)
Konu Başlığı: Ynt: Homebrew 8 bit computer yapalım mı? Gönderen: witchdoktor üzerinde Aralık 16, 2010, 11:00:50 ÖÖ Atari tasarım grubundaki Jay Miner'ın ANTIC çipinin displaylist mantığını yeni projesi olan Lorraine'deki Copper ünitesine taşıması yıllar süren bir dava sürecine yol açmıştı. CPU bağımsız olarak her bir rasterline'a efekt vb register manipülasyonu yaptırabilmek gerçekten de güzel bir şey ki Atari"nin C64"e göre en büyük üstünlüğü de bu bence.
Böyle bir rüyaların 8bit bilgisayarında da tabi ki istenecek özelliklerden biri. C64"den de sprite"lar, SID çipi, VIC"den multicolor karakter modu, CIA6526 çipleri alınabilir. Hades, C128"deki Z80"in VIC-II çipine ulaşım modeli, BUS paylaşımı ve zamanlamasını inceledin mi acaba? C128"deki Z80A"yı tasarım nedeniyle 4MHz"de çalıştıramamışlardı, 2MHz çalışıyordu. 8502 ile de ancak "sequential" çalışabiliyordu. C128"deki Z80"in I/O ulaşımı memory mapped mi yoksa portlar üzerinden miydi, bir MMU trick"i var mıydı? Konu Başlığı: Ynt: Homebrew 8 bit computer yapalım mı? Gönderen: wizofwor üzerinde Aralık 16, 2010, 11:50:33 ÖÖ MAdem böyle bir dream machine yapılıyor, yapmışken dual SID olsun bari!
Konu Başlığı: Ynt: Homebrew 8 bit computer yapalım mı? Gönderen: wizofwor üzerinde Aralık 23, 2010, 11:35:29 ÖÖ Naçizane bir fikrim daha var. Yanlışım varsa düzeltin. Normalde SID datayı Ram'den kendi almıyor bu işi CPU yapıyor diye biliyorum. Yani SID'i çalıştırmak için CPU zamanından yiyoruz.
Bu iş için ayrı bir işlemci olsa. Blitter gibi Ram'daki belli bir alanı okuyup sürekli olarak SID'i beslese. Böylece hesaplama yapmak için daha çok zaman olur. Ama müzikle sprite hareketlerinin veya başka parametrelerin ilişkilendirilmesi gereken durumlar için CPU yine de bu mekanizmayı atlayıp SID'e direk erişebilmeli. Ne dersiniz mantıklı bir şey mi sizce? Konu Başlığı: Ynt: Homebrew 8 bit computer yapalım mı? Gönderen: hades üzerinde Aralık 23, 2010, 18:56:11 ÖS @witchdoktor
128'in şemasına baktım ama hiç birşey anlamadım. Çok karışık geldi. @wizofwor Makinada zaten dual SID olacak ama datalar için extra ram olabilirde olmayabilirde. Dediğin gibi SID'ler ayrı bir işlemci ile sürülebilir. Mesela bir PIC ile datalar ramdan okunur, SID'e gönderilir. Ama asıl problem, böyle bir makinaya kim program yazacak :):) @tolga abaci Z80-VIC-SID gibi işlemciler tek parça olarak CPLD veya FPGA gibi elemanlarla gerçekleştirilebilinirmi? Konu Başlığı: Ynt: Homebrew 8 bit computer yapalım mı? Gönderen: wizofwor üzerinde Ocak 13, 2011, 23:26:25 ÖS Aklıma şöyle bir şey geldi. Niye sürekli bilgisayar mantığıyla düşünüyoruz? Bazı özellikleri de konsollardan alabiliriz. Demek istediğim bütün verinin RAM'e yüklenmesi ihtiyacı var mı? Flash belleğe VIC direk olarak erişip datayı ordan okusa olmaz mı? Mesela x isimli oyun için x.bin ve x.vic dosyaları olsa. x.vic dosyasına vic 5. baank olarak direk erişebilse ??? Gereksiz birşey mi?
Konu Başlığı: Ynt: Homebrew 8 bit computer yapalım mı? Gönderen: hades üzerinde Şubat 16, 2011, 22:04:44 ÖS Merhabalar yine ben :)
Bugün işyerinde projeyle ilgili olarak bir fikir oluştu. Fikir tam net değildi. Her akşam yaptığım gibi işten çıkıp yürüyerek eve gelirken fikir netleşmeye başladı. Kendi kendime dedim ki :"olm hazır elinde çalışan bir sistem var. Sıfırdan karma karışık bir sistemle uğraşacağına mevcut sistem üzerinde kafanı çalıştır." Proje temelde Z80'in gücü ile VIC'in yeteneklerine sahip bir donanım olacaktı. Şöyle biraz detaylı düşününce 6510'yerine takılacak bir ek devre ile C64'ün tüm boardını kullanmak mümkün. Herşey hazır. VIC, SID, CIA's ve 64K RAM. Öylesine hazır bir yapı varki yapmam gereken sadece 6510'un AEC ve RDY hatlarına gelen sinyalleri kontrol edip C64'ü Z80'e IO bölgesi olarak göstermek ve 1 numaralı adreside IO portu olarak gerçekleştirip /LORAM, /HIRAM ve /CHAREN sinyallerini üreterek C64'ün Basıc ve Kernal romlarını devre dışı bırakmak. Böylece C64'ün hafızası Z80 tarafından In/Out komutlarıyla erişilebilen (60K RAM ve 4K IO chips (4K Karakter Rom)) hazır bir yapı haline geliyor. 6510 yerine takılacak ek devrede Z80, ROM, RAM ve adres decoderler olacak. Geriye /NMI ve /IRQ bağlantıları kalıyor. Kernal romdaki bazı temel rutinleri -Klavye tarama gibi- Z80'e göre yeniden yazmak ise işin çerez kısmı :) (Biraz geniş düşününce C64'ün kernalinin işe yarayan kısımlarının tamamen Z80'e göre yazılması durumunda canavar gibi bir makina ortaya çıkabilir) Bu arada $DE00-$DFFF arası IO bölgeside RTC,SD/MMC,HDD gibi uygulamalar için expansion port kullanılabilir. Neyse kafanızı fazla karıştırmadan uzaklaşayım. (Unuttuğum kısımlar olabilir.) Konu Başlığı: Ynt: Homebrew 8 bit computer yapalım mı? Gönderen: witchdoktor üzerinde Şubat 17, 2011, 14:16:48 ÖS Bu kadar dolaylı bir kullanım, birçok Z80 komutunun hantallığı ile birleşince yeterli bir performans artışı sağlanabilecek mi? Bitmap bellek dizilimi olarak C64 zaten sorunlu, bir de I/O port okuma yazmaları ile ek bir CPU yükü gelecek. Bu tasarım sadece SID çipi, karakter tabanlı ekran modları ve sprite kullanımı açısından işe yarar gibi. Interrupt'lar ve 'cycle exact' VIC trick'lerini muhtemelen unutmak gerekecek (veya bu kar-zarar hesabını yaptıysan Z80'den gerçek kazanımlar ne olacak senden dinleyelim). Ama yine de Z80 ile C64 donanımını birleştirmek heyecan verici olacaktır.
Konu Başlığı: Ynt: Homebrew 8 bit computer yapalım mı? Gönderen: hades üzerinde Temmuz 07, 2011, 21:34:40 ÖS Topic hortlatma servisi iş başında :)
Vakit buldukça ilgilendiğim Z80-C64 karışımı cihaz ile ilgili olarak bugün bir çalışma yaptım. Elimdeki malzemelerle minimum bir sistem kurdum. Delikli plakete kablolarla yaptığım devre şu an için çalışıyor gözüküyor. RR ile yazdığım Z80 kod datalarını $0000'a aktarıp kart üzerindeki jumperler ile 6502'yi disable Z80'i enable edince ekrandaki görüntü değişti. Tekrar 6502 enable Z80 disable edince c64'ün önceki görüntüsü geri geldi. Bazen kilitneme yapıyor ama daha yolun başındayım. Bu arada ilk denemelerimde C64 açılmadı. Adres ve data bus kablolarını tamamen söküp tek tek lehimleyerek kontrol ettim. D6 hattını bağlayınca C64 açılmıyor. Z80'i sökünce görüntü geliyor. Z80'i değiştirdim C64 açıldı. Şu anda deneme amaçlı olarak C64'ün ramını kullanıyorum. Z80 kartında 8K Ram var. Z80 clock işareti olarak expansion porttaki yaklaşık 8MHz işareti kullanıyor. |