Bu sayfadaki yazılar
Sayfanın metni
Sayfa 35
Her ay Atölye'ye konu bulmak daha zor oluyor. Ne olur biraz yardım edin. Yaptığınız programları ve açıklamalarını, ya da yapamadığınız programların fikirlerini memnuniyetle kabul ederim. Eğer bu da işe yaramazsa her ay bu sayıda olduğu gibi komik komik programlarla idare etmek zorunda kalırsınız. Uyarması benden. Yukarıdaki kötümser uyarıya pek kulak asmayın. Bu ayki program o kadar da kötü değil. BASIC kullanıcılarının çerçevenin üst kısmına ait alt kısmına 24'er karakterlik mesajlar yazmalarını sağlayan bir rutin tanıtacağım bu ay. Bu mesajlar normal karakter setinde olacaklar ve istediğiniz renkte görünebilecekler. Ama sistemi biraz zorladığımız için diskten yükleme yapılırken bilgisayarınızı kilitliyor ve BASIC'i oldukça yavaşlatıyor. Bunun yanında iyi yanları da var programın, Mesela üst ve altta 8'er sprite kullanılmasına rağmen ekran sınırları içinde kullanılan SPRITE'ları hiç etkilemiyor. Yani toplam 24 sprite'ı bir anda ekranda tutuyor. Tabii ki sprite'ları gerekli şekilde MULTIPLEX etmiyor. Yani SPRITE'ınızı BORDER sınırlarının altına ya da üstüne çıkarmaya çalışırsanız ortalığı karıştırırsınız. Bu yazıda ilk olarak BASIC'cilerin programı nasıl kullanabileceklerini anlatacağım. Eğer yeterince yerim kalırsa bir de makine dili kullanıcıları için rutinleri açıklamak niyetindeyim. Eğer bu sayıda yerim kalmazsa bile gelecek sayıda mutlaka rutinleri açıklayacağım (çok değerli oldukları için değil, makine dili meraklılarını üzmemek için). Programın yapabildikleri o kadar fazla değil. İsterseniz SYS ile çağırabileceğiniz adreslerin ve yaptıkları işlerin listesini vereyim önce: $C000 — 49152: Border'ları açan ve sprite'ları...
Vedat Hallaç, interrupt'larla başa çıkan interrupt'ları çalıştırır. Bu arada görüntüde arızalar yaratacak olan $3FFF ve $FFFF adreslerini temizler. $C180 - 49536: Yazı alanında yer alan 24 karakteri üst çerçevede yer alan bölgeye yerleştirir. $C18C - 49548: Yazı alanında yer alan 24 karakteri alt çerçevede yer alan bölgeye yerleştirir. $C100 - 49408: Sprite'ların grafik datasını temizler. Yazıları silmek istediğinizde ya da programı ilk yüklediğinizde kullanmalısınız. $C200 - 49664: Interrupt'ları kapatarak kontrolü ROM'lara devreder. Hıza ihtiyacınız olduğu zamanlarda, ya da yükleme yapmadan hemen önce bu adrese sıçramalısınız. Demin de söylediğim gibi, interrupt'lar açıkken diskten yükleme yapmaya kalkarsanız bilgisayar kilitleniyor. Interrupt'ları geri açmak için $C000'a sıçradığınızda yazılar hiç değişmeden geri dönecektir. Bir de POKE'larla erişebileceğiniz adreslerin kısa bir listesini vereyim isterseniz: $C1B0 - 49632: Üstteki yazının hangi renkte yazılacağını belirler. $C1B1 - 49633: Alttaki yazının hangi renkte yazılacağını belirler. $C1B8 - 49592: Yazı alanının başlangıcı. Bu alan 24 bayttan oluşur ve yazılacak yazının ekran kodlarını tutar. Yani “A” harfini yazdırmak için ASCII kodu olan $41 (65)'i değil $01 (1)'i kullanmalısınız. Programın tam olarak nasıl kullanılacağını belirtemem. Bunun için en iyi yöntem kullana kullana bu işi sizin öğrenmeniz olacaktır. Burada size sadece benim aklıma gelen incelikleri belirteceğim. Kısa bir liste halinde vereceğim bu püf noktalarına çok güvenmeyin. Hatta kendi püf noktalarınızı oluşturmaya çalışın. İşte benim fark edebildiklerim:
Rutinin Bellek Haritası 1. SYS ile Çağrılan Adresler:
der, yazıları siler. Sprite'lara yazar. Sprite'lara yazar.
BASIC'e bırakır.
belirler.
belirler.
Diğer adıyla: Yazı alanı.
$C000-49152: Boörder'ı açacak interrupt rutinini aktive e- $C100—49408: Sprite grafik alanını (dolayısıyla borderdaki $C180-—49536: Yazı alanındaki karakterleri üst borderdaki $C18C-49548: Yazı alanındaki karakterleri alt borderdaki
$C200—49664: Interrupt'ı (ve border'ı) kapatır, kontrolü
2. POKE ile Kontrol Edilen Adresler: Üst borderda yer alan yazıların rengini
$C1EB1-49633: Alt borderda yer alan yazıların rengini
$C1B8-$C1CF - 49592-49615: $C180 veya $C18C ile çağrılarak, sprite'lara yerleştirilecek yazının yazılacağı yer. Vereceğim önemli noktalar: 1) Programınızın en başında SYS 49408 komutunu verin ve sprite alanlarını temizleyin. Sprite alanı olarak $E000 civarı kullanıldığı için BASIC programlarınıza bu şekilde zarar veremezsiniz. 2) Eğer uzun süre aynı yazı ekranda duracaksa bu yazıyı sprite'lara interrupt'lar kapalıyken yazdırın. Bu sayede işlem çok daha kısa sürecektir. 3) Yazıları ekrana yazdırmak için örnek programdaki metodu kullanmayın. Bunun yerine gerekli sayıda DATA satırlarına yerleştirin ya da doğrudan belleğe POKE edin. Bu sayede işiniz daha hızlı görülür. 4) Yazı alanına hiçbir zaman 24 karakterden az değer yazmayın. Daha önceden yazılmış olan karakterlerin artıkları sizin yazılarınızı bozabilir. 5) Altta ve üstte aynı mesajı yazmak istiyorsanız SYS 49536 ve SYS 49548 komutlarını ardışık olarak verin. 6) Yazı yazmadan önce interrupt'ı kapatın (SYS 49664). Her şey hazır olduktan sonra interrupt'ı tekrar açabilirsiniz (SYS 49152). 7) Eğer karmaşık hesaplara girişecekseniz, interrupt'ı kapatın. Çünkü interrupt'lar açık olduğu zaman bütün hesaplar yüzde otuz ile elli arasında yavaşlıyor. 8) Programlarınız sprite kullanıyorsa hiçbir şey değiştirmeye çalışmayın. Sadece sprite'ların görülebilir ekran sınırları içinde kalmasına dikkat edin. Eğer siz sprite'ınızı benimkilerin yanına getirirseniz hiç de hoş olmayan görüntülerle karşılaşırsınız. 9) $3FFF (16383) ve $FFFF (65535) adreslerini elinizden geldiğince koruyun. Bu bölgelere bir değer yazarsanız border'da garip siyah çizgilerle karşılaşırsınız. Aslında isterseniz çerçevede yana kayan çizgiler yaratabilirsiniz. Şu programı bir deneyin isterseniz:
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 34
Eğer kaset kullanıyorsanız 08 yerine 01 yazmanız yeterli olacaktır. Cevap 2: Go ve Disassemble komutları monitörün en sık kullanılan komutlarıdır sanırım. D1000 komutu ile, $1000'den başlayan makine dili programının listesini alabilirsiniz. G1000 komutu ise bu bölgede bulunan programı çalıştırmak için kullanılır. AMICA PAINT'i bulun, tüm problemlerinizden kurtulun. Gerçekten de piyasada bulunabilecek en iyi çizim programı olarak AMICA PAINT'i gösterebilirim. Koala uyumu sayesinde, diğer programlarla grafik alışverişi de oldukça iyi bu programın.
Sayın Commodore Dergisi, Bizim sorunumuz GEOS'la ilgili, Elimizde bir adet MPS 1230 printer mevcut. Bununla, GEOS'la hazırladığımız sayfaları parça parça veya bütün basmanın imkânı var mı? Biz hiçbir şekilde printer çıktısı alamadık. Hardcopy ile basmak istediğimizde de printerdan saçma sapan karakterler çıkıyor. Denemedik yol bırakmadık. Uygun printer seçimi yapmak için gerekli işlemleri de uyguladık. Fakat MPS 1230 menüde mevcut değil. Bunun yerine COMM compatible kısmından da denedik, sonuç yine başarısız. Yardımlarınıza şimdiden çok teşekkürler. Olgun Duyar, İlker Par, Kamil Turan
Cevap: Probleminiz, printer alan herkesin karşılaştığı türden. GEOS'un printer'ınızı destekleyen bir driver'ını bulmanız oldukça zor olabilir bazı durumlarda. Neyse ki siz şanslı insanlardansınız. Çünkü MPS 1230, EPSON FX80 ve IBM ProPrinter dahil 4 printer'ı emüle (taklit) edebiliyor. Bu sayede aşağıda anlatacağım yolu kullanarak printer'ınızdan yararlanabilirsiniz:
Printer'ınıza yeni kâğıt takın ve kapatın. Form FEED ve Line FEED tuşlarına birlikte basın ve parmaklarınızı çekmeden printer'ı açın. Printer size sorular sormaya başlayacaktır. Bu sorulara EVET cevabını vermek için Line FEED tuşuna basın. Seçeneği değiştirmek için ise Form FEED'i kullanın. Bu şekilde printer'ınızın kendisini EPSON FX80 moduna sokmasını sağlayın. SERIAL Commodore interface'ini seçin ve PC.COMMANDS moduna geçin. LOCAL'ı kullanarak değişiklikleri kabul ettirin (en iyisi printer'ınızın manual'unu okuyun bu işlem için). Artık printer'ınız seri porttan çalışan bir EPSON FX80 sanacaktır kendini. Şimdi GEOS'u çalıştırın ve printer olarak EPSON FX80'i seçin (standart GEOS disklerinde bu printer driver mutlaka bulunur). Şimdi garip karakterlerle karşılaşma olasılığınız yoktur. Artık üç şey başınıza gelebilir: a) Printer'iniz tam olarak çalışır (MURPHY'ye göre bu seçenek olanak dışıdır). b) Satırlar arasında bir karakter boş kalır. c) Tüm karakterler aynı satıra basılır. Eğer b) durumuyla karşılaştıysanız, printer'ınızın sorularına tekrar cevap verin ve CR - CR ile ve LF-LF modlarını seçin. Probleminiz c) ile aynıysa bu sefer de LF ve LF-LF CR modlarını seçin. Artık printer'ınızı rahatlıkla kullanabilirsiniz. Hepinize geçmiş olsun. Sevgili Sinan abi, (Mektubunuzun GEOS kopyalama kısmını kesiyorum. Bu konuda yardımcı olamayız). Disk driver'ım hakkında bazı sorularım olacak. Cevaplarsanız sevinirim: Soru 1: 202 blok üzerindeki programları nasıl yüklerim? Soru 2: Disk driver'ın hızını nasıl artırırım? Soru 3: Disketteki bir programı nasıl autoboot yaptırabilirim? Alper Tugay Cevap 1: Ya çok iyi makine dili öğrenip kendi rutinlerinizi yazın, ya da (daha basiti) bu işi yapabilecek bir turbo programı elde etmeye bakın (SWAT 3 gibi). Cevap 2: Bu işi kendi başınıza yapmak için oldukça iyi makine dili bilgisine ve The Anatomy of 1541 türünden 1541 ROM'unu açıklayan bir kitaba ihtiyacınız var. En iyisi siz demin bahsettiğim disk turbolarından birini alın. Ya da biraz bütçenizi aşıp bir Dolphin DOS satın alın. Bu sayede yükleme ve kaydetme işlemleriniz 25 kat hızlanacaktır. Cevap 3: Eğer AutoBoot'tan kastınız, bilgisayarınızı açar açmaz programın yüklenmesiyse, bu işi C64'le yapamazsınız. En azından bir Commodore 128 bulmalısınız. Bunun dışında autostart programlar yaratmak gerekli programı bulunca oldukça kolay olacaktır.
Sayın Commodore Dergisi yetkilileri, Size birkaç sorum var: Soru 1: “$2000 ile $FF arasını bir yere kaydedin” nasıl yapılır. Soru 2: G1000, D1000 gibi komutlar monitör programının neresinde kullanılır? Soru 3: Amica Paint gibi bir programla yaptığım resmi programıma nasıl ekleyebilirim?
Cevap 3: Bu makine dili bilmiyorsanız sizi oldukça zorlar. İlk olarak Koala formatını öğrenmelisiniz. Daha sonra da grafik moduna nasıl geçeceğinizi öğrenin. Şimdi Koala formatında kayıtlı dosyadan grafik datasını ayırabilirsiniz.