При форматировании обычно область данных заполняется конкретным байтом, а служебные области в соответствии со стандартом. Я имею в виду можно ли "сырым чтением" и "сырой записью" сделать точную копию дискеты, например, защищённой от копирования?
Вид для печати
Если номера портов известны, задача упрощается :)
Читать можно как-то так:
в CX указываем размер буфера
в ES: DI указываем адрес буфера
...и поехали:
Код:mov al, <номер дорожки>
out 10Dh, al
mov al, E0h ;команда чтения дорожки
out 102h, al
next_byte:
in al, 10Fh
stosb
dec cx
jnz next_byte
sergei, вот ещё игра Karateka. Она должна работать на МС1502.
Форматирование - это как раз запись на дискету всех тех служебных областей. А производится она с помощью "сырой записи", в этом случае ВГшка просто пишет на диск всё подряд, начиная от обнаружения индексного отверстия. Т.е. код в BIOS формирует структуру заголовков дорожки, секторов, контрольные суммы, и всё это одним потоком скармливает контроллеру, который переносит его на диск.
Соответственно, сделать точную копию защищенной дискеты - да, можно.
DrPass, было бы лучше, если бы в буфер прочиталась дорожка полностью. То есть надо как-то определить конец дорожки. То ли по индексному отверстию, то ли по повторению последовательности байтов.
---------- Post added at 21:11 ---------- Previous post was at 21:02 ----------
Кстати, программа FDA умудряется как-то хитрым путём читать дорожку полностью на ВГ72. Она как-то хитро область данных "двигает" вдоль дорожки, а потом собирает результат по кусочкам.
Кстати, интересный факт из документации к 1502
Т.е. пока нет данных от ВГ93, процессор не исполняет команды вообще.Цитата:
Схема управления обменом синхронизирует прием/передачу данных между ЦП и накопителем с помощью сигналов RDY и DRQ. При обращении ЦП к порту состояния DRQ происходит снятие готовности [RDY] и процессор ожидает прихода сигнала DRQ. При появлении (запросе) очередного байта данных готовность подставляется и процессор продолжает выполнение команд. В случае отсутствия данных готовность будет подставлена сигналом INTRQ или MOTOR ON.