C< CBM DOS
commands
Дисководы для C64 содержат в себе кроме самого дисковода ещё плату с целым процессором MOS 6502. По сути это ещё один микрокомпьютер, чем пользуются авторы демосцены, делегируя туда часть вычислений. Любому железу нужна управляющая ось, и тут она тоже есть: CBM DOS V2.6 1541. Почти как TR-DOS в бета диск интерфейсе на ZX Spectrum.
Прямо из BASIC можно посылать в дисковод команды и они будут выполняться не блокируя компьютер. Например во время форматирования дискеты можно будет продолжать набирать программу в BASIC, а не вспоминать анекдот: — Папа, а что такое многозадачность в Windows 95?
— Сейчас, сынок, отформатирую дискету - покажу.
CBM DOS commandsКоманды DOS не являются частью BASIC, и передаются в CPU MPS6502 дисковода через специальный канал: OPEN 15,8,15 PRINT#15,”command” CLOSE 15 NOTE: BASIC-операция с диском (например, ЗАГРУЗКА или СОХРАНЕНИЕ файла), автоматически закроет канал. Если вас интересует значение числа 15: это командный канал 1541. 0-1 предназначены для передачи файлов операционной системой, 2–14 можно использовать для собственных операций, 15 подходит для того, что мы сейчас делаем.
Цифра 8 - номер дисковода. Может быть 9 или более.
Форматирование:OPEN 15,8,15 PRINT#15,"NEW0:disktitle,id" CLOSE 15 "NEW0" можно сократить до "N0", и вовсе до "N", потому что наличие цифры 0 - рудимент от двухдисковых дисководов CBM, а в 1541 только один дисковод и он всегда 0: PRINT#15,"N:disktitle,id" Если не указывать идентификатор id, (может быть как цифровым так и бувенным), то произведётся быстрое форматирование с очисткой каталога и освобождением всех секторов. А ID останется таким, каким был до софт-формата. PRINT#15,"N:disktitle" Инициализация:Просто попробовать считать текущий каталог или BAM(Block Availability Map) По факту проверить, что вставлена нужная дискетта и закрыта дверца. OPEN 15,8,15 PRINT#15,"INITIALIZE0" CLOSE 15 Так же можно сокращать до "I0" или просто "I". Копирование:
Работает только в пределах одной дискеты! OPEN 15,8,15 PRINT#15,"COPY0:newname=oldname" CLOSE 15 Также можно сокращать до "C0" или "C". Здесь и далее имейте ввиду странную CBM логику - сначала идёт новое результирующее имя, потом исходное. Не наоборот!
Переименование:OPEN 15,8,15 PRINT#15,"RENAME0:newname=oldname" CLOSE 15 Также можно сокращать до "R0" или "R". Удаление:OPEN 15,8,15 PRINT#15,"SCRATCH0:thisfile" CLOSE 15 Можно не ломать пальцы и сократить до "S0" или "S". Валидация:Не пугайтесь страшного слова, это просто проверка существующих файлов, дефрагментация секторов, обновление BAM(Block Availability Map) Ускоряет доступ к имеющимся 170KB дискового пространства. Однако осторожно! Если диск использовался для прямого доступа без SAVE/LOAD, то данные будут утрачены. OPEN 15,8,15 PRINT#15,"VALIDATE" CLOSE 15 Можно сократить до "V" Чтение канала ошибок:Позволяет не только писать в канал через PRINT, но и получать ответные письма через INPUT. Ограничение - так нельзя работать напрямую, только выполняя по RUN записанную программу: 10 OPEN 15,8,15 20 INPUT#15,A,B$,C,D 30 PRINT "ERROR NUMBER: ";A 40 PRINT "ERROR NAME: ";B$ 50 PRINT "ON TRACK: ";C 60 PRINT "SECTOR: ";D 70 CLOSE 15 Эта небольшая программа уберет мигающий красный индикатор с накопителя и покажет вам, что не так. Только вторая переменная является строкой, но при желании вы можете читать и остальные как строки. Если дисковод был только включён, и ещё не проводил операций, то можно прочитать версию CBM DOS. Например "ошибка" номер 73 гласит: " CBM DOS V2.6 1541" Если диск недоступен (т. е. выключен), программа зависнет, пока вы не нажмете RUN STOP/RESTORE. ССЫЛКИ:- https://wpguru.co.uk/2014/06/commodore-1541-dos-commands/
- https://www.c64-wiki.de/wiki/BAM
|