Plazma sayı 5, sayfa 23

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 23

Şekil 3.

IEC PROTOKOLÜ

Bugün aklımıza seri port deyince RS232 geliyor. PC'ler seri iletişim için bu standardı kullanıyor. Ancak C64'ün seri portu başka bir standardı takip eder: IEC. TPC'nin donanımı, IEC ve RS232 arasında çift yönlü protokol uygunlaştırıcı olarak çalışır. Muhtemelen siz de benim gibi IEC'nin Commodore tarafından geliştirilmiş bir protokol olduğunu düşünmüşsünüzdür. Çünkü başka bir IEC aygıt duymadık. Ancak araştırmaya başlayınca gördüm ki öyle değilmiş.

Bu protokolün ardından yine bilindik başka bir şirket çıktı: Hewlett-Packard. Bu protokolü HP 1960'ların sonlarında geliştirmiş ve adını HP-IB (Hewlett-Packard Instrument Bus) koymuş. HP bu protokolü geliştirdiği multimetre ve lojik analizer gibi test ve ölçüm cihazlarının kendi aralarında ya da bilgisayarlar ile iletişimi için kullanıyormuş. Diğer üreticiler de bu protokolü kullanmışlar ama başka bir isimle: GPIB (General Purpose Interface Bus). Protokol, 1975 yılında benim doğumumla beraber IEEE (Institute of Electrical and Electronics Engineers) tarafından standartlaştırılmış :) bu standarta "IEEE-488" ismini koymuş. Peki biz buna neden IEC diyoruz? Çünkü Commodore'un dokümanlarında hep IEC adı geçiyor. HP-IB, aralarında ANSI (American National Standards Institute) ve IEC'nin de (International Electrotechnical Commission) olduğu birkaç değişik komisyon tarafından da değişik isimler altında standartlaştırılmış. Sanırım Commodore firması bilgisayarlarının tasarımında IEC tarafından yayınlanan belgeleri baz almış.

İşte C64'ün seri portu bu protokolün daha az sinyalle ve daha düşük hızda çalışan bir gerçeklemesidir. Aklınıza, "İhtiyaç duyulmayan sinyallerin kullanılmaması tamam da, neden daha yavaş?" sorusu gelmiş olabilir. Önce şaşırtıcı cevabı vereyim sonra açıklayım. Nedeni, VIC çipi. 1541 disket sürücünüzü kullanırken LOAD ve SAVE işlemleri arasında anlamlı bir süre farkı yoktur. Ancak TPC'yi kullanırken aynı dosyayı yüklediğinizden (LOAD) çok daha hızlı kaydedebildiğinizi görürsünüz. Bunun nedeni TPC'nin mekanik parça içermemesi ve işlemin gerçekleşme hızının sadece veri transferinin hızıyla ilişkili olmasıdır.

Yani bir program ya da dosya belleğe yüklenirken veri transferi daha yavaş, diske kaydedilirken daha hızlı olmaktadır. Bilgi akışı C64'ten dış dünyaya doğru iken (SAVE) veri bitleri arasında standardı gereği 20us beklenir. Bilgi akışı dış dünyadan C64'e doğruyken ise (LOAD) veri bitleri arasında, IEC standartı 20us beklemeyi gerektirdiği halde 60us beklenir. Çünkü VIC çipi C64'ün mikro işlemcisinde 40us'ye varan kesmeler oluşturabilmektedir. Eğer böyle yapılmasaydı iletişim sırasında oluşabilecek bir VIC kesmesi 1 hatta 2 bitin C64 tarafından algılanamamasına yol açabilirdi. Bu yüzden her bitin transferi sırasında en kötü durumun oluştuğu yani bitin gönderilmeye başladığı anda bir VIC kesmesi oluştuğu farz edilerek (40us(VIC kesmesi max.) + 20us(IEC standartı gereği min.)) 60us beklenir.

EMÜLASYON

Zamanında Commodore firmasının disket sürücülere yaklaşımı çok farklı olmuş. 1541 disket sürücüsünün içinde bir C64 daha var desem sanırım abartmış olmam. 1541 disket sürücüsünün içinde C64'te kullanılan 6510 mikro işlemcisiyle arasında neredeyse hiçbir fark bulunmayan 6502 işlemcisi bulunur. Bu işlemciler o kadar aynıdır ki Frodo emülatörünün kaynak kodunu incelediğimde iki işlemci için aynı kaynak kod dosyasının kullanıldığını gördüm. Bu işlemci her 10ms'de bir disket sürücü kontrolörü (FDC) gibi çalışır. Kalan zamanda ise Commodore DOS'u işletir. Evet MS-DOS gibi. MS-DOS zamanında koca işletim sistemine neden sadece Disk İşletim Sistemi adı verilmiş diye merak ederdim. Commodore bilgisayarları açısından isimde yadırganacak bir şey yok. Çünkü bu sistem 1541 ROM'unda gömülü olarak bulunuyor ve disk sürücünün işlemcisi tarafından işletiliyor. Yani kelimelerin hakkını vere vere adını hak ediyor: "Commodore Disk İşletim Sistemi".

Disk sürücü kendi işlemcisine ve o zamanlar için önemli bir rakam olan 2KB RAM'e sahip olunca sıra dışı kullanım şekilleri de başlamış. Oyun ve demo yazarları hesaplama amacıyla disk sürücünün işlemcisini, daha fazla hafıza için RAM'ini kullanmaya başlamışlar. Bir önemli sıra dışı kullanım şekli de daha hızlı veri transferi için kendi protokollerini geliştirmeleri olmuş. Yani 1541 disket sürücüsü dediğimizde aslında SID ve VIC çipleri olmayan bir C64'ten bahsediyoruz sayılır.

Peki TPC ileride 1541 emülasyonu yapabilir mi? Bu konu üzerinde düşünmeye başladım. VICE'ın ve Frodo'nun kodlarını inceledim. 1541 ROM'unu da inceledim. İlk önce IEC transferini hangi entegrenin yönettiğini anlamaya çalıştım. Çok bacaklı VIA çipinin transferin ayrıntılarını kotardığını ve merkezi mikro işlemcinin verileri ondan bayt bayt aldığını umuyordum. Çünkü PC'nin gerçek bir IEC portu yoktu ve PC, TPC'nin RS232 tarafındaydı. Ancak maalesef umduğum gibi olmadığını gördüm. IEC transferinin her anı bit bit 6502 işlemcisi tarafından kontrol ediliyordu. Bu durumda ya yazılım ile bir IEC portu simülasyonu yapacaktım ya da 1541 ROM'unda bulunan IEC rutinlerini yamalayacaktım. Daha önce bahsettiğim "Inside Commodore DOS" kitabında 1541 ROM'unun ayrıntılı bir analizi bulunduğu için ilgili rutinlerin başlangıç adreslerini kolayca bulabiliyordum. Bu adreslerdeki komutu 6502 işlemcisinin kullanılmayan bir opcode'u ile değiştirebilir sonra Frodo'dan aldığım 6502 emülasyonu yapan kaynak kodları değiştirerek o opcode'a istediğim görevleri yükleyebilirdim.

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