Pull to refresh

Comments 23

Не смог придумать практического применения

UFO landed and left these words here

Все прикольно и понятно, но вот HDPMI.EXE это какая-то чёрная магия...

Это расширитель ДОС. Подробнее что это такое описано например в учебнике программирования на ассемблере Зубкова. Их существовало много разных, зачастую с собственным ни с чем не совместимым форматом исполняемого файла. Соответственно, линкер, а то и компилятор шёл в комплекте. Тот расширитель, которым пользуюсь я необычен тем, что использует формат файлов Windows. Поэтому можно использовать обычный предназначенный для Windows линкер.

там серьёзные обычно ограничения - не на все прерывания стоят санки (thunks) и прямой доступ к железу из защищенного режима усложнен

ну а какая альтернатива? Использовать реальный режим?

Так-то, почти все игры второй половины 90-х и софт - юзают Protected mode и dos exttender'ы (dos4gw самый популярный). Можно, конечно, и самостоятельно написать необходимые функции, для работы в защищенном режиме... Но суть-то та же останется.

Для игр и обычных приложений это несущественные ограничения.

Но, боюсь, это уже не актуально.

А вот для всякой экзотики может мешать.

ну хз, игры, по-моему, как раз самые "технологичные" программы (тем более в DOS-эпоху), которым нужен и прямой доступ к железу, и прерывания и т.д.

Какой именно экзотике? Стелс-вирусам? :)

игры под дос наверное поздно писать

демосцена возможно (хотя требует почти как игры) или эмбеддед специфический, где нужен доступ к портам и тп

сложно представить сейчас применение

есть же энтузиасты, пишут и под дос игры, причем под 8086, например :) Есть даже Doom 8088 https://github.com/FrenkelS/Doom8088

Или движки для платформеров (вот чел норм упарывается https://www.youtube.com/@Oosystem/videos )

Так это... Ну и демки же тоже с середины 90-х стали юзать защищенный режим и dos extender'ы. В том числе свои, демосценерские (PMODE от Tran'a годился для 64кб-интро и шел в виде либы, чтобы линковаться в один ехе вместе с демкой). И собственно, они же для этого и нужны - чтобы иметь инструментарий доступа к прерываниям, портам, функциям DOS'a. Так-то protected mode можно врубить и без расширителя (256 байтная dos-интро (самодостаточная) юзающая защищенный режим и многопоточность https://www.pouet.net/prod.php?which=96532 )

А чего так тяжело-то, заголовки, загрузчики? Можно в .com скомпилить же!

Можно. Но com будет ущербный: LLVM не поддерживает генерацию 16-битного кода, так что четверть вашего исполнимого файла займут префиксы изменения разрядности.

и больше 64кб (-256 байт) COM-файл нельзя делать, ДОС ведь его целиком загружает в один сегмент.

Для хелловордов самое то, да и 16 битный режим каноничен для дос. Это с 386-го всякие хаймемы пошли с XMS. А то, что LLVM не умеет оптимально компилить под целевую систему, то DOS в этом не виноват.

Это с 386-го всякие хаймемы пошли с XMS.

XMS и 286-й поддерживает.

Ну, так-то... Когда кого волновало - что там канонично для DOS? К тому же, от первой версии MS-DOS до появления 386-х прошло 4 года. А потом DOS был еще актуален как минимум лет 10 (на самом деле больше).

И такие игры как Doom, Duke Nukem 3D, Warcraft, Need for Speed, да и все, что было во второй половине 90-х на PC, и DOS был для них родной платформой, они же используют 32-битный режим. Так что... Незнаю, незнаю, что там канонично, а что нет.

Читаю статью а перед глазами троллейбус из буханки. У вас тулчейн в 2 ГБ влез? Когда я писал под ДОС на языке высокого уровня, компилятор и операционная система влазила на дискету в 1.44 МБ. И ещё оставалось место для программ ...

Ну не совсем так. Продвинутые среды больше: БорландС++ занимал 9 дискет, OpenWatcom для DOS сейчас - 80Мб.

Можно конечно было поужаться, но не так кардинально.

БорландС++ занимал 9 дискет

Вся среда или только компилятор?

Полный инсталляционный комплект.

Вот и всё, мы получили работающую DOS-программу, написанную на Rust.

Замечательно, а теперь под ZX-spectrum

Да, об этом определённо стоит подумать. К сожалению, у меня нет спектрума в натуральном виде, и достать его весьма сложно. А эмуляторы -- это неинтересно.

Вечно такие извращения заканчиваются ассемблером)

Sign up to leave a comment.

Articles