GOTO 40 50 PRINT &3, 55 PRINT * 1, “U2 2018 0 60 CLOSE 3 65 PR[NT#I,“I” 70 CLOSE | Bildiğimiz yöntemlerle 18/0'ı buf- fer'a okuyup 144. byte'ına geliyoruz. A$'in içinde duran yeni disket adını 160 byte'ı ile 16 karaktere tamamlı- yoruz. Daha sonra da 50. satırda buf- fer'a geri yazıyoruz. Satırın sonunda- ki noktalı virgüle dikkat! Eğer o ol- mazsa, ismi oluşturan 16 karakterin arkasına bir de 13 ($0D, RETURN karakterinin kodu) byte'ı eklenir, ki bunu pek de istediğimiz söylenemez. 55 numaralı satırda ise, gerçek yaz- ma işlemini yapıyoruz ve buffer'da- ki yeni bilgiyi olduğu gibi 18/0'a ge- ri yazıyoruz. Disketi initialize ederek, 1541'in disketin yeni adının farkına varmasını da sağladıktan sonra işimi- zi bitiriyoruz. Directory'i yukleyerek kontrol edin isterseniz.. BLOCK-ALLOCATE (B-A) Eğer geçmiş iki bölümümüzü izle- mişseniz, bu komutun ne işe yaradı- ğını hemen anlamışsınızdır. Disketin BAM'inde saklı duran blok haritasın- da belli bir bloku dolu göstermek is- tersek bu komutu kullanmalıyız. Dis- kete bir program SA VE ettiğinizde, programın kapladığı bloklar otoma- tik olarak 1541 tarafından BAM'da dolu olarak işaretlenir. Daha sonra diskete yazılacak bir dosya, bu blok- lara dokunmaz. Ancak biz normal yolların dışında diskette bir bloğa bir şey yazmışsak, bu bloğu korumamız gereklidir ve bu otomatik olarak ya- pılmaz. İşte burada imdadımıza B-A yetişir. Formatını bir görelim: '“B-A araç track sector” Eğer dolu olarak işaretlemek iste- diğimiz blok daha önceden böyle işa- retlenmişse, 65,NO BLOCK,TR,SE mesajı hata kanalında belirir. Bura- da, TR ve SE ile 1541 bize hâlâ boş duran bir sonraki en yakın blokun adresini vermektedir. Eğer diskette boş görünen bir blok yoksa, bir baş- ka değişme BAM'da bütün bloklar dolu olarak işaretlenmişse, TR ve SE sıfır olarak geri dönecektir. Peki, dolu olarak işaretlemek iste- diğimiz blok aslında disketin üzerin- de yoksa ne olacak? Örneğin 10. Track'ın 82. Sector'ünün diskette ol- madığını biliyoruz. Bu durumda da 66,İLLEGAL TRACK OR SEC- TOR,10,82 mesajını alırız. 56 Bu gorduklerımızı küçük bir ör- nekte uygulayalım 100 OPEN 1,8,15 110 İNPÜT “TR,SE”:1:5 120 PRINT 41,“B-A 0”;T;S 130 INPUT #1,A,B$,TR,SE 140 IF A—0 THEN 190 150 IF A<>65 THEN PRINT A,B$,TR,SE: GOTO 210 160 IF TR—-0 THEN PRINT “BOŞ BLOK YOK!'': GOTO 210 170 IF TR- 18 THEN TR - 18:SE —-0 180 T- TR:S—-SE:GOTO 120 190 PRİNT T;S; *DOLDU!” 200 PRINT #1, 1” 210 CLOSE İ Neler yaptık?.. Önce komut kanalı açılıyor. Görüldüğü gibi bir blok okumayacağımız için buffer'a ihtiya- cımız yok. 110'da dolu gösterilecek Track ve Sector kullanıcıdan alınıyor. u ana kadar anlatılan komutlar pratik, herkesin kullanabileceği komutlardı. Şimdi sıra geldi profesyonel olanlara. Sonra da komut kanalından 1541'e B-A komutu gönderiliyor. 120. satı- ra dikkat! Track ve Sector numara- sını değişken olarak da yazabiliyo- ruz!.. 130'da da hata mesajını oku- yoruz. Eğer hata yoksa, 190'a gidip hangi blok için işaretleme yapıldığı- nı gösteriyoruz. Ancak hata mesajı varsa ve bu 65 numaralı mesaj değil- se, 150. satırda mesajı yazıp çıkıyo- ruz. Eğer 65 numaralı mesaj gelmiş- se, ama TR numarası 0 ise boş blok kalmamış demektir ve 160. satırda program biter. 170'e geldiğimizde, hata mesajının bir sonraki blok ola- rak directory zincirinden bir blok seç- mesi olasılığına karşı önlem alıyoruz. 180'de de, tüm işlemi bir de yeni blok için deniyoruz. Sonuç olarak, ya kul- lanıcının verdiği ya da ona en yakın blok (eğer hâlâ boş blok varsa) dolu olarak işaretleniyor ve kullanıcı olup bitenden haberdar ediliyor. Peki, bu dolu olarak işaretlediği- miz, ama aslında bir dasyanın parçası olmayan bloklar ne- zamana kadar böyle korunabilirler. Bir sonraki VA- LIDATE komutuna kadar! Çünkü bu komut, bir dosyaya ait olmayan her bloku boş olarak işaretlemekte- dir. Dolayısıyla, birbirinden kopuk bloklar kullandığınız disketlerinizi OPEN 1,8,15,“V”:CLOSE İ ile va- lidate etmemeniz tavsiye olunur... BLOCK-FREE (B-E) Bu komut, B-A'nın tam tersi. Da- ha önce dolu olarak işaretlenmiş (ya sizin tarafınızdan, ya da otomatik olarak) bir bloku tekrar boş göster- meye yarar. Formatı da hemen he- men aynı: “B-F araç track sector”” Örnek mi istersiniz?.. 10 OPEN 1,8,15 20 PRINT #1,““B-F 0 10 10” 30 PRIİNT ş1,"T” 40 CLOSE | 10/10 numaralı bloku boş gibi gös- terdik. Eğer blok daha önce de boş- sa, bu bir hata mesajına yolaçmaya- caktır. Ama 10/80'i boşaltmaya ça- lışsaydık. 66 numaralı mesaj gelirdi. Eğer bu komutu kullanarak, bir dosyayı oluşturan bloklardan birini boş göstermişseniz, daha sonra bu diskete bir başka dosya SAVE ettiği- nizde, bu blok yeni dosya için kulla- nılabilir. Bu durumda, eski dosyayı oluşturan blok zinciri kopacaktır ve o dosyanın geri kalan bloklarını hiç geri gelmemek üzere kaybetmiş sayı- lırsınız. Eğer yeni dosyayı gönderme- den validate yaparsanız, eski dosya- ya ait bloklar tekrar dolu olarak işa- retlenecektir. BLOCK-EXECUTE (B-E) Şu ana kadar kullandığımız ko- mutlar her eve lazım, pratik, herke- sin kullanabileceği komutlardı. Bun- dan sonra gelenler ise, profesyonel kullanımlar için. Makina dilini v en önemlisi 1541'in işletim sistemini, ör- neğin DOS dökümünü iyi bilmeyi ge- rektiriyor. Biz burada sadece komut- ları kısaca açıklayacağız. Böylece ne tür komutlar olduğunu görebilirsiniz. Eğer daha derine inmek ve 1541'e açık kalp ameliyatı yapmak isterse- niz, TELETEKNİK'ten bulabileceği- iz “Insight the 1541” kitabına ve özellikle bu kitaptaki DOS dökümü- ne başvurmanız gerekiyor. Tabii İn- gilizce biliyorsanız... B-E ile disketteki bir bloktan bir makine dili programı 1541'in buffer'-