Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.

Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz

  Gelişmiş Arama
insanın içinde varsa, commodore.gen.tr açığa çıkarır bunu.. bir nevi retro olaylarının dolunayıyız.(Arda)
commodore.gen.trGenel KategoriGenel SohbetHomebrew 8 bit computer yapalım mı?
Sayfa: [1] 2   Aşağı git
Yazdır
Gönderen Konu: Homebrew 8 bit computer yapalım mı?  (Okunma Sayısı 13950 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
hades
Üye
****
Mesaj Sayısı: 394



Üyelik Bilgileri
« : 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
 
« Son Düzenleme: Aralık 14, 2010, 23:53:50 ÖS Gönderen: hades » Logged
Skate
Uzman
*****
Mesaj Sayısı: 1.479


A Sinner Scener


Üyelik Bilgileri WWW
« Yanıtla #1 : 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). 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.
Logged
tolga abaci
Uzman
*****
Mesaj Sayısı: 641



Üyelik Bilgileri
« Yanıtla #2 : 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.
Logged

"Finished products are for decadent minds." -- attributed to Hari Seldon, in Isaac Asimov's Second Foundation.
coze
Uzman
*****
Mesaj Sayısı: 1.672


Hieh hieh hieh heh ...


Üyelik Bilgileri WWW
« Yanıtla #3 : Aralık 15, 2010, 09:43:54 ÖÖ »

http://www.retroleum.co.uk/v6z80p/
Logged

Retro Hincal Uluc
endo64
Üye
***
Mesaj Sayısı: 89


Üyelik Bilgileri
« Yanıtla #4 : Aralık 15, 2010, 14:01:53 ÖS »



harbiden adamlar hades'in tarif ettiğini yapmış neredeyse.

@skate: sen de Amiga'yı tarif etmişsin Kral demonu bekliyoruz Amiga'da
Logged
Skate
Uzman
*****
Mesaj Sayısı: 1.479


A Sinner Scener


Üyelik Bilgileri WWW
« Yanıtla #5 : 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)
« Son Düzenleme: Aralık 15, 2010, 15:05:12 ÖS Gönderen: Skate » Logged
nightlord
Uzman
*****
Mesaj Sayısı: 558



Üyelik Bilgileri WWW
« Yanıtla #6 : 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)
Logged
hades
Üye
****
Mesaj Sayısı: 394



Üyelik Bilgileri
« Yanıtla #7 : 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...
« Son Düzenleme: Aralık 15, 2010, 22:48:02 ÖS Gönderen: hades » Logged
nightlord
Uzman
*****
Mesaj Sayısı: 558



Üyelik Bilgileri WWW
« Yanıtla #8 : 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?
Logged
hades
Üye
****
Mesaj Sayısı: 394



Üyelik Bilgileri
« Yanıtla #9 : 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.
Logged
hades
Üye
****
Mesaj Sayısı: 394



Üyelik Bilgileri
« Yanıtla #10 : Aralık 15, 2010, 23:27:59 ÖS »

Skate, GTIA - VIC arasındaki farklar neler?
Logged
Gökçe Bozkurt
Deneyimli
*****
Mesaj Sayısı: 2.968


Nigripinis


Üyelik Bilgileri WWW
« Yanıtla #11 : Aralık 15, 2010, 23:59:00 ÖS »

Agalar nece konuşuyorsunuz siz yaw ?
Logged

A4000|FastlaneZ3|RetinaZ3|Tandem Ide|CF
A2000|G-Force 040/33|Cybervision64-3D|
A2000|Mobo|GVP HX-2000-II|Supra 8Mb
A2000|Mobo|8Up!6Mb
A1200|PPC 040/25/200|Mediator Sx|Vodoo4500|256Mb
A1200|Hawk 8Mb|CF
A1200|Mobo|Elbox 4Mb
A600|ACA030|Indivision ECS|A604|CF
A600|Mobo|A
toddler
Uzman
*****
Mesaj Sayısı: 1.396



Üyelik Bilgileri
« Yanıtla #12 : Aralık 16, 2010, 00:11:37 ÖÖ »

Agalar nece konuşuyorsunuz siz yaw ?

Al bendende o kadar   
Logged

C64|C|G|C128|1541U2
A500|A500+|Slim SDHxC|Gotek
A600|FuriaEC020 33MHz+FPU 40Mhz
A1200|BPPC|BVision|64MB Ram|3Com Eth.
A1200|ACA1230/56Mhz 64MB|IndivisionAGA MK2cr|RapidRoad USB|FastATA 1200 MK-V|Netgear MA401
Dingoo A320(OpenDingux)
Pandora(First Batch)
RaspberryPi 1-2-3
BananaPi/Pro
newzort
Üye
***
Mesaj Sayısı: 175



Üyelik Bilgileri
« Yanıtla #13 : Aralık 16, 2010, 00:24:19 ÖÖ »

babalar konuşmuş susup dinleyelim bence 
Logged

A500,A500+,A1200,C64,C64C,C64G,NES,SNES,ATARİ2600,N64,XBOX360
Skate
Uzman
*****
Mesaj Sayısı: 1.479


A Sinner Scener


Üyelik Bilgileri WWW
« Yanıtla #14 : 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.
Logged
Sayfa: [1] 2   Yukarı git
Yazdır
Gitmek istediğiniz yer: