Disketinizi tanıyor musunuz?

64 ile profesyonel olarak ilgilenenlerin veya kasetten daha hızlı ve gelişmiş “akıllı” bir kayıt aracına ihtiyaç duyanların vazgeçemedikleri VC-1541 disk sürücüsü bugünkü konumuz. Daha doğrusu, VC-41541'in bilgileri disket üzerinde saklamak için izlediği yöntemler ve bunları bizim nasıl kullanabileceğimiz.

programları kopyalamaya karşı birer engel olarak kullanılırlar. Her bir TRACK da kendi içinde SEC-TOR'lere ayrılmıştır. Her bir SECTOR 256 byte'dir ve toplam 683 SECTOR vardır. Hemen anlayacağınız gibi, BLOCK olarak belirtilen şey, aslında SECTOR'- un bir diğer adı. Ancak TRACK'ların uzunlukları farklı olduğu için her TRACK'da farklı sayıda SECTOR bulunur. VC-1541, her TRACK'daki SEC-TOR'leri sıfır ile başlayarak numaralar.

Dolayısıyla, dördüncü TRACK'ın beşinci SECTÖR'ü ile onuncu TRACK'ın beşinci SECTOR'ü arasında fark vardır.

Aşağıda her TRACK'da kaç SECTOR olduğu ve numaraları gösterilmiştir.

Disket Yapısı

TRACK SECTOR 20-20 20-18 3-30 31-35 20-16

Disket üzerine herhangi bir bilgi, diyelim ki bir program yazıldığında, ŞU işlemler yapılır. Önce programın adı DİRECTORY'de kaydedilir. Daha sonra da bilgi yazılabilecek en uygun boş SECTOR bulunur. Ancak bilgi bir bloktan daha uzunsa ne olacak? İşte buna çözüm olarak şöyle bir yöntem kullanılmaktadır. Yazılacak bilginin ilk 254 byte'ı bir bloka yazılır. Sonra gelen 254 byte, ilk bloka en yakın boş bir bloka yazılır ve ilk blokun ilk 2 byte'ına, ikinci blokun TRACK ve SECTOR numaraları kaydedilir. Daha sonraki 254 byte için bir üçüncü blok kullanılır ve bu blokun TRACK ve SECTOR numaraları da, ikinci blokun İlk iki byte'ıncı yazılır. Bu işlem en son bilgi parçası da diskette yazılıncaya kadar devam eder ve böylece, yazdığımız bilgi bir bloklar zincirine yerleşmiş olur. En son blokun ilk byte'ı daima sıfır olur ve ikinci byte'i da o blokta kaç byte'lık bilgi olduğunu gösterir. Dikkatli okuyucularımız, DİRECTORY'- nin ve en yakın boş blokun neler olduğunu soracaklardır. DİRECTORY, tüm 18. TRACK'ı kaplar ve disket üzerinde bulunan dosyaların tiplerini (SEO, PRG, REL, DEL, USR gibi), isimlerini, uzunluklarını ve disket üzerinde hangi TRACK ve SECTOR'dan itibaren başladıklarını saklar. Ayrıca disketin adı ve kimlik numarası (ID) da burada saklanır. Bunların nasıl yerleştiğini birazdan göreceğiz. En yakın blok ise, her zaman için bir sonra gelen blok değildir. Örneğin 18. TRACK ve 01. SECTOR'e en yakın SEC-TOR, 18. TRACK 04. SECTOR'dür. Bu tamamen disketin ve VC-1541'in yapısına bağlıdır. Temelde, 18/01'den sonra 18/04'ü okumanın, 18/02'yi okumaktan daha hızlı olacağı gerçeği yatar.

Bir SECTOR'ün boş olup olmadığı da BYTE ANLAMI gene DİRECTORY içinde saklanır. Ar — tık, disket üzerinde belli bir yerde bu- 144-161 — Disket adı, eğer kısa ise 160 ile tamamlanır lunan ve özel amaçlarla kullanılan Dl- 162-163 1D RECTORY'nin incelenmesine geçebi- 164 Daima 160'dır gi depolamak için kullanılır. 167-176 166 ile dölü DIRECTORY'nin ilk bloku 18/00'dadır. 171-255 — © ile dolu

İlk iki byte'iı (BYTE 00 ve 01) bir sonraki bloku olan 18/01'i gösterir. BYTE 02 ise, eğer disketinizi Bir sonraki 18/01'den itibaren disket VC-4541 ile formatlamışsanız 65 üzerindeki dosyalarla ilgili bilgiler sakdeğerine sahip olacaktır. Bu, lanmaya başlanır. 18/01 ve sonra ge- VC-1541'in formatlama işareti olan 'A' len DİRECTORY blokları aşağıdaki yakarakterinin karakter kodudur. Örne- pıya sahiptir: ğin CBM-4040 ile formatlanan disketlerde bu sayı 69 (E') olacaktır. Bu tür disketleri, VC-1541 ile okuyabilir, an- BYTE ARR an Bir sonraki blokunu gösterir cek İlk a-31 1. dosya ile ilgili bilgiler ise: Çok Önemli, işle 34-63 2. dosya ile ilgili bilgiler u 140 byte içinde, disket üzerindeki 66-95 3. dosya ile ilgili bilgile tüm blokların dolu veya boş olmaları 38-127 4. ile ni belirtilmiştir. Burası tıpkı bir harita gibidir; İngilizce'de Block Availability 30-159 — 5. dosya ile ilgili bilgiler adını alır. Bu e, her dört byte 5 bir TRACK gösterecek şekilde ayarlan- 226-255 8. do&ya ile ilgili bilgiler mıştır. Bu dört byte'in ilki o TRACK'da kaç boş SECTOR olduğunu gösterir. Görüldüğü gibi her blokta 8 dosya Sonra gelen 3 byte'in oluşturduğu top- — 18. TRACK toplam 19 lam 24 bit'in her biri, o TRACK'daki iri bloktan oluştuğuna ve bunlarda biri SECTOR'lerden birini temsil eder. Eğer 18/00 için kullanıldığına göre, dosya o bit O ise, temsil ettiği SECTOR dolu içi isimleri için geriye 18 blok kalıyor. Yani demektir. 1 ise boş bir SECTOR göste- — Giskette yeterli boş blok olduğu sürece, 18'8- 144 değişik dosya bir diskette yer alabilir. DIRECTORY'nin en BYTE ANLAMI son blokunun İlk iki byte'ı O ve 255 deam ğerlerine sahiptir. Şimdi de her bir dosya için ayrılmış

O TRACK'daki olan 30 byte'ın hangi amaçlarla kulboş blak sayısı lanıldığını görelim! Bi SECTOR Tr a2 SECTÖR 88-15 BYTE ANLAMI A3 SECTÖR 16-23 yg Dosya tipi (PRG, REL, DEL, USR) Bir TRACK'da en fazla 21 SECTOR 1,2 tlk bilgi blokunun TRACK ve ime Bir 3-18 Dosya adı, kısa ise 160 ile tamamlanır 19,21 Relatif dosyalarda kullanılır TRACK 18 SECTOR Gü: e2-25 Kullanılmaz 26,27 O ile SAVE yapıldığında kullanılır 28,293 Dosyanın toplam blok uzunluğu

Byte 24 : - 8 05 : 00000000 - © Dosya tipleri de aşağıdaki gibidir. 3 e

26 : - A7 10000000 - 128 >> DEL 18/00'daki 04-07 sı byte'lar 00 i 04-07 arası byte'lar 00. TRACK'ı temsil ettiğine göre, yukarıda- > ki bilgilerden 00. TRACK'da 8 boş blok olduğu ve bunların 14-21 numaralı 10001000 > 132 REL SECTOR'lerde yer aldığı anlaşılmaktadır. Dikkatinizi çekeceği gibi, en solda- tılmadığını gösterir. Örneğin OPEN ile 18/00'ın diğer byte'ları ise şu anlam- ki bit daima 1'dir. Eğer bit O ise, bu açtığınız bir dosyayı CLOSE ile kapatları taşır: © dosyanın düzgün bir şekilde kapa- mazsanız, SAVE yaparken disket hafızası yetmezse veya işlem bitmeden elektrik kesilirse. Bu tipteki dosyalar kullanılamaz ve LOAD”$”,8 yaptıktan sonra yanlarında bir **” işareti görünür. Eğer soldan ikinci bit 1 ise (diğer bir deyişle, yukarıdaki sayılara 64 toplarsanız; örn. 128 4 64 — 192 ise), o dosya silinmeye karşı korunmuş demektir. Bunu da listedeki & işareti ile anlayabilirsiniz.

Toplam blok uzunluğunu ise 28. ve

29. byte'ların içeriğinden anlayabiliriz. Diyelim ki buralarda 34 ve 1 varsa, © dosya 1*256434-290 blok uzunluğunda demektir. Şu ana kadar disket üzerine yerleşen bilgilerin Track, Sector ve Byte düzeyindeki organizasyonunu gördük. Ancak bunları kullanmanın bir yolu olmasaydı, bunca bilgi hiçbir işe yara- . Mazdı. Eğer bu bilgileri okuyup değiştirebilirsek, çeşitli kullanım alanları bulabiliriz. İşte bu özellik, DOS (DISK OPERATING SYSTEM: - Disk İşletim Sistemi) içine yerleştirilmiş bazı emirleri kullanmakla olmaktadır. Bu emirleri kullanarak istediğimiz bloku okuyup, bu blokun istediğimiz byte'ını değiştirip, tekrar geri yazabiliriz. Şimdi bu komutları ayrıntısıyla görelim.

Komut Kanalı

Disketten bir blok okunduğu zaman, bu blokta bulunan 256 byte'lık bilgi,

VC-15441 içindeki RAM'a yazılır. Bu alanı bir tür depo olarak görebiliriz. Daha sonra da bu deponun içeriğini değiştirip, tekrar disketin üzerine yazabiliriz. Bu nedenle işlemlerimize başlamadan önce, VC-1541'e böyle bir depoya ihtiyacımız olduğunu belirtmemiz gerekir. İşte disketle olan tüm bu ilişkilerimizi, komut kanalı olarak tanımlanan 15. kanaldan gönderdiğimiz komutlarla düzenliyoruz. Bu işlem için ilk önce komut kanalının açılması gerekir: OPEN 1,8,15 Daha sonra da depoyu oluşturmamız gerekir: OPEN Bu son komut, 2 numaralı kanalı (8'den sonra gelen 2) bir depoya bağlar. Artık PRİNT #2 ile yazılacak ve GET #2 ile okunacak her şey bu depodan olacaktır. Artık disketin belli bir blokunu, diyelim ki 18/00'1 okumak istiyoruz. Bunun için komut kanalından, hangi TRACK ve SECTOR numaralı bloku, hangi disk ünitesinden (VC-1541 için 0) ve hangi depoya okumamız gerektiğini bildirmemiz gerekir. Şu komut bu işlemi yapar: PRİNT 20 18 0”

Okuma işlemi anlamına gelir.

e : Depo kanalı a 1 Disk ünitesi numarası 18 TRACK numarası 0 SECTOR numarası

Artık 18/00'ın tüm 256 byte'ı depoya yerleşmiştir. GET# 2 komutu ile bu byte'ları sırayla okuyabiliriz. Bir örnek görelim:

108 OPEN 1,8,15
20 OPEN
PRIİINTH1İ,"Ul 2 & 18
40 GETHE,AF,B$
SA PRİNT ASCLAS),ASC
(B$)
60 2:CLÜOSE İ

Program çalıştığında, önce komut kanalını açacak, sonra da depoyu oluşturacak (2. kanala bağlı olarak).

Komut kanalına, 18/00'ı 2 numaralı depo kanalına okumak istediğimizi bildirdikten sonra, depodaki ilk iki byte'ı A$ ve B$'e yerleştirecek. En sonunda da bu byte'ları sayıya çevirerek yazacak ve açtığımız kanalları kapatacak. Sonuçta ekrana, 18 ve 0 sayıları yazılacaktır. Bunlar, 18/00'dan sonra gelen bloğun TRACK ve SECTOR numaralarıdır. Hatırlayacağınız gibi, bir bloktaki ilk iki byte, bilginin devam ettiği bir sonraki bloğu göstermekteydi. Eğer depodaki ilk değil de, örneğin 166. byte'ı okumak istersek ne yapacağız. Bunun için de komutu (Buffer pointer, depo göstergeci) kullanılır. Örneğin, PRINT #1,“B-P 2 166” ile, göstergecin iki numaralı kanala bağlı depodaki 166. byte'ı göstermesi sağlanır. Artık GET#2 ile o byte'ı okuyabiliriz. Örneğin, bir disketin 18/00'da olan ve 144. byte'ında başlayıp, maksimum 16 karakter uzunluğa sahip adını okuyup ekrana yazalım.

10 ÖPEN 1,8,15
20 ÜPEN 2,8,2,"#"
30 PRINTH1İ,"UL 2 8
186 O“
40 PRİNTHİ,"B-P 8 144"
SA FOR Izi TO 16
BO
THEN 88
TG PRINT
TI NEKT |
80 CLOSE |

Şimdi de sıra depodaki bilgiyi disketin üzerindeki bir bloğa yazmaya geldi. Ancak bu ve bundan önceki komutları çok dikkatli kullanın. Eğer yanlış yere yanlış bir bilgi yazarsanız, disketinizin üzerindeki dosyalar kullanılmaz hale gelebilir. Okumak için kullanılan komuttaki ile değiştirdiğinizde yazma işlemi gerçekleşir. Yani, PRINT #4 1, “U2 2 0 10 12” komutu ile, 2. kanaldaki depoyu 10/12'ye geri yazmış oluruz. Bu sırada 10/12'de bulunabilecek eski bilgiler silinecektir. İsterseniz, buna örnek olarak, disketin adını nasıl değiştireceğimizi görelim.

18 OPEN 1,8,15
20 OPEN 2,8,2,"H#"
30 PRINTHİ,"U1 2 &
18 O"
40 INPUT "YENİ DİSKET
IF LENCAS)<1İ6 THEN
GOTÜ 58
PRINTHİ,"B-P 2 144“
TA
sö PRINTHİ,"UZ2 2
18 O“
SA PRIİNTHİ,"I"
95 CLÜSE İ

Önce emir kanalını ve depoyu açıyoruz. Sonra yeni disket adını sorup, karakter sayısını CHR$(160) ile 16'ya tamamlıyoruz. Göstergeci 144. byte'a ayarlayıp yeni adı depoya yazıyoruz. Bu sırada, 70. satırdaki noktalı virgüle Diskete bu yöntemle bir şey yazarken daima kullanılmalıdır. Artık depodaki bilgi 18/00'a geri yazılabilir. En sonunda da, yeni adı okuması için emir kanalından "I" (initialize) komutunu gönderiyoruz.

Kullanışlı Bir Program

Artık tüm bu bildiklerimizi güzel bir programda kullanmanın zamanı geldi. Elinde birçok disketi olan VC-1541 sahipleri, hangi diskette ne olduğunu, hangisinde ne kadar boş yer kaldığını hatırlamakta zorluk çekerler. Hele disket sayısı 30'u geçtiğinde bu imkânsızlaşır. Artık tek çözüm, directory'i kâğıda geçirmektir. Bir yazıcıya sahip olanlar bu konuda daha şanslıdır. Ancak yine de birtakım sorunlar beklemektedir kullanıcıyı. Örneğin, her disket için şu iki satırı tekrar etmek gibi:

Ayrıca, kâğıdın yarısından çoğu boşa gider ve düzensiz bir görünüşe sahip olur. Hele bazı program isimleri, normal harf, sayı ve grafik karakterlerinden farklı bazı karakterlere sahip olduğunda, yazıcı bunlara değişik tepkiler göstermekte, kimi zaman basmamakta, kimi zaman ise kontrolden çıkmaktadır. Bazı disketlerin directory'leri ise üretici firma tarafından, yükleme sırasında bilgisayarı sonsuz döngüye sokacak biçimde hazırlanmıştır. İşte bizim programımız tüm bu zorlukların üstesinden gelecek. Bir kere kâğıda 3 ayrı disketin directory listesi yanyana basılacak, böylece kâğıt israfı ortadan kalkacak. Hatta, eğer yazıcınız MPS802 ise bir sayfaya 90 satır basılacak (normalde 66 satır). Bundan başka, her disket için ayrıca bir başlık verilebilecek. Yükleme işlemi sadece bir tuşa basarak başlatılabilecek. Bütün karakterler kontrolden geçirilecek ve basılamayacak olanlar yerine basılacak. Sonsuz döngüler önlenecek ve sonuçta her şey düzenli bir görünüşe sahip olacak. Şimdi bu programımızı satır satır açıklayalım. 10: Bir karakterin basılıp basılamayacağını öğrenmek için kullanacağımız fonksiyon. Eğer kontrolünü yaptığımız karakter kodu, 32'den küçükse veya 127-160 arasında ise basılamayacak bir karakter demektir. 15: Kullanacağımız değişkenleri belirliyoruz:

20-30: Gerekli sabitler yerine yerleş-
tiriliyor.
31-41: Sırası gelen disketin takılma-
sı ve bir başlık verilmesi bekleniyor.
42: Başlık, sonuncu karakteri boşluk
olan toplam 24 karaktere tamamlanı-
yor. Bu arada ZG hangi disketle (O, 1,
2) uğraştığımızı gösteriyor.
45: Daha o disketteki hiçbir dosya
okunmadığı için dosya numarası -1'e
eşitleniyor. İlk dosya sıfır numaralı ola-
cak.
50-90: Komut kanalı ve depo açılı-
yor. Disketin adı okunuyor ve her ka-
rakteri kontrol ediliyor. Toplam 16 ka-
rakter okunduğunda, disket adı DN$
içinde hazır oluyor. Bu arada 0 numa-
ralı SECTOR'ün okunduğu işa-
retleniyor. Bunu sonsuz döngüyü ön-
lemek için kullanacağız.
100-440: Disket |D'si okunuyor, kont-
rol ediliyor ve ekleniyor. En son-
da da oluşan isim ve ID ekrana bası-
İlyor.
120-4140: Her TRACK'daki boş blok sa-
yısı BAM'dan okunarak toplanıyor. An-
cak 18. TRACK'daki yani directory ta-
rafından kullanılan TRAC'daki boş yer-
ler bizi ilgilendirmediği için orayı atlı-
yoruz.
150: Artık dosyaların okunmasına
18/01'den başlayabiliriz.
160: Eğer o bloku daha önceden
okumuşsak, sonsuz döngü başlıyor
demektir. O disketi okumayı bırakabi-
liriz demek ki.
4161: O bloku okuduğumuzu işaret-
liyoruz.
462-170: Sırası gelen bloku depoya
okuyup, ilk iki byte'dan bir sonraki

için için için

T&$ Dosya tiplerini saklamak için
NM& üç disketteki dosya isimlerini saklamak
BLZ üç disketteki dosyaların uzunluğunu saklamak için
: üç disketin kalan blok sayısları
DN$ : üç disketin adları için
HD$ : üç disketin başlıkları için
Zi$ £ Dosyanın korunmuş olup olmadığını saklamak için
: Dosyanın açık olup olmadığını saklamak
TUZ £

Bir daha önce okunup okunmadığını bilmek için

TRACK ve SECTOR'ü öğreniyoruz. 180: O bloktaki 8 dosyayı okumaya başlıyoruz. Önce göstergeci, sırası gelen dosyanın dosya tipini gösteren byte'ına ayarlıyoruz. 190: Dosya tipini okuyoruz ve eğer sıfır ise, yani o yerde bir dosya ile ilgili bilgi yoksa, bir sonraki dosyaya geçiyoruz. 195-230: Dosya numarasını bir artırıp, dosya tipini belirten harfi ve dosya tipinin veya karakterlerine ihtiyacı olup olmadığını saptayıp, dosya adının içine yerleştirerek saklıyoruz. 250-280: Sırası gelen dosyanın adı, her karakteri kontrol edilerek okunup, harf harf N$'in içinde oluşturuluyor. En sonunda da, daha önce belirlenen dosya tipine eklenerek o dosya ile ilgili basılacak satır oluşturuluyor. 290-300: Dosyanın blok uzunluğu okunup hesaplanıyor. 305-310: O dosya ile ilgili bilgiler ekrana basılıyor ve bir sonraki dosya ile ilgili işlemlere geçiliyor. 320: O bloktaki dosyalar bittiğinde eğer hâlâ okunacak başka bir blok varsa, tüm işlemler yeni blok için de tekrarlanıyor. 325: Boş blok sayısı ekrana yazılıyor ve o disketle ilgili tüm okuma işlemleri bittiği için açılmış olan kanallar kapatılıyor. 330: Eğer daima üç disket okunmamışsa, tüm işlemler yeni bir disket için tekrarlanıyor. 340: Artık üç disketten toplanan bilgilerin kâğıda geçirilme zamanı geldi. Önce 6 numaralı kanaldan MPS802'ye satır aralarındaki boşlukları azaltan ve böylece sayfa başına satır sayısını 90'a çıkaran komut gönderiliyor. Sonra da üç disketin başlıkları basılıyor.

345-350: Disketlerin isim ve ID'leri yazılıyor. 355: İlk iki satırın altı çiziliyor. Böylece, bir bakışta kâğıttaki dosya isimlerini bulmak mümkün olacaktır. 360-386: Artık her üç disketteki dosyaların blok sayısı, isim ve tipini yazabiliriz. Her üç directory aynı uzunlukta olmayacağı için her satırda nereye kadar yazı yazılacağını kontrol etmemiz gerekir. Bunu 380-383'te yapıyoruz. 385'te ise başka dosya adı kalmadığını anladığımızda, döngüyü bitiriyoruz. 390-392: Her disketin boş blok sayısını, belli bir uzunluğa getirerek basıyoruz ve açtığımız yazıcı kanalını kapatıyoruz. 395-420: Bilgisayar bir tuşa basmamızı bekliyor. Eğer bu tuş sola bakan ok ise, MPS802'nin satır açıklığı normale döndürülüp program bitiriliyor. Eğer başka bir tuş ise program yeniden başlatılıyor.

663 Kolon Directory” programını yükleyip uygulayarak nasıl bir şey

elde edeceğinizi mi merak ediyorsunuz? İşte bu formatta bir

manager database compiler superbase 16 ;16 A7 superbase Ed.manager Pp -.3 petspeed p 3 start.p 5 2 loader Pp 58 passi P 4 henter 5 30 program Pp 930 Pp 3 hselect 3 24 Pp 80 pass3 Pp 6 hfind s 7 Pp 18 passda pP ar houtput 5 18 Pp i passdb Pp 3 healc s i Pp 3 Üz Pp 5 hreport s5 14 6d.sort.g p 4 ib l1ib Pp 3 hexecute Ss 568 EB6&d.arithedit Pp 3 logzü Pp 5 hhelp s5 23 p backup Pp 9 hfile 3 Fe Pp 36 arrürs P 7 hformat 5 43 6d,manipulate Pp 8 report Pp 4 hbatch s Gd.report Pp 5 hsört 4 6d4.sürt 5 hprog 5 4 sc.halp screehz ? hmairntain 5 i fz.help scraenz ss 3 5 2 da.checkbook 5 5 1 dp.checkboaok s e dıe ar .Chackbook 5 3 himport 5 e sC.ChecKkbaok Ss 3 hexpoart 5 i p 11 5 1 fs.checkbook 5 i Cüst.inu 5 i Pp Z 4 da.xmaz 1ist 5 1 TRAINING z sc.xmas list e sb 1 ts.xmas p 10 P 1 fs.xmas list 10 Pp 1 Hrn.xmas list p 40 utility P e da.task manager 1 s 3 i4 dealete.p & i ts.task manazer Pp 13 İ zi labels.p 5 1 manazer Pp 2 da.portfölio Ss i 3 1 aAr.poartfoalio 5 2 sCc.poürtfolio 5 1 ts.portfoliü Pp i fs.poörtfoalio 5 1 Hra.portfolio Pp 1 Pf.checkbaok 5 2 5 2 list Ss 1 rf.portfoliü s 1 da.data base dem s 1 tz.data base dem Pp 1 bBrn.data baze dem i fs.data base dam s e base dem xs Blocks blocKks Blocks

PROGRAM ADI 3KOLON DİRECTORY 00040 GET THEN 48
8080641 INPUT "BASLIK <133>
DEF OR AND K<1 3)4*"<C2SPACE>" <213>
60) 606045 <148>
00615 DIM 06050 OPEN 1,8,15:0PEN 2,8,2,"#":PRINTHİ,
"UL 2 <157)>
(18) 68060 28 144":FOR 15144 TO 16
000620 TO 4:RE 1:GET THEN <208>
AD 0800786 IF THEN A$z"?”
A” <190>
Zasl1)-" <112>
R , 86108 FOR 1-162 TO 163:GET A$z""
800386 FOR TO 18:TUZ(5Y)-0: NEXT THEN <179)>
000631 PRİNT 0806165 IF FNRCASCLAS)) THEN A$z"?" <085>
DISKET LUTFEN !" <194>
26)
00120 FOR 154 TO 1486 STEP 4:PRİNTH1,"B-P
IF 1-72 THEN NEXT
001306 GET #2e,A$S:IF A$z"" THEN
08148
00156 TR>18:SE-İ
08168 IF THEN 325
88161 TUZ<SE)-İ
60162 PRINT#1,"Ul 2 #2,TR$:6
ET #2,SE$
001786
00188
60198
FOR TO
GET THEN
318
FLEFL*1
AND
AND
AND
FOR 1153 TO 1İ8:PRINTH1İ,"B-P
3a*1lI
GET #2,A$:IF A$z"" THEN A$zC$
IF THEN
#2,L$:6
ET #a,H$
BLZ(ZG ,FL)SASCLHSA*CS)
)
PRINT
>"
08195
062068
80216
60230
00250
00255
00260
00265
086270
60288
686290
00388
60305
003186 NEXT
003206 IF THEN 168
868325 PRINT "BLOCKS FREE
1:CLOSE 2
<123> 00338 THEN 38 <876>
860348 OPEN 4
<aa7> (a2) : <229>
88345 FOR TO 2:PRİNT#L,DNSCI)"<4ASPACE
<235> >"33NEXT
886358 PRINTH1 <a75>
<179> 8686355 FOR TO :PR
<187)> INT#1 <249>
88368 FOR 158 TO 143:FOR TO 28:1F
<048> THEN 388 <ı124>
<048> 88370
)4*"<3SPACE)”,3):NMSCT,1); "<aSPACE>"
; <849>
006375 GOT0 384 <065>
86386 IF THEN IF THEN IF
THEN T-3:6G0T0 384 <1İ74>
68381 IF Tsi THEN IF THEN
:GOTO 384 <868>
860382 IF Ts2 THEN 384 <227>
08383 <151)
<B75)> 88384 NEXT
860385 IF NM$C8,1)-"" AND AND
<19a> THEN 398 <225)
<159> 08386 NEXT <076>
88398 FOR 1-8 TO 2
<065> 60391 FREE-"LEFT$(MID$CST
<168>
CE)";
<246> 88332 NEXT :PRİNTHİ:PRİNTHİ:CLÖSE 1 <158>
860395 PRİNT DURDURMAK
ICIN «'E BASINIZ....
886336 PRİNT TEKRAR İCİN HER
<123> HANGI BIR TUS..
90400 GET B$:1F B$-"* THEN 408
<147)> 66418 IF B$<)"e" THEN RUN <166>
88420 OPEN 4,4,6:PRIİNTH4,CHR$0C32):CLÜSE 4
<156)>

© PERİYODİK

Bundan önceki yazımızda ele aldığımız turbo programı ilgi gördü. Monitör programı olanların rahatlıkla kullanabildiği programı BASIC ile girmeye çalışanlar biraz yoruldular. Ayrıca turboyu makina kodu olarak saklamaya yarayan adreslerden biri POKE 45,255 olacaktı, burada düzeltiyoruz. Monitör programıyla yapılan kayıt işleminde böyle bir sorun yok. “Turbo 40 kez hızlı” yazısını okuduğunuzda şaşırmışsınızdır. Çünkü turbo 10 kez hızlı, bu hatayı bir espri olarak değerlendireceğinizi umuyoruz. Önümüzdeki sayıdan sonra programların kasette ve diskette okuyucuya sunulması gibi bir düşüncemiz olduğundan bu tür sorunların da önüne geçileceğini umuyoruz. Derginin yayınlandığı tarihten bir hafta sonraya kadar kaset veya disketinizle Teleteknik'e gelseniz programın kopyasını verebiliriz. Bu arada program kopyacılarını da düşünerek “kaset header” programı veriyoruz. Bir önceki sayıda yer alan header oluşturma işlemini zahmetsizce yapabilirsiniz. Disket programınız için verdiğiniz otomatik “,8,1” yazıcı da ilginizi çeker sanırım.

KIRMIZI VE MAVİ