Bu sayfadaki yazılar
Sayfanın metni
Sayfa 24
Tek tuşa basarak disketin directory'sini görmek ister miydiniz? Hem de o sırada hafızada bulunan programı silmeden?.. Valla, ben olsam isterdim.
Program yazarken, disketin directory'sini görmek istediğinizde yapacağınız yegane şey LOAD"$",8 yapmak, sonra da LIST vermektir. Ama böylece hafızadaki BASIC programınıza elveda diyebilirsiniz, hatta önceden diskete kaydetmemişseniz, ebediyen göremezsiniz onu...
BASIC ilerletme programlarında (SIMON'S BASIC, EX-BASIC vs.) buna uygun komutlar var. Ama ya bu programlara sahip değilsek ne yapacağız? İşte o zaman bu program yetişecek imdadımıza.
Programı yazdıktan sonra yükleyin ve RUN ile çalıştırın. Bilgisayarın açılış durumuna geldiğini göreceksiniz. Ama korkmayın, program bozuk değil. Şimdi bir disket takın ve F1 tuşuna basın. Ne oldu? Tüm directory satır satır ekrana geldi, değil mi? Bitince bir daha basın, bir directory daha...
İsterseniz SYS 64738 yapın, isterseniz RUN-STOP/RESTORE... F1 tuşu işlerliğini yitirmeyecektir. Hatta dışarıdan RESET tuşuna (eğer varsa) bassanız bile farketmez. Tek olanak bilgisayarı kapayıp açmak. Peki bu nasıl oluyor?
C-64'ün bir AUTOSTART-MODUL kullanma olanağı vardır. Bu daha çok, arka tarafa taktığınız kartuşların bilgisayar açılır açılmaz çalışması için yapılmıştır. Ancak yönetimini bildikten sonra biz de bu kolaylığı kendi programlarımız için kullanabiliriz (nitekim kullandık da).
Bilgisayarı açtığınızda, SYS 64738 yazdığınızda veya RESET tuşuna bastığınızda bilgisayar otomatik olarak 64738 ($FCE2) adresine atlar. Burada başlayan rutin, öncelikle $8004-$8008 (32772-32776) arasını kontrol eder. Eğer burada "CBM80" yazısını oluşturan harflerin ASCII kodları yoksa, normal işlemlerine devam eder. Eğer varsa, $8000-$8001 (32768-32769) arasında yer alan iki byte'in gösterdiği adrese atlanır ve işlemlere orada devam ediliir. Örneğin, her kartuş buraya kendi başlangıç adresini yazar ve böylece bilgisayar açıldığında kartuş çalışmaya başlar.
Buna benzer bir işlem RUN-STOP/RESTORE'da da vardır. Yalnız bu sefer $8000-$8001'in değil de, $8002-$8003 (32770-32771) arasındaki iki byte'ın gösterdiği adrese atlanır. Tabii ki CBM80 yazısı varsa. Bu arada dikkat edersenız, CBM80 yazısı büyük harflerin kodlarından oluşmak zorunda.
Bizim programımız da bu işlemi yapıyor. CBM80 yazısını yerine yerleştirip $8000-$8003 arasındaki adres byte'larına gereken değerleri yerleştiriyor. Böylece programımız hep çalışır durumda kalıyor.
Peki directory yüklemesi nasıl oluyor? Ve F1 tuşuna basıldığı nasıl anlaşılıyor? F1 tuşuna basıldığının belirlenmesi, daha önceki sayılarda da bahsettiğimiz interrupt programlamasıyla yapılıyor.
Çok sayılar önce, C-64'ün interrupt (kesinti) tekniği kullanılarak programlanabileceğini belirtmiştik (Bkz: HYPERSCREEN, Sayı:1). Birazcık hatırlatalım.
C-64, saniyede 60 kere işi gücü bir kenara bırakıp, belli bir rutine atlar ve bazı kontroller yapar; tuşa basılmış mı, cursor yanıp sönüyor mu, saati ayarlamak gerekiyor mu ve bunun gibi işler. Sonra da normal işine kaldığı yerden devam eder. Böylece biz onun farkına bile varmayız. İşte bu rutinin
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 25
içine girip, kendimize ait kısa bir programın da saniyede 60 kez işlemesini sağlayabiliriz. Programımız dolar dolmaz, kendini asıl yerine kaydırıyor ve SYS 64738 yapıyor. Böylece aktif hale geliyor. Bu sırada interrupt rutinini de değiştirip, basılan tuşları saniyede 60 kere kontrol etmeye başlıyor. Eğer F1'e basılmışsa directory'i disketten okuyup ekranı veriyor. Böylece siz directory'i görüyorsunuz, hafızadaki programı da bozmamış oluyorsunuz.
MDE ile yazacağınız programın yanısıra, inceleyebilmeniz amacıyla programın assembler dökümünü de veriyoruz. İlk satırda CBM80 yazısının yer aldığı beş byte'ı ve atlama adreslerinin belirlendiği dört byte'ı görüyorsunuz. Makine dili kullanan arkadaşlar programı çözümleyip, isteklerine göre değiştirebilirler.