Bir Makinede Üç Bilgisayar: Commodore 128

Geçen sayımızda başladığımız “Bir Makinede Üç Bilgisayar: Commodore 128“ adlı yazımıza devam ediyoruz. Yazımızın bu bölümünde Commodore 128'in bazı özelliklerinin yanısıra BASİC 7.0 ile ilgili bilgiler de vermeye çalışacağız.

Daha büyük programları değişken belleğinin zararına olmak üzere oluşturabilmek mümkün değildir. Bank (bölüm) başına 64 KByte'ın tümünü de kullanamayız, çünkü her iki bankta Zeropage için, Stack için ve ekran belleği için belirli bir alan ayrılmıştır. Bu alan $0400'e kadar uzanır. Bir Basic programı işlemekteyken, Memory Unit (MMU— BYB Bellek Yönetim Birimi) ,hangi bankaya erişilmesi gerektiğini düzenler. Bellek Yönetim Birimi bir değişkenin mi, yoksa bir komutun mu işleneceğinin bilgisini Basic çeviricisinden alır. Sistem için ayrılmış olan SO000'- dan $0400 alanına yine dönelim. Bunun özelliği, bu alanda yalnızca O bankının olabilmesidir. 1 bank orada bulunamaz. Böylece işlemcinin daima aynı banka erişmesi ve dolayısıyla 4 bankında O bankındakinden farklı bir sack'in bulunması nedeniyle durmaması garanti edilmiştir. Ek olarak, kullanıcı kendine ait 4 ilâ 46 KByte'lik alanı, bellek başlangıcında veya sonunda ayırabilir (şema 2). Bu alan, bankların değiştirilmesi ve aynı verilerin kullanıma hazır olması gerektiğinde, kullanıcı tarafından kendi makine dili rutinlerinde stack veya bellek olarak kullanılabilir. Bellek Yönetim Birimi, alan seçimi için RAM Konfigürasyon Register'ini (RCR) kullanır. RCR'nin O. ve 4. bitleri, O ve 1 banklarının ortak bellek alanını gösterir: 1, 4, 8 veya 16 KByte. Her iki bit de O ise, ortak bellek 1 KByte'lıktır. her iki bitin de 4 olması durumunda ise ortak bellek 16 KByte olur. RCR'nin 2. ve 3. bitleri, alan durumunu belirtir. 2. bit doluysa, ortak alan belleğin alt sınırında, 3. bit doluysa üst sınırındadır. Her iki bitin de olması durumunda ise, belleğin hem başlangıcında, hem de sonunda verili alan ayrılmıştır. Yani bu alan o sırada kullanılmakta olan her programa konulabilir. Daha önce de belirtildiği gibi, ortak bellek daima O bankında bulunur. Fakat Bellek Yönetim Birimi (Memory Management Unit-MMU), RCR aracılığıyla, değişikliğin programda açıkça belirtilmesi gerekmeksizin, hangi adreste bankın değiştirilmesi gerektiğini bilir.

Organizatör - Bellek Yönetim Birimi (MMU)

Bellek Yönetim Birimi, belleğin yapısını yönetir. Hangi RAM bankının aktif durumda olduğunu veya bir sonraki çevrimde aktif du- TuMA geçmesi gerektiğini belirler. BYB'nin en önemli registerleri, daha önce adı geçen RCR ve Configuration Register'dir (CR). CR, Commodore 128'in ROM, RAM ve GİÇ konfigürasyonlarını denetler. Bu registerin adresi G/Ç alanında $DSOO, Kernal alanında ise S$FFOO'dır. SD500O'deki CR yalnızca GİÇ erişimlerinde kullanılır. BYB, registeri kendisi ayarlar. Hiçbir GİÇ erişimi gerçekleşmediği takdirde, CR (tüm G/Ç rutinleriyle birlikte), bellek haritasında (Memory Map) yer almaz. SFFOO'daki CR ise daima bellek haritasında bulunur. CR'nin O biti, 128 modunda iş-

ZE Ka

lemciye erişimi düzenler: Ya GİÇ alanında ($DO00-SDFFF, High) ya da ROM/RAM'da (Low) 2. ve 3. bitler, 128 modunda $8000 ve $SBFFF adresleri arasında bellek türünü belirlerler. Her iki bit de “0” ise, bellek haritasındaki Basic-High'a, yani ikinci Basic- ROM kısmına erişilir. 2. bit “1” ise, içsel bir ROM kapatılır. Genel olarak aletlerde platin üzerinde bir ayak, bu ROM için boş bırakılmıştır. Bununla amaçlanan, buraya farklı bir karakter setini yerleştirebilmektir. Bu durumda tabii ki klavyenin de yeni karakter setine göre düzenlenmesi gerekecektir. Enteresan bir durum, 3. bitin “4” olması durumunda ortaya çıkmaktadır. Bu takdirde $8000'den SBFFF'e kadar olan alanda bir modül kapatılır. Her iki bitin de “4“ olması durumunda, 128 bu alanda yalnızca RAM'ı görür. Daha sonraki 4. ve 5. bitler, 2. ve 3. bitlerle aynı fonksiyona sahiptirler, fakat SFFFF'e kadar olan alandaki bellek yapısını belirlerler. Dikkat edilmesi gereken nokta, $DO00O'dan SDFFF'e kadar olan alanın bir “ROM deliği” oluşturmasıdır. 4. ve 5. bitler isgibi ayarlanabilir; bilgisayar, bu alanda G/Ç alanının mı yoksa karakter seti ROM'unun mu kapatılacağını kendisi belirler. Yani bir soket modülünde $DO0OO'dan $DFFF'e kadarki alanın tabu olduğu gözardı edilebilir. C-64'tekinin iki katı kadar, yani 32 KByte'a kadar ROM kapatılabilir. Son olarak 6. ve 7. bitler RAM bankını seçerler. Commodore 4128'in 128 versiyonu için yalnızca 6. bit önemlidir. Bu bit “0” olduğunda O bankı, “4” olduğunda 1 bankı seçilmiş olur.

Dışarıyla Bağlantı

Commodore 128'de aynen C-64'teki gibi bir expansion port bulunmaktadır. Bu port, her iki işletim modu tarafından yönetilebilir. C-64 modunda ayakların yerleşimi aynen C-64'tekine karşılık gelmektedir.

Belleğe Doğrudan

Erişim C-64'ün aksine, C-128'in expansion portu, doğrudan bir bellek erişimine (DMA, Direct Memory Access) izin verir. Doğrudan erişimin anlamı, işlemci üzerinden sapa yollarda dolaşmaksızın, 128'in belleğine yazma ya da bellekten okuma yapılabilmesidir. DMA'nın gerçekleştirilebilmesi açısından önemli olan, erişim sırasında işlemcinin kapalı kalmasıdır. Commodore 128'de bu işi 8564-VIC yapar. Veri ve adres taşıtını öyle yönetir ki, C-64'te engellenmesi

Monitörle KERNAL

PC 128

RAM-Bank — RAM-Bank

Modül — İşletim Sistemi o 13 karakteri ——. | Oyun — 1 ROM'U — | 4 | ca we © $D000- — — — karakter |: > 8C000--. — —-— Diller BASIC ROM'u II Version 20 SA000- —|— — — ——— Genişletme 4. kısım s8000- HAMA | Mr RAM BASIC 2. kısım II —i— 2 int. ROM PC 128 10 Köyle Modüller PC 128-” $2000—-— — —-— — — me LEMİ 80400 — s0000 pek garantili olmayan, işlemci ve DMA'nın birbirine karışması gibi bir olay kesinlikle gerçekleşmez. İşlemcinin ve dış bir gerecin aynı anda taşıt erişimi söz konusu olduğunda, işlemci, ciddi sorunlar yaşayacak şekilde zayıf kalabilmektedir. Belleğe doğrudan erişimin mümkün olması, Commodore 128'e, ölçüm değerlerinin saklanmasında C-64'ünkünden çok daha geniş bir kullanım alanı sağlayabilmektedir. Bu yetenek sayesinde bir ölçüm aracı, ölçüm değerlerini doğrudan belleğe yazabilmekte, böylece bir ölçüm sürecinin gerçek zamanda kaydedilmesi mümkün olmaktadır. Bir başka olanak ise bir hard disk ünitesinin bağlanabilmesidir. Veriler, daha önce işlemcinin her biti birkaç kez “döndürmesinden” çok daha hızlı RAM alanına yüklenebilir veya çalışma belleğinden alınabilir.

Metin alanı |———— — Yüksek çözümlü ekran (ve renk İ-—-——————-İ İ———— — ——- Farklı değişkenler $0800

so400—>

Ortak RAM alanı

80000 Şekil 4. PC bellek haritası. Sol yarıda C64'ün bellek bölümü. RAM-Bank 0 SFR — Serbest RAM alanı Zincirler

Şekil 2.

Değişkenler

Ortak RAM alanı

Belleğin alt kısmı büyüteç altında.

Seri Taşıt

Commodore seri taşıtı ve kaset portu, bağlantılar bakımından C-64'ünkilerle aynıdır. Fakat seri taşıtın kullanımı daha da geliştirilmiştir. Bu nedenle COMMODORE 128, yeni 1571 disket sürücüsüyle C-64'e göre çok daha hızlı yükleme ve bellekte saklama yapabilmektedir.