garnizon пишет:Она переводит девятку в режим Apple как ИКП (видимо поэтому на ней работают почти все игрушки, которые не хотят в режиме Агат с экраном apple работать) только дос подсовывает модифицированный, ориентированный на 840
Ну вот тут и будет основная морока. Loader наверняка сначала детектит железо девятки, потом с помощью диспетчера памяти девятки загружает нужные для режима Apple части (Бейсик, ДОС), и в конце переключает режим из Агат в Apple.
Код, расчитанный на Агат, на Apple будет тыкать в адреса устройств ввода-вывода. С большой вероятностью, он уже на этапе поиска Агатовских устройств Apple завесит. Но и потом, при загрузке Бейсика и ДОСа он будет активно работать с адресами диспетчера памяти ($C1XX). И потом переключит режим через обращение к $C0F0. Если на Apple в слотах 1 и 7 будут какие-то платы, он может зависнуть.
Этот код нужно будет убирать.
Проблема номер два - наверняка Loader грузит ДОС просто как набор байт в нужный адрес. А у Apple ДОС перемещаемый. Он грузится в одни адреса, потом определяется объем памяти, а потом ДОС перемещается в рабочий адрес, который выбирается с учетом объема памяти. После этого вызывается инициализация.
Я думаю, что этого куска кода ДОС на диске с Loader нет, а нужную инициализацию ДОС делает тот загрузочный код, который мы собираемся выкидывать. В общем, нужно будет смотреть, как Loader инициализирует ДОС и возможно возвращать что-то из кода оригинального DOS 3.3.