Commodore sayı 50, sayfa 45

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 45

aşağıdaki satır gelecektir: *6000 RUN/STOP'a bastıktan sonra noktaların yeraldığı satırın başına gi- din istediğiniz metni yazın. *6000 MERHABA .... Metnin sonuna RETURN tuşunun ASCİ kodu olan desimal 13 ve $0D'nin yazılması ekran görünümü açısından her zaman için yararlıdır. Ayrıca yazdırmak istediğimiz metnin sonunda bir de BRK komutu yeral- malıdır. Bunun için monitör progra- mında iken “M 6006” satırın girip is- tediğiniz değerleri yazabilirsiniz. Şim- di asıl Assembler programa geçelim. Programımız $601C'den başlayacağı için “A 601C”' satırını yazın ve aşa- ğıdaki satırları girin. 601CLDY $00 601E LDA $6000, Y 6021 BEO $602C Burada yapılan iş asılnda oldukça basittir: Metnimizin yazılı olduğu ha- fıza bölgesindeki baytlar teker teker okunup akümülatöre yüklenir. Bu iş- lem BEO komutuyla kontrol edilir ve metnin sonu gelinceye kadar (BRK - $00) tekrarlanır. Burada Y-Registeri indeks olarak seçilmiştir ve programın bundan son- raki bölümünde döngü içerisinde de- ğeri bir arttırılacaktır. 6023 JSR $FFD2 6026 BCS $602D Daha önce belirttiğimiz gibi kernal rutini kullanılırken ortaya herhangi bir hata çıkarsa Carry Bit'i “1”” de- ğerini alır. BCS komutunun yukarı- da kullanılmasının nedenide budur. 602D adresinde BRK komutu bulu- nacaktır. 6028 INY 6029 JMP $601E 602C RTS 602D BRK Aslında burada G 601C ile prog- ramı çalıştırabiliriz, fakat bu sefer farklı bir yöntem kullanacağız. Bu-

nun için öncelikle X ile monitör programını terk edin. Ardından aşağıdaki üç satırlık Basic programı yazın. “Out Of Memory Error” mesajı ile karşılaştığınızda NEW yazarak hafızayı temizlemelisiniz. 10 PRINT CHR$ (147) 20 SYS 24604 : REM 24604 — $601C 30 END RUN yazdığınızda $601C adresinden başlayan makine dili programımızın işleyişini gözleyebilirsiniz. Bu yaptığımız $FFD2'deki CHROUT rutini ile yapılabileceklerden sadece biridir. CHROUT'un çıkışı yaptığı kanal ekrandır ve numarası 3'dür. Eğer çıkış yapılacak kanal numarasını değiştirirsek CHKOUT rutini ile yazıcıdan da çıktı alabiliriz. Yalnız bu iş için CHKOUT ve OPEN rutinlerini öğrenmeliyiz.

İsim: CHKOUT Amaç: Çıkış kanalının belirtilmesi Adres: $FFC9, desimal 65481 Hazırlık: X-Registerine dosya numarası verilir. Hata: Akümülatör, X-Register

Değer | Mesaj Anlam 0 BREAK RUN/STOP basılmış 1 TOO MANY FILES En fazla 10 dosya açılabilir 2 FILE OPEN Açılmış bir dosya tekrar açılamaz 3 FILE NOT OPEN Dosya açılmamış 4 FILE NOT FOUND Dosya bulunamadı 5 DEVICE NOT PRESENT Cihaz hazır değil 6 NOT INPUT FILE Bu dosyadan veri okunamaz 7 NOT OUTPUT FILE Dosya yazılamaz 8 MISSING FILENAME Dosya ismi eksik 9 ILLEGAL DEVICE NUMBER Yanlış cihaz numarası Resim 1

Register: Akümülatör, X-Register

Daha önce OPEN ile belirtilmiş her kanal bu rutin kullanılarak çıkış için kullanılabilir. Yalnız burada kullanılacak kanal çıkış yapmaya uygun olmalıdır, aksi takdirde bilgisayar hata mesajı verir. Ayrıca CHKOUT kullanılmadan önce muhakkak OPEN kullanılmalıdır.

İsim: OPEN Amaç: Bir dosyanın açılması Adres: $FFC0, desimal 65472 Hazırlık: SETLFS, SETNAM Hata: 1, 2, 4, 5, 6 Register: Akümülatör, X-Register

Bu rutin kullanımı için sadece JSR $FFC0 satırı yeterlidir. Yalnız bundan önce SETNAM ile dosya adı ve SETLFS ile açılacak dosya kanalı belirtilmiş olmalıdır. Şimdi bu iki rutini

İsim: SETLF Amaç: OPE belirtilmesi Adres: $FFBA, desimal 65466 Hazırlık: Dosya numarası akümülatöre, kanal numarası X-registerine, ikincil adres Y-registerine yüklenir. Hata: Yok Register: Yok için çıkış kanalının

SETLFS ile OPEN rutininde kullanılacak cihazın numarası ve ikincil adresi bilgisayara bildirilir. Cihaz numarası 0 ile 31 arası herhangi bir sayı olabilir, ancak C-64'de sadece aşağıdakiler mevcuttur.

0.... Klavye 1.... Datasette 2.... RS232C-Kanalı

45

Klavyeyle gezinmek için ← ve → tuşları.