Bu sayfadaki yazılar
Sayfanın metni
Sayfa 27
Bu arada önemli bir noktayı belirtelim. RENUMBER edilen programda GOTO ve GOSUB'ların da düzeltilmesi gerekir. (SİMONS' BASIC dahil bu tür programların çoğunda RENUMBER komutu bu şekilde ikinci bir iş olarak GOTO ve GOSUB'ların düzeltilmesini gerektirmektedir.)
9- RENUMBER-2
Komut: SYS 50400
Önceki RENUMBER komutunun kısaltılmış şeklidir. SYS 50400 komutu ile 10'dan başlayarak ve 10'ar ara ile satır no.larını düzene sokmaktadır.
SONUÇ:
Sonuç olarak, görüldüğü gibi SUAT'S BASIC'in kullanışlı komutları bir araya getiren bir program olarak hazırlandığı açıktır. Commodore 64'ü programcılıkta kullanan arkadaşlarıma önemle tavsiye ediyorum. Kullanırken tasarruf edilecek zaman, programın kendisini yazmak için harcayacağınız zamandan çok daha fazla olacaktır.
Not: Disk sürücü yerine kasetle çalışılıyorsa komutlardaki 8 rakamı yerine 1 yazılması gerektiğini hatırlatalım.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 26
Bu komutlardan DELETE ve SPACE-KILL, SİMONS' BASIC'te bile bulunmamaktadır. İşte kendi çalışmalarım sırasında çok sık ihtiyaç duyduğum bu komutları kısa BASIC programları halinde ardarda sıralayarak bir paket program hazırladım. SİMONS' BASIC olduğuna göre SUAT'S BASIC de olabilir (!) deyip bu adı koydum ve şimdi de sizlere sunuyorum.
Programımız
Yukarıda sözünü ettiğimiz komutlardan oluşan SUAT'S BASIC programı bölümler halinde ve BASIC dilinde hazırlanmış olup istenirse herhangi bir veya birkaç bölüm ayrı olarak da yazılıp kullanılabilir.
Ticari programlardan farkı ise, komutların kelime olarak değil, SYS komutu ile verilişidir. Dolayısıyla hangi adreste olduklarını hemen belli olmaktadır.
Programımız, BASIC bölgesinde (2048-40959) olmadığından BASIC belleği harcamamaktadır. Bu nedenle ne NEW ne SYS 64738 komutu, ne de RESET anahtarı ile silmek mümkün değildir. 49152'den başlayan 4K Serbest RAM bölgesinde ve makinekodunda yerleşmiş olduğundan silmek için bilgisayarı açıp kapamak gerekir. Dolayısıyla "emniyette"dir.
Yazım sırasında yapılacak hatalara karşı bazı önlemler de alınmıştır. Örneğin SPACEKILL bölümünü yazarken DATA'lardan birini yazmadınız veya iki kere yazdınız. Artık C 136 olacağından, RUN ettiğinizde DATA ADEDİ HATASI (SPACE-KILL) diyecektir.
Ya da HARDCOPY bölümünde bir DATA'yı yanlış yazdınız. RUN edildiğinde DATA YAZIM HATASI (HARDCOPY) yazacaktır.
Program RUN edildiğinde önce ekran siyaha dönüp sizi lütfen bekletecektir. READY dediğinde LIST ederseniz artık bir şey bulamazsınız, çünkü kendi kendini NEW edip BASIC bölgesini temizlemiştir, kendisi (eğer bir hata mesajı çıkmamışsa) çalışır durumda 4K FREE RAM'dadır.
Hata durumunda NEW komutu yüzünden program BASIC bölgeden silindiğinden, RUN edilmeden önce kaset veya diskete çekilmesi önemli tavsiye olunur.
Program 30 blok tutmaktadır. LOAD ve RUN edilmesi toplam 34-35 saniye almaktadır. İsteyenler NEW-SAVE komutu ile programı makine kodu halinde SAVE edip kullanabilirler. Bu durumda toplam süre 5-6 saniyeye iner. Tabii LOAD ederken bu durumda komutu LOAD "SUAT'S BASIC-MC",8,1 olarak yazmanız ve yüklendikten sonra NEW etmeniz gerekeceğini hatırlatalım.
Ayrıca SUAT'S BASIC ile çalışırken 49200'den 50462'ye kadar olan bölgeye kısmen de olsa başka bir program yüklemeye kalkarsanız program bozulacaktır.
Programın Kullanılması
Daha önce de belirttiğimiz gibi, komutlar SYS olarak kullanılacaktır. Şöyle ki:
1- OLD ya da RENEW
Komut: SYS 49200
NEW veya SYS 64738 komutları gerçekte bir BASIC programı silmezler. Sadece START-OF BASIC pointerlarını RESET ederler. Program hâlâ bellektedir. Eğer başka bir program (tek bir satır bile olsa) yazmaya başlamadıysanız SYS 49200 ile pointerleri eski haline koyabilirsiniz. LIST komutu ile programı görebilirsiniz.
2- DELETE
Komut: SYS 49240, L1-L2
L1, silinecek bölgenin ilk satırının no.sunu. L2 ise son satırını göstermektedir. Örnek olarak,
SYS 49240, 300-385 komutu: 300 ila 385 no.lu satırları,
SYS 49240, 300- komutu: 300'den itibaren kalan tüm satırları,
SYS 49240, -400 komutu: Baştan itibaren 420 no.lu satırın sonuna kadar siler.
Dikkat edilecek nokta, L1 ve L2 no.lu satırların silme işlemine dahil olduğudur.
3- SPACE-KILL
Komut: SYS 49500
Programlardaki aralar yani SPACE'ler, REM ibareleri önemli ölçüde bellek sarfetmektedir. Bu komutlar,
- Bütün aralar yok olur ve kelimeler birleşir (bunun bir sakıncası yoktur)
- REM satırlarında sadece REM ibaresi kalır, gerisi silinir, REM'in kendi silinmemektedir. Çünkü, birçok programda GOTO ve GOSUB'lar REM ile başlayan satırlara atlamaktadır. Eğer programınızda böyle bir durum yoksa kalan REM ibarelerini de siz silebilirsiniz.
- " " işareti arasında bulunan yazı ve rakamlara ise komutumuz bir zarar vermemektedir.
SYS 49500 komutundan sonra programın uzunluğuna göre biraz beklemeniz gerekecektir.
5- MEM-SAVE
Komut: SYS 49800, "PROGRAM ADI", 8, 1, Başlama Adresi, Bitiş Adr + 1
Belleğin herhangi bir bölgesini SAVE etmekte kullanılır. Bunun makine kodu programlarının bulundukları adresle SAVE etmekte faydalı olacağı açıklır. Eğer sözkonusu programın Başlama Adresi ve Bitiş Adresi biliniyorsa mesela 51000 ve 5112 ise ve programın adı da "ALFA" olacaksa, SYS 49800,"ALFA", 8, 1, 51000, 51121 komutu ile programı makine kodunda olarak diskete SAVE edilebilir.
Benzer şekilde SUAT'S BASIC programını LOAD ve RUN ettikten sonra, SYS 49800,"SUAT'S BASIC-MC", 8, 1, 49200, 50462 komutu ile diskete makine kodu alabilirsiniz.
6- DIRECTORY
Komut: SYS 50000,0
Bellekteki programı silmeden DIRECTORY listelemektedir. Ayrıca LIST komutuna gerek yoktur. İki disk sürücü ile çalışıldığı hallerde ikinci disk sürücü için SYS 50 000,1 komutu kullanılmaktadır.
7- APPEND
Komut: SYS 50200 "PROGRAM ADI",8
Eğer birbirine eklemek istediğiniz iki veya daha fazla programınız varsa, önce ilk programı normal şekilde LOAD ediniz. Sonra bu komutu verdiğinizde disketteki program otomatik olarak bulunur ve ilk programı sonuna kendiliğinden eklenir. Gene benzer şekilde SYS komutu ile yeni ilaveler yapılabilir.
Fakat bu komutla iki program satır no.larına göre birbirinin içine geçmez. Sadece arka arkaya eklenir. Eğer ikinci program satır no.ları ilk programı takip etmiyorsa, yani meselâ her iki program da 10 no.lu satırla başlıyorsa, RENUMBER edilmesi gerekir.
8- RENUMBER-1
Komut: POKE 253, LOW BYTE: POKE 254, HIGH BYTE: POKE 255, SATIR ARASI: SYS 50300
Satır no.larını tekrar düzenlemekte kullanılır. Diyelim ki ilk satır no.su 500 olsun ve 10'ar ara ile devam etsin istiyoruz.
Önce 500 desimal sayısının LOW ve HIGH BYTE'larını bulacağız. HIGH BYTE: INT(500/256) LOW BYTE: 500-HIGH BYTE×256 olarak hesaplanabilir. Hatta aşağıdaki kısa programla da bunu Commodore'a yaptırabilirsiniz:
500 için LOW BYTE=244, HIGH BYTE=1 bulunur.
O halde komut, POKE 253, 244: POKE 254,1: POKE 255,10: SYS 50300 olacaktır.