Bu sayfadaki yazılar
Sayfanın metni
Sayfa 62
ralı satırda bir bloğu serbest olarak işaretliyoruz. Bu komut sayesinde o blokta herhangi bir bilgi varsa silinmiş oluyor. 30 numaralı satırda açmış olduğumuz tampon bölgeyi işaret eden bir belirteç tampon bölgenin ilk byte'ını gösterecek şekilde ayarlanıyor. Daha sonra gelen ilk üç byte'a CBM karakterleri yazılıyor. 50 numaralı satırdaki komut, veri tamponunun disketin TRACK 1 SECTOR 0 bölgesine yazılmasını sağlıyor. 60 numaralı satırda bu bloğu kullanılmış olarak gösterdikten sonra 70 ve 80 numaralı satırlarla dosyaları kapatıyoruz. Ufak programı yazıp çalıştırdıktan sonra,
SYS DEC(“FF53”),8.8 veya SYS DEC(“F890”),8,8
ile programın etkisini görebilirsiniz. Bu komutlardan birisini uygulamanızla birlikte disket sürücünün çalışmaya başlamasından kısa bir süre sonra ekrana
BOOTING...
Mesajı çıkacak. Daha sonra büyük bir ihtimalle bilgisayar MONITOR'e girecek. Şimdilik bunu normal karşılamak gerek. Biz otomatik başlama mekanizmasının çalışmasını sağlayan ilk üç byte'ı diskete yazdık. Diskette yer alan bloğun geri kalan kısmı büyük ihtimalle sıfır değeri ile doludur. Bilgisayar başka bir mesaj alamadı ve başka blokları okuyamadı. Bundan sonra da bir makine dili programı çalıştırmak istedi ve sıfır değerli byte'larla karşılaştı. Makine dilinde sıfır değerli byte BRK komutunu temsil ettiğinden bilgisayarımız MONITOR'e girip kaldı.
OLD
Diyelim sizin için çok önemli bir program yazıyorsunuz ve programınızı yazmadan NEW komutunu verdiniz. Hemen üzülmeyin, kaybetmiş olduğunuz programınızı kurtarmanın yolları var. NEW komutunun verilmesi ile birlikte programın başında bulunan iki byte sıfırlanır. Programın başında sıfırlanmış olan ilk iki byte bir sonraki programın sıfır numarasının adresini belirtir. NEW komutunun gazabına uğramış bir programı kurtarmak için değişkenlerin başlangıcını da düzeltmek gerekir. Kaybetmiş olduğumuz programı üç aşamada kurtaracağız. 1. Programın ilk iki byte'ına sıfır hariç bir sayı verin. BASIC'in başlangıç adresinin high byte'ını vermeniz en iyi sonucu verir. 2. Genelde programa yeni satır ilavesinde kullanılan BASIC program satırlarını düzenleyen sistem rutinini çağırın. Bu rutin programın tüm satır bağlantı belirteçlerini değiştirip tekrar hesaplar. Böylece prog-
ramın ilk satırını gösteren belirteç yeniden hesaplanıp hafızaya yazılmış olur. 3. Kaybetmiş olduğunuz programın sonunda bulunan değişkenlerin başlangıcı yeniden ayarlanır. Bu işlemleri C128'de uygulamak çok daha kolay. 3 numaralı aşamayı C128'de iptal etmemiz mümkün, çünkü değişkenler BANK1'de saklanırlar. Kaybetmiş olduğunuz programı aşağıdaki komutu girerek kurtarabilirsiniz. Bu komut anlatmış olduğumuz aşamaları gerçekleştirecek:
POKE PEEK(45) 4 256*PEEK(46) 4
45/46 numaralı adresler BASIC başlangıcını işaret ederler. Bu rutin, belirteçleri eski haline getirir. Yaptığımızın makine dilinde karşılığı:
OBOO 0B02 BASIC ram : başlangıcı ıcın 28 OBO4 94 2D STA ($2D),Y OBO6 20 4F JSR SAFAF; Bağları belirler 0B0O9 60 RTS Makine dilindeki programımızı S0BOO adresi yeri- ne başka bir adrese de yerleştirebilirsiniz.
LİST
Bir program hazırlarken eninde sonunda programınızın dökümünü Printer'dan almak ihtiyacını duyarsınız. Ama bu iş için uzun uzun OPEN 4,4:CMD 4:LIST:CLOSE 4 komutlarını yazmanız gerekir.
Program Döküm Eki'ndeki yazıp, SYS komutu ile çalıştırdığınızda istediğiniz programın dökümünü yazıcıdan alabilirsiniz. Makine dili ile ilgilenen arkadaşlar için programımızı makine dilinde de yazdık:
A9 OOLDA $00 ;Konfigirasyon 1A02 8D 00 FF STA SFFOO A9 OOLDA $00 ;Dosya ismi 4A07 20 BD FF JSR SFFBD :Dosya ısmını ayarla YADA AŞ $04 ;Logic dosya numarası TAX ;Arac numarası SO7 adres 1A0OF 20 BA FF JSR $FFBA ;Dosya parametre ayarı 4A42 20 CO FF JSR SFFCO ;OPEN Kernal rutini YAS A2 $04 Logic dosya numarası 20 C9 FF JSR ;Çıkıs aracını ayarlama SAYA A5 2D LDA $2D ;BASIC ram baslangıcı-low 85 61 STA $61 A5 2E LDA $2E ;BASIC ram baslama-hıgh 1A20 85 62 STA $62
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 63
41A22 20 E5 50 JSR $50E5 ;LIST rutini 1A25 A9 1A27 8D 00 FF STA SFFOO YAZA AŞ 4A2C 20 C3 FF JSR SFFE7 :Kernal CLALL rutini 60 RTS Bitir
Geliştirilmiş INPUT
BASIC 7.0'da C-64'te alışmış olduğunuz GET ve INPUT komutlarından başka GET KEY komutu da bulunuyor. INPUT komutu diğer iki komut gibi kullanıcıdan veri almada kullanılıyor. Ancak bu komutun ekrana soru işareti çıkarması kimi zaman can sıkıcı bir durum yaratır. Ekranımızı bir dosya gibi düşünürsek soru işaretinden de kurtulabiliriz:
40 OPEN 1,0 :REM Ekran dosya olarak 20 REM tanımlandı. 1,AS 40 CLOSE 1
Diyelim ki, kullanıcının ekranın belirli bir bölgesinden veri girmesini istiyorsunuz, bu durumda aşağıdaki satırları yukarıdaki programa ekleyin:
415 CHAR.kolon.sıra 35 PRİNT “5:
CHAR komutu sayesinde PRINT AT komutunun işlevini kullandık.
Uyarı Sesi
Bildiğimiz daktilo alt satıra geçilmesi gerektiğini belirtmek için sağ tarafa yaklaşıldığında bir ses çıkarır. Bu şekilde bir ses bilgisayarda da faydalı olabilir. Program Döküm Eki'ndeki PROGRAM 2 satırın bitimine iki karakter kala ses çıkmasını sağlıyor. Programımızı makine dili olarak aşağıda bulabilirsiniz.
142D A9 FF LDA SFF ;Muzik degerleri 142F 8D 06 DA STA $406 1432 8D 18 DA STA $418 1435 A9 09 LDA $09 78 kapatıldı 143B A9 47 LDA 847 ;İR© vektoru 4143D 8D 14 03 STA $314 1440 A0 14 LDA 1442 8D 03 STA $0315 1445 58 CLI ;İRE aktıf oldu. 1446 60 RTS ;BASIC'e don 1447 PHA 1448 A5 E7 LDA $E7 ;Sag marjını yukle E5 EC SBC SEC
C9 02 CMP 4144E DO 11 BNE $1461 4450 CD 80 14 CMP $1480 1453 FO OF BEO $1464 1455 8D 80 14 STA $1480 1458 A9 A0 LDA ses cıkar 145A 8D 01 DA STA SD401 145D A9 21 LDA 821 145F DO 05 BNE $1466 1461 8D 80 14 STA $1480 ;Kolonu sakla 1464 A9 99 LDA $00 ;Sesi kapat 1466 8D 01 D4 STA $D401 1469 8D 00 DA STA $D400 146C 8D 04 D4 STA SD404 146F 68 PLA 1470 4C 65 FA
JMP ;İRA'ya atla Son kolon hariç, zil sesini istediğiniz kolona
POKE 5197,N
komutu vererek çevirebilirsiniz. N, zil sesi için yeni kolonu verir.