
Сообщение от
Vslav
Запись прекращается немедленно
Насколько немедленно:
1. Дописывается на диск младший байт из сдвигового регистра, а вместо переноса в сдвиговый регистр старшего байта - начинается чтение.
2. Дописываются на диск оба байта текущего содержимого регистра данных и только потом начинается чтение.
---------- Post added at 12:14 ---------- Previous post was at 12:11 ----------

Сообщение от
Vslav
полноценно прочитать следующий сектор без инициализации битов GDR не получится.
В описании КМД этот бит называют GOR:

---------- Post added at 12:18 ---------- Previous post was at 12:14 ----------

Сообщение от
Vslav
Остается в режиме записи и продолжает писать нулевые данные.
И сигнал IND никак на это не влияет ?
А если не обращаясь к регистру данных - установить в CSR бит GOR, что-нибудь в такой ситуации изменится ?
---------- Post added at 14:17 ---------- Previous post was at 12:18 ----------
Ещё вопрос - по пропуску "синхробита" при записи.
Программа форматирования пишет на диск четыре байта: 0xA1,0xA1,0xA1,0xFE с установленным в CSR битом WM. В каких байтах при этом происходит пропуск "синхробита":
1. Только в байтах 0xA1.
2. Только в первом записываемом байте из каждого слова.
3. Во всех байтах, записываемых с битом WM в CSR.
---------- Post added at 15:03 ---------- Previous post was at 14:17 ----------

Сообщение от
Alex_K
В режиме записи бит 14 устанавливается при пропуске требования, т.е. при начале записи CRC.
По логике работы программы форматирования - этот бит должен сбрасываться, а генератор CRC перезапускаться то ли после каждого перехода бита WM из 0 в 1 при котором в сдвиговом регистре находится байт 0xA1, то ли просто после каждого попадания при записи байта 0xA1 в сдвиговый регистр, если при этом установлен бит 14.
Записав заголовок сектора - программа форматирования ждёт установки бита 14, чтобы была выполнена запись CRC, потом без единого перехода в режим чтения - пишет промежуток, маркер данных, данные и затем повторно ожидает записи CRC:
Код:
5552$: CALL 7614$ ; Запись GAP, синхрозоны и маркера заголовка
5556$: TSTB @R4 ; Контроллер готов к приему?
BPL 5556$ ; Нет
MOV 14(R3),@R5 ; Записать дорожку/сторону в заголовок
MOV 2(R3),@R4 ; Выключить запись маркера
5572$: TSTB @R4 ; Контроллер готов к приему?
BPL 5572$ ; Нет
MOV R2,@R5 ; Записать длину/номер сектора в заголовок
MOV #13,R0 ; R0 = длина GAP2
MOV #175641,16(R3) ; Будет записываться маркер данных 0xFBA1
5612$: BIT #40000,@R4 ; CRC заголовка записана?
BEQ 5612$ ; Нет
CALL 7614$ ; Запись GAP2, синхрозоны и маркера данных
MOV R1,R0 ; R0 = размер сектора в словах
5626$: TSTB @R4 ; Контроллер готов к приему?
BPL 5626$ ; Нет
MOV 34(R3),@R5 ; Записать первое слово заполнителя
MOV 2(R3),@R4 ; Выключить запись маркера
DEC R0 ; Уменьшить число записываемых слов
5644$: TSTB @R4 ; Контроллер готов к приему?
BPL 5644$ ; Нет
MOV 34(R3),@R5 ; Записать заполнитель в цикле
SOB R0,5644$
INC R2 ; Увеличить номер сектора
MOVB 62(R3),R0 ; R0 = размер GAP3 в словах
MOV #177241,16(R3) ; Далее записывается маркер заголовка 0xFEA1
5672$: BIT #40000,@R4 ; CRC зоны данных записана?
BEQ 5672$ ; Нет
Понятно, что в ходе записи маркера данных - бит 14 сбросился, а генератор CRC перезапустился, но обязательно ли для этого устанавливать бит WM и сработает ли такой "перезапуск" до записи CRC - не понятно.