Загрузчик с 9 сектором (номер 8) большим 256 байт.Сообщение от Evgeny Muchkin
Буфер TRDOS длиной 256 байт, в который происходит загрузка
9-го сектора, имеет адрес 5D25h.
Перед чтением сектора системные переменные бэйсика, размещенные
в этом адресном пространстве, временно смещаются на 256 байт
выше в ОЗУ компьютера, начиная с адреса 5E25h.
В ячейках 5E27h..5E28h при этом оказывается адрес процедуры
выдачи на экран сообщений (канал экрана).
Признаком диска формата TRDOS является байт 10h, записанный
в 9 секторе со смещением +0E7h относительно его начала.
Если байт в этой ячейке не равен 10h, то TRDOS
выдает на экран сообщение "Disk error".
При длине сектора 256 байт сообщение как и положено выдается
на экран, поскольку в адресе 5E27h..5E28h находится истинный
адрес процедуры выдачи сообщения на экран (по умолчанию 09F4h).
Если 9 сектор имеет длину больше 256 байт, то поскольку
процедура чтения все равно прочитывает его весь, все что
больше 256 байт перекрывает область системных переменных, и
если по смещению +0E7h относительно начала сектора не будет
прочитан байт 10h, то при попытке выдачи сообщения об
ошибке будет выполнена команда, расположенная по адресу
взятому из указателя 5E27h..5E28h (+102h..+103h от начала
сектора).
В ISDOS в эти ячейки записывается адрес начала буфера
TRDOS (5D25h), что и приводит к запуску начального загрузчика
этой ОС, записанного в 9 сектор системного диска, длина
которого равна 1024 байта.
Отсюда:
1) длина 9-го сектора должна быть 512 или 1024 байта;
2) по смещению +0e7h от начала сектора не должно быть
байта со значением 10h;
3) по смещению +102h..103h от начала сектора должен
быть записан адрес запуска загрузчика (проще всего
сделать его равным 5D25h).
Вот и все.....





Ответить с цитированием