Bu sayfadaki yazılar
Sayfanın metni
Sayfa 95
Atari 800 XL/XE - Bölüm 1
jmp $a000
Yazilar
SATIRI !TEXT 0,0,0,0,0,0,"satir",0,"bir",0,0,0,0, SATIR2 !TEXT 0,0,0,0,0,0,"satir",0,"iki",0,0,0,0, SATIR3 !TEXT 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 1TEXT "satir",0,0,"uc",0,0,0,0,0,0,0,0,0,0 SATIR4 !TEXT 0,0,0,0,0,0,"satir",0,"dort",0,0,0,0
; Goruntu Listesi GORUNTU LISTESI ; Bos Satirlar !byte $70,$70,$70,$70,$70,$70,$70,$70 ; Antic 6 Grafik Modu t Hafiza Taramasi Yukleme !byte $46 ; Ekran Hafizasini SATIRI1'e Ayarla SATIRI # Bos Satirlar !byte $70,$70,$70,$70 ; Antic 7 Grafik Modu Hafiza Taramasi Yukleme !byte $47 ; Ekran Hafizasini SATIR2'ye Ayarla SATIR2 ; Boş Satir !byte $70 ; Antic 2 Grafik Modu Hafiza Taramasi Yukleme !byte $42 ; Ekran Hafizasini SATIR3'e Ayarla SATIR3 # Bos Satirlar !byte $70,$70,$70,$70 ; Antic 6 Grafik Modu t Hafiza Taramasi Yukleme !byte $46 ; Ekran Hafizasini SATIR4'e Ayarla SATIRA Boş Satirlar !byte $70,$70,$70,$70,$70 ; Adrese Sicra ve ; Tarama Yakalanana Kadar Bekle !byte $41 ; Sicranacak Adres GORUNTU LİSTESİ
BITIS ADRESI — *
lword $02e0, $02e1l, BASLANGIC ADRESI
Bu örnek ANTIC 6, ANTIC 7, ANTIC 2 ve tekrar ANTIC 6 grafik modu açarak her bir modda birer satır yazı yazar. Ancak bu yazı yazma işlemi ekrana bir çıktı vererek değil hafızada yazıların bulunduğu adresler ekran adresi olarak değiştirilerek yapılır. Kısacası ANTIC çipinin ve bu çipin bize sağladığı görüntü listesi özelliğinin gücünden yararlanır.
Şekil 10.
Değerlendirme
Atari ile ilgili anlatılacak daha çok fazla konu var. Araştırmalarım sonunda Atari'nin yapabilecekleri, donanımını kullanma gücü ve sınırları ile ilgili çok ilginç bilgiler edindim. Elbette ki ister istemez benim 20 yıllık aşkım olan ve yine 6502 mimarisinden gelen Commodore 64 ile de sık sık mukayese ettim. İlginç olan şudur ki bir iki konu haricinde Atari 800 XL/XE modelleri Commodore 64'ü ezip geçiyor. Atari'nin piyasadan silinmesinin ardından Commodore 64'ün uzun yıllar varlığını sürdürebilmesi ve Atari'ye göre satış rakamlarındaki büyük fark, Commodore firmasının başarısını kanıtlayan öğelerden biri. Bunca yıl boyunca kandırılmışız. Atari Commodore'dan daha üstün bir bilgisayarmış (her konuda olmasa da). :)
Aslında bu yazıyı bir yazı serisi olarak tasarlamamıştım. Yazının çıkış noktası ACME kullanarak Atari üzerinde nasıl çapraz geliştirme yapılabileceğini anlatmaktı. Ama yazıyı yazmaya gelince işler bazen değişiyor. Beklediğimden çok daha fazla detaya girmek durumunda kaldım. Bu da bir bakıma bu yazının devamı olacağını gösteriyor.
Daha anlatılacak neler mi var? Öncelikle donanımda gelen "Oyuncular ve Füzeler" konusundan bahsetmek çok eğlenceli olacaktır. Böyle bir başlık atmak bile başlı başına bir zevk :) Ayrıca biraz daha intro/demoya yönelik olarak kayan yazılar, grafik ekranına şekiller çizdirme, renkler ve parlaklık değerleri ile yapılabilecek efektler gibi konular işin olmazsa olmazları gibi duruyor. Tabii ki kesme rutinleri, ses özellikleri ve diğer birçok konu bu yazının birden bile fazla devam yazısı olabileceğini gösteriyor.
Kaynaklar
Bu yazıyı hazırlarken birçok kaynaktan yararlandım. Ne de olsa bu platformla en son uğraştığımda 8-9 yaşlarındaydım. O zamanlar öğrendiğim 3-5 BASIC komutunun üzerine epey bir bilgi eklemem gerekti haliyle. Bu yazıyı hazırlamadan önceki birkaç aylık öğrenme sürecimi de hesaba katacak olursak, tek tek faydalandığım bütün kaynakların listesini veremesem de temel olarak kullandığım iki kaynağı belirtmek isterim:
Atari Archives: http://www.atariarchives.org/ Wikipedia'da Atari 800: http://en.wikipedia.org/wiki/Atari_800
Atari Archives çok geniş bir arşiv. Giriş sayfasındaki görüntü ilk bakışta içeriksiz bir reklam sitesi gibi dursa da aşağıdaki banner benzeri linklere tıkladıkça o linklerin hepsinin altında büyük birer bilgi hazinesi yattığını görüyorsunuz. İngilizce okuma düzeyi yeterli olan herkese tavsiye ederim.
Bir sonraki sayıda 2. bölümde görüşmek dileğiyle, hoşçakalın. (televizyonvari bir bitiriş oldu... ;))
emir (at) akaydin (nokta) com
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 94
$10 : 2 boş satır
$20 : 3 boş satır $30 : 4 boş satır $40 : 5 boş satır $50 : 6 boş satır $60 : 7 boş satır $70 : 8 boş satır Görüntü Kodları: $02 : Text Mod 0 $03 : Text Mod 1 $04 : Text Mod 2 $05 : Text Mod 3 $06 : Text Mod 4 $07 : Text Mod 5 $08 : Grafik Mod 0 $09 : Grafik Mod 1 $0A : Grafik Mod 2 $0B : Grafik Mod 3 : Grafik Mod 4 $0D : Grafik Mod 5 $0E : Grafik Mod 6 $0F : Grafik Mod 7 (*) ile işaretli modlar BASIC'ten kullanılamayan modlardır. Sıçrama Kodları: $01 : Adrese sıçra $41 : Adrese sıçra ve taramayı yakalamayı bekle Örneğin; * listeye $06 değeri yazılarak ANTIC 6 (bkz: Tablo 1) moduna geçilebilir.
* 8 satır, yani 1 normal karakter yüksekliği boşluk vermek için $70 değeri kullanılabilir.
* $01 komutu ile liste içerisinden bir hafıza adresine sıçramak ve listeye oradan devam etmek mümkündür. $41 komutu ise sıçrama ve tarama yakalanana kadar bekleme anlamlarına gelmektedir. $01 ya da $41'den sonra gelen 16 bitlik adres, sıçranacak hafıza adresidir. Listenin başlangıç adresinin verilmesi durumunda sabit olarak o listeye uygun olan grafik ekranı açık kalacaktır.
Görüntü listesinin özellikleri bunlarla da bitmez. Görüntü kodları yalnızca 0, 1, 2 ve 3 numaralı bitler kullanılarak verilebilmektedir. 4, 5, 6 ve 7 numaralı bitler ise farklı özellikleri devreye sokarlar. Yani;
YXXXXYYYY YYYY : Görüntü kodu XXXX : Ek parametreler şeklinde düşünülebilir. Bu parametreler şunlardır: Bit 4: Dikey Kayma (Vertical Scroll). (Görüntü kodu+$10) Bit 5: Yatay Kayma (Horizontal Scroll). (Görüntü kodu+$20)
Bit 6: Hafıza Taraması Yükleme (Load Memory Scan). (Görüntü kodu+$40)
Bit 7: Görüntü Listesi Kesmesi (Display List Interrupt). (Görüntü kodu+$80)
Eğer 6. biti yani "Hafıza Taraması Yükleme"yi kullanacak olursak görüntü listesinde bu görüntü kodunun ardından gelen iki byte ekran adresinin başlangıcına işaret eder. Yani görüntü kodunu $06 yerine $06+$40 = $46 şeklinde kullanacak olursak yine ANTIC 6 grafik modu açmış oluruz ancak bu defa sonrasında gelen 2 byte'ın değeri ile ekran adresinin farklı bir adrese kaydırılması sağlanmış olur. Bu işlem farklı satırlar için defalarca tekrarlanabilir.
Grafik Örneği
Şimdi bu öğrendiklerimizi bir araya getiren bir örnek görelim.
grafik.ata
BASLANGIC $0600 SDMCTL—$022F SDLSTH-$0231 RENK0-$02C4 RENK1-$02C5 RENK2-$02C6 RENK3-$02C7 RENK4-$02C8
"grafik.xex",plain
*
BASLANGIC ADRESI-6
lword $£f£ff, BASLANGIC ADRESI, BITIS ADRESI
*
BASLANGIC ADRESI ; Renkleri Ayarla lda RENK3 sta RENKİ lda RENK4 sta RENK2 ; Grafik Ekranini Ac lda #0 sta SDMCTL lda #<GORUNTU LISTESIİ sta SDLSTL lda #>GORUNTU LISTESIİ sta SDLSTHE lda #$22 sta SDMCTL