1 Temmuz 1990 Tarihli Commodore Gazetesi Sayfa 26

1 Temmuz 1990 tarihli Commodore Gazetesi Sayfa 26
Metin içeriği (otomatik olarak oluşturulmuştur)

Durant Har Purmnam kasına eklenir. Buna şöyle bir örnek verebiliriz: jİsr i-rectangele ; şu anki sistem motifiyle bir ; dikdörtgen çiz .by 0 ; üst y koordinatı (0-199) .by 199 ; alt y koordinatı (0-199) WO 0 ; sol kenar (0-319) WO 319 ; sağ kenar (0-319) Program jirs komutundan döndüğünde 6 baytı atlar ve buradan işlemeye devam eder. In-line çağırımlarda da- ha sonra gelen byt sayısına dikkat etmezseniz programı- nız kilitlenebilir. Yukarıdaki programı çalıştırdığınızda tüm ekranı sistemin son kullandığı 8 x8 ebatlarındaki motif ile doldurur. Bu tür çağırımların tek zararı normal çağırımlardan daha yavaş olmasıdır. Ama örnek prog- ramı incelersek toplam 9 bayt aldığını görürüz. Oysa ay- nı programı pseudo registerler yardımıyla yapsaydık 27 bayt uzunluğunda olacaktı. Sanırım bu kadar büyük bir bellek tasarrufu için birkaç mikrosaniye feda etmekten çekinmezsiniz. Bu arada ekleyeyim, bundan sonra rutin adlarından önce gelecek bir i- ifadesi bu rutinin bir in- line sistemiyle çağrılması gerektiği manasına gelecek. Şimdiye kadarki kısımlarda yalnızca ana döngü ve In- terrupt düzeyinden bahsettik. oysa bazan (pek tavsiye et- mememe rağmen) ana döngü ve interrupt düzeyini de- ğiştirmeniz gerekebilir. Bu gibi durumlar düzeltmesi çok zor olan senkronizasyon bozulukluklarına yol açabileceği için çoğu programcı bu yolu tercih etmez. Bu kod cinsine non-event kodu denir. Zorluğu ve ge- reksizliği yüzünden pek tercih edilmeyen bir yoldur. Eğer özel bir donanım eklemek için ana döngüden bağımsız 26 Boalt ETabiliM Teleğrüph MWMuykonos Superb Tilden Bowditch bir interrupt rutuni çalıştırmak istiyorsanız, non-event ko- du tercih etmeniz gerekecektir. Bunu yapabilmek için be- lerli bazı sistem değişkenlerinin değerleriyle oynamanız gerekmektedir. Bu sistem değişkenlerinin isimleri inter- rupt TopVector, interrupt Bottom Vector, ve applicati- on Main'dir. (Şu anda yeterli bilgiye sahip olmadığımız için bu değişkenlerin adreslerini yazmayacağım fakat ile- ride GEOS'un tüm sabit değerlerini, değişken adresleri- ni ve rutin adreslerini içeren tablolar yayınlayacağız). Eğer interrupt Top Vector'ün değeri değiştirilirse sizin kodunuz (tahmin ettiğiniz gibi) GEÖS interrupt düzeyinden önce çağrılacaktır. Bu yolu seçtiyseniz önceden bu adreste sak- lanan IİnterruptMain adresine bir jump yaparak progra- mınızı terketmelisiniz. Değiştirdiğiniz vektör interrupt Bottom Vector ise programınız normal interrupt düzeyin- den sonra çağrılacaktır. GEOS bu vektörün değerinin 0'dan farklı olması sayesinde sizin burayı kullandığınızı anlar. Burada dikkat etmeniz gereken en önemli husus ise programınızın sonunda RTS kullanmanız gerektiği- dir. Eğer yanılıp da RTI kullanırsanız programınız ve GE- OS kilitlenir. Eğer applicationMain vektörünü değiştirir- seniz ana döngü sonunda programınıza atlama yapılır. Burada da RTS ile ana döngüye dönebilirsiniz. Şimdiye kadar öğrendiklerinizle bir uygulama yazma- nız mümkün olmasa bile, ileride devam edecek yazımız için çok önemli bir temel oluşturmaktadır. Bu yüzden 49. sayıda yazılanları ve bu yazıyı çok iyi anlamazsanız da- ha ileride büyük zorluklarla karşılaşırsınız. Gelecek .sayımızda bir uygulama yazmanın temel adım- ları konusunu işleyeceğiz ve bir de basit GEOS bellek ha- ritası yayınlayacağız. Gelecek ay bu köşede buluşmak üzere...

Bu sayıdan diğer sayfalar: