Меню сайта
   Главная   
   Обо мне   
   Статьи   
   Дневник   
   Картинки   
   Файлы   
   Форум   
   Гостевая книга   

Категории раздела
Куклы и игрушки [60]
Личное [116]
Музыка [19]
Общее [304]
Японский язык [12]
ZX Spectrum [70]
Субмарины [98]
Настольные игры [34]
Го (碁) [11]
Книги [16]
Япония [26]
Таро [4]
Запертый шкаф [17]
CSA (КША) [15]
GNU/Linux [134]
Ubuntu [103]
Manjaro Linux [39]
Python [3]
Магнитольное [44]
Commodore64 [14]
Игровые приставки [2]


 
Дневник (2024 » Апрель » 7 в 10:32)
Commodore64 Команды общения с дисководом

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.



ССЫЛКИ:
  1. https://wpguru.co.uk/2014/06/commodore-1541-dos-commands/
  2. https://www.c64-wiki.de/wiki/BAM

Категория: Commodore64 | Просмотров: 13 | Добавил: harushima | Рейтинг: 0.0/0 |
Всего комментариев: 0.
В целях защиты от спама, добавлять комментарии могут только зарегистрированные пользователи. Если Вы не хотите регистрироваться под своим именем, войдите под логином: anonymous, паролем: anonymous.   ( Регистрация,   Вход).
Авторизация
Анонимный вход:
anonymous / anonymous
Логин:
Пароль:

Календарь
«  Апрель 2024  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930

Поиск

Облако тэгов
JGSDF игрушки Брюнетки Кладбище сайты Ярость Дракулы Древний Египет девушки кошки Cthulhu Вампиры Kitsune Ужас Аркхема инструмент комиксы Lovecraft готика Submarine submarine rc toy Hosting игротека Ужас Аркхэма book uboat мобильная связь го Edgar Poe swf Mansions of Madness Nightmares персоны Synergy linux-hardware bash youtube Storages Python Мастер-рукожоп Магнитофоны Entropy Grub2 loglevel WiFi Beeline ОПСОСЫ sharp939 Аудиокассеты Windows linuxwork Хочуны ImageMagick топБарыг C64c Commodore

Статистика
Яндекс.Метрика
Онлайн всего: 1
Гостей: 1
Пользователей: 0

Page QR code


Перепечатка материалов сайта без активной ссылки запрещена. Следить за RSS
(c) hermitlair.ucoz.com 2009-2024
Лучший браузер!
Блокировка рекламы