Bu sayfadaki yazılar
Sayfanın metni
Sayfa 43
Merhaba... Bu ay PSET komutu ile AmigaBasic komutlarını incelemeyi sürdüreceğiz.
PSET KOMUTU: Kullanım Şekli: PSET [STEP] (x,y) [renk-no] Bu komut, o an aktif olan çıktı penceresinin x ve y koordinatlarına renk-no ile belirtilen renkte bir pixel (nokta) yerleştirir. x,y koordinatlarının sınırı, ekran moduna ve pencere genişliğine bağlı olarak verilmelidir ve normal olarak mutlak bir pixel yerleşimidir. STEP opsiyonu kullanılırsa, x ve y koordinatları son çizim noktasına oranlanarak hesaplanır, renk-no kullanılırsa, pixel bu renkte çizilir; verilmezse, PSET tanımlı önzemin rengini kullanır. Renk numarası, 0'dan 31'e kadar bir sayı ile yine ekran moduna bağlı olarak verilir.
Aşağıdaki örnek, rasgele noktalar tespit edip bin tane yıldız çizer:
FOR 1=1 TO 1000
x=INT(RND*620) y=INT(RND*200) PSET(x,y) NEXT I
PTAB KOMUTU: Kullanım Şekli: PRINT PTAB(x) Bu fonksiyon, yazı pozisyonunu bulunduğu pozisyonda yatay olarak x. pixele kaydırır ve sadece PRINT yönergesi ile kullanılır. x, 0-32767 sınırları arasında bir sayı olabilir. 0, satırın en sol pozisyonunu ifade eder.
PTAB, TAB gibi çalışır; fakat TAB karakter pozisyonunu verirken, PTAB pixel pozisyonunu ayarlar.
FOR x=0 to 100 PRINT PTAB(x);"Merhaba!" NEXT x
örneğini çalıştırın ve sonucu görün.
PUT KOMUTU: Kullanım Şekli: 1. PUT [#] dosya-no [,kayıt-no] 2. PUT [STEP](x,y),dizi[(indeks[,indeks .....])] [,yerleştirme-modu]
Bu komutun birinci kullanım şekli ile, bir rasgele erişimli dosyaya buffer'dan kayıt yazabilir; ikinci kullanım şekliyle de GET yönergesi ile elde edilmiş grafik resmi ekrana çizdirebilirsiniz. Bu iki kullanım şeklinden birincisi "Random File PUT", ikincisi "Screen PUT" olarak adlandırılır. Her iki kullanımı da sırayla inceleyelim:
Random File PUT: Bu komut, bir random dosyanın kayıt buffer'ındaki datayı diskete kaydeder. dosya-no, o an açık olan dosyanın numarasıdır. kayıt-no yazılmazsa, AmigaBasic, son PUT yönergesi ile data yazılan kayıttan bir sonraki kayıt numarasını kullanacaktır. En küçük kayıt-no 1, en büyük kayıt-no 16777215 olabilir.
PRINT#, PRINT# USING ve WRITE# komutları, bir PUT yönergesi çalıştırılmadan önce dataları rasgele dosya buffer'ına yerleştirirler. Fakat en iyisi, buffer'ın FIELD ve LSET ya da RSET komutlarıyla doldurulmasıdır. Aşağıdaki örneği inceleyelim:
OPEN "ADRESLER" AS # 1 LEN=78 FIELD#1,20 AS Isim$,30 AS Adres$,20 AS Sehir$,8 AS Bakiye$ INPUT "Okuma/Yazma (o/y)";oy$ INPUT "Kayit No ";kn IF kn=0 THEN END IF oy$="o" THEN KayitOku
LINE INPUT "ISIM :";t$:LSET Isim$=t$ LINE INPUT "ADRES:";t$:LSET Adres$=t$ LINE INPUT "SEHIR:";t$:LSET Sehir$=t$ LINE INPUT "BAKİYE:";t$ :b#=VAL(t$) :LSET Bakiye$=MKD$(b#) PUT#l,kn :REM Bilgiler kaydedildi... CLOSE#l RUN
KayitOku: GET#l,kn PRINT "ISIM :";Isim$ PRINT "ADRES :";Adres$ PRINT "SEHIR :";Sehir$ PRINT "BAKİYE:";CVD(Bakiye$) CLOSE#l PRINT LINE INPUT "RETURN'e BASIN:";t$ RUN
Örneğimizde, önce bir rasgele erişimli dosya açıyor ve alanlar için uzunluk tanımlamalarını yapıyoruz. Okuma ve yazma için tercih yapıldıktan sonra, program istenen yere dallanarak çalışmasını sürdürüyor. PUT komutunun çalışmasını rahatlıkla anlayabileceğiniz güzel bir örnek.
Screen PUT: Gelelim PUT komutunun ekrana grafik çizdirmek için kullanımına. Bu kullanımda PUT, ekranın x,y noktasını resmin sol üst köşesi kabul ederek o anki çıktı penceresine getirir, x ve y, normal olarak mutlak bir yerleşimi belirtir; STEP kullanılırsa, son yerleşim noktasına oranlanarak hesaplanır. Resim, daha önceden GET komutu ile dizi içerisine yerleştirilmiştir. Yani dizi argümanı, resmi tutan diziye verilmiş olan isimdir, indeks, bir dizi içerisine birden fazla obje koymaya izin veren çok boyutlu diziler kullanıldığında belirtilir.
yerleştirme-modu, resmin ekrana hangi yolla yerleştirileceğini belirten argümandır:
PSET: Data, olduğu gibi ekran alanının üzerine çizilecektir.
PRESET: Resmin renkleri invert hale getirilecek yani tersine çevrilecektir.
AND, OR ve XOR: Resim segmentinin renkleri, arka planın rengi ile kullanılan operatöre uygun olarak mantıksal olarak karşılaştırılır ve uygun şekilde görüntülenir. Tanımlı olan mod, XOR'dur.
Aşağıdaki örneği yazın ve çalıştırın: hoşunuza gidecek.
DIM dizi%(563) CIRCLE(50,20).40 CIRCLE(35,12),5 CIRCLE(65.12).5 CIRCLE(50,20),8 CIRCLE(50,18),30„3.5.5.8 PAINT (50,20),3,1 GET (0,0)-(99,39),dizi%
CLS FOR x=0 TO 5 FOR y=0 TO 4 PUT( x*100,y*40),dizi% NEXT y NEXT x
Programın PUT komutunu içeren satırı- na yerleştirme-modu argümanını ekleye- rek deneyin: PUT (x*100,y*40),dizi%.PSET PUT (x* 100,y*40),dizi% .PRESET PUT (x*100,y*40),dizi%,AND PUT (x* 100,y*40),dizi%.OR
RANDOMIZE KOMUTU: Kullanım Şekli: RANDOMIZE |v) RANDOMIZE TIMER RND ile rasgele üretilen sayılar kullanı-
AMIGA BASIC
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 42
RDY: Seçilen drive'ın MTR hattı low olduğunda, RDY (READY) hattı Amiga'ya drive motorunun maksimum hıza ulaştığını ve drive'ın transfer için hazır olduğunu belirten bir sinyal yollar.
DRES: DRES hattı (Drive Reset) Amiga'nın standart resetine bağlıdır. Makine resetlendiğinde, drive'ların motor flipfloplarını resetler ve motorları kapatır.
DKRD: Seçilen drive'dan datanın okunduğu hattır (Disk Read Data). Bu hat, PAULA entegresinin DKRD girişine direkt olarak bağlıdır.
DKWD: PAULA entegresinin DKWD pini bu hatta bağlıdır. Diskete bilgi yazılmasını sağlar. (Disk Write Data).
DKWE: Bu hat (Disk Write Enable), drive'ı okuma veya yazmaya şartlar. Eğer hattaki sinyal high ise, disketten bilgi okunur. Eğer hat low ise, diskete bilgi yazılır.
SİDE: Bu hat, transfer halindeki bilginin disketin hangi yüzüne yazılacağına veya okunacağına karar verir. Eğer sinyal High ise side0 (alt yüz), Low ise side 1 aktif olur.
WPRO: WPRO hattı Amiga'ya drive'ın içinde bulunan disketin write protect'li olup olmadığını belirtir. Eğer hattan gelen sinyal low ise, disket write protect'lidir.
STEP: Bu hattaki pozitif bir darbe, drive'ın okuma/yazma kafasını DIR hattının durumuna göre, bir adım ileri veya geri götürür. DIR: DIR hattı (Direction), kafanın hangi yöne doğru hareket edeceğini belirtir. Low sinyali, kafayı diskin iç kısımlarına doğru hareket ettirir. High ise, diskin dış yüzeyine doğru bir ilerleme sağlar. Bu hat STEP hattıyla beraber fonksiyon gösterir.
TK0: TK0 hattına (Track 0) low sinyali geldiğinde, bilgisayar okuma/yazma kafasının 0. track'e ulaştığını anlar. Track 0, diskin en dış yüzeyinde bulunan track'tir.
INDEX: INDEX sinyali, track'in başının ve sonunun belli olması için konulmuş bir datadır. Kısa darbelerden oluşan bir sinyaldir.
CHNG: (CHANGE) hattı sayesinde, drive içindeki disketin değiştirildiğini bilgisayara haber verir. Disket drive'dan çıkarıldığında, bu hattaki sinyal low olur. Bu hattaki sinyal, bilgisayar bir step darbesi gönderinceye kadar low'da kalır. Eğer drive'a disket konulursa step darbesinden sonra, hat tekrar high konumuna geri döner. Dikkat ettiyseniz drive'ınızda disket yokken drive'dan click sesleri duyarsınız. İşte bu sesler, bilgisayarın kontrol için gönderdiği step darbelerinin sesidir.
INUSE: Bu çıkış, sadece Amiga'nın external disk portunda bulunmaktadır. Eğer hattaki sinyal low ise, drive'ın led'i yanar. Fakat genelde bu hat MTR hattına bağlanmaktadır.
AMİGA'NIN HAYAT DAMARLARI: CUSTOM CHİPLER
Bu ay Amiga'nın hardware bölümünde, Custom Chip'ler ilk sıraları alıyorlar. Custom Chip'ler de neyin nesi? Benim Amiga'mda canavar gibi çalışan 68000 tüm işleri görüyor diyenlerden olabilirsiniz. Belki düşünceniz açısından haklı olabilirsiniz, çünkü 68000 şu anda piyasada bulunan en güçlü ve en esnek mikroişlemcilerden biri. Sonuçta hız olarak bu işin üstesinden gelebilecek bir işlemci. Ama biraz durun, iş ekranda beliren Broadcast kalitesinde bilgisayar grafiklerine ve hoparlörlerden gelen dijitize edilmiş orkestra tipinde müziğe gelince durum biraz değişiyor. Tahmin edersiniz ki, 68000 tek başına bu işlerin altından kalkamaz. İşte bu işlerin üstesinden gelen şey, üreticiler tarafından Amiga için özel üretilmiş, üç entegredir. Numaraları 8351, 8362 ve 8364'tür. Fakat bu numaralar entegrelere yeterince kişilik kazandıramamış olacak ki, üreticiler bunlara ayrıca birer isim de vermişler: Agnus (8351), Denise (8362) ve Paula (8364). Aslında bu custom chipler ses, grafik, disk kontrolü ve bunun gibi birçok şeyle uğraşmakla birlikte, herbiri ayrı bir işi üstlenmemiştir. Bu üç entegre bir bütün gibi çalışmaktadır. Fakat bunları tek bir chip haline getirmek çok karmaşık ve daha pahalı olduğu için, üreticilerin tercihi bu işlemleri üç adet chip üzerinde bölüştürmek yönünde olmuştur. Agnus, Denise ve Paula'nın nasıl işlediğine geçmeden önce, Amiga'nın işleyişi üzerinde kısa bilgiler vermek istiyorum.
Eğer basit bir bilgisayar sistemini tarif etmek istersek; bir işlemci, işletim sistemi için bir ROM, biraz RAM ve giriş çıkış için de bir tutam peripheral register'dan söz etmek yeterli olur. Bütün bunlar Adres ve Data yoluna bağlıdır. Adreslemeyi ve diğer ekstra bütün işlemleri işlemci kontrol altında tutar.
Fakat iş Amiga'ya gelince durum karışıyor. ROM ve peripheral register'lar (CIA'ler) 68000'in kontrolü altında olmakla birlikte, 68000 ile Chip RAM ve custom chipler arasında bir tampon bulunmaktadır. Custom chipler ve RAM aynı adres ve data yoluna sahiptir. DMA (Direct Memory Access), bu olayı üstlenen sistemdir. Örneğin bir High Resolution grafik 64 Kbyte'tan fazla ekran hafızası istemektedir. PAL sistemde saniyede 50 kare göstermek gerektiğinden, bilgisayarın hafızaya saniyede 50x64 Kbyte'lık bir ulaşımı olması gerekmektedir. Bu, saniyede yaklaşık olarak 3 milyon!! hafıza işlemine rast gelmektedir. Eğer işlemci bu işi yapmaya kalkarsa aşırı yüklenir ve başka iş yapamaz duruma gelir. Ayrıca 68000 bu işlem hızına ulaşamaz. Buna ayrıca dijital ses efektleri ve disket işlemleri de katılınca, durum içinden çıkılmaz bir hale dönüşüyor. Burada yardıma ikinci bir işlemci giriyor. Bu işlemci ayrıca DMA kontrolörü olarak da çağrılmaktadır. Amiga'da DMA işlemini AGNUS devralmıştır. Ayrıca Paula, Denise ve bu adres hattında bulunan 256 register da Agnus tarafından kontrol edilmektedir. Tahmin edeceğiniz üzere, bu chip register'lar sesi, ekranda görüntü ve renklerin belirlenmesini, disket işlemlerinin bir çoğunu halleden register'lardır ve DMA yardımıyla 68000 üzerinden programlanabilmektedirler. 68000 Chip RAM'a direk olarak ulaşamamaktadır. Ayrıca Chip RAM DMA kontrolünde olduğundan, custom chipler tarafından ortaklaşa kullanılmaktadır. Bunun sonucu olarak Chip RAM'da yapılacak işlemler çok yavaş olmaktadır. Fast RAM, DMA hattının ulaşamaması ve 68000'in adres ve data yoluna direk bağlı olması nedeniyle çok hızlı çalışabilme olanakları vermektedir.
Gelecek aya Custom Chip'leri incelemeye devam edeceğiz. Saygılarımla.