6569 ÜZERİNE NOTLAR
Bu yazımızda genelde CRTC (Cathode Ray Tube Controller) olarak adlandırılan ekran kontrol yongalarını (chip) özelde ise C-64'te kullanılan ve 6569 kod numarası ile bilinen VIC (Video Interface Controller) yongasını inceleyeceğiz.
Katod ışınlı tüp teknolojisi, ucuzluk, üretim kolaylığı ve teknolojisinin yaygınlığı sayesinde bugün konvansiyonel görüntüleme teknolojisinin en yaygın elemanı haline gelmiştir. CRT, önceleri gözdeki retina tabakasındaki ışık izleniminin uyarı kesildikten sonra bir süre daha uyarı varmış gibi sürmesi özelliğinden esinlenerek sinemada kullanılmıştır. Burada çekim sırasında 1 saniye içerisinde 24 resim alınıyordu. Bu resimler sonradan arka arkaya gösterilince bilindiği gibi hareket etkisi doğuyordu. Televizyon yayınlarında da benzer bir yaklaşım kullanıldı. Televizyonda görüntü, bir ekran yerine iç yüzeyi fosfor ile kaplanmış bir cam TV tüpüne (ya da CRT'ye) düşürülüyordu. Görüntü, ekranı soldan sağa tarayan elektron ışınının satır sonlarında birer satır aşağı kaydırılması ve satır taraması sırasında elektron ışınının gücü ile oynanarak görüntüyü oluşturacak şekilde fosfor parlaklığının değiştirilmesi (modüle edilmesi) ile elde ediliyordu. Fakat elektromanyetik spektrumda TV yayınına 5 MHz civarında bir bant genişliği tespit edilince, geçmeli tarama yöntemini kullanmak zorunlu hale geldi. Bu yöntemde görüntüyü oluşturan 625 satırın önce tek sayılı (1,3,5....) 312.5 satırı ilk çerçeve olarak, sonra çift sayılı (2,4,6....) 312.5 satırı 2. çerçeve olarak gösteriliyordu.
Böylece saniyede gösterilen 50 resmin etkisi bu “iki defa gösterme” nedeniyle etkin olarak 25 resim etkisine indirgeniyordu. Bu yaklaşım ise beraberinde kırpışma etkisini getirdi. Zamanla gelişen bilgisayar teknolojisi yaygın görüntü ünitelerine ihtiyaç duymaya başlayınca CRT teknolojisi bu alana adapte edildi. Kırpışma etkisini azaltmak için kullanılan bir yöntem, ekranın iç yüzeyindeki fosfor kaplamanın sönüm süresini artıracak şekilde kaplamayı iyileştirmek oldu. Böylece tarama çerçevelerine yumuşak geçiş sağlandı. Elektron tüpü çerçevenin başından taramaya başlandığında, bir önceki taramanın izleri daha yeni silinmiş oluyordu. Fakat ekran başında ve ekrandan birkaç on cm. uzakta saatlerce çalışması gereken operatörler için bu hiç de tatmin edici bir çözüm değildi. Araştırmalar daha yüksek resim sayısı kullanılması, geçmesiz tarama yöntemine başvurulması ve video sinyalinin bant genişliğinin artırılması gerektiğini ortaya koydu. Gittikçe olgunlaşan VDU (Video Display Unit) görüntüleme üniteleri teknolojisi beraberinde saniyede 60 resim gösteren ve geçmesiz tarama yapan (satır sayısı 640 ve 1024 gibi rakamlara çıkmıştı) bant genişliği onlarca MHz mertebesinde (örneğin Commodore'un bir UNIX bilgisayarı olarak piyasaya sürmeyi tasarladığı, fakat sonradan projesini askıya aldığı çok kullanıcılı C-900'ün monitörünün bant genişliği 72 MHz idi) ve yüksek çözümlemeli (Hi-Res) grafik olanakları veren CRT'leri getirdi. Sonuç: Temiz, kırpışmasız ve çok kaliteli görüntü. Görüntüleme üniteleri probleminin diğer bir yönü de bu ekranların bilgisayarla uyumlu çalıştırılabilmesi için gerekli video senkronizasyon ve benzeri sinyallerin üretilmesi idi. Önceleri ayrık lojik ve analog devreler kullanılarak gerçeklenen (CRT controller) kartlar, sonraları tümleşik devreler halini aldı ve çeşitli amaçlara göre uzmanlaşmış (application specific) devreler piyasaya çıkartıldı. Bu noktada görüntüleme ünitelerinde bir sınıflamaya gitmemiz gerekiyor. Bu sınıflamayı birkaç kritere göre yapacağız. Not: Görüntüleme üniteleri kelimesi burada sürücü ve kontrol devrelerini içerecek şekilde kullanılmıştır.
A) Renk Kriteri
— Tek renk (monochrome) monitörler — Renkli (color) monitörler
B) Uygulamaya Göre
(fonksiyonel) Sınıflama
— Alfanumerik veri uçları (terminaller) — Grafik uçlar (terminaller) Bilgisayar oyunlarına yönelik görüntüleme üniteleri
Tarama Tipine Göre
Sınıflama
1- Vektör tarama (vector scan veya vector draw) 2- Satır tarama (raster scan) a. Geçmeli tarama. b. Geçmesiz tarama.
Bir görüntüleme ünitesi (VDU) tasarlanmadan önce fonksiyonel tanımı yapılıyor ve yukarıdaki kriterlere göre tasarım parametreleri belirleniyor. Bu parametrelerin bazıları CRT seçimini ve çevresindeki donanımı belirliyor, bazıları ise denetleyici (controller) kartlarının ve tümleşik devrelerinin tasarımını şekillendiriyor. Örneğin renk kriteri hem tüp seçimini hem de ilgili elektronik devre tasarımını etkiliyor. Alfanumerik veri terminallerinin denetleyici kartları, donanıma noktasal grafik desteği vermek zorunda değiller. Noktasal grafik ağırlıklı denetleyici kartları ise büyük bellek kapasitesine ihtiyaç duyuyorlar. Bilgisayar oyunlarına yönelik amaçlarla tasarlanan denetleyici devreleri C-64'te olduğu gibi sprite'ları yani tek noktası hareket ettirildiğinde tümü hareket ettirilebilen noktalar kümesinden oluşan grafik objelerini desteklemek zorundadırlar. Bütün bunlara ek olarak bazı bilgisayar üreticileri sistemin çalışması için gerekli olan destek fonksiyonlarını da (house keeping functions-örneğin bellek tazeleme ve bazı kesmeleri üretme-) denetleyici entegrelerine yüklemek eğilimindedirler. Şimdi ise piyasada yaygın olarak kullanılan CRT denetleyici (controller) tümleşik devrelerine çok kısa bir göz atalım. 1) DP 8350 (National Semiconductor firması tarafından üretilir) Genelde alfanumerik veri uçlarında kullanım için uygundur. Ekran belleğini, adresler senkron darbelerini üretir. Nokta zamanlamasını sağlar, tarama sinyallerini senkronize eder. Cursor ve scroll desteği sağlar. Işıklı kalem için provizyonu yoktur. 2) 8275 CRTC (Intel firması tarafından üretilir.) Alfanumerik terminallerde kullanıma uygundur. Çip içerisinde ekran belleği adresleme lojiği scroll lojiği ve nokta zamanlaması yoktur. Buna karşılık senkron işaretlerini, satır tarama sayıcı işaretlerini bellek erişim önceliği çözümlemesini yapar. Işıklı kalemi de destekler. İçinde iki adet 80 karakterlik tampon bellek vardır. 3) 6845 CRT denetleyicisi (Motorola firması tarafından üretilir.) Genelde alfanumerik veri terminalleri için kullanılır. Programlanabilir bir çevre birim tümleşik devresidir. Ekran belleğini adresler. Scroll lojiği vardır.
Senkron işaretlerini üretir. Tarama satırı sayaçları vardır. Işıklı kalemi destekler. Buna karşılık ekran karartma (blanking) lojiği, bellek erişiminde öncelik çözümlemesi ve nokta zamanlama lojiği yoktur. Geçmeli ve geçmesiz taramayı destekleyebilir. İçinde tampon yoktur. 4) 6545 CRT denetleyicisi (Rockwell ve Synertek firmaları tarafından üretilir.) 6845'in hemen hemen aynısıdır. Yalnız ona ek olarak karartma (blanking) lojiği, bellek öncelik çözümlemesi lojiği eklenmiştir. 5) 5. Eleman olarak Commodore'un 6569 VIC'ini inceleyeceğiz. Tümleşik devre Commodore'un sahibi olduğu MOS Technologies firması tarafından üretiliyor ve sadece C-64'te kullanılıyor. Tümleşik devrenin dizaynı bir anlamda C-64'ün felsefesini yansıtıyor. C-64'ün tasarımında çok amaçlı olması gözetilmiş. Sözcük işlemeden veri tabanına, Basic dilinde yazılmış programlardan makine dilinde yazılmış oyun programlarına kadar çok çeşitli uygulamaları desteklemesi düşünülen C-64'ün, içerisindeki donanımın da buna uygun olması gerekiyor. Buna ek olarak sistem çalışmasına yardımcı olması da istenen şeyler arasında. 6569 VIC'in iki temel görevi var: 1) Bellek tazeleme ve bellek erişim işaretlerini üretme, 2) CRT denetleyici işlevlerini yürütme. 1) C-64'ün içerisindeki RAM yongaları dinamik RAM sınıfı yongalardır. Bu tür bellekler birkaç milisaniyede bir tazeleme gerektirirler ve tazelenmezlerse 3 ila 3.5 milisaniye sonra silinirler. Bu tip RAM yongalarının çoğullamalı adres kullanmaları (multiplexed address bus) nedeniyle adresin yüksek ve alçak anlamlı byte'larını yongaya tek tek vermek (8 adet 2'ye 1 çoklayıcı kullanarak) ve bu arada gerekli zamanlarda da yongayı uyarmak gerekmektedir. C-64'te kullanılan RAM yongaları 64Kx1 bitliktir ve cihaz içinde bu yongalardan 8 adet vardır. 8 bitlik bir byte'ın her bir bit'i de böylece ayrı bir yongada saklanmış olur. Bahsettiğimiz RAM yongalarının iç organizasyonunda ise bitlerin saklandığı bellek hücreleri bir matris biçiminde gruplanmışlardır. Gerekli satır adreslerini zamanında üretmek VIC'in işidir. VIC, tazeleme işini mikroişlemcinin belleği kullanmadığı anlarda yaptığı için, sistem ça-
REGİSTER MAP
ADDRESS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 DESCRIPTION 00 ($00) M0X7 M0X6 M0X5 M0X4 M0X3 M0X2 M0X1 M0X0 MOB 0 X-position 01 ($01) M0Y7 M0Y6 M0Y5 M0Y4 M0Y3 M0Y2 M0Y1 M0Y0 MOB 0 Y-position 02 ($02) M1X7 M1X6 M1X5 M1X4 M1X3 M1X2 M1X1 M1X0 MOB 1 X-position 03 ($03) M1Y7 M1Y6 M1Y5 M1Y4 M1Y3 M1Y2 M1Y1 M1Y0 MOB 1 Y-position 04 ($04) M2X7 M2X6 M2X5 M2X4 M2X3 M2X2 M2X1 M2X0 MOB 2 X-position 05 ($05) M2Y7 M2Y6 M2Y5 M2Y4 M2Y3 M2Y2 M2Y1 M2Y0 MOB 2 Y-position 06 ($06) M3X7 M3X6 M3X5 M3X4 M3X3 M3X2 M3X1 M3X0 MOB 3 X-position 07 ($07) M3Y7 M3Y6 M3Y5 M3Y4 M3Y3 M3Y2 M3Y1 M3Y0 MOB 3 Y-position 08 ($08) M4X7 M4X6 M4X5 M4X4 M4X3 M4X2 M4X1 M4X0 MOB 4 X-position 09 ($09) M4Y7 M4Y6 M4Y5 M4Y4 M4Y3 M4Y2 M4Y1 M4Y0 MOB 4 Y-position 10 ($0A) M5X7 M5X6 M5X5 M5X4 M5X3 M5X2 M5X1 M5X0 MOB 5 X-position 11 ($0B) M5Y7 M5Y6 M5Y5 M5Y4 M5Y3 M5Y2 M5Y1 M5Y0 MOB 5 Y-position 12 ($0C) M6X7 M6X6 M6X5 M6X4 M6X3 M6X2 M6X1 M6X0 MOB 6 X-position 13 ($0D) M6Y7 M6Y6 M6Y5 M6Y4 M6Y3 M6Y2 M6Y1 M6Y0 MOB 6 Y-position 14 ($0E) M7X7 M7X6 M7X5 M7X4 M7X3 M7X2 M7X1 M7X0 MOB 7 X-position 15 ($0F) M7Y7 M7Y6 M7Y5 M7Y4 M7Y3 M7Y2 M7Y1 M7Y0 MOB 7 Y-position 16 ($10) M7X8 M6X8 M5X8 M4X8 M3X8 M2X8 M1X8 M0X8 MSB of X-position 17 ($11) RC8 ECM BMM DEN RSEL Y2 Y1 Y0 See text 18 ($12) RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 Raster register 19 ($13) LPX8 LPX7 LPX6 LPX5 LPX4 LPX3 LPX2 LPX1 Light Pen X 20 ($14) LPY7 LPY6 LPY5 LPY4 LPY3 LPY2 LPY1 LPY0 Light Pen Y 21 ($15) M7E M6E M5E M4E M3E M2E M1E M0E MOB Enable 22 ($16) — RES MCM CSEL X2 X1 X0 See text 23 ($17) M7YE M6YE M5YE M4YE M3YE M2YE M1YE M0YE MOB Y-expand lışmasını yavaşlatmaz ve etkilemez. 2) Gelelim görüntünün ekranda oluşturulmasına. VIC'in katkılarına ya da bir CRT denetleyicisi olarak 6569'a 6569'un çalışma modlarını şöyle şematize edebiliriz.
VIC tarafından yönetilir. Sıra adresi verilince VIC RAS (Row address strobe-satır adresi darbesi) sinyalini, sütun adresi verilince VIC CAS (column address strobe-sütun adresi darbesi) sinyalini üretir. Tüm bu olaylar
6569
Karakter Modu Grafik Modu (Character Display mode) (Bit Map Mode) | | | |
Standart Çok renklik Genişletilmiş Standart bit — Çok renkli bir karakter karakter renk modu Map modu map modu modu modu
256 ile 256'yı çarparsanız sonucun 65536 olduğunu bulursunuz. Yani her bir RAM yongası 256x256'lık bir matristir. Mikroişlemcinin ürettiği 16 bitlik adres alçak ve yüksek anlamlı olmak üzere ikiye ayrılır ve bu matrisin sekizer bitlik satır ve sütun adresleri olarak kullanılırlar. (Bellek yongası üzerinde 8 bitlik adres girişi vardır.) 2'ye 1 çoklayıcılar sırayla satır ve sütun adreslerini verir. Çoklayıcılar bir bellek erişimi sırasında, yani 450 ila 500 nanosaniye içersinde olur. Bu anlatılanlar normal bellek erişimi ile ilgili idi. Bellek tazeleme ise biraz farklıdır. Sadece sadır adresi ve RAS sinyali gönderilerek tüm satır bir anda tazelenebilir. İşte bu RAS ve CAS sinyalleri ile karakter ve grafik modlarına ek olarak oyun programlarının yazılmasını kolaylaştırak için tasarlanmış olan sprite işlemlerine de donanım desteği verir. Görüldüğü gibi karakter display modu normal veri işlem programlarına grafik modu ve sprite donanımı da oyun programlarına donanım desteği sağlar. Gelelim VIC'in iç yapısına. Reference Guide'ın 454 ve 455. sahifelerinde 6569'un saklayıcılarının bir dökümü verilmiş.
6569 toplam olarak 16K adresleyebiliyor. Daha fazla bellek adresleyebilmek ve içerisinde 47 adet kontrol saklayıcısı var. VIC'in çalışmasını anlatırken, bunların fonksiyonlarına da değineceğiz.
Önce karakter gösterim modu'nu inceleyeceğiz. VIC bu modda 1000 byte'lik ekran belleğindeki karakter işaretçilerini (karakter kodlarını) alır ve bunları, ait oldukları karakterlerin nokta kodlarının saklandığı 2048 byte'lık nokta tablosunu gösterecek şekilde dönüştürür. Her karakter 8 x8 noktadan oluştuğu için 8 byte'lık bir yer işgal eder. 256 karakter ise toplam 2048 byte'lik yer doldurur.
VIC'in 16K'lık bellek adresleyebilmek için 14 bitlik bir adres üretmeye
24 ($18) VMİC CBİ3 CBİ2 CBİl — Memory Pointers
25 ($19) — — — İnterrupt Register
26 ($IA) — — — — EMBC ERST Enable İnterrupt
27 ($1B) M&DP M5DP M3DP M2DP MODP MOB-DATA Priority
28 ($1C) MZMC MEMC M5MC M4MC MİMC MOMC MOB Mülticolor Sel
29 ($1D) M6XE M5XE MA4XE M3XE M2XE MİXE MOXE MOB X-expand
30 MEM M5SM MAM M3M MM MİM MOM MOB-MOB Collision
31 M7D MED M5D MAD M3D M2D MİD MOD MOB-DATA Collision
32 ($20) > — ECO Exterior Color
33 ($21) — — — — Boc2 Boci BOCO Bkgd #0 Color
34 ($22) — — — — Bic2 BİCİ #1 Color
35 ($23) — — — — B2c2 B2CO Bkgd #2 Color
36 ($24) — — — — B3c2 B3CO Bkgd #3 Color
37 ($25) — — — — MM02 MMO MMOO MOB #O
38 ($26) — — — —, MOB Mülticolor #1
39 ($27) — — — — Moc2 Moci MOCO MOB O Color
40 ($28) — — — — MIC3 MİCİ MİCO MOB 1 Color
41 ($29) — — — — M2c2 M2CO MOB 2 Color
42 ($2A) — — — — M3c2 M3CO MOB 3 Color
43 ($2B) — — — Mâc2 MA4Cİ M4CO MOB 4 Color
44 ($2C) — — — — M5c2 M5Cİ M5CO MOB 5 Color
45 ($2D) — — — — Möc2 M6CO MOB 6 Color
46 ($2E) — — — M7C2 MZCİ MZCO MOB 7 Color
NOTE: A dash indicates a no connect. All no connects are read as a “1.”
Lİ
(2*-16K) ihiyacı vardır. 14 bitlik adresin 1000 byte'lık ekran belleğini aramak için gerekli olan 10 bit'lik kısmı dahili bir sayıcı tarafından sağlanır. Ekran belleğinin 10K'lık bellek içinde nerede yer aldığını ise 24 no.lu saklayıcının yüksek anlamlı 4 biti (VM13,VM12,VM11,VM10) belirler. (Bkz. Reference Guide Sh. 436 Character pointer address.) Bundan sonra VIC'in yapması gerekli iş bu 14 bitlik adresi kullanarak ekran belleğinden elde ettiği karakter işaretçilerini karakter nokta kodlarının saklandığı tablodan; daha önce de bahsettiğimiz gibi her karakter için 8 byte olmak üzere 256 karakter için 4048 byte yer kullanılır. Bilindiği gibi C-64 dışarı normal video işareti verir. Bu işaret normal TV setlerindeki seçmeli tarama yöntemine uygundur. Dolayısıyla ekrandaki 40 karakterlik her karakter satırı 8 adet video tarama satırından oluşur. VIC ise her karakter satırının ilk tarama satırının taranması sırasında o satırdaki karakterlerin 8 byte'lik karakter nokta kodlarının ilk byte'ını ikinci tarama satırında ise ikinci byte'ını okur. Bu olay 8 tarama satırı taranana kadar sürer. Karakter nokta adreslerinin oluşturulmasını anlatırken, bu nokta biraz daha açıklığa kavuşacaktır. 2K'lık bellek adreslemek için 11 bit adrese ihtiyacımız var demiştik. (Bkz. Ref. Guide Sh. 437-Character Data Address.) Bu 11 bitin yüksek anlamlı 8 biti daha önce ekran belleğinden okunan karakter işaretçisi tarafından belirlenir. O karaktere ait olan 8 byte'lik bloğun 14 bitlik başlangıç adresini bulmak ve sırayla bu 8 byte'i bellekten okumak şöyle yapılır. Karakter kodlarının saklandığı 2K'lık bloğun 16K'lık bellek için nerede yer aldığını belirlemek için 3 bite ihtiyacımız vardır. (2-8) 8x2k-16K dolayısıyla 16 k içinde teorik olarak 8 adet karakter seti tanımlamak mümkündür. Fakat pratikte bazı sınırlamalar vardır). Bu 3 bit 24 no.lu saklayıcının alçak anlamlı 3 bitinden (CB13, CBll, Bkz. Sh. 455) elde edilir. 2 K'lık belleği adresleyebilmek için de 11 bitlik adrese ihtiyacımız vardır.
(2! —2048)
Alçak anlamlı 3 bit ise dahali bir ta- Tama satır sayıcısı tarafından belirlenir. (2'-8) 3 bit ile her karakter için 8 satır veya 8 byte'lık bilgi edilebilir. Bu 3 bitlik tarama satır sayıcısı her karakter satırının ilk tarama satırında 0 olur ve her tarama satırında | artırılarak O karakter satırının son tarama satırında 7'ye (111) eşit olur. Bina ilaveten 8 bitlik her ekran bellek gözüne bağımlı olarak 4 bitlik bir renk bilgisi de renk belleğinde saklanır. Renk belleği | K'lıktır. Dolayısıyla ekran belleği aslında 8 değil 12 bit genişliğindedir. Daha önce belirttiğimiz gibi VIC'- in çeşitli çalışma modları var. Bunlardan herhangi birinin seçilmesi saklayıcılardaki 3 bitin uygun olarak | veya O yapılması ile olur. Bunlar (Bkz. Şekiller) ECM (Extended Colar Saklayıcı 17 Bit 6 BMM (Bit map mode) — Saklayıcı 17 Bit 5 MCM (Multi color mode) — Saklayıcı 22 Bit 4 Aşağıdaki tablo mod seçiminde yardımcı olabilir.
MCM BMM ECM
0 0 O Standart Karakter Modu
0 Çok Renkli Karakter Modu 1 Genişletilmiş Renk Modu © Standart Bit Map Modu © Çok Renkli Bit Map Modu
(Dikkat ECM ve MCM bitleri aynı anda 1 yapılmamalıdır.) Tüm karakter display bit map modları ve sprite'ların yönetilmesi için gerekli bilgileri yakında çıkacak olan Reference Guide'ın Türkçe çevirisinde 6569 kısmında bulabilirsiniz.
-o0- --00