HARDWARE DERSANESİ
Retro bilgisayargi, register'lara gitmeden önce bir adres decoder'dan geçer.
Clock Girişleri CCK, 7M: Denise'in zamanlaması CCK clock girişiyle sabitlenmiştir. CCK clock Fat Agnus'ta üretilir. Buradan da Denise'e gelir. 7M hattındaki sinyal 7 MHz'dir (7.15909 MHz). Denise bu saat girişlerine, pixelleri ekrana düzenli bir şekilde sürebilmek için ihtiyaç duyar.

Çıkış Sinyalleri RO-3, GO-3, BO-3, ZD ve BURST: Bu çıkış sinyalleri, Denise'in RGB çıkışını belirtir. Bu çıkışlar dijitaldir. Daha sonra bunlar bir bufferdan geçer ve dijital analog dönüştürücülerle Analog RGB sinyaline dönüştürülüp, RGB port'a gönderilirler. Bazı video mixerler, bu RGB renkleri tek bir hat üzerinden isterler. Bunun için BURST denilen sinyale ihtiyaç duyarlar. Burst yine Denise tarafından üretilen bir frekans olup, CCK clockla eşdeğerdir (3.58 MHz). Son çıkış ise ZD sinyalidir. Bu, Amiga'nın Genlock'la beraber kullanılmasında o andaki görüntünün video mu yoksa Amiga görüntüsü mü olacağını belirleyen çıkıştır.
Mouse/Joystick girişleri MOH, MIH, MOV, MIV: Bu dört giriş, doğrudan mouse ve joystick portlarına bağlıdır. Buradan mouse'un yatay ve dikey hareketleri, Denise içindeki sayıcılara iletilir.
8364 PAULA
Paula'nın başlıca görevi, giriş/çıkışları kontrol altında tutmaktır. Bu giriş çıkışlar; Disket I/O, Serial I/O, ve ses çıkışları olarak ana bir temel altında toplanabilir. Ayrıca bunlara ilave olarak, Paula bütün interrupt'ları kendi kontrolü altında tutar. System içinde oluşan interrupt'lar, Paula'dan geçerler. Normalde ondört adet olan interrupt'lar Paula tarafından 6 seviyeye ayrılırlar. Bunlar 68000'e bağlı IPL hatlarına iletilen 3 seviyeli interrupt'lardır. Ayrıca Paula kullanıcıya bu interrupt'ları istediği gibi işleme ve maskeleme imkanını da sağlar. Paula'nın disk data transferi ve ses çıkışları DMA kontrolündedir. Datalar diskten transfer edileceği zaman, bir sonraki data word'ünün Agnus'un oluşturduğu DMA transferi için hazır olup olmadığı her zaman belli olmayabilir. Bu genelde drive'ların hızlarındaki değişimden kaynaklanan bir olgudur. Aynı şey ses çıkışı içinde geçerlidir. Agnus bir sonraki ses datasının, yumuşak bir ses geçişi yapmak için, ne zaman gerekli olduğunu bilemez. İşte bu hataları önlemek için Paula disk ve ses bilgilerinin kontrolünü elinde tutar ve Agnus'a DMA hattının hazır olduğunu bildirmek için DMAL hattından bir sinyal gönderir. Serial iletim haberleşmesi için Paula içinde bir UART bileşeni bulunmaktadır. (Universal Asynchronous Receive Transmit). UART'ın ses kanallarının ve analog port'ların incelenmesini daha sonra, Custom chiplerin programlanması ve Hardware Assembler bölümlerinde ele alacağız.

Şimdi Paula'nın pinlerinin işlevlerini inceleyelim. Data Bus D0-15: Öteki chiplerde olduğu gibi, bunlar da Chip Data Bus'ına bağlanmıştır.
Register Adres Bus RGA1-8: Denise'da olduğu gibidir. Clock Sinyalleri ve Reset CCK, CCKQ, RES: Paula, Agnus'la aynı clock sinyallerine sahiptir. Reset hattı RES chip'e başlangıç durumu almasını haber verir.
DMA isteği DMAL: Bu hatla Paula Agnus'a DMA transferi yapması gerektiğini bildirir. Ses çıkışları AUDL, AUDR: AUDL ve AUDR (AUDIO Left, AUDIO Right), Paula'nın oluşturduğu ses sinyallerini yerleştirdiği analog çıkışlardır. AUDL, 0 ve 3 no'lu ses kanallarını, AUDR ise 1 ve 2 nolu ses kanallarını taşırlar.
Serial Arabirim Hatları TXD, RXD: RXD (Receive Data) serial giriş. TXD (Transmit Data) ise serial çıkıştır. Bunlar direk olarak UART'a bağlıdırlar. Normalde bu hatlar TTL uyumludurlar, yani seviyeleri 0-5 volt arasındadır. Ancak daha sonra bir çevirici vasıtasıyla +12/-5 volt seviyelerine çevrilerek RS-232 standardına uygun hale getirilirler.
Analog Girişler POT0X, POT0Y, POT1X, POT1Y: POT0X ve POT0Y girişleri, 0 nolu Joystick portuna, POT1X ve POT1Y girişleri ise 1 nolu Joystick portuna bağlanmıştır. Paddle'lar ve Analog Joystickler bu girişlere bağlanırlar. Bu araçlar Potansiyometre denilen, değişken dirençli elemanlardan oluşurlar ve çıkışları Joystick portundaki 5 volt ve POT girişlerine bağlanır. Paula bu direnç değişimlerini ölçer ve içindeki registerlara yazar. POT girişleri, ayrıca software üzerinden çıkış olarak da belirlenebilirler.
Disk Hatları DKRD, DKWD, DKWE: Paula, DKRD (DisKette ReaD) hattı vasıtasıyla diskten gelen bilgiyi okur ve DKWD (DisKette Write) hattıyla da hafızadaki bilgiyi, diskete yazar. DKWE (DisK Write Enable) hattı drive'a bilgi yazılmasına izin verir.
Interrupt Hatları INT2, INT3, INT6 ve IPL0, IPL1, IPL2: Paula gerekli interrupt isteklerini, INT hatlarından alır. Buradan gelen bilgilere göre o seviyede bir interrupt yaratır. INT2 hattı normalde CIA-A-8520'ye bağlıdır. Bu hat ayrıca Expansion Port'a ve serial port'a da bağlıdır. Eğer bu hatlardan herhangi biri Low seviyede olursa, Paula 2. seviyeden bir interrupt yaratır. INT3 hattı Agnus'a ve INT6 hattı ise CIA-B ve Expansion port'a bağlıdırlar. Diğer seviyedeki interrupt'lar, Paula'nın içinde üretilmektedir.
IPL0-IPL2 hatları, direk olarak 68000'e bağlıdır. Paula bu hatları, 68000'den istediği seviyede interrupt almak için kullanır.
Custom chiplerin işlevleri genel olarak bu kadar. Gelecek aydan itibaren Hardware programlamayı öğrenmeye geçeceğiz.
Bu ay size ufak bir Hardware programı sunuyoruz. Bu program Agnus, Denise ve Peripheral register'ları kullanarak ekranda renk değişimi olmasını sağlıyor. Programı Seka, MasterSeka veya AsmOne serisi assembler'lardan herhangi biri vasıtasıyla yazabilirsiniz. Başla:
Move.l $4.a6
;ExecBase
Jsr
-132(a6) ;Forbid
RasterBekle:
Cmpi.b #$ff,$dff006 ;256 nolu satırda elektron ışınını
Bne RasterBekle ;bekle (agnus)
Move.w#$0f0f,$dffl80;Arkaplan rengini değiştir.(Denise)
Move.l #1000,d0
Gecikme:
Dbra d0,Gecikme ; 1000 birim bekle
Move.w #$0000,$dff 180 ;ArkaPlan rengini siyah yap.
Btst #6,$bfe001 ;Mouse basılı mı ?
Bne RasterBekle ;Hayır, Rasterbekleye dön.
Jsr
-138(a6) :Permit
Clr.l d0
Rts
Bu programda Exec.Library'den iki adet komut kullandık; bun-
lar Forbid ve Permittir. Forbid Bütün taskları ve interruptları ka-
patır ve sistemi bizim himayemize bırakır. Permit komutu ise sis-
teme geri döneceğimiz zaman taskların ve interruptların eski du-
rumlarını almasını sağlar.
$dff006 adresi, VHPOSR (Vertical And Horizontal Beam Position) bir Agnus register'ıdır. Bu register ekranı tarayan elektron ışınının o anda yatay ve dikey olarak hangi konumda olduğu bilgisini içerir. Biz, son satır olan 256'ya kadar bekliyoruz. Bu sırada copper ekran düzenlemesini yapıyor. Bu satırdan sonra, elektron ışını tekrar 0 nolu satıra dönüyor. Biz bu ikisi arasında geçen süre içinde, bir Denise renk register'ı olan $dff180 (COLOR00 Color Palette Register 0) vasıtasıyla ekran rengini değiştiriyoruz. Burada girilen bilgi $0RGB formatındadır. Biz Red ve Blue bileşenlerini maksimum yapıp, eflatun rengini elde ediyoruz. Daha sonra bu rengin ekranda belli bir süre kalması için 1000'e kadar sayıyoruz. Aynı şekilde COLOR00 register'ına siyah ($0000) girerek ekranı karartıyoruz. $bfe001 Peripheral register'ının 6 nolu bitinden, mouse'un sol tuşunun basılı olup olmadığını öğreniyoruz. Tuş basılı değilse işlemlere baştan başlayıp devam ediyoruz. Eğer basılıysa interrupt'ları eski haline döndürüp programdan sisteme geri dönüyoruz. Bu programın, custom chiplerin register'larına nasıl ulaşılacağı ve bunların nasıl programlanacağı konusunda bir parça olsun genel bilgi verdiğini umuyoruz.
Yine aynı sayfada görüşmek dileğiyle, sevgilerimizi sunuyoruz.