Bu sayfadaki yazılar
Sayfanın metni
Sayfa 12
HADES BASIC’in son bölümüne hoş geldiniz. Bu bölümde 6 adet yeni komut ekliyoruz. Aşağıda komutların neler olduğunu, nasıl kullanıldığını bulabilirsiniz.
1 – MIRROR : Ekran görüntüsünü yatay veya dikey olarak çevirebilirsiniz. Ekranda eğer yazı varsa çevirme işleminde sorun olmayacaktır. Eğer tuşlardaki grafikleri kullanarak bir şeyler çizmişseniz şekliniz bozuk çıkacaktır.
MIRROR H : Ekranı yatay olarak çevirir. MIRROR V : Ekranı dikey olarak çevirir.
2 – INV : Bu komutla ekrana yazacağınız yazıları inverse (negatif) olarak yazdırabilirsiniz. Komutu INV : PRINT “.......” şeklinde kullanırsanız yazdıklarınız ekrana negatif olarak çıkar. PRINT komutunu ikinci kez kullandığınızda yazılar normal olarak ekrana çıkar. Yani INV komutu sadece kendinden sonra gelen PRINT komutu için yazıları negatif hale getirir.
3 – FONT x : Hafızaya yüklediğiniz bir fontu aktif hale getirmek için kullanılır. X değeri 0 ila 7 arasında olmalıdır. POKE 53272 yerine kullanılır. Eğer “X” değeri kullanılmazsa yani sadece FONT olarak kullanılırsa default ROM karakter seti seçilmiş olur. Aşağıda x değerlerine karşılık gelen font adresleri verilmiştir.
X=0 Æ $0000-$07FF X=1 Æ $0800-$0FFF X=2 Æ $1000-$17FF X=3 Æ $1800-$1FFF X=4 Æ $2000-$27FF X=5 Æ $2800-$2FFF X=6 Æ $3000-$37FF X=7 Æ $3800-$3FFF
FONT 2 komutu default ROM karakter setini seçer. Yani $1000-$1800 adreslerine bir karakter seti yüklerseniz FONT 2 komutu ile seçemezsiniz.
4 – SPEED x : Kursörün yanıp sönme hızını ayarlayabilirsiniz. X değeri 0 ila 255 arasında olmalıdır. X değeri verilmezse default yanıp sönme hızına geri dönülür. Default değer 33’tür. Space tuşuna basılı tutarak cursörün hızını kontrol edebilirsiniz.
5 – SCREEN x : Ekranın açık veya kapalı olmasını sağlar. X değeri 0 veya 1 olmalıdır. SCREEN 0 : Ekran kapalı SCREEN 1 : Ekran açık
6 – DELAY x : Program içinde x değeri kadar milisaniye gecikme sağlar. X=0 iken en uzun gecikme sağlanır (256 msn).
C64’ün esnek bir işletim sistemine sahip olması nedeniyle yeni komut eklemek çok kolay olmaktadır. Yeni bir komut eklemek için önce komutun yapacağı işi normal bir program olarak yazın. Programınızın çalıştığından emin olduktan sonra gerekli adresleri kullanarak parametreleri programa aktarın. Gerekiyorsa parametre sınır değerlerini kontrol edin. Bir kez alıştıktan sonra istediğiniz komutu ekleyebilirsiniz. Mesela aklımda BASIC içinden interrupt kullanarak 1x1 text scroll yapan bir komut eklemek vardı. Program içinde SCROLL satır,hız,”text” komutunu kullanarak hiç makine dili bilmeden smooth scroll yapmak mümkün olacaktı.
Gevezeliği bir tarafa bırakıp aşağıdaki programı satır satır yazmaya başlayın. Kim bilir belki C64’e ekleyecek 1-2 yeni komut aklınıza gelebilir.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 13
*=$c000
lda #<yeni ldx #>yeni sta $0308 stx $0309 rts yeni lda $7a ldx $7b sta $fb stx $fc lda #<comset ldx #>comset sta $fd stx $fe ldx #$00 ldy #$00 loop0 jsr $0073 sta $02 loop1 lda ($fd),y cmp $02 bne nextcom iny tya cmp comlen,x bne loop0 exec txa asl tax lda comexe+1,x pha lda comexe,x pha rts nextcom lda comlen,x clc adc $fd sta $fd bcc next0 inc $fc next0 inx cpx commax bne loop1 lda $fb ldx $fc sta $7a stx $7b jmp $a7e4 ;---------------------------------------------------------------------------------------; commax .byte 6 comlen .byte 5,3,3,5,6,5 comset .text "mirr" ; MIRR .byte $b0 ; OR .text "inv" ; INV .byte $46,$91,$54 ; F "ON" T .text "speed" ; SPEED .text "screen" ; SCREEN .text "delay" ; DELAY comexe .word mirror-1 .word inv-1 .word font-1 .word speed-1 .word screen-1 .word delay-1