Цитата Сообщение от Titus Посмотреть сообщение
Интересно, были ли в ходу дискеты для УКНЦ с сектором, размером 1024 байта (5 секторов на дорожке)? Загрузчик в ПЗУ ПП на такие диски рассчитан тоже.
Фиг с них загрузишься. Все дело в том, что драйвер дисковода написан так, чтобы на дискетах с размером сектора 1024 байта, адресный маркер читался только тогда, когда отсутствует индексная метка, поэтому при форматировании на УКНЦ адресная метка первого сектора в дорожке никогда не будет поймана. А вот если отформатировали на PC с индексным маркером, то скорее всего прочтется.
Код:
132656$:MOV     #4,R1
        CMPB    #5,23301        ; Формат 1024 байта в секторе ?
        BNE     132702$         ; Нет
        TST     @R4             ; Присутствует линия индекс ?
        BPL     132702$         ; Нет
        MOV     #36,R1
132702$:MOV     @R5,R0          ; Прочесть слово с дискеты
        BEQ     132730$         ; Это нуль
        INC     R0
        BEQ     132730$         ; Это минус один
        TSTB    @#177710        ; Таймер окончил счет
        BPL     132656$         ; Нет
        CALL    134242$         ; Сбросить готовность таймера
        SOB     R2,132656$
        BR      133002$         ; Ошибка (не найден межсекторный промежуток)
132730$:MOV     @R5,R0          ; Прочесть слово с дискеты
        BEQ     132740$         ; Это нуль
        INC     R0
        BNE     132640$         ; Это не минус один
132740$:SOB     R1,132730$
        BIS     #400,R3         ; Установить в УС бит поиска заголовка
        MOV     R3,@R4          ; Начать поиск
        BIC     #400,R3         ; Сбросить в УС бит поиска заголовка
        MOV     #226,R0         ; Время ожидания поиска
        MOV     R3,@R4
132762$:TSTB    @R4             ; Маркер заголовка обнаружен ?
        BMI     133034$         ; Да
        SOB     R0,132762$
Собственно в R1 счетчик чтения синхрозоны. Сперва ищется слово 0 или 177777, считается, что поймали синхрозону. Далее в цикле 132730 надо удостоверится, что это синхрозона - по счетчику в R1 считывается регистр данных без учета бита готовности. Так вот при значении 36 в R1 в любом случае выйдем за синхрозону и не сможем поймать адресный маркер первого сектора. А вот если дискета отформатирована на PC с индексной меткой, то сперва будет синхрозона перед индексной меткой, она пропустится, и далее уже поймается синхрозона перед первым сектором, там уже индексное отверстие будет неактивно и первый сектор должен прочесться.