
Сообщение от
Andrey_Ak
Скорее всего надо просто выдерживать паузу после записи команды в 176732
Делать паузу в 1000 раз более длинной, чем это необходимо - не всегда оправдано. Гораздо лучше (на мой взгляд) иметь универсальный алгоритм, который в любых условиях даёт гарантированный результат c минимальной задержкой.
Поэтому, предлагаю попробовать следующий вариант:
Код:
001024/000000
001026/111304
001030/023737 / 012713
001032/000240 / 000007
001034/000240 / 032712
001036/012713 / 000004
001040/000007 / 001375
001042/012705 / 012712
001044/123456 / 000001
001046/077501 / 022712
001050/012712 / 000040
001052/000001 / 001773
001054/032712
001056/000040
001060/001775

Сообщение от
Andrey_Ak
В принципе читать получилось, надо-бы разобраться как писать...

Думаю, нет смысла заниматься записью до тех пор, пока драйвер TP.SYS для RT-11 ( который ещё нужно написать ) не начнёт нормально читать ленты.
Мне представляется, что следующим шагом должно стать исследование работы контроллера при чтении стандартной разметки ленты ( блок VOL1, блок HDR1, метка "Tape Mark", блоки данных, метка "Tape Mark", блок EOF1, метка "Tape Mark" ).
Весьма важно ( на мой взгляд ) выяснить, как контроллер сигнализирует о том, что вместо ожидаемого заголовка блока на ленте попался "Tape Mark". Не зная этого - невозможно отличить блок данных файла от метки конца файла ( метка конца файла по своей сути - это точно такой же блок данных ).
Для этого тестирования программу нужно модифицировать так, чтобы она подавала только команду "2" и копировала буфер контроллера в компьютер, а команда "7" подавалась вручную. Это даст возможность после каждой команды "7" проверять содержимое регистров 176730 и 176732, чтобы определить те биты, которые контроллер устанавливает там при обнаружении на ленте различных меток.
Затем нужно взять ленту, содержащую файлы RT-11 и пройтись по ней, выдавая вручную команды "7" и проверяя регистры.
Запуская программу копирования буфера в компьютер - нужно прежде всего проверять значение R0, где возвращается число скопированных байт. Для блоков по 512 байт это должно быть число 514 ( 2 байта номера блока + 512 байт данных ).