Bu sayfadaki yazılar
Sayfanın metni
Sayfa 63
& Ve
BURAK KİPER
Klavye
BASIC komutları GET, GET KEY ve INPUT dışında özellikle Makine Dili kullanıcıları için klavyeyi okumanın çok çeşitli yolları bulunmaktadır. SIFIRINCI SAYFADA (ZERO PAGE) 213 numaralı adreste bilgisayar son basılan tuşun değerini saklar. Burada saklanan değer ASCII değeri değildir. Bunun yerine bilgisayarın ROM'unda yer alan tablodan çıkarılmış değerlerdir. C64 son basılan tuşun değerini 203 ($CB) adresinde saklar. Bu değerler C128'de yer alan yeni tuşlar yüzünden her zaman C64'tekilerle aynı değildir. Bir başka değişiklik de hiçbir tuşa basılmadığında C64'te 64 değeri saklanırken C128'de 88 değeri saklanır. Aşağıda C128'in yeni tuşlarının değerlerini bulabilirsiniz.
HELP-tuşu 64
TAB-tuşu 67 ESC-tuşu 72 LİNE FEED 715
Klavyenin alt kısmında RETURN tuşunun yanında bulunan cursor tuşlarından başka üst kısımda da cursor tuşları bulunuyor. Bunların değerleri ile alttaki cursorların değerleri farklıdır.
Cursor Yukarı 83 Cursor Aşağı 84 Cursor Sola 85 Cursor Sağa 86
C128'de bir de nümerik tuş takımı bulunuyor bu tuşların da değeri klavyedeki diğer sayısal tuşların değerlerinden farklı.
Tuş Klavye Nümerik Tuş Takımı 1 56 72 2 59 68 3 8 79 4 44 69 5 16 66 6 19 77 7 24 70 8 27 65 9 78 0 50 81 . 44 82 ENTER 4 76 * 40 73 - 43 74
Joystick Portu'nun 213 ($CD) adresine değişik bir etkisi var ama ne yazık ki bu adres joystick'i okumak için yararlı değil. Eğer joystick'i ileri iterseniz bu adresteki değer değişmez.
Joystick Durumu Adresin değeri Yukarı 88 ALT tuşu basılmış gibi Ortada 88
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 62
100 - — VIC- 53248 110- VI —53265 120 - — .EO V2 —53272 — .EÇ CIA-$DDOO 140 - — .BA $C400 150- #59 170- LDA #8 180 - STA V2 190- LDA #0 200 - 210- RTS
Yazdığımız programı denemeden önce, bir de bunun tersi işlemi yapan programı yazalım. Bunu, deminki programın hemen arkasına ekleyelim. Yani, şu satırları da girmemiz gerekecek: 200 - DURUMA
DÖNÜŞ 210- OFF LDA# 27 220 - STA VI 230 - LDA # 21
240 - STA V2 250 - LDA #3 260 - STA CIA 270 - RTS
Dikkat ettiyseniz; yazdığımız bölümün çağrı adresini belirlemek için başına “OFP” etiketi koyduk. İlk bölümün başlangıcını da aynı şekilde belirleyelim. Bunun için, 150'nci satırı şu şekilde değiştirelim:
150—ON LDA # 59
Kaynak programımızı assembler'dan geçirdikten sonra, bir disassembler ile inceleyelim. Şöyle bir görüntü ile karşılaşırız:
C400 A9 38 LDA # $3B C402 8D 11 DO STA C405 A9 08 LDA $08 C407 8D 18 DO STA $DO018 CA4A0A A9 00 LDA $00 C40C 8D 00 DD STA $DDOO C40F 60 RTS C410 A9 1B LDA # $1B C412 8D 11 DO STA C415 A9 15 LDA *# $15 C417 8D 18 DO STA $DO18 C41A A9 03 LDA # $03 C41C 80 00 DD STA $DDOO C41F 60 RTS #
Sembol tablomuzu, sort edilmiş (alfabetik sıraya dizilmiş) biçimde görmek için /!! komutunu verdiğimizde:
CIA - $DDOO OFF —- $C410 ON - $C400 VIC — $DO0O0O Vİ V2-$DO0O18
ile karşılaşırız. Yazdığımız altprogramları denemeden önce, grafik moduna geçme (ON) ve normal moda dönme (OFF) işlemlerinin adreslerini ondalık sisteme çevirelim. Bu işlem için, süper assembler'ın, < — fonksiyonunu kullanabiliriz. ON etiketi için $C400 — 50176, OFF etiketi için $C410 — 50192 rakamlarını elde ederiz. Yarattığımız altprogramların işlevlerini ne derece yerine getirdiğini kontrol etmek için, direkt moda aşağıdaki satırı girelim:
WATT 198,1:5YS50192
Yapılan işlem, önce grafik moduna geçip bir tuşa basılmasını beklemek ve tekrar normal moda dönmek.