PF KEY 64
Retro bilgisayarEğer siz de bir 64 programcısı iseniz veya, 128 ile çalışırken 64 modunda zorlanıyorsanız önünüzde yeni ufuklar açacak olan bu programı edinmelisiniz.
128'in BASIC 7.0 komutlarının, mikrobilgisayarlar içerisinde oldukça güçlü olduğunu biliyorsunuz. İşte BASIC 2.0'da kullanabileceğiniz güçlü 128 utility komutları. Programımız, MDE isimli program aracılığıyla yazılacak.
başlangıç adresi: bf40 bitiş adresi: cfff
Programımızı yazdıktan sonra LOAD"PFKEY 64",8,1 veya teyp kullanıcıları için, 1,1 ile yükleyin. Tabii olarak, çalıştırmadan önce programın birkaç kopyasını saklamalısınız. PF Key'i aktif hale getirmek için SYS 49152 vermelisiniz. Artık yeni komutlarınız, yeni değişkenleriniz, yeni DOS komutlarınız var. Artık, komutlarımızın açıklamalarına geçebiliriz.
UTILITY KOMUTLARI
QUIT PF Key'den çıkışı sağlar. Program satırları içerisinde veya direkt modda kullanılabilir. Örneğin, PF Key ile aynı alanı kullanan makina kodu programları yüklemeden önce, bu komut kullanılmalıdır. PF Key'i çalıştırmak için, yeniden yüklemek gerekir. (bk. Ç.N.)
BANK Normal olarak, BASIC'den gizlenmiş alanları kullanmak, bu alanlara PEEK etmek için kullanılır.
BANK 0 normal konfigürasyondur. Bu durumda bilgisayar, ekrana READY yazısını basar.
BANK 1 ile, 40960-49151 arasındaki BASIC ROM'unun altına PEEK ile erişebilirsiniz.
BANK 2 İLE, KERNAL'in altındaki değerleri PEEK ile öğrenebilirsiniz.
BANK 3 yardımı ile, PF Key'in kullandığı alanlara POKE ile erişebilirsiniz. Bu komut, sadece POKE komutunu etkiler. (bk. Ç.N.)
BANK 4 ile, 53248 ve 57343 arasındaki karakter ROM'unu okuyabilirsiniz.
SYS. Yeni bir komut olmamasına rağmen yeni parametrelere bağlanmıştır. Özellikle, BASIC ile makina kodu arasında gidip gelenler için oldukça yararlı ekler bunlar. Kullanımı:
SYS adres, A,X,Y, status
Bu komut, verilen değerleri mikroişlemcinin A,X ve Y registerleri ile status registerlerine aktararak belirtiler adresteki makine kodu programını çalıştırmaya başlar. Tüm parametrelerin belirtilmesi gerekmez fakat adres dışında hepsinin 0-255 arasında olması gerekir.
PREG. Bu komut, mikroişlemcinin registerlerini BASIC'den okur. Örneğin RREG AR, XR, YR, SR komutu, belirtilen parametrelere sırasıyla akümülatör, X, Y ve status registerlerini aktarır.
KEY. Tekbaşına parametresiz olarak kullanıldığında fonksiyon tuşlarına programlanmış olan komutları gösterir. Fonksiyon tuşlarını programlamak için, şu kalıp kullanılmalıdır:
KEY no, komut$
Toplam 8 fonksiyon tuşu programlanabilir. (Bilmeyenler için belirtelim: Bazı Simon's Basic'ler 16 fonksiyon tuşu sunar). Örneğin, F1 tuşuna şu komut dizisini programlayalım:
PRINT CHR$(147):LIST
Burada, önce ekran temizlenmekte, sonra da liste alınmaktadır. Şimdi programlamaya geçelim.
KEY 1, "PRINT CHR$(147):LIST" + CHR$(13)
veya,
A$ = "PRINT CHR$(147):LIST" + CHR$(13)
KEY1, A$
Bu komut hakkında, son olarak şunu söyleyelim. Komut dizisi, en fazla 80 karakterle sınırlıdır ve PF Key ilk yüklendiğinde, çok kullanılan bazı komutları, fonksiyon tuşlarına programlanmış olarak getirir.
DELETE. Bir BASIC programından, belirtilen satırları siler. Örneğin, DELETE 100 sadece 100 numaralı satırı, DELETE 100-300 100 ile "300 arasında kalan satırları siler. Ancak her iki sayı da belirtilmelidir. Yani DELETE -100 gibi bir komut yok. Sadece, direkt modda çalışır. Program içinde işlemez.
HELP. Programınız bir hata ile durduğunda HELP yazarak Return'e basın. Hatanın olduğu satırdaki hatalı yer ters video olarak yazılacaktır. Ancak eksik datadan oluşan OUF OF DATA ve POKE komutunda oluşabilecek ILLEGAL QUANTITY hatalarında hata kaynağı, önceki satırlarda yeralan bir hesaplamada olabilir.
AUTO. Otomatik satır numaralamada kullanılır. AUTO 10,5 komutu, 10 numaralı satırdan başlayarak satır numaralarını beşer beşer arttırır. AUTO 10 komutu ise, ikinci parametre belirtilmemiş olmasına rağmen 10 numaralı satırdan başlayarak onar onar arttırır. Satır numarası ekranda görüldükten sonra, boş satır üzerinde RETURN'e basarsanız otomatik numaralama işlemi durur.
RENUMBER. İşte herkesin hoşuna gidecek bir komut. Satırları yeniden numaralama komutu. Fakat, GOTO; GOSUB, TRAP, RESUME, RUN, THEN, GO TO, ON GOTO komutlarını da tekrar düzenleyerek. Sadece RENUMBER yazarsanız, 10 numaralı satırdan başlayarak program en başında onar onar artan sırada numaralanır. RENUMBER 1000, 20, 2000 komutu ise, mevcut olan 200 numaralı satırdan işe başlar. Bu satırda 1000 numarasını verdikten sonra kalan satırları yirmişer arttırarak numaralar. Bir hata olursa - örneğin olmayan satır nosu veya 63999 dan büyük satır nosu- programınız tahrip olmayacaktır. İşlem ise hatanın olduğu satır nosu verildikten sonra kesilecektir.
TRAP, RESUME. Bu komutlar sayesinde, hata sonucu programların durması engelenebilir. TRAP ile, hatadan sonra bilgisayarın kontrolü tekrar kazanılır. TRAP, beraberinde bir sayı ile birlikte kullanılır. Bu sayı, hatadan sonra dallanılacak olan BASIC satırının numarasını belirtir. Örneğin, TRAP 600, bir hata oluştuğunda programın kesilmesini; 6000 numaralı satırdan devam etmesini sağlar. 6000 numaralı satırda ise, siz ne istiyorsanız o yapılır. RESUME komutu, TRAP rutini icra edildikten sonra ana programa dönüşü sağlar. İki şekilde kullanılır.
RESUME NEXT RESUME satır numarası
RESUME NEXT komutu ile bilgisayar, hataya sebep olan yönergeden bir sonraki yönergeye atlar ve program o noktadan itibaren işlemeye devam eder. Bu sadece hatanın TRAP rutininde yok edilebileceği durumlarda işe yarayan bir komuttur. İkinci tür kullanım ise programa istediğiniz bir satırda devam etmenizi sağlar. RESUME ve TRAP, sadece program modunda kullanılabilirler. RESUME, hata oluşmadan işlemez. Hata oluşmadan RESUME komutuyla karşılaşırsa bilgisayar, hata mesajı verir.
TRON, TROFF. TRON ile, hangi satırın işlem gördüğü ekrenda gösterilir. TROFF ile bu işlem durdurulur. Komut, grafik ekranlarında çalışmaz.
YENİ DEĞİŞKENLER
Bunlar, ST, TI VE TI$ gibi değişkenlerdir. Program içinde, tarafınızdan tanımlanamazlar.
ER, EL. EL (error line) hatanın oluştuğu satır numarasını; ER (error number) oluşan hatanın numarasını belirtir. TRAP rutinlerinde sıklıkla kullanılır.
DS, DS$. DS değişkeni, disk sürücünün hatta kanalındaki numarayı ve DS$ değişkeni hata mesajını tutar. DS sıfırsa ve DS$, OK ise, herşey normaldir.
FONKSİYONLAR
HEX$. On tabanlı sayıları, onaltılı tabana çevirir. PRINT HEX$(255) işleminin sonucu, OOFF olacaktır. X$ = HEX$(254) deyimi sonrası, X$ değişkeni OOFE içerecektir.
DEC. HEX$ fonksiyonunun ters işlemini gerçekleştirir. X=DEC("FF") yerine dec ("OOFF") yazmanıza gerek yok.
ERR$. Bir BASIC hatasının mesajını barındırır. Trap rutinlerinde hata mesajını ekrana vb. yazmak isterseniz, bu değişkeni kullanabilirsiniz. Deneme amacıyla, NEW, ardından da NEXT yazın. PRINT ER, ERR$(ER) komutunu verip sonucu izleyin.
XOR. Bu fonksiyon, birinci ve ikinci değişkenleri kullanarak bir SEÇİMLİ VEYA işlemi yürütür. Değişkenler, 0 ile 65535 arasında olmalıdır. PRINT XOR(1,255) işleminin sonucu, 254 olacaktır.
DOS KOMUTLARI
Disk sürücüsü olanların, bu komutları ile çok büyük bir konfora kavuşacakları muhakkak. Komutların tümü, 1541 ve 1571 ile çalışabilir. Cihaz numarası, 8 olacak tanımlanmamış olmasına rağmen, 8-31 arasında olabilir. Cihaz değiştirmek ve örneğin 9 nolu disk sürücünün directory'sini okumak için DIRECTORY, U9 yazmak yeterlidir. 'U' kalıbı, tüm komutlarda çalışmaktadır. DOS komutları, 15 nolu kanalı açar ve kapatır. Bu sebeple, bu tür komutlar kullanılmadan önce 15. nolu kanalın kapalı olması önem taşımaktadır. Disketin içeriğini etkileyen komutlar verildikten sonra bilgisayar, ARE YOU SURE? yazarak son bir kontrole imkân tanır. Soruya Y ile cevap verilebilir.
DIRECTORY. BASIC 2.0'daki LOAD"$0+0", 8 ile aynı görevi yapar.
COLLECT. Disket üzerinde, Validate komutunu yürütür.
SCRATCH. Program silme işlemini yürütür. İki türlü kullanılabilir. SCRATCH "isim" veya
A$ = "isim":SCRATCH A$
Bu komutu, bozuk ve kapatılmamış dosyalar ve programlar da silinebilir. Bu amaçla, COLLECT yönergesini kullanmak gerekir.
RENAME. Disk dosyalarına, yeni isim vermede kullanılır. RENAME "eski isim" TO "yeni isim" şeklinde kullanılır. Dosyanın içeriği, işlem sırasında değişmez.
COPY. Tek disk üzerinde, ikinci bir kopya almada kullanılır. Yazılımı, COPY "test" TO "testin kopyası" şeklindedir.
DCLEAR. Tüm açık dosyaları ve kanalları kapatır.
HEADER. Disketi formatlama amacıyla kullanılır. Sadece isim yazılır, header belirtilmezse, tüm dosyalar silinir.
HEADER "isim", id
VIEW. Bu komut, ne BASIC 2.0'da nede BASIC 7.0'da yoktur. Sizler için bir armağandır. Programları hafızaya yüklemeden içeriklerini görmenizi sağlar. VIEW "programım" şeklinde kullanılır.
ÇEVİRENİN NOTU
Tüm program komutları, Commodorenin orijinal BASIC'indeki gibi belirli kısaltmalara sahiptir. Bunlar,
bir tablo halinde verilmiştir. Bu tabloda görülen 'dır' o komutun sadece direkt modda, 'prg' sadece program içerisinde, all ise her iki durumda da kullanılabileceğini gösterir. Ek olarak, token'leri de verilmiştir.
PFKey 64, 40448-40959 arasını, 49152-53247 arasını, ve 679-767 arasını kullanmaktadır. Bu alanları kullanan utility programları PFKey 64 ile kullanılamaz. İlk alan, RS232 aygıtı -örneğin bir modem veya seri printer için C64 tarafından kullanılır. Bu gibi amaçlar için, PFKey'den QUIT ile çıkılmalıdır.
PFKey, kendisini korur. Bu sebeple, yukarıdaki alanlara yapılacak POKE girişimleri, hataya sebep olur ve program bozulmaz.
Ben, encok Delete ve RENUMBER komutlarını kullanmaktayım. Sadece bu komutlar için bile bu programı yazılmaya değer.
KOMUTLARIN KISALTMALARI
komut | kısaltma | mod | token AUTO | A shift U | dır | 220 BANK | B shift A | all | 254,02 COPY | CO shift P | all | 244 COLLECT | COL shift E | all | 243 DCLEAR | DCL shift E | all | 254,21 DEC | kısaltma yok | all | 209 DELETE | DE shift L | dır | 247 DIRECTORY | DI shift R | all | 238 ERR$ | E shift R | all | 211 HEADER | HE shift A | al | 241 HELP | H shift E | all | 234 HEX$ | — | all | 210 RENAME | RE shift N | all | 245 RENUMBER | REN shift U | dır | 248 RESUME | RES shift U | prg | 214 RREG | R shift R | all | 254,09 SCRATCH | SC shift R | all | 242 TRAP | T shift R | prg | 215 TROFF | TRO shift F | all | 217 TRON | TR shift O | all | 208 VIEW | VI shift W | all | 254,06 XOR | P shift O | all | 206,08