Commodore DOS - Commodore DOS

Commodore DOS / CBM DOS
Commodore64 dizini listeleyen 16.png
1541 formatlı bir diskin dizinini listeleme
Geliştirici Commodore International
En son sürüm 10.0
Uygun ingilizce
Platformlar MOS 6502 ailesi
Lisans tescilli

Commodore DOS olarak da bilinen, CBM DOS olduğu disk işletim sistemi ile kullanılabilir Commodore 'ın 8-bit bilgisayarlar . Diskten bilgisayarın kendi RAM'ine yüklenen ve orada çalıştırılan diğer birçok DOS'un aksine , CBM DOS, sürücüde dahili olarak yürütülür: DOS , sürücünün içindeki ROM yongalarında bulunur ve orada bir veya daha fazla özel MOS 6502 ailesi tarafından çalıştırılır. CPU'lar . Bu nedenle, Commodore 8-bit bilgisayarlar ve bunların disk sürücüleri arasındaki veri aktarımı, tipik disk / ana bilgisayar aktarımlarından daha çok bir yerel alan ağ bağlantısına benzer .

CBM DOS sürümleri

Commodore DOS'un en az yedi farklı numaralandırılmış sürümünün var olduğu bilinmektedir; aşağıdaki liste sürüm numaralarını ve ilgili disk sürücülerini verir. Aksi belirtilmedikçe, sürücüler 5¼ inç formattadır. "Lp" kodu, "düşük profilli" sürücüleri belirtir. Model numarası 15 ile başlayan sürücüler Commodore'un benzersiz seri IEEE-488 veriyolu (IEC Veriyolu) seri (TALK / LISTEN) protokolleri ile bağlanır ; diğerlerinin tümü paralel IEEE-488'i kullanır .

Sürüm 2.6, 1541'de C64 sistemlerinin bir parçası olarak kullanılması nedeniyle açık arayla en yaygın kullanılan ve en çok bilinen DOS sürümüydü .

Not: İlgili dosya hatasını düzelten 1571 için revize edilen ürün yazılımı da V3.0 olarak tanımlandı. Bu nedenle, yalnızca sürüm numarasını kullanarak iki sürümü birbirinden ayırt etmek mümkün değildir.

Teknik Genel Bakış

1541 dizin ve dosya türleri

1541 Commodore disket düz bir ad alanında 144 adede kadar dosya içerebilir ( alt dizin içermez ); dizin, merkezden 35 izli tek taraflı bir diskin kenarına kadar yarı yolda bulunan ayrılmış iz 18'de depolanır. Bir dosya adı 16 bayta kadar uzunlukta olabilir ve teorik olarak benzersizdir; dizin yapısında doğrudan erişim yöntemlerini kullanarak, bir dosyayı başka bir dosyayla yeniden adlandırmak mümkündür - ancak bu tür dosyalara erişmek zor veya imkansız olabilir. Aynı adlara sahip dosyalar genellikle dosyaları bilgilendirmek veya görsel olarak yönetmek dışında hiçbir amaca hizmet etmez. Örneğin The Final Cartridge III tarafından kullanılan popüler bir numara, dizine "----------------" tür adı verilen dosyalar eklemekti DEL< ve daha sonra dosyalar, gruplar oluşturmak için bu satırlar etrafında yeniden düzenlenebilirdi. Birçok oyun geliştiricisi, warez grubu üyesi ve demoscene hackerları da bazı daha akıllı özel dizin girişleri kullandı.

Dosya adları kaydırılmış bir boşluk karakteri ( $A0 ) içerebilir ve dizin listesi BASIC'den görüntüleniyorsa, dosya adının $A0 karakterin dışındaki kısmı, dosya adının ilk kısmından bir tırnak işaretiyle ayrılmış gibi görünecektir. BASIC'in tam dosya adının bir parçası olduğunu düşünmemesine neden oluyor . Bu özellik, daha sonra dizin listesinde görünecek olan dizin girişleri oluşturmak için kullanılabilir , örneğin: SAVE "PROGRAM⇧ Shiftspace CommodoreDUDE",8,1 32 "PROGRAM", 8,1 PRG . Kullanıcı imleci satırın başına taşıdığında, sözcüğü LOAD dosya boyutunun üzerine yazıp düğmesine bastığında RETURN , BASIC bunu olarak yorumlayarak programın belleğe yüklenmesine neden olur. Bilgisayar bir LOAD'dan sonra herhangi bir komutu göz ardı ettiğinden, iki nokta üst üste veya ikincil adresten sonraki hiçbir şey yürütülmeyecektir. Alternatif olarak, kullanıcı - için ve programa otomatik olarak basabilir . LOAD "PROGRAM",8,1 ...⇧ ShiftRUN/STOPLOADRUN

Bir dosya adına gömülü boş bayt, BASIC tarafından yüklendikten sonra listelemeyi kesintiye uğratacaktır. Üç boş bayt varsa, bu BASIC aracılığıyla listelemeyi zorlaştırır. Birçok makine dili programcısı, BASIC programcılarının kodlarına erişmesini ve onu kurcalamasını zorlaştırmak için boş baytlarla deneyler yapacaktır.

BASIC'de, dizine çalıştırılamayan sözde BASIC programı olarak (veya ikili sürücü olması durumunda) ve ardından erişilebilir . İlk satırın satır numarası 0 veya 1'dir (sürücü numarasını gösterir) ve ters videoda diskin adını ve kimliğini ve oluşturulduğu DOS sürümü için bir kısaltma kodunu gösterir (kodlar yalnızca DOS sürümleri uyumsuz disk formatlarını kullanır: "2A", çoğu 5,25 inç DOS sürümünde, "3B" 3,5 inç 1581'de kullanılır). Bundan sonraki satırlar, sözde "satır numarası" olarak bir dosya boyutuna (disk bloklarında) sahiptir, ardından tırnak içindeki dosya adı ve üç harfli tür kodu gelir. Son satır, diskteki ayrılmamış blokların sayısını (yine sözde "satır numarası" olarak) ve ardından "BLOCKS FREE" sözcüklerini gösterir. LOAD "$0",8LOAD "$1",8LIST

On Commodore 64 , girme TEMEL RAM'e dizini yükleme yerine çöp ekranı sel olacak. Bunun nedeni, sürücünün dizine Commodore PET için BASIC'in başlangıcına eşdeğer olan , ancak C64'teki varsayılan ekran belleğine karşılık gelen (birinci karakterdeki ikinci karakterden başlayarak ) 0401 $ (1025) değerinde bir yükleme adresi atamasıdır. ekranın satırı). LOAD "$",8,1

Dizini bir komutla görüntülemek, bellekteki BASIC programının üzerine yazar. DOS Kama ve gibi çeşitli üçüncü taraf kartuşları ve dolgu Epyx FastLoad , Eylem Replay ve Final Kartuş III özel komutları kullanarak diski dizinin inceleyen izin şimdiki TEMEL programı yok etmeden yük ekran belleğe dizini söyledi. Commodore BASIC'in bazı sürümleri , aynı işlevi gerçekleştiren bir veya komutu içerir. LOAD "$",8DIRECTORYCATALOG

Aşağıdaki dosya türleri desteklenmektedir:

SEQ
Bir sıralı dosya doğrusal olarak baştan sona okunabilen bir veri dosyasıdır. SEQ dosyalar genellikle bir kelime işlemci veya bu tür başka bir düzenleyici tarafından oluşturulan belgeleri veya metin dosyalarını depolamak için kullanılır. Bir sıralı dosyası benzemektedir düz dosyasında yer Linux veya UNIX , ki hiçbir iç yapıyı uzmanlaştı. UNIX benzeri işletim sistemlerinde lseek bulunan çekirdek çağrısının bir benzeri olmadığından, sıralı bir dosyada rastgele herhangi bir konuma konumlandırmak mümkün değildir .
PRG
PRG dosyalar normalde yürütülebilir program kodu içerir, ancak bunlar veri dosyaları için de kullanılabilir. İlk iki baytı kernal "yükleme dosyası" rutini PRG tarafından okunur ve yük adresini belirlemek için kullanılır ( küçük bir endian formatında saklanırlar ).
REL
Göreceli bir dosya, kayıt odaklı erişime izin vermek için yan sektörler olarak adlandırılan bir indeksleme mekanizmasının mevcut olduğu, sıralı dosya türünün bir varyasyonudur. Kayıtlar maksimum 254 bayt boyutunda olabilir ve dosyanın herhangi bir bölümüne gerçek rastgele erişime izin veren tek tabanlı bir ana sayı ile adreslenir .
USR
Kullanıcı tarafından belirlenen bir dosyanın, sıralı bir dosyanınkiyle aynı olan dahili bir yapısı vardır. Commodore'un bu dosya türü için asıl amacı, dosya içeriği sürücünün mikro işlemcisi tarafından yürütülmek üzere bir sürücü arabelleğine kopyalanabildiğinden, DOS geliştirmenin kolaylaştırılmasıydı. Bu dosya türünü şimdiye kadar çok az sayıda program kullandı. Standart olmayan düşük seviyeli disk yapılarını kullanan bazı uygulamalar, verileri kullanıcıya bir tür "beni yalnız bırakın, kopyalamaya veya silmeye çalışmayın" göstergesi olarak kabul edilen USR formatında kaydeder. En önemlisi, GEOS'un "VLIR" dosyaları dosyalar olarak görünür USR .
DEL
Yapısı sıralı bir dosyaya benzer, belgelenmemiş dahili olarak kullanılan bir dosya türü. Bu dosya türünün oluşturulması, disk dizininin doğrudan işlenmesiyle gerçekleştirilmelidir.

* Bir dizin listesinde (örneğin *SEQ ) dosya türünün başına bir yıldız işareti ( ) bulunması, dosyanın yazıldıktan sonra düzgün şekilde kapatılmadığını gösterir. Sürücüye yazma için açılmış bir dosyayı kapatması komutu verildiğinde, ilişkili arabellek diske boşaltılır ve blok kullanılabilirlik haritası (BAM) hangi blokların kullanıldığını doğru bir şekilde yansıtmak için güncellenir. Bir programın çökmesi veya başka bir sorun (kullanıcının bir dosya açıkken diski çıkarması gibi) "zehirli" veya "uyarılı" dosya olarak da adlandırılan "öksüz dosya" ile sonuçlanırsa, arabellekler temizlenmez ve BAM disk kullanımını doğru şekilde yansıtmayarak diski bozulma riskine sokar. Bir zehir dosyasına genellikle erişilemez (ancak "değiştir" modunda açılabilir) ve scratch dosyayı silmek için DOS komutunu kullanma girişimi , çapraz bağlantı gibi dosya sisteminin bozulmasına neden olabilir . Bu dosyalardan birini kaldırmanın tek pratik yöntemi, dosyayı "değiştir" modunda açmak (ve düzeltmek) veya diski doğrulamaktır ( validate aşağıdaki DOS komutuna bakın), ikincisi BAM'yi yeniden oluşturur ve zehirli dosya referanslarını kaldırır. dizinden. Kötü şöhretli kaydet-değiştir-değiştir hatası , uyarılı dosyaların oluşturulmasına neden olabilir.

*DEL silinmiş dosyaların disk üzerindeki dizin girişine yazılan özel bir türdür. Bu tür dosyalar normal bir dizin listesinde gösterilmez ve bunların veri blokları ve dizin girişleri, daha sonra oluşturulan dosyalar tarafından yeniden kullanılır. Bazı yardımcı programlar, veri blokları ve dizin girişleri henüz başka dosyalar tarafından üzerine yazılmamışsa, bu tür dosyaların "silinmesine" izin verir. DEL files genellikle bir dizin listesine başlıklar veya yorum bölümleri eklemek için kullanılır.

Arkalarında bulunan dosya türleri < (örneğin, PRG< ) "kilitlidir" ve silinemez - ancak okumak için açılabilirler. Bu durumu açıkça ayarlayabilecek veya temizleyebilecek bir Commodore DOS komutu yoktur, ancak birçok üçüncü taraf hizmet programı bunun yapılmasına izin verecek şekilde yazılmıştır. Bu yardımcı programlar genellikle doğrudan erişim komutlarını kullanarak dizini okur, ham verilerde gerekli değişiklikleri yapar ve ardından değişiklikleri diske geri yazar.

Dosya erişimi

Dosyalara erişim, öncelikle ana bilgisayar için bir sorundur. Bilgisayardaki ana ROM, dosyalara erişmek için gereken gerekli ilkel rutinleri içerir ve BASIC ROM , BASIC sözdizimini kullanan dosya erişimi için daha yüksek düzeyde bir soyutlama içerir. DOS'un kendisini ilgilendiren bileşenler, dosya adı ayrıştırma ve ikincil adrestir. Bu bölüm, bütünlük adına gerekli BASIC komutlarının bir özetini verecektir.

Bir Commodore disk ünitesindeki bir dosyanın açılması, diğer ortamlardaki dosya açma prosedürlerine belli belirsiz benzeyen bir dizi parametrenin işlenmesini gerektirir. DOS aslında sürücünün denetleyicisinde çalıştığından, dosya açma sırası, kesin yorumlamayı sağlamak için sürücüye yeterli bilgiyi iletmelidir. Sıralı bir dosyaya yazmak için BASIC'te tipik bir ifade aşağıdaki gibi olacaktır:

OPEN 3,8,4,"0:ADDRESSBOOK,S,W"

Aşağıdaki parametreler OPEN fiilini olarak aşağıdaki gibidir:

3
Bu parametre, dosya numarası , mantıksal içinde açılan dosyayı tanımlayan bilgisayarın işletim sistemi ve benzer olan dosya tanımlayıcı içinde UNIX benzeri işletim sistemleri. Asla sürücüye gönderilmez ve bu nedenle sürücünün kendi işletim sistemi tarafından ne bilinmez ne de kullanılır. Dosya numarası 1 ila 254 aralığında olabilir, programcı tarafından atanır ve birden fazla dosya aynı anda açılırsa benzersiz olmalıdır. Dosya açıldığında, tüm program giriş ve çıkış prosedürleri dosya numarasını kullanır. Gelen montaj dil programlarında, bu değer genellikle LA (mantıksal adres), gelen kısaltması olarak adlandırılır anımsatıcı dosya numarası depolandığı bellek konumuna gelir. 127'den büyük dosya numaraları, sistemin her satır başından sonra fazladan bir satır beslemesi yazmasına neden olur (örnek olarak, bir belgeyi çift aralık bırakmak için kullanışlıdır.)
8
Bu parametre, cihaz numarası , bilgisayara bağlı belirli bir çevre birimini tanımlar . 0 ila 3 arasındaki cihazlar sırasıyla klavye, teyp kaseti, RS-232 arabirimi ve video görüntüsünü adresler ve bunların tümü doğrudan kernal ROM tarafından kontrol edilir. Yazıcılar veya disk sürücüleri gibi çevre veri yoluna bağlı 4 ve daha yüksek cihaz numaraları adres cihazları. Disk sürücüsü olması durumunda, cihaz numarası, ünite içindeki tahrik mekanizmasına / mekanizmalarına değil, ünitenin denetleyicisine atıfta bulunur. Geleneksel olarak, bir sistemdeki birinci disk sürücüsü biriminde 8 numaralı aygıt, varsa ikinci sürücü 9, vb. Maksimum 15'e kadar (sekiz disk sürücüsü takıldığında) bulunur. Cihaz numarası şeması, Commodore PET / CBM modelleriyle kullanılan IEEE-488 (veya genel amaçlı arayüz GPIB ) veri yolundan türetilmiştir . Assembly dili programlarında, bu değere genellikle, cihaz numarasının depolandığı bellek konumu için anımsatıcıdan FA veya PA (fiziksel adres) adı verilir.
4
O ila 15 arasında değişebilen ikincil adres olan bu parametre, aygıtın denetleyicisi ile kurulan belirli bir iletişim kanalına atıfta bulunur ve çevresel veri yolunda "konuşma" veya "dinleme" komutu verildiğinde aygıta aktarılır. Dosya numarasında olduğu gibi, ikincil adres programcı tarafından belirlenir ve söz konusu cihaz için benzersiz olmalıdır. Cihaza veya cihazdan veri iletimi için 0 ila 14 aralığı kullanılırken, "komut kanalı" olarak adlandırılan 15, cihazın denetleyicisine komutlar vermek için kullanılır (örneğin, bir disk dosyasını yeniden adlandırmak için). cihaz böyle bir işlemi destekleyebilir. Disk sürücülerinde, 0'dan 14'e kadar olan ikincil adresler, denetleyici içindeki tamponlarla eşlenir, böylece belirli bir diskteki belirli bir dosya ile iletişim kurulur; Yukarıda belirtildiği gibi, sürücü dosya numarasını bilmediğinden , aynı anda açık olan birkaç dosya arasında bir fark yaratmak için yalnızca ikincil adresi kullanabilir . Öte yandan, ana bilgisayar işletim sistemi ikincil adres konusunda agnostiktir; dosyaya her erişimde sürücüye iletilir, ancak ana bilgisayar tarafından başka şekilde kullanılmaz. Assembly dili programlarında, bu değer genellikle SA (ikincil adres) olarak adlandırılır.
KOMUT STRING
"0:ADDRESSBOOK,S,W" Parametre resmi olarak Commodore belgelerinde adlandırılır komut dizesi ve erişilen cihazın kontrol birimi tarafından yorumlanır. Bir disk sürücü birimi söz konusu olduğunda, resmi komut dizisi yapısı, sürücü mekanizması numarası ( 0: cihaz numarasıyla karıştırılmamalıdır), dosya adı ( ADDRESSBOOK ), dosya türü ( S bu örnekte sıralı) ve erişim modundan ( W , bu örnekte yazmak için açıldı). Uygulamada, bu parametrelerin bazıları ihmal edilebilir. En azından, dosya okumak için açılacaksa sadece dosya adı gereklidir.
Sürücü numarası tanımlar bir tahrik mekanizması, bir disk ünitenin denetleyicisi bağlanmış ve bir analog olup , mantıksal birim numarası bir de SCSI (çoklu mekanizmalar kontrol edebilen kontrol cihazı, örneğin, OMTI AABE ile çalışmak için geliştirildi kontrol ST-412 / ST 1980'lerde -506 sabit disk). Floppy disk birimlerinde, ilk mekanizma sürücü 0: ve ikincisi 1: 'dir. Tek bir disket sürücüsüyle iletişim kurarken sürücü numarasının çıkarılması oldukça yaygın bir uygulamadır, çünkü 0: bu tür birimlerde varsayılandır, ancak sayının atlanması DOS'ta birkaç belirsiz hatayı tetikleyebileceğinden bu, önerilen bir uygulama değildir ( tek başına iki nokta üst üste 0'a eşittir ve bu hataları önlemek için yeterlidir). Bu kuralın bir istisnası , sürücü numarasının "mantıksal birimlere" ( tek bir fiziksel sürücüde oluşturulan sanal sürücüler) atıfta bulunduğu ve eğer 4: veya 10: gibi sözdizimini yapan Lt. Kernal sabit disk alt sistemidir. açılacak dosya mantıksal birim sıfırda değil (ikili disket birimindeki sürücü mekanizması sıfırına eşdeğer).

Dosyalar ayrıca LOAD ve SAVE komutları ile yüklenebilir ve kaydedilebilir . Dosya adı belirleyicileri burada da kullanılabilir, örneğin, BASIC programını bir (program) dosyasına kaydeder ve BASIC programını sıralı bir dosyaya kaydeder. İkincil adres belirtilmezse veya 0 olarak belirtilirse (örn. ), Dosya BASIC bellek alanından kaydedilir / yüklenir (C64'te varsayılan olarak 0801 $ 'dan başlar ). İkincil adres sıfır olmayan bir değer olarak belirtilirse (örn. ), Program dosyanın kendisi tarafından belirtilen adresten (dosyanın ilk iki baytı olan PRG başlığı) başlayarak yüklenir — bu komut biçimi şöyledir: makine kod programlarını yüklerken daha yaygındır. SAVE "FILE",8PRGSAVE "0:FILE,SEQ,WRITE",8,1LOAD "FILE",8LOAD "FILE",8,1

Yükün yeniden konumlandırılması ilk olarak VIC-20'de tanıtıldı çünkü bu makine, kurulan bellek genişletmesine bağlı olarak BASIC RAM'i birkaç farklı konumda başlatabilir. Eski Commodore PET serisi yer değiştirmeyi desteklemiyordu ve aynı etkiye sahip olacaktı: dosya kaydedildiği aynı bellek bölgesine yüklenecekti. Yükün yeniden konumlandırılması ana bilgisayarda gerçekleşir ve yukarıda yalnızca cihaz içinde kullanılan ikincil adres hakkında söylenenlere bir istisna olur. PET dosyaları yeniden konumlandıramadığından, sonraki Commodore makinelerinde yazılan BASIC programları, başlık baytlarını değiştirmek için bir sektör editörü kullanılarak değiştirilmelidir. PET'in yerleşik makine dili monitörünü yükledikten sonra BASIC programının bağlantı adresini değiştirmek için kullanmak da mümkündür. LOAD "FILE",8LOAD "FILE",8,1

Komut , dosyada belirtilen bellek konumundan başlayarak diske ilk programı yükleyecektir. Bu, platformların en popüler yükleme komutlarından biridir, örneğin ticari yazılımların çoğunu başlatma yöntemi. Joker karakter genişletmesinin, yalnızca o diskteki başka hiçbir dosyaya daha önce erişilmediğinde ilk katalog adını seçeceği gerçeğidir; son kullanılan dosyanın adı bellekte tutulur ve sonraki komutlar ilk yerine o dosyayı yükler. (Ancak, veya her zaman diske ilk dosyayı yükleyecektir.) LOAD "*",8,1LOAD "*",8,1LOAD "0:*",8,1LOAD ":*",8,1

İki sürücü birimlerinde disklerin dizinleri olarak erişilir ve . ve dizine değil, bir sürücüdeki veya diğerindeki yalnızca adlandırılmış gerçek dosyalara erişmeyin . Kısmi dizinler, iki nokta üst üste ve bir şablon eklenerek yüklenebilir: örneğin, yalnızca adı K harfiyle başlayan ve PRG türündeki dosyaları gösteren kısmi bir dizin yükler; tüm bu tür kısmi dizinler hala ilk disk adı satırını ve son "BLOCKS FREE" satırını içerir. LOAD "$0", 8LOAD "$1", 8"0:$""1:$""$"LOAD "$0:K*=P",8

Değiştirerek kaydetme hatası

Commodore DOS ayrıca, bir dosyanın önce var olan dosyaya gerek kalmadan mevcut bir dosya üzerine kaydedilmesine izin veren bir "Değiştir ile-Değiştir" komutu sunar SCRATCH . Bu, veya işlemi @ sırasında dosya adına bir sembol eklenerek yapılmıştır - örneğin ,. Yıllar boyunca, 4040 sürücüsünden başlayarak, komutun uygulanmasındaki bir hataya dair söylentiler yayıldı. İlk başta bu bazı yorumcular tarafından reddedildi. Böceğin varlığını kanıtlamak için ödüller verildi. 1985'in başlarında Compute! dergisi okuyuculara komutu kullanmaktan kaçınmalarını tavsiye etti. O yıl, çeşitli yazarlar, Değiştirerek Kaydet hatasının gerçek olduğunu ve tetiklenebilecek yöntemleri içeren makaleleri bağımsız olarak yayınladılar. OPENSAVESAVE "@MY PROGRAM",8

Etkilenen cihazlar arasında tek sürücülü 1541 ve çift sürücülü 4040; 8050 ve 8250 sorunu sergilemedi. Bazı yorumcular 0: , kaydederken her zaman açıkça sürücü numarasını belirterek hatanın önlenebileceğini öne sürdüler , ancak daha sonra sürücü numarası olmayan herhangi bir disk işleminin hataya yol açmak için yeterli olduğu gösterildi. Hata, etkilenen DOS uygulamalarının 8050 gibi daha önceki Commodore PET çift sürücülerde bulunan DOS'un değiştirilmiş sürümleri olmasından kaynaklanıyordu. Bu 1: , tek sürücülü sistemlerde bir "hayali sürücü " oluşturarak gereksiz bir arabellek tahsisi ile sonuçlandı. bazı koşullar altında. Değiştir ile-Kaydet komutu beş sürücü arabelleğinin hepsini kullandığından ve "hayali" arabelleğin tahsis edildiği yöntem spesifikasyonları karşılamadığından, bu, bazı koşullar altında karıştırılmış verilerin diske yazılmasına neden oldu.

Eylül 1986'da, Philip A. Slaymaker, hatanın nedenini ayrıntılı olarak açıklayan ve 1541 sürücü ROM'larına yamalar sağlayan bir makale yayınladı ; EPROM yazıcısı olan okuyucular , sürücüye takılabilen kendi yamalı ROM'larını üretebilir. Commodore, Slaymaker'in bulgularından haberdar edildi ve orijinal 1541'in ROM'ları için resmi bir güncelleme yayınlamamış olsalar da, 1571 ROM'ların Revizyon 5'inde ve ayrıca 1541-c ve 1541-II sürücülerinin ROM'larında hatayı düzelttiler. . Commodore tarafından desteklenmemesine rağmen, 1541-II sabit yazılımının (ancak 1541-c'nin değil) orijinal bir 1541 sürücüde EPROM'lar kullanılarak bu sürücü için de hatayı giderecek şekilde kullanılabileceği bilinmektedir.

Komut kanalı

Daha önce belirtildiği gibi, Commodore DOS'un kendisine dosyalara erişmek için kullanılan sözdizimi kullanılarak "komut kanalı" yoluyla erişilir. DOS'a komutların verilmesi ve komutlara yanıt olarak oluşturulan durum ve hata mesajlarının alınması, ikincil adres olarak 15 kullanılarak cihaza bir dosya açılarak gerçekleştirilir, örneğin:

OPEN 1,8,15

Cihaz durumunu almak ve görüntülemek için kodlanabilir:

OPEN 1,8,15:INPUT#1,E,E$,T,S:PRINT E,E$,T,S:CLOSE 1

Yukarıdaki örnekte, E hata numarasını tutacak (varsa, hata yoksa sıfır olacaktır), hatanın E$ kısa bir metin açıklaması T olacak, hatanın oluştuğu disk izini temsil S edecek ve T hatanın atıfta bulunduğu iz . Hata yoksa, eşdeğeri 00, Tamam, 00,00 dört değişkende döndürülecektir. Bunun INPUT# yalnızca çalıştırma modu fiili olduğuna dikkat edin . Ayrıca, birçok disk komutu veren programlarda, programın başlangıcında aygıtın komut kanalına bir dosya açmak ve program bitene kadar onu kapatmamak gelenekseldir.

Commodore BASIC 4.0 ve sonraki sürümleri DS$ , yukarıdaki kod yerine sürücü durumunu almak için kullanılabilen sözde değişken sağlar . Bu ayrılmış değişken, BASIC'in önceki sürümlerinde mevcut değildir, bu nedenle komut kanalı yukarıda gösterildiği gibi manuel olarak okunmalıdır. Güç açıldıktan veya sıfırlandıktan hemen sonra DOS revizyonunun iade edileceğini unutmayın. Örneğin, bir 1541 geri dönecek 73, CBM DOS V2.6 1541,00,00 . Hata kodu 73 tüm sürücü modellerinde ortaktır ve sürücünün açılış durumuna sıfırlanıp sıfırlanmadığını belirlemek için kullanılabilir.

DOS komutları

Komut Açıklama TEMEL 1.x ve 2.x Uygulaması DOS Kama Uygulaması BASIC 3.0+ Uygulama
Yeni Bir diski biçimlendirin, kullanıma hazırlayın ve içerdiği tüm verileri silin. İki karakterli tanımlayıcı parametresinin çıkarılması, önceden biçimlendirilmiş bir diskteki tüm dosyaların hızlı bir şekilde silinmesini sağlayacaktır. OPEN 15,8,15,"N0:disk name,identifier":CLOSE 15 @N0:disk name,identifier HEADER "disk name",identifier
Kaşımak Diskteki bir dosyayı (veya joker karakter eşleştirmesi kullanarak birden çok dosyayı) silin OPEN 15,8,15,"S0:file name":CLOSE 15 @S0:file name SCRATCH "file name"
Adını değiştirmek Diskteki bir dosyayı yeniden adlandırın. Yeni adın önce geldiğini unutmayın (BASIC 3.0+ kodu hariç)! OPEN 15,8,15,"R0:new name=old name":CLOSE 15 @R0:new name=old name RENAME "old name" TO "new name"
Başlat Sürücüyü sıfırlayın ve disk BAM'sini dahili belleğine okuyun. Bir diskin aynı kimliğe sahip başka bir diskle değiştirilmesi dışında, sürücü bunu genellikle kendi başına yaptığı için nadiren ihtiyaç duyulur. OPEN 15,8,15,"I0:":CLOSE 15 @I0: DCLEAR (Yalnızca BASIC 7.0+)
Doğrula BAM'yi disk dizini ile yeniden birleştirin, kullanılan tüm blokları ayırın ve dosyalar tarafından kullanılmayan tüm blokları serbest bırakın ve tüm kapatılmamış dosyaları dizinden silin. Microsoft işletim sistemlerinin CHKDSK / ScanDisk araçlarıyla karşılaştırılabilir . OPEN 15,8,15,"V0:":CLOSE 15 @V0: COLLECT
Kopyala Aynı diskteki (veya aynı iki sürücülü birimdeki başka bir diskteki) bir dosyayı farklı bir dosya adı altında çoğaltın. Yeni adın önce geldiğini unutmayın (BASIC 3.0+ kodu hariç)! İki sürücülü bir birim olmadan başka bir diske çoğaltma, bir yardımcı program kullanılmasını gerektirir. OPEN 15,8,15,"C0:new name=0:existing name":CLOSE 15 @C0:new name=0:existing name COPY"existing name"TO"new name"
Çiftleme Tüm diski çoğaltın. Yalnızca iki sürücülü birimlerde mevcuttur, aksi takdirde bunun yerine bir yardımcı programın kullanılması gerekir. Önce hedef (!) Sürücü numarası, ardından kaynak sürücü numarası gelir (BASIC 3.0+ kodu hariç). OPEN 15,8,15,"D1=0":CLOSE 15 @D1=0 BACKUP D0 TO D1

Bağıl tip dosyaları (içinde arayan için bir komut da vardır RECORD# ), birkaç blok düzeyinde doğrudan erişim komutları ( BLOCK-READ , BLOCK-WRITE , BUFFER-POINTER ), blok yönetimi ( BLOCK-ALLOCATE , BLOCK-FREE ), sürücü bellek manipülasyon ve sürücünün işlemci program kodunun yürütülmesi ( MEMORY-WRITE , MEMORY-READ , MEMORY-EXECUTE , BLOCK-EXECUTE ) ve kullanıcı tanımlı işlevler ( USER ve & komutlar). Teorik olarak kullanıcı tanımlı işlevlerden bazıları, 1.0'dan sonraki DOS sürümlerinde yeni işlevlere erişmek için yeniden tahsis edildi.

Referanslar

Notlar
  • Immers, Richard; Neufeld, Gerald G. (1984). Commodore DOS içinde. 1541 Disk İşletim Sistemi için Tam Kılavuz. DATAMOST, Inc & Reston Publishing Company, Inc. (Prentice-Hall). ISBN   0-8359-3091-2 .
  • İngilizce, Lothar; Szczepanowski, Norbert (1984). 1541 Disk Sürücüsünün Anatomisi. Grand Rapids, MI: Abacus Software (orijinal 1983 Almanca baskısından çevrilmiştir, Düsseldorf: Data Becker GmbH). ISBN   0-916439-01-1 .
  • (Fince) Lundahl, Reijo (1986). 1541-Levyasema . Amersoft. Mayıs ISBN   951-35-3206-2