OSDev http://osdev.su/ |
|
QSinit http://osdev.su/viewtopic.php?f=4&t=808 |
Страница 3 из 5 |
Автор: | dixie [ 25 ноя 2016, 02:02 ] |
Заголовок сообщения: | Re: QSinit |
Ну, отчего ж ей не работать? Не, я вообще не ставлю цели перейти на 64 бита. А если и возникнет желание - то система один фиг будет смешанной и для сборки 32-битной части ватком, всё-равно, подходит лучше. Тем более, что смешанных 32/64 модулей просто не существует. Хм, может взять JWLink и сочинить? |
Автор: | Yoda [ 28 ноя 2016, 14:15 ] |
Заголовок сообщения: | Re: QSinit |
dixie писал(а): И линковать и, даже, генерить смешанный 16/32 код может очень мало кто. Сделать группу в ассемблере, где будут 16 и 32 сегменты - умеет тока wasm и старый masm. Ну и fasm, наверно, но это за пределами добра и зла nasm отлично работает со смешанным кодом и имеет хороший синтаксис. |
Автор: | dixie [ 28 ноя 2016, 20:47 ] |
Заголовок сообщения: | Re: QSinit |
Yoda писал(а): nasm отлично работает со смешанным кодом и имеет хороший синтаксис. Не, nasm это опять из серии "мы знаем, как улучшить стандарт чтобы кодеры побольше потрахались при переносе" кода. Меня, как-то, сразу отпугивает подобный подход Привычней нормальный интелёвый синтаксис со всеми деталями... Да и есть JWasm, автор хоть и пропал куда-то пару лет назад, но код-то остался, собираемый, в т.ч. 64 бита умеет. |
Автор: | phantom-84 [ 05 дек 2016, 21:35 ] |
Заголовок сообщения: | Re: QSinit |
Интересно, посмотрю... Кстати, тоже спокойно поживаю без 64-разрядного кода. |
Автор: | pavia [ 06 дек 2016, 21:07 ] |
Заголовок сообщения: | Re: QSinit |
phantom-84 Обана какие люди и без охраны! Как поживаешь, что нового? |
Автор: | phantom-84 [ 09 дек 2016, 23:47 ] |
Заголовок сообщения: | Re: QSinit |
Del. Стертое к делу не относится. Данный пост можно удалить. Извиняюсь перед ТСом. |
Автор: | dixie [ 13 окт 2017, 18:38 ] |
Заголовок сообщения: | Re: QSinit |
В общем, в честь Пятницы, 13 pешил отметиться За год, в основном, только добавил сессии. Hу и, попутно, использование компоpта в качестве девайса вывода (vt100). Так, что тепеpь в тетpис можно игpать не только в EFI, но и по компоpту. Тасклиста, собстно, даже пока нет Сессии пеpеключаются по Alt-Esc (Ctrl-N в "сеpиальной" консоли) - но подобные мелочи - это мелочи, когда нет даже мыши, а гpафические pежимы используются только для эмуляции консоли. Hо pезаться в тетpис в одной сессии, пока в дpугой посектоpный pедактоp ищет по всему диску какую-ньть стpоку - вполне pеально, несмотpя на то, что в качестве "дpайвеpов" - BIOS или EFI. Вполне извлекаема и практическая польза - например, полазить по диску на компе без монитора, но с компортом. Исходники/бинарники всё там же, описание на странице, правда, не апдейченное. |
Автор: | dixie [ 23 сен 2019, 09:34 ] |
Заголовок сообщения: | Re: QSinit |
Нда, хотел снова отметиться в Пятницу, 13 - но сайт валялся Надо же как-то разбавить эти бесчисленные клонированные юниксы В общем, за пару лет не сильно много нового - но добавил, таки, тасклист При чём, он присутствует и на "терминальном девайсе", т.е. одно "устройство вывода" по компорту может иметь несколько сессий с переключением между ними, с вызовом тасклиста, итд. Вообще номер экранной сессии у меня свойство треда, а не процесса Прямое переключение в чужую сессию не разрешается, но тред может создать свою. Или не иметь таковой - можно задать флаг при создании - "детачнутый тред". Соответственно "детачнутое приложение", у главного треда которого нет сессии, может показать message box с использованием этого механизма - по флагу он будет создан в другом треде, в новой сессии. Плюс ещё r/o поддержка JFS и HPFS. Это сугубо полуосевая специфика (таки эта штука до сих пор используется как загрузчик OS/2 ). Тут сделал некий абстрактный объект "файловый кэш", который принимает на входе список кластеров, а на выходе имеет обычные read/write. Поскольку кластеры вещь, в общем, универсальная, то и написание FS (r/o, по крайней мере) упрощается до уровня - распарсить каталог и список цепочек файла. Исходники всё там же и описание на странице всё так же не апдейченное |
Автор: | dixie [ 21 сен 2022, 21:26 ] |
Заголовок сообщения: | Re: QSinit |
Три года, да? Собстно, ничего крупного за это время не прибавилось - всякая мелочь в сервисах, api, поддержка iso9660, монтирование этих самых iso, итд, итп ... Ссылка выше всё так же верна А на что же ушли эти три года? На ещё одну вещь, созданную на базе этого загрузчика. На этот раз без исходников, ибо коммерческое (см arcanoae.com ). Но сама история стоит того, чтобы её описать. Задача - загрузить 16/32-битную систему (в данном случае OS/2) из EFI Нетривиально, но выполнимо. Если 32-битная система имеет в наличии драйвера для железа (свежий ACPI, ahci, nvme, usb, итп), то вопроса о том, что она запустится на голом железе в общем-то нет. Требуется только проскочить момент между выходом из EFI фирмвари и стартом всех драйверов системы. Эдакий "прыжок над бездной" - без дисков, клавиатуры и прочих "удобств цивилизации". Загрузчик должен уметь закэшировать в памяти все модули, необходимые для старта "базовой части системы" и каким-то образом отдать их потом системе вместо обращения к сервисам BIOS. Помимо этого выстраивается минимальная эмуляция BIOS (на уровне, ожидаемом загружаемой системой), и после выхода в реальный режим начинается обычный процесс старта, с той разницей, что файлы берутся из памяти. Когда базовые драйверы загружены и начинают работать - всё превращается в обычное 32-битное окружение. В случае OS/2 дополнительная трудность состоит в полном отсутствии поддержки "современного видео". Собстно, история аналогична FreeBSD без притащенного из линукса закрытого кода драйверов. Здесь нет и такого В BIOS режиме используется VESA (видеопамять с Write Combine, в общем-то, вполне шустра для бытового интерфейса). В EFI режиме, соответственно, используется унаследованный от фирмвари графический режим, для чего написан новый обработчик полноэкранной консоли и новый драйвер видео для VDM (с полной эмуляцией штатных видеорежимов). Эмуляция биоса в этой истории уместилась в 8kb, львиную долю которых занимает код int 10h. Большая часть этого кода нужна даже не для загрузки системы, а для VDM. VDM в полуоси довольно активно использует видео BIOS, вызывая его по дефолту практически для всех функций. Код эмуляции int 10h довольно сложный, поскольку должен работать и в режиме "графической консоли" (при загрузке системы) и обычного VGA (в VDM, где уже сам VGA целиком эмулируется). Прочие сервисы BIOS представлены фрагментарно - строго в пределах необходимого самой системе и VDM или каким-то старым играм. Результат, в общем, вполне юзабелен ... Сама полуось бегает и резвится. Собственно, у GUI есть некий графический режим и оно в нём штатно работает. Win16 подсистема ведёт себя аналогично, так как использует те же видеодрайвера, что и осевой "рабочий стол". А вот для VDM видео уже эмулируется и тут всё довольно сурово - софтварная конверсия и масштабирование режимов только на целые числа. Удивительно, но и в таком режиме (когда видео в VDM тупо гонится этой самой софтварной конверсией и всю скорость обеспечивает Write Combine) оно выглядит лучше, чем многие наличные виртуальные машины. Собственно, эмуляция всех не-VGA режимов сводится к преобразованию цветов и маштабированию при сбросе эмулируемого буфера на реальный экран (плюс опциональному рисованию курсора, когда DOS софт полагается в этом на драйвер мыши). Это даёт абсолютную играбельность как 320x200x256 игр, так и всей VESA (и CGA). И квака с еретиком, колонизацией и сеттлерами и vesa версии Master of Orion II и фоллаута - бегают и резвятся. Самое печальное начинается в VGA и mode-x. Их эмуляция возможна только софтварно (пока кто-то не встроит в процессор команду "чтение/запись VGA" ). В силу этого любая VGA или mode-x игра это лютое испытание для каждого эмулятора и VDM (и загрузка для процессора). EGA/VGA режимы реализуемы только через исключение на каждую запись/чтение видеопамяти - иначе физически невозможно обработать все комбинации режимов VGA контроллера. Чтобы убедиться в этом просто запустите Master of Magic в VBox или VirtualPC или dosbox - без разницы ... Это одна из самых нагрузочных для эмуляции игр (причина в активном копировании видеопамяти именно средствами VGA - вывод осуществляется чередованием страниц и частая операция дублирования старого содержимого в новую страницу вносит лютые тормоза. Просто представьте даже не rep movs видео в видео, a lods/stos на каждый байт для каждого кадра ). Тут даже "3D стрелялка" типа Wolfenstein3d, работающая в mode-x - выглядит куда шустрее. Она абсолютно играбельна на 2.4Ghz процессоре (при том, что каждый доступ к видеопамяти обрабатывается софтварно). В общем, по итогам написания всех этих вещей у меня возникло много вопросов - и к авторам спецификации UEFI, и к авторам VBox (можно было написать ещё хуже и тормознее или это таки рекорд?) и к Джону Кармаку с его Commander Keen, который создан, чтобы издеваться над эмуляторами. К авторами кучи досовских игр, которые верят, что шрифт 8x8 хранится строго в F000:FA6E, как завещал великий PC XT ... Это всё, разумеется, натуральное некрофильство, но ... а). есть люди, которым бывает нужно запустить что-то в Win16. На западе их куда больше, чем у нас. Возможно есть и люди, которым требуется DOS - и осевая VDM вполне может быть решением. б). нетривиальная задача в). я сам, бывает, ностальгически играюсь в тот же master of magic и, за исключением нативного VGA, (хоть как-то!) приемлем по скорости он только тут. Из плохих новостей - даже если вы можете это купить (сейчас), оно ещё не вышло Официально EFI будет в 5.1 той самой ArcaOS. |
Автор: | phantom-84 [ 23 сен 2022, 21:22 ] |
Заголовок сообщения: | Re: QSinit |
Интересно, но эмуляция BIOS - это жесть. У меня максимум есть возврат в реальный режим для запуска стартового кода реального режима. Точка входа защищенного режима тоже есть. Что касается драйверов, вместе с ядром/системным загрузчиком ядра загружается (размещается в памяти) файл, в котором упакованы все необходимые для дальнейшей загрузки драйверы. Также есть вариант, при котором этот файл упакован вместе с ядром. Стандартный VGA-драйвер встроен в ядро. Графические режимы не поддерживаются. Есть только два текстовых режима: 80x25 и 80x30 Но с поддержкой загрузки палитры, загрузки и (одновременного) отображения двух шрифтов и т.п. phantom-84 писал(а): эмуляция BIOS - это жесть Хотя для обслуживания собственных обращений к BIOS, возможно, это вариант, чтобы не выдумывать другую "двойственность" вызовов и не переписывать старый стартовый код реального режима.
|
Страница 3 из 5 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |