Доброго времени друзья!
Поделюсь немного затыком по mdos31h, читаю в буфер два сектора, все отлично. Решил читать именно два сектора как в оригинале, потому что чтобы сказать системе, что прочитан только один сектор - нужно дизассемблировать и разбирать остальной код, или его часть. В итоге, читаю в буфер с EB00 по EEFF - все отлично читается, и выводится на экран (если например чтение вызвано командой D) в виде названий файлов. Все четко. после этого читаются следующие два сектора, но читаются они с адреса второго сектора, который уже был прочитан, и выведен на экран, все что было в буфере в адреса ED00 - EF00 (второй сектор) повторно читается уже по адресу EB00 - ECFF, и следующий сектор с адреса ED00 по EEFF свежий... В итоге половина информации на экране задвоенная, и естественно, ничего не работает. Точнее, маленькие текстовые файлы удается выводить на экран, которые в один сектор помещаются, читается initial.sub - но в лучшем случае он ничего не запускает, в худьшем - уносит куда то ..
Может у кого то есть мысли по этому поводу? От куда формируются переменные XE86D и XE86F? В тексте не нашел что либо, что могло бы сертезно влиять на эти переменные, однако же в переменной XE86F, в младшем разряде как раз и есть отличие на 1 от того, что приходит в непатченной оси..
Если кому то любопытно будет взглянуть на имеющийся код, или куски или сам mDos31 c текущими изменениями - все тут!
На этом, пока остановился, будет время продолжу поиски.
И еще, засунул в ПЗУ загрузчика FH51LBA - и обновил тут. Микросхемы уже в Москве, скоро потестирую на реальном векторе. При загрузке из ПЗУ система ищет INITIAL.SUB на A:, а вот после записи ее на системную область С: ищет на С:... по этому пришлось прописать у себя инит, который копирует слегка измененный инит на C. Не очень красиво, но работает. Если будет возможность исправить этот баг, пожалуйста, сделайте, если система инит будет только на А: искать, или не найдя на С: таки искать на A: - будет супер просто, потому что на реале заморочено стартовать с подгруженным из файла квазидиском ))




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