ARM
TODO: подумать о портировании Proolix на процессоры ARM
← Декабрь 2014 → | ||||||
1
|
2
|
3
|
5
|
6
|
7
|
|
---|---|---|---|---|---|---|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
16
|
17
|
18
|
19
|
20
|
21
|
22
|
23
|
24
|
25
|
26
|
27
|
28
|
29
|
30
|
31
|
За последние 60 дней ни разу не выходила
Сайт листа:
http://prool.kharkov.org/proolix/disc-list.html
Открыт:
12-10-2004
Пре-модерация: Нет
Адрес для писем в лист: comp.soft.othos.proolix-list@subscribe.ru
Адрес
модератора: comp.soft.othos.proolix-owner@subscribe.ru
TODO: подумать о портировании Proolix на процессоры ARM
Завел для OS Proolix аккаунт на github:
https://github.com/prool/proolix
Выложу туда наработанное на сегодняшний день и если будет что-то новое, всё
будет появляться тоже там
Под Пруликс пока не портирован Bourne Shell, поэтому уязвимость ShellShock
в ОС Proolix невозможна в принципе, но разработка приложений для Пруликса
производится методом кросс-компиляции на других ОС, у которых эта
уязвимость может быть. Поэтому вот вам ссылка на сервис онлайновой проверки
этой уязвимости
http://www.host-tracker.com/
Является ли ОС Proolix микроядерной? Нет, у нее monolitic structure
Hi, All!
Я позавчера опять взялся за Пруликс (после перерыва примерно в 9 лет) и
начал переписывать его с нуля, в частности сильно упростив бут-сектор (это
уже сделано). Чуть позже продолжу и напишу, что и зачем я делаю. (Особого
практического смысла мои экзерсисы не имеют, так, хобби, чтоб навык не
потерять и вообще, программирование приводит меня в хорошее настроение, а
это сейчас очень нужно, у нас в Украине война)
Сегодня установил у себя в Ubuntu 12.04.4 LTS гипервизор QEMU и
virt-manager и запустил Пруликс на маленькой виртуальной машине. Пруликс
загрузился с ISO образа, заработал и в частности опознал master boot record
виртуального жесткого диска
Вот мой ISO
http://prool.kharkov.org/proolix/proolix-bootable-cd-19-feb-2006.nrg (не
смотрите, что это созданный Nero .nrg-файл, он частично совместим с ISO)
А вот образ загружаемого флоппи диска с Пруликсом
http://prool.kharkov.org/proolix/proolix-bootable-diskette-19-feb-2006.bin
(именно из него был изготовлен загружаемый ISO образ)
С Новым Годом!
Пруль!
www.prool.kharkov.org
Я запустил OS Proolix в среде Oracle VM VirtualBox, загрузив виртуальную
машину с образа пруликс-дискеты. Ура, оно и там работает!
проверка проверка проверка
Пруль
www.prool.kharkov.org
Под Proolix клиента TOR нету (в Пруликсе пока вообще нет нетворкинга), но
вообще TOR - полезная для нашего сурового времени штука:
https://www.torproject.org/
Файловый архив немного пополнен старыми файлами (образами, архивами,
исходниками)
Статья из Прулепедии про Пруликс:
http://proolepedia.kharkov.org/index.php/Proolix
Сайт ОС Пруликс заработал после сбоя винчестера, правда пока в форме
файлосвалки:
http://prool.kharkov.org/proolix/
Hi, All!
Сайт Пруликса http://prool.kharkov.org/proolix временно не работает из-за
сбоя диска. Скоро восстановлю
Чуть-чуть причесал сайт Пруликса. Просто так
А работа над самой ОС приостановлена оч. давно. Всё равно я команду Линуса
не догоню
Только что пришел ответ из техподдержки Сабскрайба, что был глюк и что
они его исправили. Я проверил, всё заработало! Ура!
Hi, All!
Пруликс-сайт перенесен и работает на новом месте (место новое, но
адрес прежний):
http://prool.kharkov.org/proolix
Hi, All!
В связи с переносом одного из серверов, сайт операционной системы Proolix:
http://prool.kharkov.org/proolix
временно пустой, информация там появится в ближайшие N дней
А сайта (адреса) http://www.users.itl.net.ua/~prool/proolix* уже не будет
А вот статья про Пруликс из Прулепедии
http://proolepedia.kharkov.org/index.php/Proolix
Не помню, писал ли я, но онлайновые многопользовательские игры (типа
моего Virtustan MUD'а) очень похожи на операционные системы. Точнее,
мад-сервер похож на ядро ОС. Мад-сервер - это один процесс, однако он
эмулирует многозадачность на программном уровне. Каждая сессия с
пользователем - это отдельный виртуальный терминал, каждый моб-NPC -
отдельный процесс. Есть механизмы семафоров, очередей и так далее
Proolix - по сути игрушка. Еще более игрушка, чем Minix или XINU. А
вот концепция ОС Phantom Завалишина весьма оригинальна
http://dz.ru/solutions/phantom#01
Статья про MSDOS на Луркоморье:
http://lurkmore.to/DOS
Proolix имеет много общего с MSDOS. Хотя я и реализовывал системые
вызовы POSIX, тем не менее Пруликс, как и МСДОС, однозадачный, работает
с файловой системой FAT, имеет исполнимые файлы образа памяти (BIN или
COM) с блоком PSP, блоки памяти, EXE-подобный формат (недоделан),
системное прерывание типа int 21h (но с другим номером, кажется 83h) и т.д.
Кстати, в Пруликсе есть простейший MSDOS-эмулятор mse, в котором
частично запускались отладчик afd (и кажется debug), Turbo C (или Turbo
pascal), Volcov Commander, кажется какой-то архиватор и игра типа диггера
--
Prool
http://prool.kharkov.org
FYI
Статья про текстовый редактор GNU emacs на Луркоморье
https://lurkmore.to/GNU_Emacs
Достоинства и недостатки системы
Для своего времени эта штука была очень даже неплоха. Из основных плюсов:
отдельные сегменты ядра написаны на ассемблере с использованием
практически всех (а не только самых общеизвестных) возможностей
процессора i386 (в отличие от других ОС для PC). Уже в версии 3.0 1994
года код преимущественно 32-разрядный. С каждой новой версией оставшиеся
участки 16-разрядного кода замещаются 32-разрядным.
стабильная работа ядра системы и прикладного софта, даже при
высоких нагрузках (именно поэтому часто использовалась на банкоматах,
узлах Фидонета и др.) (В некоторых банкоматах она пользуется до сих пор)
хороший отличный TCP/IP стек, к тому же BSD4.4-совместимый
поддержка программ DOS и Win16, а в Warp 4.0 -- и Win32, из-за
присутствия внутри полуоси чуть более, чем половины библиотек Windows
3.1, специально лицензированных у Микрософта (реально, DOS и WIN
3.1/3.11 задачи работали быстрее и надежнее, чем под DOS'ом. <<Лучшая
DOS, чем MS-DOS, и лучшая Windows, чем MS-Windows>>. Odin -- аналог Wine,
увы, так и не допилили)
быстрая Java-машина (по результатам некоторых тестов, самая быстрая
x86-реализация вообще)
расово верный встроенный язык программирования REXX
Недостатки:
отсутствие поддержки PnP, что в 1996-м году заставляло страдать
юзеров, уже попривыкших к этому в Форточках'95 и отвыкших от
самостоятельного конфигурирования параметров устройств вручную.
вялое сотрудничество IBM с производителями железа и софта, на
которое часто жалуются пользователи
Вышеупомянутый маркетинговый фэйл -- ни тебе широких рекламных
акций, ни презентаций красивых картинок, ничего похожего на
микрософтовский пеар.
Всё это сводилось к холивору фанатов полуоси и виндузятников. Смысл
сводился к тому, что полуось работала стабильней чем Windows 9x, но под
винду софта и дров было больше.
Например:
- а в выне окошки кpасивее, ось - мастдай!
- а ось pаботает устойчивее, вынь мастдай!
- а под вынь софта больше, ось - мастдай!
- а вынь одни чайники юзают!
- сам чайник!
- а ось все pавно кpуче...
Жизнь после IBM`а
Даже в 2009 году полуось поддерживается по отдельным договорам и
используется в некоторых банкоматах и POSах, ввиду гораздо большей
устойчивости, чем винды (вы никогда не видели банкомат с BSODом? Или с
радостно мигающей на экране надписью <<неизвестная ошибка, ОК?>>? Ещё
увидите, неоднократно (на самом деле в относительно новые банкоматы
давно ставят винду.
Так же, купив eComStation любой версии и доплатив ещё 128 рублей, можно
получить дистрибутив последней версии OS/2 от IBM (пруф:
http://ru.ecomstation.ru/ecoshop/?action=7)
А ещё, совершенно безумная команда российских и буржуазных программистов
пишет Open Source версию OS/2 с нуля. Называется сиё чудо osFree и
базируется на микроядре L4 Fiasco, из-за чего уже появилось рабочее
полулулзовое название <<Проект беда>>.
Есть и другая команда российских и украинских программистов, которая
пишет Closed Source версию OS/2, но, естественно, не с нуля, а на основе
пусть старых, но все же исходников, доводя их до текущего уровня. Их
жизнь <<слегка>> осложняется тем, что исходники одного только ядра
представляют собой восемьдесят мегабайт ассемблерного кода,
рассчитанного на выполнение на 286-х процессорах. Назывался этот проект
<<Чахлик невмирушщий>>, а теперь называется OS/4 Phoenix. Трекер находится
по адресу http://tracker.os4.su
Описания функций API и руководство к ним из IBM OS/2 Toolkit были
переведены на русский язык, в книге десятки сотен глав (во что, как
обычно, никто не верит), но, к сожалению или к счастью, аффтар слишком
увлёкся Лиспом и прочей функциональщиной, так что законченной версии мы
никогда не увидим.
Кроме того, Полуось пользуется популярностью у даунгрейдеров, но на
самом деле, для большинства даунгрейдеров сейчас основной ОС является
Windows 98 SE -- которая некоторыми энтузиастами до сих пор
допиливается/хакается (к примеру, сборка от IFk0), что частично
компенсирует забитый на нее болт от производителей железа/софта.
Алсо
Одним из неофициальных лозунгов сабжа было: <<Размер имеет значение>>, так
как OS/2 помещалась на дискету, имея при этом джентльменский набор софта
- ядро, стек TCP/IP, текстовый таскменеджер и текстовый шелл -- это было
сделано для построения <<роутера на одной дискете>>
Вообще-то, OS/2 существовала и до нашумевшего проекта OS/2 3.0 Warp, о
котором собственно сама статья. Самые первые версии так же как и дос не
имели GUI (там переключались полноекранныя сеансы), более поздние имели
GUI, уже начиная с версии 1.1 (1988 год). Видеодрайверы, которые юзал
этот GUI, были 16-разрядными, а в комментариях к ихним исходным кодам
стояло... да-да, Windows 2.x :) и работали они в полуоси аж до середины 90-х.
Некоторые части ядра были написаны IBM-ом: механизм страничной памяти,
таймеры и обработку прерываний делал внезапно Майк Коган (и он же
проектировал API), драйверы и файловые системы -- Стив Мастрианни. Другие
-- мелкомягкими: переключение из 16-разрядного режима в 32-разрядный
написал Гордон Летвин, файловая система HPFS -- тоже его лап дело. Так
чем же первоначальная MS OS/2 отличалась от первоначальной IBM OS/2. А
ничем, поскольку вплоть до версии 1.2 оно разрабатывалось совместно.
А вот насчёт версии 2.0 мнения уже разошлись: IBM хотела дальше
развивать кодовую базу пополамы версий 1.х, тогда как мелкомягкие хотели
всё переписать заново и запилили проект под названием OS/2 NT (угадайте,
что из него потом выросло), и выпустить его когда-нибудь потом как OS/2
3.0, и потому в разработке версии 2.0 участия практически не принимали.
На что в Голубом Гиганте весьма обиделись, да тут ещё и свежевышедшая
Винда 3.0 стала мозолить им глаза, так что между ними приключился развод
и попилка шкафа.
Источник: http://lurkmore.to/OS/2 (текст сокращен и слегка облагорожен)
OS/2 (полуось, ось, полумух(а), муха) -- операционная система, созданная
IBM для писюков, на первом этапе совместно с Microsoft. В начале 90-х
годов -- предмет фапа фанатов, ничуть не меньшего, чем сейчас линупс.
Эпичнейший маркетинговый фейл IBM. Которое даже и не заметило, что
где-то там у них была операционная система.
Жил да был Билл Гейтс. И купил он для IBM PC дисковую операционную
систему QDOS за 50000 американских рублей. Далее называлась она уже
MSDOS. Была та дось крива, тупа, убога, 16-битна и без графики. Отчего
во второй половине 80-х гг мучились все неимоверно, а тут еще маки
вылезли со своей грааааафикой, гуееееем и прочими пищалками и
перделками, на радость юзерам. Отчего стало Биллу, а еще больше ИБМу,
горько и обидно, и задумали они сделать свою систему с блекджеком и
шлюхами, то есть защищенным режимом процессора (а, значит, возможностью
использования программами кучи памяти и какой никакой защитой этой
памяти от взаимных глюков), нормальной файловой системой (а не FATом
образца 78 года, который на винтах в сотню бегамайт уже являлся
полнейшим и бесповоротным фейлом, что, впрочем, не мешает ему вовсю
использоваться и спустя уже 33 года), и прочим там. И сделали Windows
1.0. В результате возникшего срача Микрософт с Ибмом расплевались на
веки вечные, Билли пошел доделывать свои форточки, а ИБМ продолжила
продвигать получившееся.
OS/2 Warp3
Примерно к 93-95 году у полуоси еще были шансы. Альтернативой на те
времена ей были только Windows форточки 3.0-3.1-3.11, с наивысшими
достижениями -- встроенной сетью для рабочих групп и кооперативной
многозадачностью (Имеется в виду, что программа отдаст процессорное
время другой программе только если сама этого захочет, а не потому что
надо как при <<честной>> многозадачности, то есть если одна программа
висла -- то висла система целиком). А если задача решила повисеть, юзеру
остается только подождать. Впрочем, кооперативная многозадачность суть
не бог весть какая проблема, поскольку даже у Маков оно такое было аж до
2000 года, до Mac OS X). Но то про винду, а вот и полуось была тоже не
сахар -- драйверов под железо нет, требования к железу (проц и память
прежде всего) по тем временам просто чудовищные (нет, ну вы только
вдумайтесь! Эти буржуи в 1993-м хотели целых 8 (восемь!) мегабайт озу!,
родных программ -- почти нет, процедура установки и настройки -- примерно
как у gentoo. Хотя даже Windows 3.1 требовала под себя только от 2
мегабайт (не гигабайта, а именно мегабайта), и при этом на ней даже
можно было работать в Microsoft Word 6.0/Excel 4.6 тех времен, мало,
кстати, изменившихся по основным функциям.
То есть в это время Микрософт тоже не спал. В 95 году была выпущена
Чикага, виндовз95, ставшая могучим прорывом -- уже, можно сказать, почти
нормальная система защищенного режима и вытесняющей многозадачности,
работая под которой можно было почти забыть про досовскую основу. В
которой тоже уже была нормальная графика, унифицированная работа с
устройствами (программерам на радость, особенно всяким гамерописателям,
которым стало не надо из каждой игрушки лезть прямо копытами в
видеокарты и прочее железо, то есть каждый раз писать эти куски заново,
и под каждое новое железо) и всё то прочее, что сейчас, через 15 лет,
считается само собой разумеющимся.
OS/2 Warp4 Rus
Параллельно развивалась и НТя (по тем временам 3.5). С не сильно
большими успехами, ввиду еще бОльших требований к железу, и еще большими
заскоками. Но уже с нормальной NTFS (расово развитым на основе полуосной
HPFS, на которую Микрософт имела права), нормальной внутренней
структурой (практически на 100% унаследованной из DEC'овской VAX/VMS,
ведущий архитектор которой как раз в те годы перебежал к мелкомягким) и
прочим.
Говорить о том, что с выходом маздая 98 и нти 4.0 полуось слилась, по
меньшей мере преждевременно, поскольку в 1999 году была выпущена версия
4.50, имевшая ряд существенных улучшений и включающая такие новые
возможности, аналоги которых отсутствовали на тот момент в продуктах M$.
Что, впрочем, действительно не помещало юзерам мигрировать в
красиво-завлекательное щасте от Мирософта.
(Источник: Луркоморье, сокращено)
На сервисе Сабскрайб.Ру завелся Блогун (blogun.ru).
А именно, в архиве выпусков рассылок на некоторые слова ставится
рекламная гиперссылка.
И теперь не поймешь, где мои авторские ссылки, а где рекламные ссылки
от Блогуна.
Это не есть хорошо, надо подумать, что делать.
В присылаемых по почте выпусках блогунских ссылок пока не ставят
Hi, All!
13 апреля я купил себе дешевый (так называемый бюджетный) телефон
Nokia 1616. Оказывается, его можно перепрошивать (там внутри
флеш-память), только у телефона нет стандартного разъема и нужно
припаивать кабель к двум секретным точкам на плате. Таким образом
можно разработать и зашить в него мобильную версию ОС Proolix! Правда,
меня останавливает неумение паять и боязнь испортить телефон, но идея
хорошая, годная.
В дружественную рассылку <<Создай операционную систему УжОС>>
(http://subscribe.ru/catalog/comp.soft.othos.kretos/), где дискуссия
ушла в сторону "а давайте изучать внутренности Windows 7 и создадим
безглючный аналог Виндов" я написал вот что:
Кстати, коллеги, я думаю, не стоит зацикливаться на изучении только Виндов
и Линуксов. Всё это мейнстрим в мире ОС. Любому системному программисту
надо знать новые веяния - микроядерную архитектуру, ОС реального времени,
HURD, ОС для однокристалльных микроконтроллеров, распределенные ОС,
завалишинский Phantom, ОС для телефонов и стиральных маших и т.п. Да и
историю надо знать, по крайней мере в качестве хобби - всякие MSDOS, RT-11,
CP/M, VM/360. И системы виртуализации типа VDS тоже по сути почти ОС
Даже если среди нас не заведется второй Торвальдс, Кокс, Таненбаум или
Комер, изучение существующих ОС и попытка сделать что-то своё много даст.
"Нас нас напали!" (с) Warctaft II
На меня пришла жалоба. Душераздирающие подробности по ссылке:
http://prool1.kharkov.ru/archives/310
Всех пользователей ОС Пруликс, всех разработчиков, которые что-то пишут
или портируют под Пруликс, всех менеджеров компьютерных магазинов,
которые продают ноутбуки с предустановленной ОС Пруликс и вообще всех,
всех, всех
с праздником 23 Февраля!
Ура!
Hi, All!
Кстати, написание ОС и написание мада - задачи близкие. Мад - это по
сути тоже специлизированная ОС со своим командным интерпретатором,
графическими оболочками, ядром, процессами (или их эмуляциями),
демонами. Линус Торвальдс начал разработку своей ОС как разработку
терминальной программы, а потом пошло-поехало (кстати, этот постинг я
наибраю в середе ОС Ubuntu Linux).
Посмотрите, например, на мад сервер FluffOS, который уже почти ОС:
http://en.wikipedia.org/wiki/FluffOS
Даешь расово верную ОС Пруликс как основную национальную ОС для России и
Украины!
Так победим!
Hi, All!
Векторную гипертекстовую национально и расово верную ОС Пруликс я слегка
подзабросил. Последнее телодвижение было в начале 2006 года, когда я
начал реализовывать поддержку FAT-32 и даже сделал ее чуть больше, чем
наполовину. А с загрузкой с флешек не получилось, так как все мои
рабочие машины аппаратно не поддерживают загрузку с USB и тестировать
оказалось негде. Но файловая система на флешке оказалась тем же старым
добрым FAT'ом
Правда, примерно с неделю назад я экспериментировал со старой машиной
133 МГц - 16 М на предмет извлечь из нее немного фана и лулзов и для
проверки работспособности грузился с bootable Proolix CD (успешно). Но
окончилось все тем, что я поставил на эту машину старую версию FreeBSD,
а именно 4.9. Душе- и байтораздирающие подробности здесь:
http://prool.livejournal.com/1083127.html Кстати, программировать я не
бросил, сейчас делаю онлайновую игру класса MUD:
http://subscribe.ru/archive/inet.thoughts.newsofprool/200807/02232743.html
Это сообщение проклято, первые две попытки отправить его в дискуссионный
лист не прошли, пришлось в качестве теста посылать бут-сектор.
Длина бут-сектора 512 байт!
Ура!
PAGE ,79
jumps
; FDD Boot sector ver. 0.0.4.0 20-Apr-96 from Proolix operating system
; Copyright (C) Serge Pustovoitoff, 1993-1996
; При отладке бута учитывались многочисленные полезные замечания, которые
; сделал Алекс Семеняка и Юрий Белотицкий (bela@p*****.ua)
; History in stack order
; 0.0.4.0 20-Apr-96 загружаемый файл /boot может быть сжат pklite'ом
; 0.0.3.1 24-Mar-96 replace chr1 '.' -> char1 176
; 0.0.3.1 12-Mar-96 PSPSeg = 3050h
; 0.0.3.0 25-Feb-96 PSPSeg = 1050h
; 0.0.3.0 10-Jan-96 - загружаем не /kernel, а /boot (см. файл history,
; запись 0.0.1.4 10-Jan-96
; 0.0.2.3 16-Sep-95
; 0.0.2.2 15-Sep-95 - разветвление на FDD и HDD бут сектора
; 0.0.2.1 25-Feb-95 - до этого история не велась... (см. также общую историю
; в файле kernel/history.doc
; Смещение, связанное с тем, что во время компиляции
; адресом начала является 100h, а во время
; выполнения 7c00h
off equ 7c00h-100h
Drive equ 0 ; Загрузочный диск A: (FDD 0)
PSPSeg equ 3050h ; Сегментный адрес, куда будет
; загружен /boot (точнее, его PSP)
FATaddr equ Buff
; Макрос. Вывод одного символа через ROM BIOS.
chr1 macro sym
; Not worked in graph mode (registr bl - background color!)
; NO SAVE REGS !!!
mov ax,0e00h+sym
int 10h
endm chr1
sayr macro str
; NO SAVE REGS !!!
; Макрокоманда, аналогичная макрокоманде say. Только say использует
функцию 9h
; ДОС, а sayr - функцию ROM BIOS (функция 0eh прерывания 10h)
; В графических режимах не работает
mov si,offset str
call sayr_proc
endm sayr
locals
.model tiny
.code
org 100h
Begin: jmp short start
; Таблица параметров диска
db 90h ; NOP
; '12345678'
OEM db 'Proolix '
SectSiz dw 512
ClustSiz db 2
ResSecs dw 1
FatCnt db 2
RootSiz dw 112
TotSecs dw 720
Media db 0fdh
FatSize dw 2
TrkSecs dw 9
HeadCnt dw 2
HidnSec dd 0
BigNo dd 0 ; Big total no of sectors
db 0 ; Head No
db 0h ; Physical drive no
db 29h ; Extended boot signature
;dd 1 ; Volume serial no
;FATaddr label word ; !
dw 0 ; ! internal vars
StartClu dw 0 ; !
Lbl db 'BOOT ' ; Volume label
db 'FAT12 ' ; File system ID
RootSize dw ' '; use 2 last bytes of File system id
OldVec dw 2 dup (0)
start:
; push CS
; pop DS
; sayr OEM+off
; Значения регистров после загрузки boot-сектора
; CS:IP = 0:7C00 SS=30 SP=F6 ES=0
; 0:0 - 0:200 - таблица прерываний
; Стек: c 30:F6 (0:3F6) растет к 0 (0:200-0:400 - стек)
; ROM BIOS area 0:400-0:500
; cli
; Модификация diskette param table (взято из бута MSDOS 6.0)
; нужен ли в нижеследующей команде префикс ES: ?
lds si,dword ptr ES:[78h] ; DS:si - vector diskette param table
; diskette param tble
; Bytes:
; 0 - bit 0-3 - SRT (step rate time), 4-7 head unload time
; 1 - bit 0: 1 if DMA, 2-7 head load time
; 2 - motor wait (in 55 ms)
; 3 - sec size (0 - 128, 1 - 256, 2 - 512, 3 - 1024)
; 4 - EOT (finish sector on track)
; 5 - interval length for ReadWrite
; 6 - DTL - Data Transfer Length (maximal)
; 7 - interval length for formatting
; 8 - Filler
; 9 - head settle time (in ms)
; a - motor start time (in 1/8 s)
mov byte ptr [si+9],0Fh ; head settle := f
mov cx,TrkSecs+off ; TrkSecs
mov [si+6],cl ; Data Transfer Length
; sti
mov dl,Drive
xor ax,ax
int 13h ; Disk dl=drive ah=func 00h
; reset disk, al=return status
jc l_err
push CS
pop ES
push CS
pop DS
; Вычисления
mov al,byte ptr FatCnt+off
cbw
mov cx,word ptr FatSize+off
mul cx ; ax*cx -> dx:ax
add ax,word ptr ResSecs+off
; ax - Root Beginning Sector
mov word ptr StartClu+off,ax
PUSH ax
mov ax,word ptr RootSiz+off
mov cx,32
mul cx
mov cx,word ptr SectSiz+off
div cx ; dx:ax / cx -> ax; mod -> dx
or dx,dx ; Если остаток ненулевой, то прибавляем еще один
jz l_ll ; сектор (последний неполный сектор root'а)
inc ax
l_ll:
; ax - Root Size in Sectors
add word ptr StartClu+off,ax
mov cx,ax
mov word ptr RootSize+off,ax
POP ax ; ax - Root Bg Sec
@loop: ; Загрузка корневого каталога посекторно и посекторный поиск в нем
; имени ядра
push cx
push ax
mov bx,offset Buff+off
mov dl,Drive
push ax
call SecRead
jc l_err
pop ax
; push ax
; chr1 'R'
; pop ax
mov cx,16 ; root entryes in 1 sector
@l: push cx
mov cx,11
mov di,bx
mov si,offset Lbl+off
rep cmpsb
je l_found
pop cx
add bx,32
loop @@l
pop ax
inc ax
pop cx
loop @@loop
; end of load root dir
; HЕ HАШЛИ ЯДРА
l_err:
; chr1 'E'
call ohw
xor ah,ah
int 16h
int 19h
;Vis: jmp short Vis
sayr_proc proc ; Ver 0.0.1 9-Dec-93
; Процедура вывода строки при помощи функций BIOS
; Вход: DS:SI - ASCIIZ строка.
; NO REG SAVED !!!
; В графических режимах не работает
; cld
sayr_l1:
lodsb
or al,al
jz sayr_ret
mov ah,0eh
int 10h
jmp short sayr_l1
sayr_ret:
ret
sayr_proc endp
l_found: ; HАШЛИ !
pop cx
; Found kernel
; bx - kernel dir record
; word ptr [bx+1ah] - 1st cluster
mov ax,word ptr [bx+1ah] ; ax - 1st cluster
; Загрузка FAT в ОЗУ
PUSH ax ; save ax with 1st clu no
mov ax,word ptr ResSecs+off
mov bx,offset FATaddr+off
mov cx,word ptr FatSize+off
; Загрузка ядра покластерно (по цепочке из FATа)
; Загрузка FAT
@l: mov dl,Drive
push ax
call SecRead
jc l_err
pop ax
add bx,512
inc ax ; Next sector!
; push ax
; chr1 'F'
; pop ax
loop @@l
mov al,byte ptr ClustSiz+off
cbw
mov dx,word ptr SectSiz+off
mul dx
mov cx,ax ; Cluster Size in Bytes
POP ax ; restore ax (1st clu no)
mov bx,PSPSeg
mov ES,bx
mov bx,100h
l2: mov dl,Drive
call CluRead
push ax
chr1 176
pop ax
add bx,cx
call NextClu ; set ax
jnc l2
; EXEC! Запуск ядра
; mov ax,PSPSeg
; mov DS,ax
; mov ES,ax
; cli
; mov SS,ax
; mov SP,0fffeh
; sti
; sayr OEM+off
; *(int far *)MK_FP(PSP,2)=0x9FFF; /* для LZEXE */
mov ax,PSPSeg
mov DS,ax
cli
mov SS,ax
mov SP,0fffeh
sti
; mov ES,ax
; mov word ptr ES:[2],9FFFh
db 0eah ; JMP PSPSeg:100
dw 100h,PSPSeg
NextClu proc ; Input: ax - cluster no
; Output: ax - next cluster from FAT
; cf=1 if EOF
; Use global var:
; FATaddr dw 0
; REGS SAVED !
push bx
push cx
push dx
push si
push di
mov di,ax
mov bx,3
mul bx ; dx:ax := ax * bx
shr ax,1 ; ax := ax /2
; ax - addr in FAT
mov si,ax
mov bx,offset FATaddr+off
mov ax,word ptr [bx+si]
test di,1
jz @@1
mov cl,4
shr ax,cl
jmp @@2
@1: and ax,0fffh
@2:
; cmp ax,0fffh
; je @@cf
; cmp ax,0ff7h
; je @@cf
cmp ax,word ptr TotSecs+off
ja @@cf
clc
@ret:
pop di
pop si
pop dx
pop cx
pop bx
ret
@cf: stc
jmp @@ret
NextClu endp
SecRead proc ; ver 0.0.1 3-Nov-94 (for FDD boot)
; Read absolute sectors
; Input: ax - abs sec number
; dl - drive (for int 13h Fn=2)
; ES:bx - buffer
; DS - data segment reg
; Use global variables:
; word ptr HeadCnt+off
; word ptr TrkSecs+off
; Output: cf=1 if error
; NO ALL REGS SAVED !!!
; push ax
push bx
push cx
push dx
push si
push di
mov si,bx ; save bx & dx
mov di,dx
PUSH ax
mov ax,word ptr HeadCnt+off
mov cx,word ptr TrkSecs+off
mul cx ; dx:ax := HeadCnt * TrkSecs
mov bx,ax ; bx = HeadCnt * TrkSecs
POP ax
xor dx,dx ; dx:ax - Abs Sec No
div bx ; ax=Track=AbsSec/(HeadCnt*TrkSecs); dx - mod (Sec
on Cyl)
mov bx,ax ; bx - track no
mov ax,dx
xor dx,dx ; dx:ax - module (Sec on Cyl)
div cx ; Head=[dx:ax]/TrkSecs;ax - Head; mod (dx) - Sec on
Head-1
inc dx ; dx - Sec on Head
mov cx,5
l_loop:
push cx
mov cl,dl ; sector
mov ch,bl ; track ; Warning: track < 255 !!!
mov bx,si ; Restore bx - offset for buff
mov dx,di ; Restore dl - drive no
mov dh,al ; head
mov ax,0201h; Fn=02, Read 1 sector
int 13h
jnc l_break
pop cx
loop l_loop
jmp short l_ret
l_break:
pop cx
l_ret:
pop di
pop si
pop dx
pop cx
pop bx
; pop ax
ret
SecRead endp
CluRead proc ; Read cluster
; Input: ax - cluster number
; dl - drive (for int 13h Fn=2)
; ES:bx - buffer
; DS - data segment reg
; Use global variables:
; StartClu dw 0 ; Number sector of 1st
cluster
; ClustSiz db 2
; SectSiz dw
; ALL REGS SAVED !!!
push ax
push bx
push cx
; Sector = StartClu + ((Clu-2) * ClustSiz)
PUSH bx
PUSH dx
dec ax ; ax:=ax-2
dec ax ;
mov bx,ax
mov al,byte ptr ClustSiz+off
cbw
mov cx,ax
mul bx
add ax,word ptr StartClu+off
; ax - sector
POP dx ; Restore dl
POP bx
; cx - ClustSiz
@l:
push ax
call SecRead
jc l_err
pop ax
add bx,word ptr SectSiz+off
inc ax
loop @@l
pop cx
pop bx
pop ax
ret
CluRead endp
ohw proc
; Вывод слова в HEX-виде. Вход: слово в ax.
; Все регистры сохраняются.
; Вызывает подпрограмму ohb
push ax ; Сохр. ради al.
mov al,ah
call ohb
pop ax ; Восст. al.
call ohb
ret
ohw endp
ohb proc
; Procedure output hex byte Ver 0.1.1 6 Dec 93 via BIOS
; Input: AL - byte
; All regs. reserved ;)
; Not worked in graph mode. bl - bg color !!!
push ax
push cx
push dx
mov dl,al
mov cl,4
shr al,cl
call ohb1
mov al,dl
and al,0fh
call ohb1
pop dx
pop cx
pop ax
ret
ohb endp
ohb1 proc ; Regs not saved !!!
push ax
cmp al,9
ja @@_1 ; al > 9
; al <= 9
add al,'0'
jmp @@_out
@_1: add al,'A'-10
@_out: mov ah,0eh
int 10h
pop ax
ret
ohb1 endp
Buff label byte
end Begin
Если Вы хотите поработать с важным для себя сайтом (онлайн-банкингом
или важным веб-мейл ящиком), то Ваша машина должна быть чистой,
то есть, запущен должен быть только один браузер и всё, больше никаких
программ (за исключением антивирусного монитора и фаерволла,
естественно, которые должны быть запущены всегда и запускаться
автоматически при включении компьютера).
Лучше всего перед началом важной работы перезагрузиться (и после
окончания работы тоже!)
В браузере должно быть открыто только одно окно - с тем сайтом, который
Вам нужен. На этот сайт надо попадать сразу, например, по закладке.
При старте браузер должен стартовать с пустой страницы (about:blank)
Поработали, обязательно закройте сессию аутентификации (то есть, нажмите
на сайте "Выход" или "Logout"), закройте браузер и перезагрузитесь.
А еще хорошо, чтобы Ваш браузер вообще не хранил куки (cookies), а
удалял их при выходе. Чем могут грозить незакрытые сессии и хранящиеся
куки: случайно открытый в другом окне вредоносный сайт или троянская
программа могут методом кросс-скриптинга (XSS) сделать от Вашего имени
некоторые действия на вашем аккаунте (например, поменять пароль или
снять деньги со счета).
Да и вообще, нажимать на любую ссылку в браузере
надо только в том случае, если Вы уверены, что это действительно Вам надо.
Жизнь вообще очень жестокая штука, и Интернет в этом смысле не исключение.
И убедиться в этом можно, потеряв важные и ценные данные или деньги,
просто зайдя на сайт с эротикой.
Искренне Ваш,
Сергей "Пруль" Пустовойтов, старший глюкмастер.
http://www.prool.kharkov.org
Решил опять взяться за свою ОС Proolix, а именно реализовать загрузку ОС
с USB flash drive. Кто может помочь ссылками на материалы по загрузке с
USB, ссылками на API, документацию и т.п.?
Кроме того, для обсуждения проблем этой ОС только что создал
ЖЖ_сообщество proolix:
http://community.livejournal.com/proolix/
Google недавно реализовал свой очередной проект: поиск по открытому
исходному коду. Там и код Пруликса тоже есть ;)
Рассылка близкой тематики (об операционных системах) "ОСознанная
информация" (http://subscribe.ru/member/catalog/comp.soft.othos.osinfo)
закрыта по причине длительного невыхода
Сильно!
-----Original MessageFrom: Serge Pustovoitoff [mailto:pro***@i*****.ua]
Sent: Tuesday, April 04, 2006 12:51 AM
To: Матовых Виктор Дмитриевич
Subject: Чего нового
А ничего ;)
Зарелизил на сайте http://prool.kharkov.org/proolix очередную версию
Пруликса, от 14 февраля. Теперь работа с FAT-32 работает еще правильнее
(пока read only)
На очереди: возможность и писать тоже, поддержка длинных имен LFN и
работа Пруликса в Windows XP (если получится). В Windows 98 ядро
Пруликса можно запустить в ДОС-сессии и отлаживать, а в XP система
ругается по поводу прямого доступа к винту. Если обойти защиту не
удастся, нужно будет сделать для отладочного режима простенькую затычку-HAL.
Еще надо подумать о возможности загрузки Пруликса из ASP Loader'а. И по
сети. И с флеш-брелка
Кстати, архитектура Proolix - это "супермонолитное" ядро, в ядро входят
не только все библиотеки, но даже простой командный интерпертатор и
несколько утилит (например, ls и cat, только они называются l и Cat,
чтобы не путаться с внешними ls и cat). А было время, когда в ядре был
свой эмулятор MSDOS, но я его уже вынес во внешнюю утилиту mse
Используя метод тыка и некоторую нагугленную информацию вчерне написал
поддержку FAT-32. По крайней мере ядро Пруликса только что прочитало
корневой каталог моего FAT-32-винта (а корневой каталог в FAT-32 - это
не область диска как в FAT-12/16, а обычный файл, представляющий собой
цепочку кластеров)
Зарелизил ЭТО здесь:
http://prool.kharkov.org/proolix
http://www.users.itl.net.ua/~prool/proolix.html
4 февраля после длительного перерыва опять начал ковырять Пруликс
(Proolix-d). В нем, как известно, уже реализована поддержка файловых
систем FAT-12 и FAT-16, а я решил методом тыка реализовать и FAT-32.
Пока не получилось, ищу в Инете доку, разбираюсь, уже узнал много нового
;) Кроме того, код ядра разросся и уже почти не влазит в модель памяти
small (64К код и 64К данные). Надо выносить из ядра все то, что в нем
нафиг не нужно.
И последнее: Использование операционной системы Proolix на территории
США запрещено (не в смысле запрещено какой-то организацией, а просто не
рекомендуется, так как в Proolix-d использована поддержка FAT).
Proolix-l использовать можно ;)
Prool
Ну и свинство! Выходит, FAT на мыло?
Похоже, что моя ОС Proolix становится варезом (из-за патентов на FAT).
Патент еще не принят, поэтому скачивайте, пока еще лежит ;)
http://prool.kharkov.org/proolix
Пора уходить в тень :)
Подпись: PrO0l, Ze DaRk HaKeR
Похоже, что моя ОС Proolix становится варезом (из-за патентов на FAT).
Патент еще не принят, поэтому скачивайте, пока еще лежит ;)
http://prool.kharkov.org/proolix
Пора уходить в тень :)
Подпись: PrO0l, Ze DaRk HaKeR
Автор: Владимир Парамонов
Опубликовано 12 января 2006 года
Управление США по патентам и торговым маркам (USPTO) признало
действительным патент Microsoft за номером 5,579,517, описывающий
файловую систему FAT (File Allocation Table).
Патент на FAT был выдан Microsoft еще в 1996 году, а споры вокруг того,
действителен ли он, разгорелись около двух лет назад. Дело в том, что
корпорация Microsoft рассматривала возможность лицензирования файловой
системы FAT для использования в накопителях на основе флэш-памяти.
Предполагаемая стоимость отчислений должна была составить либо 0,25
доллара США в расчете на каждый отдельный носитель, либо до 250 тысяч
долларов на производителя.
При этом многие эксперты указывали на то, что политика лицензирования
FAT сделает невозможным применение этой файловой системы в продуктах с
открытым исходным кодом. Таким образом, Microsoft теоретически могла бы
использовать патент для подавления конкуренции со стороны сообщества
open source. В 2004 году общественный фонд Public Patent Foundation
(PUBPAT) потребовал USPTO пересмотреть патент за номером 5,579,517,
который вскоре был признан недействительным.
Однако Microsoft опротестовала данное решение, представив на изучение
комиссии USPTO дополнительные материалы. В результате, на днях
Управление США по патентам и торговым маркам вынесло окончательное
решение, признав за Microsoft право на изобретение, сообщает InfoWorld.
Таким образом, патент за номером 5,579,517 получил вторую жизнь, и
Microsoft может вновь требовать от сторонних производителей выплаты
лицензионных отчислений. Впрочем, пока не ясно, как корпорация
распорядится патентом и будет ли он использоваться для получения выплат
от производителей флэш-памяти. Комментариев по данному вопросу со
стороны Microsoft пока не поступило.
Источник информации: http://www.ibusiness.ru/news/246573/
Написание собственных микрооперационных систем - одно из любимых
времяпровождений программистов. Оно помогает изучить архитектуру
процессора и прочие тонкости, да и вообще, ОС - это opus magnum и каждый
geek мечтает написать свою ОС.
Вот я, например, иногда пописываю ОС Proolix. Иногда ко мне на огонек
прибиваются другие гики.
Вот например, пришло письмо от Николая Шатохина:
начало цитаты
Посмотрите на мою систему http://whitecross.narod.ru/os_21_10_2005.zip
Загрузчик bootsect загружает код находящийся после него (image.bin образ
для записи на дискету). sb.bin с прилинкованным (по incbin) к нему
kernel.bin собственно само ядро. Если грузить его с помощью bootsect то
все нормально, на дискете тогда нет файловой системы. А если грузить с
помощью загрузчика boot.bin то система перезагружается при загрузке. В
чем проблема?
конец цитаты
Хакеры и хэккеры, желающие занять время и мозги могут поковырятся в этой
проблеме
Hi, All!
Как я уже говорил, иногда свои ответы на вопросы, касающиеся Пруликса,
полученные по е-мейлу или в icq я дублирую сюда, для всеобщего сведения.
Учитывая то, что у Пруликса документация и комментарии в исходниках
очень скудные, эти ответы, я думаю, будут полезны.
Вот еще свежее:
> Перерыл исходники пруликса, но не нашел там модулей файловой системы.
> Не подскажите, как они называются?
> З.Ы. Если на дискете нет файловой системы, то сможет ли ось читать и
> записывать на нее
> файлы (если в ней реализована fat12)
Начну со второго вопроса. Если на диске нет файловой системы, то писать
на диск (дискету) файлы невозможно в принципе, так как файлы вне
файловой системы не существуют. Если на диске нет файловой системы, то
адресуемой единицей информации, из которых состоит диск, будет
физический блок - сектор (размер сектора 512 байт). Для дискет еще можно
писать читать целыми дорожками.
А если на диске есть файловая система, то появляется понятие логического
блока. Для FAT-12/FAT-16/FAT-32 это кластер, размер кластера может быть
разным от 1 сектора и больше. Размер кластера в секторах указан
бут-секторе в переменной ClustSiz (файл src/boot/boots.asm Proolix-d)
Теперь о работе с файловой системой. Эта работа реализована в системе
Proolix-d. Там реализована работа с FAT-12 и FAT-16. Это все реализовано
в ядре, см. каталог src/kernel:
Файл io.c. Функции:
open() - открыть файл
read() - читать из файла
write() - писать в файл
close() - закрыть файл
absread.c и abswrite.c - чтение и запись физического блока (сектора) на диск
cluread.c - чтение кластера
sec4clu.c - вычисление номера первого сектора кластера
dir.c - работа с каталогами
Файл k2.c:
Функции
LinkClu() - определение по номеру кластера номера следующего кластера в
цепочке, составляющей файл
GetFreeClu() - получить номер свободного кластера
AppendClu() - формирование цепочки кластеров (цепляем к цепочке еще один
кластер)
NextClu() - вычисление следующего кластера и загрузка его в кеш
В упрощенном виде работа с FAT реализована в загрузочном секторе.
Загрузочный сектор Пруликса умеет найти корневой каталог, в нем файл по
имени BOOT, загрузить его и передать ему управление
Prool
Матовых Виктор Дмитриевич пишет:
>>Да вроде живы пока и следим за новостями...
>
> Судя по статистике листа новости здесь не часто.
> Что за ОСь вообще?
Лучше всего об этой ОС сказано здесь -
http://www.osrc.info/content.php?article.71
А вот новые (еще не дописанные полностью) описательные ресурсы по этой
ОС, основанные на мощной технологии Wiki:
http://dir.osrc.info/Proolix
http://www.npj.ru/prool/proolix
И самая последняя новость: boot-менеджер проекта Proolix-l умеет
загружать ядра. Уже сделано первое отладочное ядро (ядрышко), цель
которого только перейти в защищенный режим и все. Ядрышко вызывает
перезагрузку компа ;) (чего быть не должно)
Prool
Hello, Матовых Виктор Дмитриевич <Matovy***@m*****.ru>:
> Всем привет! Есть кто живой в этом листе?
>
Да вроде живы пока и следим за новостями...
With best regards, KaLGaN.
Всем привет! Есть кто живой в этом листе?
Ядра уже загружаются. А именно: бут-сектор загружает бут-менеджер,
бут-менеджер имеет простенький командный интерпретатор с несколькими
командами и, в частности, умеет загружать бинарные файлы как ядра ОС.
Самих ядер пока еще не написано.
Вся фишка в том, что и бут-сектор и бут-менеджер написаны на ассемблере,
а полностью писать все на асме мне влом, да и неправильно это с точки
зрения идеологии.
Сейчас бут-менеджер умеет загружать ядра типа образа памяти (типа bin).
Буду разбираться с форматом ELF и загружать ядра, написанные на С и
скомпилированные в ELF.
По этому поводу несколько глупых вопросов:
- может ли компилятор gcc компилировать не в ELF или a.out, а в некое
подобие .com (то есть, в код, работающий в 16-разрядном реальном режиме
и занимающий менее 64К, а также не требующий
настройки адресов)?
Ответ, скорее всего нет, поэтому придется еще и с защищенным режимом
разбираться
Сделал загрузочный сидюк с ОС Proolix-d
Это оказалось неожиданно просто при помощи Nero (надо сделать
загрузочную дискету с Пруликсом и ее образ Nero пишет на диск)
У шизофреников обострения происходят обычно весной и осенью (кстати,
почему?), у меня тоже. Близится осень и я опять начал писать Proolix.
Вчера немного пописал бут-менеджер для "линуксового" Proolix-l, получил
фан. Много забыл в ассемблере, впору на монитор стикер вешать "Источник
слева, приемник справа". Кстати, интересно бы на CVS root натравить
систему отображения статистики типа MRTG и отобразить по месяцам, дням
недели, часам частоту изменений (commit'ов)
http://prool.kharkov.org/proolix
При разработке драйвера вечного двигателя для Пруликса возникла
следующая задача:
Есть два хитро-представленных числа с дробной частью, размером с байт, и
нужно их перемножить в микроконтроллере без аппаратного перемножителя за
минимальное время.
Числа выглядят так:
старшие четыре бита этого байта - это целая часть, младшие 4 бита-
дробная часть (количество 1/16-х).
0 = 0000 0000 (в двоичном представлении),
1 = 0001 0000,
2 = 0010 0000,
1.5 = 0001 1000 (то есть, 1.5+1.5=3, то есть 0011 0000).
Это же числа могут быть представлены в двухбайтном виде (старший байт -
целая часть, младший - дробная, то есть 1= 0000 0001, 0000 0000), не
важно. Важно то, что если 1 * 1, то это должно быть 1, а 2 * 2 = 4
соответственно, 1 * 1.5 = 1.5, 2 * 1.5 = 3 и т.п. Это коэффициенты
скорости, которые нужно перемножить. Что посоветуете? Тупо перемножать
два байта в таком представлении, а потом делить на 16 (сдвигать 4 раза),
или может есть более изящное решение?
Hi, All!
О пользе рекламы и спама (о пользе ли?)
Только что случайно узнал о новом сайте о разработке ОС и
программировании
http://grudina.info/
А узнал я об этом из гостевой одного из сайтов, посвященных КВН.
О как. Таким образом сообщение об этом URL вполне можно было
расценивать как оффтопик и спам (впрочем, сообщение состояло из одного
слова "Привет", а URL был указан в контактных данных)
--
Prool