Кіріспе
Commodore DOS, сондай-ақ CBM DOS деп те аталады, Commodore 8 биттік компьютерлерімен қолданылатын дискілік операциялық жүйе. Көптеген басқа DOS-тардан айырмашылығы, олар дискіден компьютердің жедел жадысына (RAM) жүктеліп, сонда іске қосылады, CBM DOS дискінің ішінде іске қосылады: DOS дискі ішіндегі ROM чиптерінде орналасқан және онда бірыңғай немесе бірнеше арнайы MOS 6502 процессорлар отбасысы арқылы орындалады. Осылайша, Commodore 8 биттік компьютерлер мен олардың дискілік құрылғылары арасындағы дерек алмасу, әдеттегі дискіні хостқа жіберуден гөрі, жергілікті желі байланысына көбірек ұқсайды.
CBM DOS нұсқалары
Commodore DOS-тың кем дегенде жеті түрлі нөмірленген нұсқасы бар екені белгілі; төмендегі тізім нұсқа нөмірлерін және оған қатысты дискілік жетектерді көрсетеді. Басқаша көрсетілмесе, дискілер 5¼ дюймдік форматта болады. "lp" коды "төмен профильді" жетектерді білдіреді. Модель нөмірі 15-тен басталатын жетектер Commodore-дың ерекше сериялық IEEE 488 шинасы (IEC Bus) арқылы сериялық (TALK/LISTEN) протоколдарымен қосылады; ал қалғандары IEEE 488 параллельді пайдаланады. 1.0 – 2040 және 3040 дискеттерінде кездеседі.
2.0 – 4040 және 3040 дискеттерінде кездеседі.
2.5 – 8050 дискеттерінде кездеседі.
2.6 – 1540 және 1541, соның ішінде SX 64, 1551, 2031 (+"lp") және 4031 дискеттерінде кездеседі.
2.7 – 8050, 8250 (+"lp") және SFD 1001 дискеттерінде кездеседі.
3.0 – 1570, сыртқы 1571 және 8280 дискеттерінде (8280: 8 дюйм), сондай-ақ 9060 және 9090 қатты дискілерінде кездеседі.
3.1 – C128DCR компьютерлерінің құрамындағы 1571 дискісінде кездеседі.
10.0 – 1581 (3½ дюйм) дискісінде кездеседі.
2.0 – found in the 4040 and 3040 floppy drives
2.5 – found in the 8050 floppy drives
2.6 – found in the 1540, 1541 including the one built into the SX 64, 1551, 2031 (+"lp"), and 4031 floppy drives
2.7 – found in the 8050, 8250 (+"lp"), and SFD 1001 floppy drives
3.0 – found in the 1570, external 1571, and 8280 floppy drives (8280: 8 inch), as well as the 9060 and 9090 hard drives
3.1 – found in the built in 1571 drive of C128DCR computers
10.0 – found in the 1581 (3½ inch) floppy drive
2.6 нұсқасы C64 жүйелерінің бөлігі ретінде 1541 дискісінде қолданылуының арқасында DOS-тың ең көп қолданылатын және кеңінен танымал нұсқасы болды. Ескерту: 1571 дискісі үшін жасалған, файл қатесін жойған жаңартылған бағдарламалық құрал V3.0 ретінде де белгіленген. Сондықтан екі нұсқаны олардың нөмірі арқылы ажырату мүмкін емес.
Сақтау-алмастыру қатесі
Commodore DOS сонымен қатар "Save with Replace" командасын ұсынады, бұл файлды бұрыннан бар файлдың үстіне сақтауға мүмкіндік береді, ал бұрыннан бар файлды СКРАЧТТАУ қажеттігін жояды. Бұл файл атауына @ символын қосу арқылы іске асырылады, мысалы, OPEN немесе SAVE операциясы кезінде. 4040 дискісінен бастап, команданы іске асырудағы қате туралы жылдар бойы әңгімелер тарады. Бастапқыда кейбір сарапшылар бұл қатені жоққа шығарды. Бұл қатенің бар екенін дәлелдеу үшін сыйлықтар ұсынылды. 1985 жылдың басында Compute! журналы оқырмандарына осы команданы пайдаланбауға кеңес берді. Сол жылы әртүрлі авторлар Save with Replace қатесінің бар екенін дәлелдейтін және оны тудыру әдістерін көрсететін мақалалар жариялады. Бұл мәселе бір дискілі 1541 және екі дискілі 4040 құрылғыларына қатысты; 8050 және 8250 құрылғыларында мұндай мәселе болған жоқ. Кейбір сарапшылар қатенің алдын алу үшін сақтау кезінде 0: дискінің нөмірін нақты көрсетуді ұсынды, бірақ кейіннен дискінің нөмірі көрсетілмеген кез келген дискілік операция да қатеге әкелуі мүмкін екені анықталды. Бұл қате DOS-тың өңделген нұсқаларының нәтижесінде туындады, яғни Commodore 8050 сияқты Commodore PET екі дискілі құрылғыларындағы DOS-тың өзгертілген нұсқалары. Бұл жалғыз дискілі жүйелерде "көлеңкелік дискі 1:" құруға әкелді, нәтижесінде кейбір жағдайларда қажетсіз буфер бөлінді. Save with Replace командасы бес дискілік буфердің барлығын пайдаланғандықтан және "көлеңкелік" буферді бөлу әдісі талаптарға сәйкес келмегендіктен, кейбір жағдайларда дискіге бұрмаланған деректер жазылды. 1986 жылдың қыркүйегінде Филип А. Слаймейкер қателік себебін егжей-тегжейлі сипаттаған және 1541 дискісінің ROM-дарына түзетулер ұсынған мақала жариялады; EPROM жағылғышы бар оқырмандар өздерінің түзетілген ROM-дарын жасап, оларды дискіге орната алатын болды. Commodore Слаймейкердің нәтижелерімен танысты, бірақ бастапқы 1541 дискісі үшін ресми жаңарту шығармады, бірақ 1571 ROM-ның 5-ші нұсқасында, сондай-ақ 1541 c және 1541 II дискілерінің ROM-дарында қателерді жойды. Commodore қолдамаса да, 1541 II микробағдарламасының (бірақ 1541 c-нің емес) бастапқы 1541 дискісінде EPROM-дарды пайдалану арқылы қолданылуы мүмкін екені белгілі, бұл дискіде де қатені жоюға мүмкіндік береді.
DOS командалары
Команданың сипаттамасы BASIC 1. x және 2. x іске асыру DOS Wedge іске асыру BASIC 3.0+ іске асыру Жаңа Дискіні пішімдеу, оны пайдалануға дайындау және ондағы барлық деректерді жою. Екі таңбалы идентификатор параметрін жіберу, қалыпты форматталған дискідегі барлық файлдарды жылдам жояды. OPEN 15,8,15,"N0:диск атауы, идентификаторы":CLOSE 15 @N0:диск атауы, идентификаторы HEADER "диск атауы", идентификаторы Scratch Дискідегі файлды (немесе бірнеше файлды, жол таңбаларын қолдана отырып) жою OPEN 15,8,15,"S0:файл атауы":CLOSE 15 @S0:файл атауы SCRATCH "файл атауы" Атын өзгерту Дискідегі файлдың атын өзгерту. Ескеріңіз, жаңа атау BASIC 3.0+ кодынан басқа, бірінші болып келеді! OPEN 15,8,15,"R0:жаңа аты=ескі аты":CLOSE 15 @R0:жаңа аты=ескі аты "Ескі атауды" "жаңа атау" деп өзгерту Бастапқылау Жүргізуді қалпына келтіру және дискідегі BAM-ды ішкі жадына оқу. Дискіні бір идентификатормен басқасына ауыстырғанда ғана қажет, әдетте жүйе өзі орындайды. @I0: DCLEAR (BASIC 7.0+ ғана) Validate Дискінің каталогымен BAM-ды салыстыру, қолданылған барлық блоктарды бөлу және файлдар қолданбайтын барлық блоктарды босату, сондай-ақ каталогтан жабылмаған барлық файлдарды жою. Microsoft операциялық жүйелерінің CHKDSK/ScanDisk құралдарымен салыстыруға болады. @V0: COLLECT Көшіру Бір дискідегі файлды (немесе бір екі дискілік құрылғыдағы басқа дискідегі файлды) басқа атаумен көшіру. Ескеріңіз, жаңа атау BASIC 3.0+ кодынан басқа, бірінші болып келеді! Екі дискілік құрылғысыз басқа дискіге көшіру үшін қосымша бағдарлама қолдану қажет. OPEN 15,8,15,"C0:жаңа аты=0:ескі аты":CLOSE 15 @C0:жаңа аты=0:ескі аты КӨШІРУ "ескі аты" TO "жаңа аты" Дубликаттау Дискінің толық көшірмесін жасау. Тек екі дискілік құрылғыда қол жетімді, әйтпесе қосымша бағдарлама қолдану қажет. Мақсатты(!) дискінің нөмірі бірінші, содан кейін бастапқы дискінің нөмірі (BASIC 3.0+ кодынан басқа). @D1=0 BACKUP D0 TO D1 Сондай-ақ, RELATIVE типті файлдарда іздеу үшін команда (RECORD#), бірнеше блок деңгейіндегі тікелей қол жеткізу командалары (BLOCK READ, BLOCK WRITE, BUFFER POINTER), блоктарды басқару (BLOCK ALLOCATE, BLOCK FREE), дискі жадымен жұмыс және дискінің процессорында бағдарламалық кодты орындау (MEMORY WRITE, MEMORY READ, MEMORY EXECUTE, BLOCK EXECUTE) және пайдаланушы анықтайтын функциялар (USER және & командалары) бар. Теориялық тұрғыдан пайдаланушы анықтаған кейбір функциялар 1.0 нұсқасынан кейінгі DOS нұсқаларында жаңа мүмкіндіктерге қол жеткізу үшін қайта бағытталды.
There are also a command for seeking in RELative type files (RECORD#), several block level direct access commands (BLOCK READ, BLOCK WRITE, BUFFER POINTER), block management (BLOCK ALLOCATE, BLOCK FREE), drive memory manipulation and execution of program code on the drive's processor (MEMORY WRITE, MEMORY READ, MEMORY EXECUTE, BLOCK EXECUTE) and user definable functions (USER and & commands). Some of the theoretically user definable functions were rededicated for accessing new functionality in DOS versions after 1.0.