LINUX.ORG.RU

Немного новой дичи или как я вызвал веб-сервис из Dosbox

 , ,


1

3

Думаю, благородные доны и так прекрасно знают, что такое Dosbox, некоторые еще догадываются что оно не просто эмулятор, а еще и частичная реализация самого DOS.

А значит, можно залезть внутрь и попробовать сделать бесшовную интеграцию с внешним миром — без необходимости пробрасывать сетевой стек, например.

Перепахивать сам Dosbox ради таких экспериментов я не стал (он слишком уж большой), поэтому взял его реализацию на Java, которая попроще и меньше, затем еще ее немного порезал и почистил.

Статья про все эти приключения вот тут.

На скриншоте работающий вызов RESTful веб-сервиса, который из среды ДОС выглядит как .COM-файл с возможностью запуска, а на самом деле является частью самого эмулятора.

Ну и там FreeBSD (в кои-то веки без кастомного ядра), Xfce и стильное оформление.

P. S. Расстояние между кнопками окон добавлено специально — чтобы было что обсуждать серьезным и успешным людям.

>>> Просмотр (1366x768, 206 Kb)

★★★

Проверено: cetjs2 ()
Последнее исправление: cetjs2 (всего исправлений: 3)

Ответ на: комментарий от Unixson

Чтобы банально передать файл в/из виртуальной среды - по классике это делается как раз через сеть.

Я же захотел пойти дальше и сделать вызов внешней системы изнутри виртуальной среды но без виртуализации сети, без всего этого геммороя с поднятием виртуальной подсети и тд.

alex0x08 ★★★
() автор топика
Последнее исправление: alex0x08 (всего исправлений: 1)
Ответ на: комментарий от alex0x08

Чтобы банально передать файл в/из виртуальной среды

в DOSBOX монтируется ещё один диск, локальный или сетевой - всё равно.

GAMer ★★★★★
()
Ответ на: комментарий от GAMer

А совершенно шикарно, что Qemu тоже умеет расшаривать папку хоста без всяких сетей и client tools - эмулирует диск с FAT32-разделом.

eugrus ★★★★★
()
Ответ на: комментарий от GAMer

Вообще @Unixson несколько про другое спрашивал.

в DOSBOX монтируется ещё один диск, локальный или сетевой - всё равно.

Да, но вот дальше то что? Данные на диске это одно а запускаемый бинарник - другое.

Чтобы запустить программу под ДОС ее надо под этот ДОС собрать, что представляет определенную проблему в 2023м году.

Поэтому я и залез в сам Dosbox, добавив свой вызов на уровне слоя виртуализации ДОС а не железа, как это было бы например в VirtualBox, в котором ДОС тоже можно запустить.

Мой PoC это по-сути виртуальная программа на виртуальном диске в виртуальном ДОС, который работает на виртуальном процессоре.

alex0x08 ★★★
() автор топика
Ответ на: комментарий от alex0x08

Т.е. не просто резиновая женщина, а анимированный рисунок резиновой женщины...

DummyBoy ★★
()
Ответ на: комментарий от eugrus

А совершенно шикарно, что Qemu тоже умеет расшаривать папку хоста без всяких сетей и client tools - эмулирует диск с FAT32-разделом.

Хм, впервые про такое слышу, максимум что видел это вариант через samba, те опять через сеть.

Ссылку можно?

alex0x08 ★★★
() автор топика

Dosbox

его реализацию на Java

работающий вызов RESTful веб-сервиса

выглядит как .COM-файл с возможностью запуска, а на самом деле является частью самого эмулятора

FreeBSD

стильное оформление

Вот уж воистену мсье знает толк!

goingUp ★★★★★
()
Ответ на: комментарий от eugrus

О как, не знал про такое.

Но выглядит очень уж ненадежно, вот обсуждение этой штуки, народ тоже говорит что ‘buggy’.

alex0x08 ★★★
() автор топика

Вы довольно скромно оцениваете уровень дичи.

Оформление очень даже ничего, глаза выдирает на раз. Но не понял что за расстояние между кнопками.

kirill_rrr ★★★★★
()
Ответ на: комментарий от alex0x08

Чтобы запустить программу под ДОС ее надо под этот ДОС собрать, что представляет определенную проблему в 2023м году.

Понимаю, что портировать проблема, но в каком смысле проблема в 2023 собрать?

Для транскомпайлинга есть i586-pc-msdosdjgpp-gcc, а под самим dosbox работает Борланд и всё остальное ламповое.

eugrus ★★★★★
()

чтобы было что обсуждать серьезным и успешным людям.

Думаю что у особо нежных глаза от интерфейса вытекут раньше, чем будет замечен интервал между кнопками, вангую что у эпилептиков вообще может случиться припадок.

Крайний раз я видел такое у одного знакомого торчка, плотно сидящего на психоделиках последние лет 15, там тоже какой-то пиксельный теплый глич на обоях плавно перетекал в вакханалию со святящимися неоном рамками в стиле Трона а из колонок булькало что-то очень авангардное, в стиле «Голубых плавок» из «Смени лицо» Квентина Дюпье.

XOXO
()
Ответ на: комментарий от eugrus

Понимаю, что портировать проблема, но в каком смысле проблема в 2023 собрать?

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

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

Могу напомнить историю с исходниками первого Carmageddon (96й год вроде), которые открыли буквально пару лет назад. 20 лет фанаты мозг выносили.

Для транскомпайлинга есть i586-pc-msdosdjgpp-gcc, а под самим dosbox работает Борланд и всё остальное ламповое.

Запускается и работает это разные вещи, не уверен что получится запустить полноценную среду с дебагером в Dosbox, хотя keyrus.com работает.

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

alex0x08 ★★★
() автор топика
Ответ на: комментарий от XOXO

что-то очень авангардное, в стиле «Голубых плавок» из «Смени лицо» Квентина Дюпье.

Cпасибо но я больше по трешу: ‘Розовый фламинго’, ‘Свадебная чаша’, трилогия ПИР, помимо очевидных классических произведений Басковой.

На Джона Уотерса я кстати подписан в Instagram, что само по себе уже артхаус.

alex0x08 ★★★
() автор топика
Ответ на: комментарий от alex0x08

классических произведений Басковой

Как же приятно, дожив до седых мудей, слышать подтверждения, что Баскова уже полноценно считается классикой, ибо ее «Слоник», во многом, помогал мне морально все это время, с момента первого просмотра, еще на видеокассете, году примерно в 2002 на маленькой «видеодвойке» Sharp знойным летом в прокуренной кухне уральской хрущевки под теплый портвейн из чайных кружек и мерное урчание большого рыжего кота и пожелтевшего холодильника «Зил». В компании друзей, многие из которых уже давно кормят червей…

Так хорошо уже не будет никогда.

XOXO
()
Ответ на: комментарий от XOXO

Мне трудно вас понять.

Впрочем у главного пидора америки некоторые композиции и исполнение талантливо.

Извиняюсь, но для меня вся плеяда популярных - говно за баней.
Говорю так потому, что духовная грязь весьма смрадна.

Ныне век распущенности и духовного смрада.
Не принимаю ни одного нейтрино от этого смрада в свою душу.

Для позитива

https://www.youtube.com/watch?v=vb6izfI2G0k&ab_channel=Киноприцел Ревнивый муж провожает жену в отпуск

Forum0888
()
Последнее исправление: Forum0888 (всего исправлений: 1)
Ответ на: комментарий от XOXO

Да, только после недели за чем то вроде вин10/11 или гном3+ в этой вакханалии мозги прямо отдыхают! Тут есть за что зацепиться взгляду.

kirill_rrr ★★★★★
()
Ответ на: комментарий от kirill_rrr

я спёкся на половине краткого пересказа…

Как это пересказа? Это нужно смотреть и желательно на кинескопе.

XOXO
()
Ответ на: комментарий от alex0x08

Чтобы запустить программу под ДОС ее надо под этот ДОС собрать, что представляет определенную проблему в 2023м году.

Зачем собирать программы под DOS в 2023-м году?

Rodegast ★★★★★
()
Ответ на: комментарий от eugrus

640 КБ ОЗУ, современный софт на такое не рассчитан. Также нету вытесняющей многозадачности.

KivApple ★★★★★
()
Ответ на: комментарий от Rodegast

Всплывают программы когда-то написанные под ДОС, чаще всего на ассемблере, поэтому даже при наличии исходников - переписать это нереально.

А там например сложная расчетная логика, какие-то алгоритмы. Скажу больше: сам Microsoft DOS до сих пор официально продается и используется, например в банкоматах.

Более того: Intel до сих пор выпускает малыми партиями и под заказ устаревшие процессоры и материнские платы уровня первых пентимумов - как раз для подобного устаревшего софта.

Вообщем Wine и Dosbox появились не на пустом месте и далеко не только из-за игр.

alex0x08 ★★★
() автор топика
Ответ на: комментарий от alex0x08

Четыре года назад переписывал реализацию одной утилиты для CP/M для заказчика из США.

Судя по краткому гуглингу, в США есть такие жадобы, которые до сих пор используют ОС и ПО для них из 1970-х. Ну, или это последнее, что он смог освоить, и с тех пор просто лень было изучать что-то новое, на что можно было перейти.

Интерфейс у программы настолько изуверский, что даже не представляю, как можно было пользоваться с конца 1970-х по 2020 и ни разу не захотеть перейти на что-то иное…

emorozov
()
Ответ на: комментарий от emorozov

Именно!

И такого живого некро еще очень и очень много на свете, не одному же Галкину наслаждаться таким пороком )

alex0x08 ★★★
() автор топика
Ответ на: комментарий от eugrus

DOSBox IS NOT SUITED TO RUN YOUR NON-GAMING DOS APPLICATION

Это такой disclaimer у автора ;)

На самом деле, пока я раскапывал всю эту тему - обнаружил что Dosbox умеет много больше чем декларирует: есть запуск более старших ОС: Windows3.1, 95/98/NT, есть (в зачаточном состоянии) запуск windows binary - с эмуляцией окружения уже не ДОСа а вендов.

alex0x08 ★★★
() автор топика

у хакзебокса кажется было несколько коробок с сценариями эксплуатации через досбокс

slowpony ★★★★★
()
Ответ на: комментарий от slowpony

Выход за пределы виртуализированной среды есть вообще везде.

Вот про QEMU, вот про Bhyve.

Про массмаркет вроде VMWare и VirtualBox и так найдете по первому запросу в гугле.

alex0x08 ★★★
() автор топика
Ответ на: комментарий от alex0x08

Всплывают программы когда-то написанные под ДОС, чаще всего на ассемблере, поэтому даже при наличии исходников - переписать это нереально.

Чаще всего переписывать их не целесообразно ;)

Rodegast ★★★★★
()
Ответ на: комментарий от Rodegast

Да хоть «политически опасно» и навечно уничтожит карму - задача такая есть. Задача редкая, требует определенных знаний и опыта а значит будет хорошо оплачена. Суть в этом.

alex0x08 ★★★
() автор топика
Ответ на: комментарий от Rodegast

Вроде у Joel Spolsky было про некую компанию, вынужденную заказывать у Intel устаревшие CPU ради софта под Windows 95, который проводил тесты лекарственных препаратов.

Суть в том что дешевле было продолжать эксплуатацию того что есть чем принимать риски неверного тестирования.

alex0x08 ★★★
() автор топика
Ответ на: комментарий от emorozov

Если вправе рассказать чуть подробнее про утилиту и заказ, то будет любопытно узнать. Ну а если не вправе, то не расскажете.

eugrus ★★★★★
()

Для DOS более архитектурно правильным способом общения с внешним миром был бы ком-порт или порт принтера.

XIX_vek
()
Ответ на: комментарий от XIX_vek

Именно так, в теории.

На практике же передача даже 1Мб данных через COM-порт это то еще испытание для психики ибо дюже медленно. Ну и очевидно что сам COM-порт слабо приспособлен под логику вызова API, а значит всю обертку придется реализовывать самому.

alex0x08 ★★★
() автор топика
Ответ на: комментарий от eugrus

Я не могу найти файлы проекта сейчас, как и переписку, чтобы вспомнить название оригинальной программы CP/M.

Но суть в том, что это примитивная БД на файлах, с возможностью задавать формы для ввода данных в неё. Определяешь формы записей в головоломном формате типа 2!xxx**8888888$%, она затем генерирует на основе этого формата экранную форму для ввода (например, поле для ввода строки, поле для ввода числа в таком-то формате), и сохраняет в файлах введённую информацию.

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

Как я понял, в 70-80-е годы она была очень популярной, даже возможно, портировалась на другие системы. Но мне показалась чем-то ужасно примитивным и неудобным, я был поражён, что кто-то до сих пор пользуется подобным софтом.

emorozov
()

«на ловца и зверь бежит» :-)

раз уж тут собрались гуру DosBox, то тут и спрошу - как проще автоматизировать сборку в dosbox`е. Чтобы хостом запустить внутри dosbox программу(компилятор) и дождаться завершения ? потом ещё раз, ещё и ещё..

одновременно с box понятно, ключами и конфигами задаётся..а чтобы внутри одной сессии, может и есть где в документации но ненашёл

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

Мой ресерч имел одну из причин как раз реализацию такого. По-сути нужно докрутить реализацию для того чтобы по триггеру снаружи запускалась такая же «виртуальная программа» внутри и например запускала сборку.

alex0x08 ★★★
() автор топика
Ответ на: комментарий от alex0x08

нужно докрутить реализацию для того чтобы по триггеру снаружи запускалась такая же «виртуальная программа» внутри и например запускала сборку.

топик навёл на правильные мысли, которые сразу-же и были проверены

в общем dosbox в разделе [serial] можно указать serial1=modem listen:5000

после чего dosbox эмулирует модем воткнутый в COM1 :-) если постучать в телнетом в 5000 будет RING можно ответить ATA и можно беседовать. И даже в обратку: ATDTlinux.org.ru:80

то есть поставить/принять соединение в dosbox не проблема. даже без java

можно порыть old-old и найти софт удалённого управления по модему. или в BBS были операторские бек-доры

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

Я все же хотел развить тему управляемого окружения, чтобы связать два мира через прямую запись в память управляющих команд - например нажатия клавиш или ввод данных с последующей обработкой ответа. Большая часть виденного софта под ДОС как раз с интерфейсом в стиле ncurses, еще и с монопольным запуском, там одной передачей данных внутрь не отделаешься.

Насчет Dosbox есть еще вариант с autoexec.bat, который он выполняет при старте - можно превратить весь необходимый цикл сборки в ДОСе в единый скрипт, запихать его в autoexec.bat а в конце погасить сам Dosbox. Дальше уже вызывать Dosbox в headless режиме и забирать полученный билд после запуска.

alex0x08 ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.