ommodore Kulüp üyeleri, Baytan Bitirmez'i Commodore Haberler Bülteni'ndeki Makine Dili yazılarından tanıyacaklar. Baş- ladığı makaleleri pehlivan tefrikası gibi uzatıp hiçbir zaman bitir- memekle meşhur olan Baytan Bitirmez, aylardır sürdürdüğü ve bir sonuca varacakmış gibi gözüken yazılarını baştan almakla ala- nında yeni bir rekor kırmış oluyo Dergi için yazı istemeye gıhıgmfzde Baytan Bitirmez'in bilgisa- yar alanında inceleme ve denetlemelerde bulunmak üzere bir- kaç aylığına İsparta'ya gittiğini söylediler. Bizim tahminimiz, eski bülten okurlarından gelebilecek tepkileri düşünüp her ihtimale kar- şı bir süre ortadan kaybolmak istediği... Hexadecimal (onaltılı) sayı sistemi- ni birkaç sefer anlattım. Aslında çok basit. Decimal (onlu) sistemi biliyoruz. Bir sayı görünce otomatikman, sağ- dan sola ilk haneyi 1'le, ikinciyi 10'la, üçüncüyü 100'le, dördüncüyü 1000'- le çarpıyoruz. Onaltılıda ilk hane * 4, ikinci hane." 16, üçüncühane *16*16 filan. Tabii O'dan 9'a on rakam yeri- ne, O'dan 15'e 1â rakama ihtiyacımız vor. Ü, 1,2......9.a,b.c.de.f,10,11 diye gidiyor. hexü01l - dec 1 ÜA- 140 0F- 15 10z 16 (1*1640) 15z 21(4*1645) 1Az 26 31z 49 BÜZ 128 A5- 165: FF— 255 (15"164 15) 100-256 (1671640*1640) Peki ya FFFF ne ediyor? Bir de ikili (binary) sistem var. Bunun da numarası, yine sağdan sola, ilk hane"1, ikinci"2, ü 1*4, dördüncü"8, beşinci" 16, vb. Yalnız iki rakam var: 1 ve Ü Mesela: 00000100 - 4 01000400 - 68 10101040 — 4170 11414444141 — 255 Bunların hex karşılığı ise, sırasıyla; AA, FF. Dikkat edilsin; ikiliyi hex e çevirmek, onluya çevirmekten daha kolay. Örneğin 8 haneli bir bi- nary sayının sol yarısı, İki haneli hex sa- yının İlk (sol) hanesine, sağ yarısı ise ikinci (sağ) haneye karşılık düşüyor. 0400 — hex4, 01000100 — hexdd, 8 haneli binary ile fade edebilecek en büyük rakam 11114114141 — 2 haneli hex ile fade edilebilecek en büyük ra- kam FF. Commodore'un kafası, bir de- fasında sadece 8 tane on-off (1-0) işa- retini anlamaya yetenekli olduğun- dan, hex sisteminin neden kullanıldı- ğını anlamak kolay. BASIC'in PEEK- POKE komutlarında niye hep O ile 255 arası sayıların kullanıldığı da böylece anlaşılıyor İ ça B Makina dili-denilen gayriinsanı dil, PRİNT, GET filan gibi yarı-ingilizce te- rimlerden değil, sıra sıra hex rakam- lardan oluşuyor. Buyurun bir örnek: CODO AD 00 BO OE C0 20 D2 FF COO DO F5 60 AD 45 CG'IÜ 52 AB 4'1 42 A — Bunun BASIC'teki karşılığı: “MERHABA"'I! Denemesi bed Programcılığımızı CO00, yani 49152 adresinden başlatıp CO14 (49172) ad- resinde bitecek şekilde düşündük. Şımdı yukardaki 21 tane rakamın de- mal — karşılığını — hesaplayıp, 49152 den başlayarak sırayla POKE edin. (POKE 49152,160: POKE 49153,0: POKE 49154....) Sonra SYS 49152 deyin. Ve seyredin. Birinci ilkemizi tahmin ettiniz herhal- de: Makine dili programlar, birer byte'lik rakamlardan oluşuyor ve bel- lekte, bizim seçeceğimiz belli bir ad- resten başlayaraık, her adrese bir byte olarak duruyor. BASIC'ten makine dili bir programı işletmek için, programın başladığı adrese SYS komutu veriliyor. Bu rakamlar ne demek oluyor? Ra- malların bazısı makine dilindeki ko- müutların rakamsal kodları, bazısı ise komutu izleyen değerler. Her komu- tun, arkasında kaç sayı değer alaca- ğı, komuta göre değişiyor ve sabift. Programcığımızın ilk rakamı olan A0, bir komut kodu. Makine buradan iş- lemeye başlıyor. A0 kodu, ardından bir rakam değer (parametre) alan bir kod. O halde 00 bir değer. Dolayısıy- la, onu izleyen B9'un da kod olması şart (yoksa makine sapıtır). B9, 2 byte parametre alan bir komut. Programı- mızda bu değerler Ü£, Cü, Sonra ge- len 20 gene bir komut. 2 byte para- metre (D2, FF)alıyor. CB gene komut. Pararmnetre yok. C0 komut, 07 para- metre, DÜ komut, F5 parametre. Ğ0 ko- mut: “İş bitti. geri dön” demek. 4D 45 52 48 41 42 41 ise merhaba demek. İnanmazsanız, üşenmeden bunları desimale çevirip, ASCILCHRS tablo- sundaki karşılıklarına bakın. Bu rakamlarla program yazmaya sadece deliler kalkışacağından, ma- kine dilinin yarı insani bir dille tercü- mesi olan Assembiy diye birdil daha icat edilmiştir. Assembiy dili, makine PRINT dilinin komut kodlarına biraz daha an- Ioşılır birer isim vermekten ibaret, Ör- neğin A0, LDY demek-yani Load Y.B9, LDA, yani Load A demenin bir çeşidi. 20, JSR, yani Jump to SubRoutine de- mek. CzİNY (İncrement V): COz-CPY (ComPare V): DÜZBNE (Branch if Not Egual); 60-RTS (Return from Subrou- tine). Yani program, Assembiyde şöyle yazılabilir. — ,, x z270 20 Fot Te E LDY #*300 do , Re r'!ı)ı?j: F*—'—ı"î( LDA $CODE,y 35 / <—,;-'1'îı37— ;9e JSR SFFD2. — YO DATAİRE HSS INY 32,21f » 95 CPYsSLSÖZ So DATAAŞI, BNE $C002 YO YADYEZ RTS do DATAFI,İ:; $'lar 3& lar ve başka hususların ne ol- duğunu sırayla anlatacağız. Yalnız $ işaretinin hex demek olduğunu söyle- mek şimdilik yetsin. Yani bir yerde 510 gibi bir ifade görürsek, bunun, bizim bıidıgımız on/ değil, hex 10 (yani ..?) ol- duğunu anlıyoruz. Bu dolar işaretinin BASIC” îekı dizi anlamına gelen $ ile il- gisi yok Makina diliyle iştiğal etmenin bir nu- marali koşulu, bir adet Makine Dili Mo- nitorüne sahip olmak. Televizyona benzeyen monitörlerle bir ilgisi olma- yan bu monitör, kaset veya diskette bulunan bir program. Makine dili programları ve basit assembiy çevi- rileri yazmayı, okumayı, değiştirmeyi, işletmeyi vb. sağlıyor. Yazının devamı- nı beklerken, yoksa, eşten dosttan bir tane monitör sağlamaya bakın; veya 1500 liraya kıyıp Teleteknik'ten istetin. Gelecek sayıda bir monitör programı dökümü vereceğim ama, ikibinbeş- yüz küsür DATA'yı hatasız girmeye ça lıştıktan sonra hölâ bu diziyi izlemeye devam edeceğinize pek ihtimal ver- Miyoru Bir de kuçuk yarışma: Elinize kâğıt kalem alın 1) 349A61 F7C0 nun desimal karşılı- ğını, 2) “Merhaba” diyen makina dili programcığımızı bilgisayar belleğine POKE edecek BASIC programı yazıve- rin. (İPucu: 10 FOR X— O TO 20 20 READ A Elimize ilk geçecek doğru çözümün sahibine bir adet monitör kasedi ace- le postayla gönderilecektir. O 53 65 ,66,65