Зачем?
Тут же промелькивали помимо моего 2 эмулятора 15ИЭ.
Вид для печати
Так для игрушек и так есть два КГД и КЦГД. Может я не правильно написал, я имел в виду фрязинский наверное или опять напутал.
Patron, Можно что-нибудь на LPT вывести? Точнее текст в ASCII и управление ASCIIшное ( CR+LF ) для принтера. Так-как в ИРПР инверсные сигналы то за одно и инвертировать для LPT программно.
Попробовал недокументированную функцию форматирования дорожки в формате IBM с индексными маркерами 0xC2. Функция эта присутствует в КМД с прошивками -092, -093* и -255, в -091 её нет. Отформатировалось все нормально, но вот с чтением первого сектора проблема. Эта проблема есть в прошивке -091, но в более поздних её убрали. Вот кусок кода из прошивки:
Как видно из кода, если активна линия ИНДЕКС, то в качестве счетчика ожидания при поиске маркера используется значение 0764, если неактивна, то 024. Это нужно потому, что если попали на синхрозону перед индексным маркером 0xC2, то надо пропустить оставшиеся нули, 4 байта самого маркера, 50 байт промежутка и 12 байт синхрозоны перед заголовком первого сектора.Код:; Удостоверение в том, что попали на синхрозону
7014$: MOV #3,32(R3) ; Счетчик для удостоверения
7022$: MOV @R5,R0 ; Считанное слово равно нулю?
BEQ 7032$ ; Да
INC R0 ; Считанное слово равно 177777?
BNE 7066$ ; Нет - не синхрозона
7032$: DEC 32(R3) ; Уменьшить счетчик
BNE 7022$ ; Продолжаем дальше
; Поиск и ожидание маркера
CALL 7220$ ; Дать команду на поиск маркера
MOV #24,R0 ; R0 = счетчик ожидания маркера
TST @R4 ; Линия ИНДЕКС активна?
BPL 7060$ ; Нет
MOV #764,R0 ; R0 = счетчик ожидания для первого сектора
7060$: TSTB @R4 ; Маркер найден?
BMI 7074$ ; Да
SOB R0,7060$ ; Цикл ожидания маркера
; Маркер не найден - на поиск нулей
7066$: TST @R4 ; Линия индекс активна?
BPL 6664$ ; На пропуск нулей при неактивном ИНДЕКСЕ
BR 6756$ ; На пропуск нулей при активном ИНДЕКСЕ
; Определение типа найденного маркера
7074$: TST @R5 ; Пропустить 0xA1A1
Patron, хотелось бы узнать, какова длина ИНДЕКСА, сколько байт с начала дорожки. Соответственно, в чем проблема - линия ИНДЕКС уже неактивна в этой проверке, или значения 0764 слишком мало для ожидания.
Во вложении программа форматирования диска в формате IBM, ну и сам образ диска.
Длина индекса 1000000 нс ( 1 мс ). В момент появления индекса номер текущего байта дорожки обнуляется. Увеличивается номер текущего байта дорожки каждые 32000 нс ( 32 мкс ).
Сейчас посмотрю, но кое-что можно сделать самостоятельно.
Если добавить в файл MY.cfg включение дизассемблера:
То все команды, выполняемые процессором КМД, запишутся в файл Debug.logКод:[links]
MY_CPU [DisAsm] > Debug
[MY_CPU.ini]
InitialStateOf[DisAsm]=1
[Debug.ini]
InitialStateOf[Log]=1