Elektronikte İlk Adımlar

Commodore ev bilgisayarlarını elektronikle uğraşan amatörler için bu kadar çekici kılan ne? Cevap: User Port. Bu yazıda bilgisayarla yönetme ve denetleme konusunda gerekli bazı ön bilgileri bulacaksınız.

Port, Commodore 64'ün dış

dünyayla bağlantı kurmasını sağlayan çıkış kapısı. bu kapı aya, tün olası gereçleri ve kendi ği ekleri bağlam:

Gereçlerle uğraşmak kolay değil. Modern makine yönetimi dünyasına giriş için bazı basit başlangıç koşullarını yerine getirebiliyor olmanız gerekiyor: Öncelikle lehim yapmayı becerebilmeniz, elemanları (ya da kendi oluşturduğunuz devreleri) birleştirebilmeniz ve “bilgisayarlaştırma” konusunda asgari düzeyde de olsa bir bilgi sahibi olmanız gerekli.

Burada, hem makine taz fidan yöbir model tren, düzeyine erişmeyen bir süri söz ediyoruz. Yani h h tediğimiz “Bilgisayar destekl na girebilmeniz için bilgileri zaten bu yazış ye çalışacağız. ir biz verme-

Bu port, dış bağlantıların çıkış

noktasıdır: Bilgisayarın içinde işlemekte olan programla dışarıda oluşturulmuş devrelerin bağlantı yeri. Portu, CIA 6526 adını taşıyan bir bağlantı yeri entegresi yönetir. Bu entegre sekiz veri hattını (port bitleri) ve birkaç başka gerekli sinyali kullanıma sunar. Hatların konumları, Commodore 64 el kitabının eklerinde gösterilmiştir. (PB0-PB7) olarak adlandırılan veri hatları giriş ya da çıkış olarak programlanabilir. Tüm fonksiyonlar, BASIC PEEK ve POKE ile sorunsuz olarak yerine getirilebilir. Aşağıda vereceğimiz bazı özellikler bizi daha yakından ilgilendiriyor.

0) ya da çıkış (1) olarak çalışabilir. Böylece sekiz hatta, en soldaki rakamın 7. hattı, en sağdaki rakamın da 0. hattı gösterdiği sekiz hanelik bir ikili sayı oluşur (bu konunun detaylı açıklaması “İkili Sayılar” başlığını taşıyan çerçeve yazıda). 0-5 hatlarını çıkış, 6 ve 7 hatlarını giriş olarak kullandığımızı varsayalım. İkili sistemde bunu gösteren sayı şu şekilde olacaktır. Ondalık olarak bu sayı 63'e karşılık gelir. Bu durumun programlanması ise şöyledir: POKE 56579, 63: REM

VERİ YÖNÜ SİCİLİ

Veri yönünün programlanması büyük bir dikkatle yapılmalıdır, çünkü bir çıkış hattı dışarıda yanlışlıkla giriş hattıymış gibi kullanılırsa, tüm çip bozulabilir. Hatların programlanması/okunması:

TALSIA

© 14 13 12 11 10 9 8

7406

© 14131211 10 8 8

pe papa e

Tiz 5 6 7

75492 © 1415312 1110 9 &

GENEL: Porttaki hatların durumları her zaman 56577 bellek adresinde kontrol edilebilir. Elde edilen ondalık sayı ikili sisteme dönüştürüldüğünde, hatlardaki akım durumlarını gösterir: 1, “high” (yüksek) anlamında, 0 ise “low” (alçak) anlamındadır (“TTL hattı” çerçeve yazısına bakınız). Çıkışları açıp kapatmak için, hatta karşılık gelen ikili sayıyı 1 ya da 0 yapmak gerekir. Bir giriş hattını 1 yapmaya çalışmak, makine tarafından görmezden gelinir. Bu konuyu daha yakından öğrenmek için “İkili Sayılar” çerçevesini okuyun. Aşağıdaki BASIC satırı, N hattında akım olup olmadığını denetler:

102 535 4 5 6 7

7407

© 8

Zi

Sİ

2545 67

İl 1

54 5 6 7

Kullanılan entegre devrelerin bağlantı konumlarının yukarıdan görünümü

IF PEEK 27N
THEN PRİNT “N HATTI HIGH”

Çıkış olarak programlanmış bir N hattını yönetmek için aşağıdaki küçük program kullanılabilir

PÖKE 56577,0: REM TUM
ÇIKIŞLAR LOW OLSUN
POKE 56577, PEEK(56577) OR
2 N: REM N HATTINI
HIGH YAPIN
POKE 56577, PEEK(56577) AND
REM N HATTINI
LOW YAPIN

12 Volt

Kısa devreden korunmuş 12 Volt çıkışın şeması

BAĞLANTI NASIL YAPILIYOR?

Bilgisayarın User Port'una, elektronik dükkânlarında “User Port fişi” adıyla satılan 2 çarpı 12 kutuplu bir platin fişi uyar. Commodore 64'ünüze arkadan baktığınızda, 4 pini sol altta yer alır (Commodore 64 el kitabındaki konum şemasına bakın). 6526'nın veri hatları son derece hassastır, bu nedenle de yalnızca lojik elemanlara bağlanmaya uygun-

2 30 V'dur. Aşağıda sayacağımız metodlar bu nedenle tehlikelidir: - uzun kabloların bağlanması (azami | - bir transistörün doğrudan yönetilmesi, - 5 Volt'tan yüksek akım veren devrelerin direkt bağlanması. Arabirim elemanının mutlaka ölümüne yol açan hatalar ise şunlardır: - bir ışıklı diyodun ya da başka bir yoğaltıcının direkt bağlanması, - bir çıkışın giriş olarak kullanılması, - bir çıkışın kısa devre yapması, - 5 Volt'un üzerindeki ya da negatif akımların kullanılması. Bütün bu nedenlerle, rizikoları ortadan kaldırmak için yazıda belirtilen devrelerin kullanılmasını salık veririz.

LED |

Lampe Reed ya Relais

ÇIKIŞLARIN BAĞLANMASI

Burada öncelikle sözkonusu olan, devre veriminin artırılması ve çıkış hatlarının akımlardan korunmasıdır. Kullanılabilecek elemanlar, TTL sürücü elemanları 7406, 7407 ve 75492'dir. Sonuncusu, röleler ve 10 Volt'tan daha küçük motorlar için de kullanılabilir. Bağlantı konumları 1. resimde sergileniyor. Yönetim görevleri için aşağıda belirtilen devreler kullanılabilir: - Bir çıkış sinyalinin 12 Volt seviyesine uydurulması. Bazı yönetim görevleri için, port çıkışında 5 Volt'luk akımın 12 Volt'a yükseltilmesi gerekir. Resim 2'deki devre, 7407'nin altı sürücüsünden birini ve bir direnç kullanır. Meydana gelen çıkış, tümüyle kısa devreye karşı korunmuştur. - Bir ışıklı diyodun, bir optokuplörün, bir minik ampulün ve bir Reed rölesinin yönetilmesi. 7406, 30 Volt'a kadar gerilimlere ve 40 mA'ya kadar akımlara uygundur. Bir sürücü katının devresi Resim 3'te verilmiştir. Bir entegre devrede altı sürücü bulunduğundan entegre başına altı kullanıcı bağlanabilir. - Bir verim transistörüyle yönetme. Bu yöntem, röleyle yönetmeye oranla, hiçbir mekanik parçanın hareketini gerektirmemesinden dolayı, çok daha hızlı olma avantajına sahiptir. Modern bir SIPMOS verim transistörü kullanıldığında, rahatsız edici tüm ön katlar ortadan kalkar, çünkü bu tür transistörler mikro bilgisayarların elemanlarına doğrudan bağlanabilmektedir. BSS 97 modeli 1,5 Amperlik 200 Volt'a kadar gerilimleri, BUZ 10 modeli ise 19 A-50 Volt'luk gerilimleri açıp kapatabilmektedir. 12 Volt'un üzerindeki gerilimlerde (Resim 1'de, 30 Volt'a kadar), transistörün optimal yönetilebilmesi için bir ön kat gereklidir. Resim 4'te, 12 Volt için gerekli devre şeması görülüyor. - Daha büyük yoğaltıcıların röleyle yönetilmesi. Resim 5'te, genelde olduğu gibi altı sürücü bulunan 75492 entegresiyle bir röle yönetimi örneği görülüyor. Burada rölenin beslenmesi bilgisayar tarafından üstlenildiğinden, iki ya da üç röleden fazla kullanmaya gerek yoktur. Zaten entegre devreye daha fazla yüklenmek de gereksizdir. Kullanılacak devre, Resim 3'teki gibidir. D diyodu, sistemi kapanış sırasında röle bobininde oluşabilecek olası gerilim şoklarından korur. Bu tür bir diyod, doğru akım ya da adım motorlarının bağlanmasında da kullanılmalıdır. Eğer röle kullanarak şebeke cereyanını açıp kapatmak istiyorsanız, şebeke hatlarıyla bilgisayar hatları arasında yeterli mesafenin olmasına ve rölenin özelliklerine dikkat edin. Tabii ki bu arada bilgisayarı bozulmaktan ve parazitlerden koruyun. Ve asla unutmayın: Şebeke cereyanı öldürücü olabilir.

SIPMOS- Transistor

Daha büyük yoğaltıcıların bir MOSFET transistörüyle yönetilmesi

Giriş için basit bir şalter ya da düğme

GİRİŞLERİN BAĞLANMASI

En önemli konu, hattın doğru şekilde programlanmasıdır. Bilgisayarın çalıştırılması ya da reset edilmesinden sonra tüm hatlar giriş haline gelir ve böylece bilgisayar herhangi bir hasara karşı kendiliğinden korunmuş olur. - Normal TTL sinyallerini (İlgili çerçeve yazıyı okuyun) beslemek için, ek elemanlara gerek yoktur. - Bir şalter ya da düğme, Resim 6'da gösterildiği gibi bağlanabilir.

Portbit

BC237B

N

12V sinyallerin giriş için uyarlanması

2 14 Paortbit su N 7

Sİ O,0BA mt

dış şebeke bağlantısı denemesinin şeması. Açıklaması metnin içinde

- Eğer sinyaller 12 Volt gibi yüksek bir gerilim düzeyindeyse, bir ön uyarlama katının konması gerekir. Basit bir direncin bu amaçla kullanılması tehlikeli olabilir. Resim 7'deki devrede bu iş için çok amaçlı bir NPN transistörü kullanılmıştır. Devre sinyali tersine çeviremez. Girişteki 12 Volt User Port'taki 5 Volt'a, böylece de “high” durumuna karşılık gelir. - Pozisyonların denenmesi vb. için

TTL-Hattı Entegre devreler arasındaki bu bağlantı yalnızca iki durumu tanır: “HIGH”, 1, “EVET” ve “LOW”, 0, “HAYIR”. Hangi adlandırmayı kullanacağınız, tamamen sizin tercihinize kalmıştır. “HIGH” düzeyi, hattaki gerilimin 2 ila 5 Volt arasında olmasıyla belirlenir; “LOW” düzeyi ise kural olarak 0 ila 0,4 Volt arasında, prensip olarak da 2 Volt'un altında olur.

Bu tür bir hattın kapasitesi oldukça düşüktür, tipik değerler 1 ila 10 mA arasındadır. Özellikle CIA gibi çok yüksek entegre çiplerde çıkış gerilimleri çok düşük olmak durumundadır. Sisteme yabancı yükler, yani transistörler veya LED'ler, CIA'ya bağlanmamalıdır. Bir çıkış hattında saniyeden daha uzun süreli bir kısa devre hattın bozulmasına hatta portun tamamen imha olmasına neden olabilir.

en uygun araçlar, ışık dolapları. Resim 8'de bir fototransistörle çalışan bir devre görülüyor. Mekanik olarak mümkünse, içinde bir fototransistör ya da bir ışıklı diyot olan bir çatal ışık dolabı (örneğin, CNY 37) kullanabilirsiniz. 7414 entegre devresi, normal TTL hatlarının aksine, önceden tanımlanmış değiştirme noktasına sahip altı adet Schmitt şalterine sahiptir. Yani bir entegre devre altı ışık dolabına yeterlidir. Işık ışınının kesilmesi anında User Port hattı yani 1 durumundadır.

DENEYLERİN GERİLİM BESLEMESİ

Entegre devrelerin beslenmesi için gerekli olan 5 Volt, bilgisayarın beslenmesinden elde edilebilir. Bu gerilim, Port'un 2. pininde bulunur. Motorlar, lambalar, röleler vb. için ise dış bir gerilim kaynağına gerek vardır. Bunlarla çoğunlukla 12 Volt kullanılır. Bu kaynağa sahip olmayanlar, Resim 9'da gösterildiği gibi 12

Volt/1 Amperlik bir kaynak oluşturabilirler. Bunu oluşturmak için gerekli parçalar şunlardır: Çok amaçlı bir silisyum diyot (Örn. 1N4001), 12 Volt'luk bir köprü doğrultmaç, 12 Volt ve 1 Amperlik çıkış verimine sahip bir şebeke transformatörü, 4700µF/25 Volt(C1)'lik bir elektrolitik (C2) ve 0,22 µF (C3)'lük iki kondansatör ve 1 A verimli 12 Volt'luk bir regülatör. Regülatörün bağlantı konumlarına çok dikkat etmek gerekir. Ayrıca regülatörün mutlaka bir soğutucu gövdeyle korunmuş olması gerekir.

Burada adı geçen bazı parçaların ne olduklarını bilmiyorsanız, bu sayımızda verdiğimiz küçük sözlüğe başvurabilirsiniz.

Donanımla yakından ilgilenmek arzusundaysanız, ilk küçük kısa devrede moralinizi bozmamalısınız. Ne de olsa kimse anasından usta olarak doğmaz, bu kural Commodore 64'ün donanımı için de geçerlidir.

İkili sayılar

Bir ikili sayı yalnızca sıfırlar

ve birlerden oluşur. Bu nedenle bilgisayar içindeki olayları belirtmeye son derece uygundur, çünkü bilgisayarın içinde verileri ileten TTL hatları yalnızca iki durumu alabilirler (ilgili çerçeve). Bir ikili sayının ondalık sayıya çevrilebilmesi için, dolu bitlerin değerleri toplanır. Bunlar, 128, 64, 32, 16, 8, 4, 2 ve 1, yani 2'nin kuvvetleridir. 7. hat/konum ondalık değer olarak 128'e karşılık gelir, sonraki bitlerin ondalık değerleri buna eklenir. Örnek: 10000010 = 128 + 2 = 130. Tek tek bitlerin denenmesi ve programlanması için, metnin içinde verilen BASIC satırlarını kullanın.

ve

Profesyonel müzisyenlerin uzun zamandır tanıdıkları bir kavram: MIDI. Bu kelimenin ardında yatan ne? Bilgisayar meraklıları bu teknolojiden nasıl yararlanabilirler?

Çoğu kişi artık MIDI kavramını yakından tanıyor. Birçok müzisyen artık C64'ünü bir ya da birden çok synthesizer'la bağlamak için bu arabirimi kullanıyor. Bu teknolojinin sunduğu olanaklar bununla da kısıtlı değil. Uygun yazılım kullanılarak 16 taneye kadar C64'ü birbirine bağlayıp bir ağ oluşturmak mümkün. Bunun oyunlar, bilimsel ya da ticari işlerle ilgili olarak bir fantezi düzeyinde kalmaması için, biraz donanım ve bunun programlanması konusuyla ilgilenelim.

MIDI DONANIMININ YAPISI

C64 için sıradan bir MIDI arabiriminde MIDI-In, MIDI-

Thru ve MIDI-Out olmak üzere üç uç bulunur. Bunlardan MIDI-Thru ucu, giren verilerin aktarılmasını sağlayan çok basit bir donanımdan oluşur. Bunun aksine MIDI-In ve MIDI-Out uçları, entegre bir arabirim elemanı tarafından denetlenirler. Burada kullanılan eleman, Motorola tarafından üretilen UART (Universal Asynchronous Receiver Transmitter) 68B50'dir. Bu eleman bir kuvars osilatörü üzerinden 2 MHz'lik işletim frekansıyla beslenir. Bu frekans dealt bölümleme yöntemiyle diğerlerinin yanı sıra MIDI aktarım standardı için gerekli olan 31.25 kHz'lik bit frekansı elde edilir. UART 68B50'nin bu amaçla kullanılan programlanabilir bir bölücüsü vardır. 31.25 KBaud'luk aktarım değerine 1:64'lük bir bölmeyle erişildiğine göre, mutlaka daha yüksek hızlara erişilebileceği düşünülebilir. Matematiksel olarak 1:1'lik bir bölme oranında 2 Mbaud'luk bir veri aktarım değeri söz konusu olabilir. Tabii bu düzeyde bir aktarım değeri, C64'te kendi işleyiş hızından dolayı fazla gelecektir. Bu yazıyı okuyan “hız fanatikleri”ni bunun aksini kanıtlamaya çağırıyoruz. Aktarım hızını kısıtlayan bir başka faktör de arabirim donanımının kendisidir. Birbirine bağlı aletler arasındaki potansiyel farklarından ötürü oluşması muhtemel “boşalma felaketleri”ni engellemek üzere, giriş hattında (MIDI-In) galvanize ayrımı sağlayacak bir optokoppler bulunmaktadır. Bu optokopplerin limit frekansı, erişilebilecek bit frekansı için bir üst sınır oluşturmaktadır. 1:16 oranıyla elde edilen 125 Kbaud'luk bir aktarım hızı, klasik donanımlarda müzik elektroniği alanında da kullanılan gerçekçi bir değerdir. Dijitalize edilmiş ses verilerinin aktarımı için geliştirilmiş bir norm olan “MIDI-Sample-Dump-Standard”la bağlantılı olarak, bazı üreticiler bu işletim türüne dönüştürmeyi sağlayan bazı komutlar ürettiler, çok kapsamlı sample verilerinin (bazen MByte'lara varan) aktarılması böylece kabul edilebilir zaman süreleri içinde gerçekleşebiliyor. Eğer yönetim yazılımı oluşturmak isterseniz, en başta UART 68B50'nin işleyiş biçimini ve sicil yerleşimini açıkça bilmeniz gerekir (resim). Arabirim elemanı ikisi veri sicili olmak üzere dört adet 8 bitlik sicil içerir. Veri gönderme sicilinde yazılım her defasında bir biti aktarım için ayırabilir. UART bu baytın gönderilmesini sağlar, daha sonra durum sicili aracılığıyla veri gönderme sicilinin bir sonraki bayt için serbest olduğu bildirilir. Veri alma sicili tarafından her de-

6 5 8 va Gönderilen veriler sicili ($DE05) Gönderilen veriler Alınan veriler sicili ($DE07) Alınan veriler Yönetim Alma (Gönderme) Aktarım Bölümleme ($DE04) IRQ formatı oranı Durum sicili Parite Alım (Gönderme) Alma ($DE06) hatası taşması FE CT5 DOO sicili sicili boş dolu fasında en son alınan bayt okunur. Programlama açısından en önemlisi, yönetim sicilidir. Bu sicil, işletim parametrelerinin ve veri aktarım değerlerinin belirlenmesini sağlar. Yönetim sicilinin en küçük değere sahip iki biti, bunun için bölme oranını belirler (Tablo 1). Elemanın içinde entegre olarak bulunan bölücü, 1 MHz'lik işletim hızını örneğin istenen 31.25 kHz'lik hıza indirir (MIDI standardı). Her iki bit de doluysa (master reset), eleman bir önceki hatalı programı ciddiye almaz. Dolayısıyla bu master reset'in, çalıştırmak için bir çok kez deneme yapmaya gerek bırakmayacak şekilde, her MIDI programının başına konmasında yarar var. Deneme için 2. bitten 4. bite kadarki ayarlamalar da ilginç olabilir (Tablo 2). Burada esas olarak 8 bit aktarım formatları tablonun alt yarısında yer alıyor, bununla artık tarihi sayılabilecek teleksler MIDI üzerinden ses verir hale getirilebiliyor. (Teleksleri şaşırtıcı bir şekilde taklit edebilen) Synthesizer'lar ve Sampler'lar, F ayarındaki MIDI normuna (8 veri biti, parite yok, 1 stop biti) tepki gösterirler. Fakat çok daha güvenli olduğundan, bilgisayarlar arasında veri değiş tokuşunda Parity bitinin kullanılması mutlaka daha yararlıdır. Çift (G) veya tek (H) olması önemli değildir, MIDI kablosunun her iki ucundaki formatların birbirine uyması yeterlidir.

Resim: 68B50 arabirim elemanının sicili.

Veri aktarımında herhangi bir hatanın olup olmadığının denetimini arabirim bizzat üstlenmiş durumdadır. Bozuk byte'ların değiş tokuşu (ya da tekrarlanması), üreticinin (gönderen bilgisayarın) yazılımı tarafından gerçekleştirilmek durumundadır. 5. ve 6. bitlerin anlamı, Tablo 3'te görülüyor. Bir MIDI bağlantısının varlığında burada yalnızca A ve B bir anlam taşımaktadır (68B50, başka türde seri bağlantı kullanımlarında da yararlı olmaktadır). 6. bit, MIDI bağlantısında daima sıfırdır, 5. bit ise gönderim Interrupt'unu açar. Eğer bir bayt kablo üzerinden başarılı bir biçimde gönderilmişse ve gönderilen veriler sicili yeni baytları bekliyorsa, gönderim Interrupt'unun açık olması (B) durumunda bir IRQ gerçekleşir. 7. bit, aynı şekilde alıcı Interrupt'unu açar. Bu durumda ise bir IRQ'nun gerçekleşmesi, bir baytın tümüyle varmasıyla olur. Kaliteli MIDI programlarında bu mutlaka “1” olmalıdır, böylece gelen baytlar derhal alınan veriler sici-

Yönetim sicili: Bölümleme oranı — Aktarım hızı Bit 1 Bit 0 1:1 2 MBaud 0 0 1:16 125 KBaud 1 0 1:64 31,25 KBaud 1 1 Arabirim elemanını başlangıç durumuna getirir (Master Reset) Tablo 1. Bu bitler aktarım hızını belirler Yönetim sicili bit Veri biti Stop-bit — Format 4 3 2 0 0 0 7 2 Çift A 0 0 1 7 2 Tek B 0 1 0 7 1 Çift C 0 1 1 7 Tek D 1 0 0 7 1 Tek D 1 0 0 8 2 Yok E 1 0 1 8 1 Yok F 1 1 0 8 Çift G 1 1 1 8 Tek H Tablo 2. UART 6850'nin aktarım formatları Gönderme kontrol bitleri ta Send Format 0 0 Engellenmiş 0 A 0 1 Serbest 0 B 1 0 Engellenmiş 1 C 1 1 Engellenmiş/ 0 D kesme sinyali gönderiyor linden güvenli bir bellek alanına aktarılabilir. Aksi takdirde gelen baytın bir sonraki tarafından silinmesi olasılığı vardır. Durum sicili, aktarma işlemine ilişkin bilgileri içerir. Alınan veriler sicili dolu olduğunda, yani bir bayt alındığında, 0. bit “1” olur. Arabirim elemanı gönderilen veriler siciline yerleşmiş olan bayttan kurtulduğunda, durum sicilinin 1. biti dolu olur. 2.-4. bitlerin MIDI programlanması açısından özel bir önemleri yoktur. Tabloda bu bitlerin verilmesi, eksik sanılmamaları içindir. Eğer yazılım, alınan bir baytı alınan veriler sicilinden zamanında okuyamamışsa, 5. bit “1” olur. İyi programlanmış MIDI yazılımlarında, yukarıda da belirtildiği gibi, böyle bir durumun ortaya çıkmaması gerekir. Bu kuralın pek istenmeyen istisnaları, Interrupt'larla yönetilen her veri aktarım işleminde meydana gelebilir. Bu durum, bilgisayarın işletim hızının ayarlanmış veri aktarım hızına (örneğin 2 Mbaud) yetmediğini ya da veri alım rutininin yeterli hıza erişmediğini ortaya koyan bir göstergedir. Durum sicilinin 6. biti, pariteli bir aktarım formatı kullanıldığında önem kazanır. Eğer bu bit doluysa, son olarak alınan bayta dikkat edilmelidir, çünkü UART bir parite hatası buldu demektir. Arabirim elemanı, durum sicilinin son defa kullanılmasından sonra bir Interrupt gerçekleştirdiyse, 7. bit “1” değerini alır. Böylece bir Interrupt-servis rutini, MIDI arabiriminin bir IRQ verip vermediğini denetlemiş olur. Döküm 1 adıyla yayınladığımız Assembler programı, MIDI standart formatındaki verilerin Interrupt'larla yönetilen alınmasını ve gönderilmesini sağlayan rutinleri içeriyor. Alınan ya da gönderilmek üzere belirlenen baytlar her defasında 256 baytlık bir ara belleğe depolanır. Böylece bu rutinlere dayalı kullanımlar, aktarımdan bağımsız olarak çalışabilirler. Aktarılacak baytlar kullanıcı program tarafından 51987 adresinden (BASIC, Assembler'de $CB60) başlayan rutinler üzerinden çıkış çember arabelleğine iletilir. Esas çıkış ise Interrupt sırasında gerçekleşir. Alınan baytlar aynı şekilde bir Interrupt gerçekleştirirler ve IRQ servis rutini tarafından giriş çember arabelleğine iletilirler. Oradan BYTEGET ($CB1D, ondalık 51997) rutini aracı-

Tablo 3. Yönetim sicilinin gönderme kontrol bitleri

ebü00 cbf'7

ız
60
00
£7
cb
ad
20
ea
e&
dd
a9
15
ad
eb 58 60 03

lığıyla kullanıcı programa alınabilirler. Her defasında bir bayt aküye geri verilir. Çember arabelleğin ve arabirim elemanının adlandırılması ve aynı zamanda sistem-Interrupt'unun etrafından dolaşılabilmesi için diğer rutinlerin kullanılmasından önce, INIT'in ($CB00, ondalık 51968) çağrılması gerekir. Kaynak kodlarının dökümünü bu sayımızın okuyucu servisi bölümünde bulabilirsiniz. Döküm 2, gönderme ve alma rutinlerinin denenmesi için kısa bir demo programı (lütfen Checksummer kullanın ve SAVE “MIDITEST”, 8 komutuyla saklayın). Kapalı durumdaki bilgisayarınızın expansion portuna

PROGRAM ADI :

TEST
REM *& MİDİ TEST
00915
TO &
90030 RENO E, :
5v5 Sise7,
<134>
60860 FOR Izi TO & xB54;
2009076 5Y5 Siğar
PRİNT
HEXT 1
©0100 DATA 2

MIDI arabirimini takın ve MIDI-Out çıkışından bir kabloyu MIDI-In girişine bağlayın. Şimdi C64'ünüzü açın ve önce assembler rutinini ve sonra demo programını yükleyin. Bunu yapmak için

LOAD“MIDI1.OBI”,8,8
ve
LOAD “MIDITEST”,8,0

satırlarını yazmanız ve ardından RUN etmeniz gerekiyor. Bunu yaptığınızda arabirim, DATA satırındaki rastlantısal sayıları kendisine gönderir ve gönderilen ve alınan verileri ekranda görüntüler. Sayıların birbiriyle uyuşması durumunda MIDI arabirimi ve sürücü rutinleri uyumlu bir şekilde birlikte çalışırlar. Eğer ilginizi çekerse, rutinleri, C64'ten dairesel bir MIDI ağında anlamlı bir veri aktarımı oluşturacak şekilde geliştirebiliriz. Bunu yaparken kendinize özgü program çözümleri üretmenizi sağlamak için, ağ yazılımlarının oluşturulmasına ilişkin bazı temel bilgilere sahip olmanız gerekir. Çember biçimli bağlantı, bu sayımızdaki “Bilgisayar Bağlantı Arıyor” yazımızda açıklanıyor. Bu bağlantıda, çember içinde aktarılan bilgilerin istasyondan istasyona iletilmesi gerektiğini görüyorsunuz. Bu iş, ağ yazılımı tarafından olabildiğince gecikmesiz olarak yapılmalıdır. Bu sırada işlemciden oluşan ağır yükün yanı sıra, MIDI-Thru üzerinden yapılan donanımı destekli veri aktarımına oranla daha büyük bir zamansal gecikme ortaya çıkar. Ayrıca çember içinde yollanan tüm bilgilerin adres verileriyle donatılmış olması gerekir. Müzik enstrümanları için geçerli olan MIDI aktarım standardında, doğru alıcı istasyonunun bulunabilmesi için, her bilgi paketinin kendinden önce yollanan bir durum baytını takip etmesi gerekir. Bu durum baytının betimlenmesi için kullanılan en yüksek değerli bit, bu durum baytının diğer yüksek değerli üç biti komut modunu belirtir. Bilgiyi alan enstrümana, bir sesin başlamasını, sonunu veya ton değişikliği, ses yüksekliği (Pitch-Bend) vb. diğer MIDI fonksiyonlarını yerine getirmesini bildirir. Düşük değerli 4. bitle olası 16 aktarım kanalından biri seçilir. Bilgisayarlar arasında veri aktarımında bu yolla birbirinden farklı 16 adresin oluşturulması mümkün. Ayrıca üç komut biti aracılığıyla sekiz farklı işletim türü tanımlamak da mümkün. Fakat bu bitleri kullanarak yapılacak en yararlı iş, daha sonra gelen veri baytlarının sayısını bildirmek. Bu bilginin iletilmesinden kaçınılacak olursa, bir veri baytının en yüksek değerli bitinde 1 bulunmaması gerekir, aksi takdirde bunu bir durum bitinden ayırmak olanaksızdır. Böylece aktarılacak verilerin 8 bitlik bir yapıdan 7 bitlik bir yapıya dönüştürülmesi gerekiyor. Bunun yapılması hesaplama ve program kullanımını oldukça hızlandırıyor.