Commodore sayı 31, sayfa 26

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 26

BELLEK

Baytlardan Commodore 64'ün belleğine geçmek çok kolay. Çünkü C 64'ün belleği byte-wise (bayt usulü) organize edilmiş durumdadır. Kafamızda belleği, üzerinde sekizer odalı evler dizisi bulunan uzun bir cadde olarak canlandırabiliriz. Her ev bir bayta, her oda ise bir bite karşılık gelmektedir. Tabii ki, bu evlerin herbirinin birer numarası vardır ve bu numaralar 0'dan başlayarak 65535'te biter. Yani bu bellek caddesi oldukça uzundur. Adreslerin toplam sayısı olan 65535, yaklaşık ya da kafadan atılma bir sayı değildir: Bu sayıyı 1024'e bölün. 64 KBayt (dikkat! Büyük harfle “K”') elde edeceksiniz. Bilgisayarımızın adının Commodore 64 olmasının nedeni de budur. 65536'yı 256'ya böldüğünüzde de 256 Pages elde edeceksiniz. “Page'' sözcüğü İngilizce kökenlidir ve sayfa anlamına gelir. Bilgasayarımızın belleği bir kitap gibi 256 sayfada toplanabilir. İlk sayfanın numarası 0'dır ve bu nedenle “Zeropage”' (sıfır sayfası) olarak adlandırılır. Bu sayfanm bilgisayarımız açısından özel bir anlamı vardır: Bilgisayar burada işletimi açısından önemli tüm değerleri tutar. Şimdiye kadar tanıtmaya çalıştığımız 64 KBayt bellek, belirli bir bellek türüne dahildi. bu tür bellekler RAM olarak adlandırılır. Karşımıza yine bir kısaltma çıktı. İngilizce Access Memory”' sözcüklerinin başharfleri. Bu ifadenin Türkçe karşılıği ise “rasgele erişimli bellek”. ““Rasgele erişim”'le kastedilen ise, bu bellek türünün hem yazmak hem de okumak için kullanılabileceği. BA-SIC dilinde PEEK komutuyla okunup, POKE komutusya yazabilirsiniz. İsterseniz bir kere deneyin.

PRINT PEEK(10000)

komutunu kullanarak, 10000 ev adresinde ne bulunduğunu okuyun. Bulacağınız sayı ile 256 arasında olacaktır. Şimdi buraya bir başka sayı, örneğin 78 yazın ve yeniden okuyun:

POKE 10000, 78 PRINT PEEK (10000)

Şimdi burada sizin 78 sayısını bulacaksınız. RAM alanı, belli ölçülerde programcının oyun alanıdır. Tüm BASIC programları, değişkenler, diziler ve alanlar orada saklanır. Eğer kasetten ya da disketten bir şey yüklerseniz, bu gidip RAM'a yerleşecektir. Önce de söylediğimiz gibi: Commodore 64, bize 64 KBayt'lık bir RAM sunar. Aslında bu kapasitenin içinde BASIC programcısı için belirli kısıtlılıklar da vardır. Zeropage ve ardından gelen yedi sayfayı, Commodore 64 kendi verileri için kullanır. Aslında eğer işletim sisteminin bazı önemli değerlerini silmeyi ya da bozmayı göze alabilirseniz, bu alana PO-KE yardımıyla bir şeyler yazabilirsiniz. Ama sorumluluk size ait olacaktır. Başınıza gelebilecek en kötü olay ise, sanki ölmüş bir bilgisayardır. Açma-kapama düğmesine el atmanız herşeyi yeniden düzeltecektir. RAM alanında 40960 adresinden sonraki kısım da BASIC programcısı için kısıtlı el atılabilecek bir yerdir. Buraya bir şeyler yazabilirsiniz, ama yazdıklarınızı PEEK kullanarak okumak isterseniz, o sayıyı yeniden bulamayabilirsiniz. Burada RAM'a erişme olayı bir miktar çapraşıktır. İlerki araştırmalarımızda bu enteresan alanı daha yakından inceleyeceğiz. Şimdilik söylememiz gereken, belirtilen RAM adreslerinin GEOS bulunmayan C 64'lerin işletimi için geçerli olduğu. GEOS yüklendiği takdirde, her şey oldukça değişiyor. 64 KBayt RAM'- in yanı sıra Commodore 64'te bir başka tür bellek de var: ROM. Bu da İngilizce “Read Onl Memory” sözcüklerinin başharflerinden oluşan bir kısaltma. Türkçe karşılığı, “salt okunur bellek”. Örneğin

PRINT PEEK(65383)

komutuysa buradan bir şeyi okuyabiliriz, fakat POKE kullanarak oraya bir şey yazmak istersek, yeni bir PEEK komutuysa bu isteğimizi yerine getiremediğimizi görürüz. Aslında RAM'daki 65383 adresine bizim sayı yazılmış gibi görünür. Ama bilgisayarımızda 40960 ila 49151 ve 53248 ila 65535 adresleri arasında RAM yerine ROM elemanları yer aldığından (tabii ki normal işletim durumunda), orada yaptığımız okumalar sırasında daima ROM içeriğiyle karşılaşırız. Peki, ROM'da neler bulunur? Bunlar bilgisayar terminolo-

PROGRAM ADI ROMRAM 60818 REM PRINT CHR$C147):POKE 2811,7:POKE 214 60036 SYS 58648 <175> ©0840 PRINT “"BELLEKTEKİ ROM ALANININ GÖR UNuUSU" ©6050 FOR I-55296 TO 562895 ©0076 NEXT <154> 680980 FOR TO 40968 <188> 686116 NEXT 1 00130 258 <181> 00150 SvY3 58648 <038> 001686 PRINT "BILGISAYAR TARAFINDAN AYRILA N RAM" ©086170 FOR TO 56295 681986 NEXT <018> 090210 GET A$z" * THEN 218 <179> 00230 POKE 53272,211:POKE 648,4 <189)> 00245 REM EKRAN KAYAR <051> 00258 POKE 56576,(PEEK(56576) AND 252) OR J 00270 POKE 53272,(PEEK(53272) AND 15) OR W 602386 POKE 648,P 003868 RETURN <1064>

Klavyeyle gezinmek için ← ve → tuşları.