İşletim Sistemi

Komutlar kümesi ne kadar geniş olursa olsun ve ne derece süratle çalışırsa çalışsın bir minik işlemci, kendisini denetleyen iyi yapılı bir yazılımı olmadan hiçbir yere varamaz. Bu denetçi program İŞLETİM SİSTEMİ olarak anılır. İşletim sistemi klavyeye yazdıklarınızı kabul eder; «ğer ne yazdığınızı anlamazsa bir hata mesajı gönderir; onu monitöre aksettirir; eğer bir anlam ifade ediyorsa komutunuzu tatbik eder; gerekiyorsa disket sürücüsünden bir program yükler; eğer mecburi ise printere gerekeni kaydeder... Uzun lafın kısası, işletim sistemi, bilgisayarın her türden kaynaklarını koordine eder ve hizmetinize hazır hale getirir. İşletim sistemi, sistem değişkenlerinin ilkdeğerlenmesi, bellek yönetimi ve her tür girdi/çıktı işlemlerini yapabilen geniş bir alt-program koleksiyonuna sahiptir. Bu alt-programlar genellikle büyük ölçüde donanıma bağımlıdır ki, bu da farklı cihazlar için değişik alt-programların yazılması gerektiği anlamına gelir. Kullanıcının bakış açısından, bu alt-programları, hangi donanıma başvurulduğu hususunda herhangi bir kaygı duymaksızın kullanabilmek istersiniz. Çoğu minik işlemci imalatçıları çağırılabilir altprogramları gösteren bir liste hazırlarlar. Bu liste ayrıca adresleri ve çağırma yöntemlerini de içerir. Sorun, işletim sisteminin daha sonraki versiyonu piyasaya sürüldüğünde ortaya çıkar: Tüm bu giriş noktaları farklı olacaktır. Bu yüzden tüm bu alt-programlardan yararlanan eski yazılım artık sistemle uyuşmayacaktır.

Commodore 64, bu sorunun üstesinden, sistemin alt-programlarının tüm giriş noktalarını KERNAL'da bir sıçrama (JUMP) tablosunda toplayarak gelmiştir. Bu sıçrama tablosu belleğin en son sayfasında, KERNAL ROM'da bulunur. Bu tablonun girişleri çok iyi belgelenmiştir ve yeni ROM'lar piyasaya sürülse de,

Örnek:
SFFC6 JMP SFABC O 38018):
| JSRSFFC6
SFABC| RTS N
Uygulama LA
(tatbik)
ROM 1.0 programı ROM 2.0
Uygulama programı ROM'un her iki
versiyonunda da eşit ölçüde iyi işleyecektir.
|

bu sayfa değişmeden kalacaktır. Her münferit sistem alt-programı uyarlanarak ROM'un içine yeniden yerleştirilebilir. Böyle olmakla birlikte, KERNAL'daki sıçrama göstergesi de güncelleştirildiği süreci böylesi bir değişiklik kullanıcıya “saydam” olacaktır.

Siftah

Tüm cihazın çalıştırılmaya başlatılmasında -yani, siftah durumunda- KERNAL bir dizi self-test ve sistem değişkenleri için ilkdeğerlemeler yapar. Bu işlemlerin sırası aşağıda ana hatlarıyla gösterildiği gibidir: 1. 6510 işlemcisi için, Deste Göstergesi $FF'e yeniden kurulur (reset) ve ondalık tarzı çentiği temizlenir. 2. $ 8004-$8008 arasındaki adresler gözden geçirilir. Eğer, burada bir ROM başlığı bulunursa, denetim $8000'- deki vektör aracılığıyla ““otomatik-start”” ROM'a geçer. Aksi takdirde, normal sıra devam eder. 3. V/O kapıları ve cihazları hazırlanır. -CIA—I klavyesi, Joystick paddle'ı ışıklı CIA (yani Complex Interface Adaptorbkz. Commodore sayı) Kalem'i gözden geçirir. - CIA #41 gerçek-zaman saatini (?) harekete geçirir. - CIA Seri Taşıtı başlatır.

- CIA 342 Kullanıcı (User)/RS- 232 kapısını tekrar ayarlar (reset). - SID bütün sesleri temizler. 1/O BASIC tarzı için, belleğin konfigürasyonunu seçmekte kullanılan kapı.

-6510 kaset motorunu durdurmak için kullanılan kapi. 4. RAM testi $03000'den yukarı doğru sürdürülür. İlk non-RAM

(gayrı-RAM*) yerleştirmeye tesadüf edildğinde, en tepe bellek göstergesi belirlenir. En dip bellek göstergesi her ayarlanır. Ekran belleği hep $0400'de başlar.

5. RAM'daki tüm vekti leri, göstergeler, çentikler ve değişkenler ilk değerlenir.

çağırın. - İletişim sicillerine parametreleri aktarın.

- Alt-programı çağırın. (Carry-Flag- Aktarma çentiğinin işaret ettiği dönüş (return)) İbaresini gördüğünüzde, hatalarını halledin. - Gerekirse, alt-programdan etkilenmiş sicilleri önce saklayıp sonra, eski haline getirin.

Bazı Faydalı Kernal Alt Programları

6. Ekran temizlenir ve tüm ek- İşli

ran editör değişkenleri yeniden Adres | İleti ere m program Alt Siciller ayarlanır. Denetim, vektörü Program $A000'da kullanan BASIC'e geçer. Gelecek sefer çalışmayı başlat- | Kullanıcının İçyüzü tığınızda, eğer ufak bir gecikme dikkatinizi çekerse, makinenin 1. CHRİN $FFCF Girdi 1 A-Girdi — | tüm bu unsurları doğru dürüst yerinde ve zamanında bir araya getirip hazırlayabilmeye uğraştığını 2. CHROUT Çıktı 1 A-Çıktı irsini: Karakteri karakteri | — — düşünün, hak verirsiniz. (Ekran'a) Kernal Alt- Get (AI?) — | Azkarakter | 1 Karakteri giderildi Programlarının 3.GETIN | SEFE4 Klavye'den O-hiç yoksa Kullanımı imi 4. PLOT SFFO Oku/ Kernal alt-programlarının kullanı- (Konu) A mı için mutlaka: konumunu <0 kur - Uygun alt-program ile onun giriş kur. X sıra (0-24) adresini bulun. - Gerekirse, hazırlayıcı alt-programı Depo 1/0 $. SETLFS $FFBA Mantık dosya — - numarasını kur. dosya numarası. İlk adres (Aygıt Numarası) ve ikinci adres (Aygıt'ın) komutu. $FF hiç komut yoksa 6 SETNAM $FFBD Dosya ismini kur. — *A— Dosya isminin SU uzunluğu .X — Dosya isminin adresi (aşağı) *Yz Dosya isminin adresi (yüksek) 7. LOAD Yükleme/Hafızayı SETLFS Yük (Yükleme) Aygıt'tan doğrula SETNAM doğrula 8. SAVE $FFD8 Hafıza'yı E — SETLFS (Kurtarma) sakla göstergenin başlangıç sıfır adresi .X-SAVE gösterge adresine son ver (aşağı) .Y-SAVE gösterici adresine son ver. (yukarı)

1. CHRİN-KLAVYEDEN | KARAKTER GİRİŞİ

Bu alt-program çağırıldığında, kursör yanıp sönerek ve RETURN'le sona erecek bir satır dolusu karakter girilmesine hazır olacaktır. Alt-program, .A'daki ilk karakterle geri gelecektir. Bunu izleyen çağırmalar, birer birer girdi yapılmış karakterleri yeniden elde edecektir. RETURN'e rastlanması, tüm girdi satırının yeniden elde edildiği anlamına gelir. Alt-programın bundan sonra bir kere daha çağrılması yanıp sönen kursörü ve girdi satırını yeniden başlatacaktır.

2. CHROUT EKRANA | ÇIKTI KA-RAKTERİ

ASCII değeri A'dan olan ve ekrana yazılan bir karakter. Kursör ilerler.

3. GETIN-KLAVYE KUYRUĞUNDAN 1 KARAKTER AL

Klavyede basılı herhangi bir tuş, IRQ (interrupt) sistemi tarafından takip edilir. ASCII kodu, azami 10 karakter tutabilen klavye tampon kuyruğu tarafından depolanacaktır. Çağırıldığında, bu alt-program ilk karakteri kuyruktan (queue) çıkarır. Kuyrukta hiç karakter mevcut değilse, bir byte sıfır değeri .A'ya avdet edecektir.

4. PLOT KURSÖR KONUMUNU OKU/AYARLA

Bu alt-program, Çentikleri Aktar ibaresi ile uygun olarak çağırıldığında o andaki kursör konumunu okuyabilir/ayarlayabilir. .X satır numarasını (0-24), .Y ise sütun numarasını (0-39) depolar.

5. SETLFS-MANTIKİ DOSYA NUMARASINI, BİRİNCİ VE İKİNCİ CİHAZ ADRESİNİ HAZIRLA

Bu alt-program, mantıki bir dosya numarasını fiziki bir cihaz numarasına (aygıt no: 0-31) tahsis eder. İkincil adres (tali adres) ya da cihazın komutu da yine burada deklare edilir. Commodore 64'ün çok sayıda özel cihaz numaraları vardır:

Cihaz numarası | Cihaz 0 Klavye

Kaset RS-232 Cihazı Ekran Seri Taşıt Bilgisayarı Seri Taşıt Disk Sürücüsü .A, mantıki dosya numarasını .X, cihaz numarasını ve .Y, komutu intikal ettirmek için kullanılır. Şayet hiçbir komut mecburi değilse, .Y'ye $FF yerleştirilir.

6. SETNAM-DOSYA ADINI KUR Bu alt-program, LOAD ve SAVE alt-programları için dosya hazırlar. .A dosyanın isim uzunluğunu geçirmek için, .X ile .Y de dosyanın adını içermek amacıyla kullanılır: (.X — düşük düzen, .Y— yüksek düzen adresi) olmak üzere. Eğer hiç dosya ismi gerekmiyorsa, .A hiç uzunluğu olmayan bir dosya adını gösteren bir sıfır depolar.

7. LOAD-BELLEĞİ YÜKLE/DOĞRULA

.A'da bir sıfır ile çağrıldığında, bu alt-program cihazdaki bir dosyayı hafızaya yükler. .A'da bir adet bir ile çağrıldığında ise, bu alt-program belleğin birbiriyle haberleşen içeriklerine karşı, bir dosyayı doğrular.

8. SAVE-BELLEĞİ CİHAZA SAKLA Bu alt-program belleğin bitişik (hem hudut) bir bölümünü cihaz dosyasına saklar. Saklanacak belleğin başlama adresi bir sıfır-sayfa göstericisinde depolanmıştır. İşte .A, bu başlama göstericinin sıfır-sayfa adresini nakletmek için kullanılır. .X ile .Y bitiş adresini (düşük ve yüksek düzende) nakletmekte kullanılır.

Kernal Alt

Programlarını Çağıran Basit Programlar

A. GRAFİK KARAKTERLER KULLANILAN PLOT (KONU) Bu program, değişik grafik karakterleri kullanarak ekranın herhangi bir yerinde çizim yapar. Üç KERNAL altprogramından -CHROUT, GETIN ve PLOT- yararlanır.

SYS 49152'yi tape ederek “konu”'yu çağırınız. Konu komutları:

(ET! — aşağı
den'e — grafik
karakterleri (mekân) — boş, yazısız?
işlet
dür — Konu sonu
10
20
30
40 getin $ffe4
50 plot
(konu) —
60 shape
(kalıp) — .de $26 — ; char'ı
plot'a düzenle.
70 x save.de
80 y save.de $28
90 binsw .de ; kursör
çentik diye yanıp
sönüyor.
$028a — ; anah-
tar çentiği tekrarla.
100 rptflg .de
110 ;
120;
130 ; ekranı harekete geçir.

Çeviren: JÜLİDE ERGÜDER

SOURCE CODE LIİSTİNG:
1
a ORG
3 CHROUT
4 GETİN EfÜU
Edli
& SHAPE EfU #26
7 XSAVE Edl $27
& YSAVE
8 BUNSU Edl
10 RPTFLG
13 #EKRANI HAREKETE GECİR
15 KONUG
LDA
16 JSR CHROUT
LDA HA
18 STA BUNSU
18 LDA
ga STA RPTFLG
Bı LOX #S1Z
Ba LOY #$18
ea LODA
84 UPSHP STA SHAPE
a5 ;
26
#CHAR SHAPE'INİ BAS
Ba
es :
20 XSAVE
s1 STY YSAVE
aa CLC
33 JSR PLOT
s4 LDA SHAPE
35 JSR CHROUT
36 LDA
37 JSR CHROUT
38 :
389 ANAHTAR GİRDİSİ'Nİ BEKLE
49 :
41;
42 ICANAHK JSR GETİN
43 LOX XSAVE
44 LOY YSAVE
45 CMP Ha
46 BEG ICANAH
47 #;STOP OLURSA CİK
48 CMP 43
43 BEG CIK
SA ;<SPACE> OLURSA BOS BIRAK
CMP
BEG UPSHP
S3 ;<F1> ISE KÜRSOR YUKARI
SİL
#KURSOR YANIP SONER

TEKRAR İMKANI VER #KORSORU BASLAT

# X,Y'I TUT

KURSOR KONUMUNU KUR

YAZ
; ARKA MEKAN

YENİDEN KUR

IC ANAHTAR YOK
54 CMP #$a5
55 BEG YUKARI
56 ;<F3> ISE KURSOR SAGA
s7 CMP #$86
BEG SAG
59 ;<F5> ISE KURSOR SOLA
sa CMP
Bı BEG SOL
B2 :<F7> OLDUĞUNDA ASAGI
63 CMP
&4 BEG ASAGI
65 ;EGER CHAR YAZMAZSA
66 ($SAN-HOF >
67 BOSVER
&& CMP
ba BCC ICANAH
7a CMP
71 BCS ICANAK
78 KALIBINI YENİLE
73 JMP UPSHP
74 4:
76 ; KORSOR HAREKETİ
m:
78 YUKARI DEX
7a CPX #SFF
sa ENE YUKİ
ER! LOX
82 YUKİ JMP CUTSHP
83 :
84 ASABI INX
CPX
86 ENE ASAGIL
87 LOX
88 ASAGIL JMP CUTSHP
89
sa sas INY
sı CPX #49
se BNE
93 LOY #a
84 SAGI JUMP
85
86 SOL DEY
a7 CPY #SFF
88 BNE SOL1
ga LOY #38
SOL! JMP CUTSHP
102 ;BASİCE CİK
103 ;
CİK LOA
105 JSR CHROUT
1206 SİL
1az RTS
108

END OF LIST