Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Уникальная игра, объединяющая популярные механики Match3 и пошаговые бои!

Магический мир

Мидкорные, Ролевые, Три в ряд

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

DOS + Электроника

С этим тегом используют

Игры Ретро-игры Windows Компьютерные игры Ностальгия Компьютер Олдскул AliExpress Гаджеты Товары Китайские товары Техника Вертикальное видео Самоделки Все
5 постов сначала свежее
121
Timeweb.Cloud
Timeweb.Cloud
1 год назад
Лига программистов C/C++

Сборка MS-DOS 4.0⁠⁠

Автор текста: dlinyj

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

Совсем недавно появилась следующая новость: На GitHub опубликован исходный код MS-DOS 4.00 под лицензией MIT. Раз появились исходные коды, стало сразу интересно: а можно ли собрать эту операционную систему?

Задача оказалась нетривиальной и совсем неочевидной. Оказывается, что исходные файлы DOS не так-то уж и легко переносятся в git, и уж как минимум, не как текстовые файлы в кодировке UTF-8. Но, к счастью, в отличие от утечек исходников MS-DOS 6.0, здесь имеется полный комплект файлов и инструментов, достаточный для корректной сборки и тестирования. Остались сущие нюансы, которые попили много крови.

Поэтому я, как и многие — начал свои эксперименты по сборке MS-DOS 4.0, с исправлением ошибок, а также возможностью исследования исходных кодов и тестирования их на реальном железе.

В статье же изложено краткое руководство по сборке и созданию загрузочной дискетки.

❯ Инструментарий


Собирать всё буду в Linux Mint (читай Ubuntu). Средой DOS для сборки выбрал dosbox, к сожалению, это не самый лучший вариант, потому что там идёт замедление частоты (чтобы старые программы корректно работали), поэтому сборка идёт достаточно долго. Лучше всего использовать любой удобный DOS, запущенный в виртуальной машине.

Для создания загрузочной дискеты и тестирования полученной сборки буду задействовать виртуальную машину qemu. А чтобы получить дискеты с готовым образом, я буду использовать установочную дискету MS-DOS 4.0 (найденную тут см. 4.00 OEM [Sampo]).

Прежде чем пойдём дальше — важное замечание:

Никаких чужих прав задеть не собираюсь, все модификации кода были сделаны исключительно в юмористических целях, и не подлежат распространению. Модифицированные исходники удалены.

❯ В чём сложности сборки?


Проблемы две:

  1. Некорректная инициализация переменных среды (в самом bat-файле SETENV.BAT содержится ошибки или опечатки).

  2. Проблемы с кодировкой при переносе кода с дискеток DOS в GIT с кодировкой UTF-8.


Первая проблема легко исправляется даже самостоятельно, при беглом анализе исходного кода. Она легко вскрывается при сборке, дальше просто необходимо внести правки, либо создать свой обновлённый bat-файл, который будет инициализировать переменные среды окружения.

Значительно сложнее обстоят дела с тем, что в части кода, при переносе в UTF-8, побились некоторые символы. У меня была попытка сборки, которую я описывал у себя в ЖЖ, и, в конце концов, я получил вот это:

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

Это достаточно частая и болезненная проблема со старыми исходниками времён DOS. С аналогичной задачей я столкнулся и при попытке собрать программу RAM View. Об этом пути и исправлении проблемы, я подробно написал в статье Правка чужого кода.

Здесь же мы исключим ручной труд и автоматизируем исправление проблем с кодировками.

❯ Подготовительные операции перед сборкой


Итак, шаги по сборке ДОС. Клонируем оригинальный репозиторий:

git clone https://github.com/microsoft/MS-DOS.git

Исправляем проблемы с кодировками:

sed -i -re 's/\xEF\xBF\xBD|\xC4\xBF|\xC4\xB4/#/g' MS-DOS/v4.0/src/MAPPER/GETMSG.ASM
sed -i -re 's/\xEF\xBF\xBD|\xC4\xBF|\xC4\xB4/#/g' MS-DOS/v4.0/src/SELECT/SELECT2.ASM
sed -i -re 's/\xEF\xBF\xBD|\xC4\xBF|\xC4\xB4/#/g' MS-DOS/v4.0/src/SELECT/USA.INF

Переходим в рабочую папку:

cd MS-DOS/v4.0

Перекодируем все текстовые файлы в формат MS-DOS:

find -iname '*.bat' -o -iname '*.asm' -o -iname '*.skl' -o -iname 'zero.dat' -o -iname 'locscr' | xargs unix2dos -f
find -iname '*.BAT' -o -iname '*.ASM' -o -iname '*.SKL' -o -iname 'ZERO.DAT' -o -iname 'LOCSCR' | xargs unix2dos -f


и создаём там обновлённый бат-файл для переменных среды окружения, следующего содержания:

$ cat src/e.bat
@Echo off
echo setting up system to build the MS-DOS 4.01 SOURCE BAK...
set CL=
set LINK=
set MASM=
set COUNTRY=usa-ms
set BAKROOT=e:
rem BAKROOT points to the home drive/directory of the sources.
set LIB=%BAKROOT%\src\tools\bld\lib
set INIT=%BAKROOT%\src\tools
set INCLUDE=%BAKROOT%\src\tools\bld\inc
set PATH=%BAKROOT%\src\tools;%PATH%

В принципе этих операций достаточно для сборки, а то что ниже — это лично моё хулиганство, чтобы продемонстрировать, что DOS в действительности собрался, и нет подмены файлов. Я заменяю компанию Microsoft своим ником:

find -name "*.ASM" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.INC" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.H" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.MAC" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.MSG" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.C" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.CLB" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.SKL" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +

Всё, теперь исходники подготовлены, для того чтобы их можно было корректно собрать.

❯ Сборка


Собирать буду в dosbox, как показала практика — это не самое лучшее решение, сборка занимает около часа, что, мягко скажем, раздражает.

Запускаю dosbox:

dosbox

Далее в нём монтирую текущую директорию как диск E.

mount e: ./

И переходим на диск e, запускаем в dosbox бат-файл, который инициализирует среду окружения, и начинаем сборку:

e:
cd SRC
e.bat

и запускаем сборку командой nmake:

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

Если вы делаете это в dosbox, то можно пойти погулять. Окончанием сборки будет выглядеть следующим образом:

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

После этого надо скопировать все собранные файлы в один каталог. Создаём каталог «4» в корне диска и копируем все бинарники специальным скриптом:

mkdir \4
CPY.BAT \4


Далее самое интересное:проверка того, что файлы запускаются. Для этого надо сделать так, чтобы dosbox прикидывался старым ДОСом. Выполняем следующую команду:

ver set 4.0

После переходим в каталог\4и можно выполнить в нёмcommand.com:

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

Хулиганство сработало, ДОС собрался и прикидывается, будто бы я его разработал. Дело стало за малым — протестировать это на реальном железе.

❯ Создание загрузочной дискетки


Дальше я думал просто примонтировать в dosbox пустой образ дискетки, и прямо из собранных файлов выполнить перенос системных файлов командой:

sys <path> a:

Но, факир был пьян, и фокус не удался. Поэтому решил MBR (Master Boot Record) позаимствовать с загрузочной дискетки DOS 4.0. К сожалению, MBR от MS-DOS 6.22 у меня не заработал.

Скачиваем установочные дискетки, попутно создаём пустую дискетку командой:

truncate --size 1474560 fdd.img

Загружаемся с установочной дискетки и ставим наш пустой образ 1,44 МБ дискетки в дисковод B, с помощью qemu:

qemu-system-i386 -fda Disk01.img -fdb fdd.img

Отменяем установку и форматируем дискету с переносом системных файлов:

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

По окончании можно закрывать окно qemu. Возвращаемся к окну с dosbox и монтируем полученный образ дискетки, с помощью следующей команды:

imgmount a: <path to fdd.img> -t floppy

И потом просто вручную переносим файлы COMMAND.COM, IO.SYS и MSDOS.SYS на дискету:

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

Всё, образ готов. Можно его протестировать в виртуальной машине, или даже записать на настоящую дискету и загрузиться!

Для запуска в qemu следует использовать следующую команду:

qemu-system-i386 -fda fdd.img

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

Записать на дискетку можно командой dd, я использую USB-FDD дисковод.

sudo dd if=fdd.img of=/dev/sdk status=progress

И, да! Эта система успешно работает на реальном железе. В данном случае проверка идёт на 386 компьютере.

❯ Выводы

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

Запуск свежесобранного MS-DOS 4.0 на реальном железе

Не буду лукавить, сборка MS-DOS 4.0 оказалась не столь простой. Пришлось посмотреть некоторые видео, пошерстить различные репозитории. Но всё же это прекрасный опыт, который позволяет заглянуть внутрь исторических исходников и покопаться в них.

Давняя утечка MS-DOS 6.0 была неполной, и собрать его не представлялось возможным. А теперь у исследователей есть готовый инструментарий, для того чтобы попрактиковаться в разработки каких-то своих модулей старой операционной системы.

Конечно же, я по-настоящему жду, когда же обнародуют исходники MS-DOS 6.22, так как ещё надеюсь увидеть их на своём веку.

Удачи вам в ваших экспериментах!

❯ Полезные ссылки:

  1. Исходные коды MS-DOS от Microsoft

  2. Пример сборки MS-DOS 4.0 во FreeDOS (видео)

  3. Compiling MS-DOS 4.0 from DOS 4.0, on a PS/2!

  • Написано специально для Timeweb Cloud и читателей Пикабу. Подписывайтесь на наш блог, чтобы не пропустить новые интересные статьи.

  • Облачные сервисы Timeweb Cloud — это реферальная ссылка, которая может помочь поддержать наши проекты.

Показать полностью 9
[моё] Гаджеты Электроника Программирование Разработка Программа Техника Timeweb DOS Длиннопост
10
98
ssnmo
ssnmo
2 года назад

Ответ на пост «Сайт OLD-DOS наконец спасен!»⁠⁠1

Эм... я вам сейчас плюсов везде натыкаю, как образцовым антимундакам. Спасибо, милые человеки. Респект, уважуха, долгих лет жизни и всё такое.

@moobbaal

Ответ на пост «Сайт OLD-DOS наконец спасен!» Windows, Компьютер, Интернет, Ретро, Ретро компьютер, Электроника, DOS, 90-е, Pentium 2, Pentium mmx, Pentium 3, Pentium 4, i486, Windows 95, Windows XP, 2000-е, Ностальгия, Прошлое, Ответ на пост, Длиннопост

@plagioklaz

Ответ на пост «Сайт OLD-DOS наконец спасен!» Windows, Компьютер, Интернет, Ретро, Ретро компьютер, Электроника, DOS, 90-е, Pentium 2, Pentium mmx, Pentium 3, Pentium 4, i486, Windows 95, Windows XP, 2000-е, Ностальгия, Прошлое, Ответ на пост, Длиннопост
Ответ на пост «Сайт OLD-DOS наконец спасен!» Windows, Компьютер, Интернет, Ретро, Ретро компьютер, Электроника, DOS, 90-е, Pentium 2, Pentium mmx, Pentium 3, Pentium 4, i486, Windows 95, Windows XP, 2000-е, Ностальгия, Прошлое, Ответ на пост, Длиннопост
Показать полностью 2
Windows Компьютер Интернет Ретро Ретро компьютер Электроника DOS 90-е Pentium 2 Pentium mmx Pentium 3 Pentium 4 i486 Windows 95 Windows XP 2000-е Ностальгия Прошлое Ответ на пост Длиннопост
20
6515
DELETED
2 года назад
IT минувших дней
Серия Новости Технологии

Сайт OLD-DOS наконец спасен!⁠⁠1

Хорошо, что ребята с данного сайта перенсли с немецкого сервера на наш русский родной сервер.

Старые программы и системы от DOS до чистых сборок Windows XP для ретро-компьютеров от i286 до Pentium D (самый первый двухядерный процессор в мире) окончательно спасены. Ура!

Вытащили файлы с иностранных сайтов и серверов.

Спасибо за поддержку.

Сайт OLD-DOS наконец спасен! Windows, Компьютер, Интернет, Ретро, Ретро компьютер, Электроника, DOS, 90-е, Pentium 2, Pentium mmx, Pentium 3, Pentium 4, i486, Windows 95, Windows XP, 2000-е, Ностальгия, Прошлое
[моё] Windows Компьютер Интернет Ретро Ретро компьютер Электроника DOS 90-е Pentium 2 Pentium mmx Pentium 3 Pentium 4 i486 Windows 95 Windows XP 2000-е Ностальгия Прошлое
299
Партнёрский материал Реклама
specials
specials

Сколько нужно времени, чтобы уложить теплый пол?⁠⁠

Точно не скажем, но в нашем проекте с этим можно справиться буквально за минуту одной левой!

Попробовать

Ремонт Теплый пол Текст
36
AlohaChelny
AlohaChelny
2 года назад
IT минувших дней

Вопрос для любителей ретро железа⁠⁠

Цель : захват видео для видеообзора старого железа. Приблизился вплотную к созданию видеообзоров на старое железо.

К примеру имеется старый компьютер с которого необходимо произвести захват видео с экрана.

Пусть то окно виндовс или скорее ДОС. Если с более менее свежими компьютерами типа пентиум 3 примерно понятно, то что делать скажем на 286 или даже PC XT? Снимать видео с экрана  камерой?

Железа с функцией захвата видео у меня нет, да и монитор скажем EGA весьма специфичен в плане интерфейса.

Как выходят из положения другие ? Используют софт или аппаратный приспособы ?

Вопрос для любителей ретро железа Ретро, IT, Компьютер, Захват экрана, Электроника, Windows, DOS, Вопрос

Для затравки можно взять данный образец середины 80х годов со встроенной CGA картой. Внешние карты он не стартует. Придется колхозить телевизор для элементарного вывода изображения.

Можно конечно читерить используя DosBox но тогда смысл весь теряется. Эмуляция железа на мощном ПК не равно работе натурального старого компьютера в данном случае.

Показать полностью 1
[моё] Ретро IT Компьютер Захват экрана Электроника Windows DOS Вопрос
32
145
Dr.Nimnul
Dr.Nimnul
6 лет назад
Лига Радиолюбителей

Старинный PCAD, если кому надо (v4.5&8.7 for DOS). Сборка для современных машин⁠⁠

Старинный PCAD, если кому надо (v4.5&8.7 for DOS). Сборка для современных машин Pcad, Печатная плата, DOS, Dosbox, Электроника, Ретро

Потому как, даже на полуживом, и совершенно не тематическом форуме, тема пользуется некой популярностью (исключительно за счет поисковиков), продублирую и здесь.

Еще раз обращаю внимание, если кто не понял: c PCAD 2002/2004/2006 (for WINDOWS) данный пакет НИЧЕГО ОБЩЕГО (кроме названия) не имеет.

Это - сборка двух рабочих версий PCAD for DOS, пригодная для установки на современные машины (WINDOWS), вместе с самодельной оболочкой (в виде макросов DOS-Navigaor-а), кучей дополнительных программ (драйверы, русификаиторы, "печаталка", PLTPRINT ), и инструкцией по установке.

Также включен драйвер высоких разрешений экрана (VESA) , от OWA, пропатченный одним моим знакомым, на предмет быстрого рисования кружочков (кто знает - тот поймет), в таком виде этот драйвер в Сети не выкладывался.

Не на что не претендует, просто для тех кому надо (а как не странно, надо еще довольно многим).

Все действия типа "запаковать плату", "запаковать компонент", проверить DRC, у меня забиты в меню DOS Navigator-а. Всячески рекомендую пользоваться, ибо экономит массу времени. Вызывается по Alt-Enter, и Shift-Enter, в зависимости от расширения подкурсорного файла, что делается - можно посмотреть в DN.EXT, там все просто, это по сути bat-файлы, с той лишь разницей, что используются макроопределения !:\!\!.! и $:\$\$.$ обозначающие соответственно диск, путь, имя и расширение подкурсорного файла активной панели (!) и диск, путь, имя и расширение подкурсорного файла пассивной панели ($).

Кто еще помнит DOS - без труда разберется. Если чего - спрашивайте, а то я написать подробное описание всего этого счастья, наверное никогда не соберусь :)

Собственно сцылко. (ветку того форума - тоже советую прочитать, там есть полезности, весь остальной форум к PCAD и электронике отношения не имеет. Совсем.)

Сборка и все макросы - мои, некоторые патчи (PC-DRC) - тоже мои, (сам PCAD - естественно не мой). Если тег "мое", сочтут неуместным - ну пускай уберут.

Весь софт, кроме PCAD-а - free, сам PCAD - сейчас не продается уже лет 20 как :)

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

UPD:

https://cs11.pikabu.ru/post_img/2018/07/31/7/153303142413601...

Показать полностью 1
[моё] Pcad Печатная плата DOS Dosbox Электроника Ретро
99
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии