OSDev

для всех
Текущее время: 28 мар 2024, 13:52

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 41 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: QSinit
СообщениеДобавлено: 25 ноя 2016, 02:02 

Зарегистрирован: 10 окт 2013, 14:54
Сообщения: 93
Ну, отчего ж ей не работать? ;)

Не, я вообще не ставлю цели перейти на 64 бита. А если и возникнет желание - то система один фиг будет смешанной и для сборки 32-битной части ватком, всё-равно, подходит лучше.

Тем более, что смешанных 32/64 модулей просто не существует.
Хм, может взять JWLink и сочинить? ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: QSinit
СообщениеДобавлено: 28 ноя 2016, 14:15 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
dixie писал(а):
И линковать и, даже, генерить смешанный 16/32 код может очень мало кто. Сделать группу в ассемблере, где будут 16 и 32 сегменты - умеет тока wasm и старый masm. Ну и fasm, наверно, но это за пределами добра и зла ;)

nasm отлично работает со смешанным кодом и имеет хороший синтаксис.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: QSinit
СообщениеДобавлено: 28 ноя 2016, 20:47 

Зарегистрирован: 10 окт 2013, 14:54
Сообщения: 93
Yoda писал(а):
nasm отлично работает со смешанным кодом и имеет хороший синтаксис.
Не, nasm это опять из серии "мы знаем, как улучшить стандарт чтобы кодеры побольше потрахались при переносе" кода. Меня, как-то, сразу отпугивает подобный подход ;)

Привычней нормальный интелёвый синтаксис со всеми деталями... Да и есть JWasm, автор хоть и пропал куда-то пару лет назад, но код-то остался, собираемый, в т.ч. 64 бита умеет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: QSinit
СообщениеДобавлено: 05 дек 2016, 21:35 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Интересно, посмотрю...

Кстати, тоже спокойно поживаю без 64-разрядного кода.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: QSinit
СообщениеДобавлено: 06 дек 2016, 21:07 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
phantom-84
Обана какие люди и без охраны!
Как поживаешь, что нового?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: QSinit
СообщениеДобавлено: 09 дек 2016, 23:47 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Del. Стертое к делу не относится. Данный пост можно удалить. Извиняюсь перед ТСом.


Последний раз редактировалось phantom-84 01 авг 2018, 17:28, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: QSinit
СообщениеДобавлено: 13 окт 2017, 18:38 

Зарегистрирован: 10 окт 2013, 14:54
Сообщения: 93
В общем, в честь Пятницы, 13 pешил отметиться :)

За год, в основном, только добавил сессии. Hу и, попутно, использование компоpта в качестве девайса вывода (vt100).
Так, что тепеpь в тетpис можно игpать не только в EFI, но и по компоpту.

Тасклиста, собстно, даже пока нет :D Сессии пеpеключаются по Alt-Esc (Ctrl-N в "сеpиальной" консоли) - но подобные мелочи - это мелочи, когда нет даже мыши, а гpафические pежимы используются только для эмуляции консоли. Hо pезаться в тетpис в одной сессии, пока в дpугой посектоpный pедактоp ищет по всему диску какую-ньть стpоку - вполне pеально, несмотpя на то, что в качестве "дpайвеpов" - BIOS или EFI.

Вполне извлекаема и практическая польза - например, полазить по диску на компе без монитора, но с компортом.

Исходники/бинарники всё там же, описание на странице, правда, не апдейченное.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: QSinit
СообщениеДобавлено: 23 сен 2019, 09:34 

Зарегистрирован: 10 окт 2013, 14:54
Сообщения: 93
Нда, хотел снова отметиться в Пятницу, 13 - но сайт валялся ;)
Надо же как-то разбавить эти бесчисленные клонированные юниксы :)

В общем, за пару лет не сильно много нового - но добавил, таки, тасклист :) При чём, он присутствует и на "терминальном девайсе", т.е. одно "устройство вывода" по компорту может иметь несколько сессий с переключением между ними, с вызовом тасклиста, итд.

Вообще номер экранной сессии у меня свойство треда, а не процесса :) Прямое переключение в чужую сессию не разрешается, но тред может создать свою. Или не иметь таковой - можно задать флаг при создании - "детачнутый тред". Соответственно "детачнутое приложение", у главного треда которого нет сессии, может показать message box с использованием этого механизма - по флагу он будет создан в другом треде, в новой сессии.

Плюс ещё r/o поддержка JFS и HPFS. Это сугубо полуосевая специфика (таки эта штука до сих пор используется как загрузчик OS/2 ;) ). Тут сделал некий абстрактный объект "файловый кэш", который принимает на входе список кластеров, а на выходе имеет обычные read/write. Поскольку кластеры вещь, в общем, универсальная, то и написание FS (r/o, по крайней мере) упрощается до уровня - распарсить каталог и список цепочек файла.

Исходники всё там же и описание на странице всё так же не апдейченное :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: QSinit
СообщениеДобавлено: 21 сен 2022, 21:26 

Зарегистрирован: 10 окт 2013, 14:54
Сообщения: 93
Три года, да? :)
Собстно, ничего крупного за это время не прибавилось - всякая мелочь в сервисах, 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.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: QSinit
СообщениеДобавлено: 23 сен 2022, 21:22 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Интересно, но эмуляция BIOS - это жесть. У меня максимум есть возврат в реальный режим для запуска стартового кода реального режима. Точка входа защищенного режима тоже есть. Что касается драйверов, вместе с ядром/системным загрузчиком ядра загружается (размещается в памяти) файл, в котором упакованы все необходимые для дальнейшей загрузки драйверы. Также есть вариант, при котором этот файл упакован вместе с ядром.

Стандартный VGA-драйвер встроен в ядро. Графические режимы не поддерживаются. Есть только два текстовых режима: 80x25 и 80x30 :) Но с поддержкой загрузки палитры, загрузки и (одновременного) отображения двух шрифтов и т.п.

phantom-84 писал(а):
эмуляция BIOS - это жесть
Хотя для обслуживания собственных обращений к BIOS, возможно, это вариант, чтобы не выдумывать другую "двойственность" вызовов и не переписывать старый стартовый код реального режима.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 41 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB