SIC programında makine dili prog- ramını şu cümlelerle işleme koyabi- lirsiniz: 10CH-65 : N— 500 20 MSB - İNT (N”/256) 30 LSB — N-256/MSB 40 SYS 4892, CH, LSB, MSB 20 ve 30 numaralı satırlar, maksi- mumu 65535 olan N değerini her bi- ri O ile 255 (dahil) arasında değişen tek byte'lik bir niceliğe dönüştürür. CH değişkeni de N kere yazılacak ka- rakterin ASCII kodunu depolar. SYS komutu bilgisayarın 4892'ye atlayıp, oradaki makine dili progra- mını işleme koymasını sağlar. SYS komutunun ardından gelen ilk para- metre, makine dili rutininin başlama adresini (4892'yi) temsil etmektedir. Onu izleyen üç parametre ise, maki- ne dili rutini işleme konmadan önce işlemcinin A sicil, X sicil ve Y sicilin- de depolanması gerekli değerlerdir. Bütün bu konulara yabancı oldu- ğunuz varsayarak, önce başlama ad- reslerinden ve sicillerden biraz söze- delim. BASIC'de, bir programın di- zisel akışını değiştirmek için GOTO veya GÖSÜB komutlarını kullanırız. Hangi komutu kastettiğimizi ise sa- tır numarasıyla belirtiriz. Yani, bil- gisayar GOTO 100 cümlesini işleme koyduğunda, bir sonraki komutu al- mak için 100., satıra atlar. 100, satı. rın bilgisayar hafızasında nerede ol- 18 duğunu bilmeyiz; zaten buna gerek de yoktur. Hafızada 100. satırın ye- rini bulmak BASIC'ın görevleri ara- sındadır. Nitekim, BASIC'e “yüksek düzeyli dil” denmesinin nedeni de, programcıyı hafızada neyin nerede depolandığını takip etmek gibi basit şeylerden kurtarmasıdır. SYS komutu, düşük düzeyde bir dile inmemize olanak verir. BASIC SYS 48920yi görünce bir sonraki ko- mut için mikroişlemciyi hafızada 4892 adresine atlatır. İşlemci orada PRINT veya GOTO gibi BASIC cümleleri değil, BASIC çeviricisi programına başvurmadan, kendi ba- şına işleme koyabileceği komutlar bu- lunacaktır. Birazdan, bu konuda ör- nekler göreceğiz. SYS komutunun bilgisayar 4892'ye sapmadan önce A, X ve Y sicillerine bazı değerler koyduğunu görmüştük. Siciller, tıpkı el kalkülatörlerindeki hafıza işlevi gibi, mikroişlemci için- de okuma-yazma depolarıdır. C- 64'te, BASIC programının SYS ko- mutunu işleme koymadan önce A, X ve Y sicillerinin değerlerini hafızada 780, 781 ve 782 konumlarına POKE etmesi gerekir (Bk. C-64 Programcı- sının Rehberi, s. 318). C-128'de, ka- yıt değerleri SYS komutuna dahildir. MAKİNE DİLİ Makine diline girmeden önce, size bir akıl verelim: C-64 veya C-128 Programcısının Rehberi'nde (kısaca, PRG'de) 5. bölümü bir okuyun. Bu bölüm assembly dilini ve bilgisayarın iç işleyişlerini gayet güzel özetlemek- tedir. PRG'ler kitap olarak pek net ve tertipli sayılmasalar da, bir sürü te- mel ve yararlı bilgi içerirler, bir PRG'nız yoksa, gerçek bir kurcala- yıcı sayılmazsınız. Kısacası... Makine dilinin herhalde en zor ta- rafları (gerek ikili, gerekse onaltılı sa- yı sistemi ile) adresleme tarzlardır. Assembler programı makine dili programlarını yazmanın içerdiği ma- tematiksel yükü biraz hafifletir, ama tamamen ortadan kaldırmaz. Adresleme tarzlarına gelince, yal- nız ve yalnız bol zaman ve pratikle tam olarak öğrenebilirsiniz onları. İsimlerini boşverin. Önemli olan iş- levleridir. LDA (S3A,X)'e “endeksli dolaylı adresleme”' dendiğini bilmek işinize yaramaz, ama bu komut so- nucunda A sicilinin tam olarak nere- Commodore den yüklendiğini bilmek herşeyi de- ğiştirir. Eğer C-64 kullanıyorsanız, C- 128'deki HEX komutunun bir ben- zerini oluşturmak için 1030. satırı GOSUB 2050 yapmanız gerekli. Ay- rıca 64'te 2000'de başlayan satırların eklenmesi gerektiğini de unutmayın. 64'te işe başlamak için: 1. Sicim Yükleyici'yi yukarıda an- latıldığı gibi yükleyip uyarlayın. 2. RUN yazarak Sicim Yükleyici'- yi işleme koyun. 3, Makine dili monitör programı- nızı yükleyip geçin SİCİM utility'si C 64'te, şimdi bu- lunduğu adres olan 4892'de genellikle aksayabilir. Çünkü, BASIC prog- ramları bazan araya karışmaktadır. Bu tartışmada yalnızca programın hafıza içindeki durumuna bakacak, işleme koymaya çalışmayacağız. Programı C-64'te de kullanılabilecek biçimde harekete geçirme çarelerine ise daha ileride bir göz atarız. C-128'de, Sicim Yükleyici yazıp sonra da MONİTÖR'ü girerek (eğer değişiklik yapmadıysanız, F8'e bas- manız gerekli), SİCİM utilitiy'sini in- celemeye başlayabilirsiniz. Nereden başlayacağız? Rutinin ha- fızaya 4892'den ($131C) itibaren yük- lendiğini biliyoruz. Bu konumdan di- sassemble işlemine başlayalım. Önce D 131C (ya da monitörünüzde geçerli olan disassemble komutunu) yazın. SİCİM rutinin ilk komutları JMP $1324 EOR ($48,X) 10? EOR $E021, Y O meçhul ??? komutu ilk bakışta aklınızı karıştırabilir. Bu program gerçekten işleme konabilir midir? Bu rutinin ne işe yarayacağı konusunda ilk ipucunu JMP komutundan alıyo- ruz. Bu komutla, işlemci koşulsuz olarak adres $1324'e atlamaktadır. Böylece EOR (dışlayıcı-OR) komut- larıyla meçhul komut açıklığa kavu- şuyor. O bitler muhtemelen gerçek- ten komut değil de, yalnızca veri de- Berleridir. Bilgisayar onları işleme koymaz. Doğruca üzerlerinden atlar. Bu varsayımı doğrulamadan önce di- sassembly işlemine devam edelim. Jmp komutu $1324'e gitmiş oldu- Bu için, bu sefer parçalamaya oradan başlıyoruz. Şimdi karşımızdaki ger- Z İ