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.trCommodoreCommodore Donanımc64 ramda registerların gölgesi nasıl oluşuyor?
Sayfa: [1]   Aşağı git
Yazdır
Gönderen Konu: c64 ramda registerların gölgesi nasıl oluşuyor?  (Okunma Sayısı 496 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
Cyr
Üye
**
Mesaj Sayısı: 41



Üyelik Bilgileri
« : Nisan 07, 2020, 14:13:46 ÖS »

commodore dergisi 13. sayısında stereo sid yazısında, a5 adresyolunu çip seçimi için kullanıyor. $d400(54272) sid1 için registerların başlağıdı adres 32bayt altı da $d420(54304) sid2 için registerlerın başladığı adres.
C64 şematiği inceleyip adres yollarını takip ederek baya bişey anladım ama bu registerların 32 baytta bir ramde nasıl tekrar ettiğini bana biri açıklayabilir mi?


Logged
wizofwor
Genel Yönetici
*****
Mesaj Sayısı: 4.219


Gosub ile gidilen yerden goto ile dönen adam


Üyelik Bilgileri WWW
« Yanıtla #1 : Nisan 07, 2020, 16:15:42 ÖS »

Commodore 64 donanıma erişmek için memory mapped I/O sistemini kullanıyor. Bu sistemde belli bellek adresleri özel çiplerin yazmaçlara ayrılmış durumda. Bu adreslere eriştiğimizde aslında RAM'e değil ilgili çipin yazmaçlarını okuyor veya yazıyoruz. Aynı zamanda kullanılan ROM'lar RAM'in üzerine maplanmiş durumda. İhtiyacımız olmayan ROM'ları hatta I/O alanlarını kapatarak altında kalan RAM'e erişebiliyoruz. Bellek yerleşimli giriş çıkışların hangi bellek adresine atanması işini PLA hallediyor. Bellek yapısını 6510'un veri portu ve CIA'ların port direction yazmaçlarını kullanarak yönlendiriyoruz.

Tahminin SID için en başta bir blokluk alan ayırdılar. Nihai tasarımda da böyle bir alana ihtiyaç olamamasına rağmen bu şekilde kaldı. Bu atıl alanı da SID yazmaçların görüntüsüyle  dolurdular. Sonuçta buradaki 997 byte belleğe ihtiyaç duyulursa I/O alanı komple kapatılıp altındaki RAM'e ulaşabiliyoruz.

Compute Magazine'de şöyle birşey buldum. Röportajda bellek yapısının basit olması için özellikle böyle yapıldığı söylenmiş.

Alıntı sahibi: COMPUTE! ISSUE 47 / APRIL 1984 / PAGE 108
64 SID Register Images

In the 64 memory map there is a sizable chunk of memory labeled "SID Images" ($D500–$D7FF). Presumably the audio synthesizer needs this memory to function, but no explanation is offered by any manual. Could this memory be used to further manipulate SID or is it strictly hands-off?

Rob House

The 64 uses a method known as memory-mapped I/O to let you access a hardware chip's registers with PEEK and POKE (or load and store in machine language). This is convenient and fast, but some portion of your computer's memory must be dedicated to the chip. No actual memory (RAM or ROM) is used or needed, but the memory addresses are set aside for the chip's use only. The SID chip has only 26 registers, but to make interfacing easy, Commodore allocated it IK of address space. It's a quirk of the interface chips which causes "reflections" of the SID chip's actual registers to appear from $D500–$D7FF. You can read or change these locations, and they will be redirected to the SID chip. This is not recommended simply because it is nonstandard–no one else, perhaps even you at a later date, will be able to figure out why you are POKEing to these image locations. Also, there is RAM beneath the ROMs and hardware chips, so you can switch out the SID chip to make full use of the underlying IK of RAM if you want

TL:DR

Kullanımı basit olması için böyle yapmışlar. Bellek yerleşimlerini PLA çipi hallediyor.
Logged

Cyr
Üye
**
Mesaj Sayısı: 41



Üyelik Bilgileri
« Yanıtla #2 : Nisan 07, 2020, 17:20:51 ÖS »

" Bu adreslere eriştiğimizde aslında RAM'e değil ilgili çipin yazmaçlarını okuyor veya yazıyoruz"

bu püf noktasını kaçırmışım, çok teşekkürler abi detaylı anlatım için.

A10 ve A11 adresleri Vic,sid,colorram,cialar arasında chip select yapıyor, a9 a kadar kalan 10bit içinden a0-a1-a2-a3-a4 sadece Sid çipine gidiyor. a5-a6-a7-a8-a9 boş kalıyor. Stereo sid projesinde a5'i iki sid arasından chip select yaptırıyor.

ram den bilgiliyi alıyormuş gibi düşünmüştüm, şimdi açıklığa kavuştu.
Logged
witchdoktor
Uzman
*****
Mesaj Sayısı: 4.861



Üyelik Bilgileri
« Yanıtla #3 : Nisan 07, 2020, 20:25:30 ÖS »

Donanımsal, memory bus yapısını bilmiyorum ama SID çipi çoklu kullanım hedeflenerek tasarlandığı için bu zaruri bir durum zaten. En çok kullanılan 2 SID (dual) konfigürasyonunda her 64 byte'tın ilk kısmı ilk SID, kalanı ikinci SID'in yazmaçları. Triple veya quadruple SID konfigürasyonu da teorik olarak mümkün.
Logged
Cyr
Üye
**
Mesaj Sayısı: 41



Üyelik Bilgileri
« Yanıtla #4 : Nisan 07, 2020, 22:21:08 ÖS »

evet hocam çok daha fazla sid çipi kullanılabilir. 64byte değil ama 5 adresi var, 32 byte adresleyebiliyor, 29 adet register var. bellek haritasında da gösterildiği gibi, A0-A9 1024 byte sid için ayrılmış, yani 32 adet sid çipi kullanılabilir teorik olarak.
Logged
witchdoktor
Uzman
*****
Mesaj Sayısı: 4.861



Üyelik Bilgileri
« Yanıtla #5 : Nisan 07, 2020, 23:13:27 ÖS »

2 sid çipi kullandığınızda toplam 64 byte'ın shadow copy'leri sıralanıyor. Muhtemelen PLA çipinin de payı vardır.
Logged
Sayfa: [1]   Yukarı git
Yazdır
Gitmek istediğiniz yer: