LINUX.ORG.RU
ФорумTalks

DOS 4.00 теперь опенсорс!

 , , , ,


0

1

Сабж

Microsoft опубликовала на GitHub исходный код MS-DOS 4.00, двоичные файлы, образы дисков и документацию на эту операционную систему. 45-летний код выпущен под лицензией MIT, что даёт разработчикам полную свободу действий. Четвёртая версия MS-DOS 4.00 любопытна тем, что была написана в сотрудничестве с IBM, демонстрировала зачатки многозадачности и образовала ветвь DOS под названием Multitasking DOS (или MT-DOS), распространение которой было ограничено.

Выпуск исходного кода MS-DOS 4.00 состоялся благодаря сотрудничеству между бывшим техническим директором Microsoft Рэем Оззи (Ray Ozzie) и компьютерным исследователем Коннором Хайдом (Connor Hyde). Весь код и остальные материалы, которые теперь доступны на GitHub, были сохранены Оззи. Работая в Lotus, он заархивировал несколько неизданных двоичных бета-версий MS-DOS 4. В сохранении исторического наследия также приняли участие вице-президент сообщества разработчиков Microsoft Скотт Хансельман (Scott Hanselman) и интернет-архивист и энтузиаст Джефф Спонагл (Jeff Sponaugle). Перед опубликованием исходного кода ОС энтузиасты получили все необходимые разрешения от правообладателя.

Самым интересным в этой версии MS-DOS являются некоторые зачатки многозадачности, которые, как утверждает Хайд, позднее легли в основу IBM OS/2. Одной из ключевых частей предполагаемого многозадачного рабочего процесса MS-DOS 4.00 является менеджер сеансов SM.EXE. Этот системный компонент позволяет переключаться с помощью горячих клавиш между шестью заранее заданными приложениями. Однако тесты Хайда выявили серьёзные ошибки в его работе. Более подробно о многозадачности в MS-DOS 4.00 и обо всех утилитах, поставляемых с этой версией, можно прочитать в блоге Хайда.

Ассемблерный код Intel 8086 MS-DOS 4.00, двоичные файлы, образы дисков и документация размещены на GitHub. Образы дисков находятся в каталоге v4.0-ozzie/bin. Энтузиасты, имеющие исправное старое оборудование, могут запустить ОС в исходном виде. Для запуска на современных ПК понадобится эмулятор, например, PCem или 86box с открытым исходным кодом. Кстати, в том же репозитории GitHub хранится исходный код MS-DOS 1.25 и 2.0.

Вот, накачу на кухонный комп вместо 6.22 - и будет у меня там одна непиратская ОС.

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

В любом случае, не думаю, что это чем-то лучше FreeDOS.

Аутентичненько же ж. Старый комп, старый DOS…

Вот если бы они DOS из состава 98 винды открыли…

Эт да!

tiinn ★★★★★
() автор топика
cloc --timeout=0 src/
    1220 text files.
     908 unique files.
     236 files ignored.

github.com/AlDanial/cloc v 1.92  T=6.63 s (136.9 files/s, 73368.7 lines/s)
---------------------------------------------------------------------------------------
Language                             files          blank        comment           code
---------------------------------------------------------------------------------------
Assembly                               581          33953         126747         219821
Pascal                                 104           3721            185          43713
C                                       60           4597          10812          19872
C/C++ Header                            86           2098           3089           7865
make                                    65           1002            457           2892
Gencat NLS                               3            253              0           2220
TNSDL                                    1            242              0           2139
PHP                                      1             60              0            570
IDL                                      1             29             66            136
DOS Batch                                3              2              1            109
INI                                      2             18              0             59
Windows Module Definition                1              4              3             12
---------------------------------------------------------------------------------------
SUM:                                   908          45979         141360         299408
---------------------------------------------------------------------------------------

Pascal — это какие-то файлы *.inc, видимо. Не знаю, что в них и зачем, но вроде тоже что-то на ассемблере. Ну и некоторые другие языки неправильно определились.

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

Это не просто DOS 4.0, а походу какой-то Multitasking DOS 4.0, то есть многозадачная версия.

https://github.com/microsoft/MS-DOS/blob/main/v4.0-ozzie/Multitasking DOS BET...

Вот этот - https://en.wikipedia.org/wiki/MS-DOS_4.0_(multitasking)

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

Я думаю что вы неправы, потому что при поиске в репозитарии по слову multitask показывает комментарии в исходниках этой версии 4.0.

Например:

There are also critical sections that need to be observed when running in a
; multitasking environment.  These sections are:

; ; This should *NEVER* return an error.	The transient is MUCH bigger than
; the batch segment.  This may not be true, however, in a multitasking system.
; G This error will occur with nesting of batch files.	We also need to
; G make sure that we don't overlay the transient.
;

;	WARNING NUMBER TWO:
935	;	    IF A MULTITASKING PRE-EMPTIVE SYSTEM SCHEDULES AND RUNS
936	;	    AN APPLICATION WHICH RELIES ON THE 1 MEG ADDRESS WRAP
4701	;
4702	; WARNING: IF A PRE-EMPTIVE MULTITASKING SYSTEM SCHEDULES A TASK WHICH
4703	;	IS USING THE ABOVE BOARD DURING THE TIME THIS DRIVER IS IN THE
;
;   Note that there is no multitasking interlock.  There is no race when
;   examining the entrys in an in-core FAT block since there will be no
;   This method is obviously useless (because it is non-reentrant) for
;   multitasking, and will have to be changed.  Storing the required value on
;   the stack is recommended.  Setting sf_firclus at the PACK of cluster 0

источник- https://github.com/search?q=repo:microsoft/MS-DOS multitask&type=code

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

Надо будет потыкать на досуге.

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

Вот теперь начнем бороздить космос. И промышленность поднимем. Ух-х-х, входим в новый век!

Vilicus
()

На rust переписывать будут?

greenman ★★★★★
()

Да я бы это и в 80ых не стал запускать. Зачем оно мне сейчас?

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

Мда. Не, не буду я на ЭТО переходить.

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

Ну это точно в мелкософте кто то под ершом был, а то и под барбирурой. Если такое решение принимало чистое тело - его надо выследить и терминировать! Бед натворит!

DumLemming ★★★
()

Я хорошо помню времена DOS, я в тогда программистом работал. И помню,что как раз от версии 4.ХХ как-то народ был не в восторге. Использовали или 3.30 или чуть позже уже 5.ХХ. А четвертая как-то глючная была. Причем о встроенной многозадачности большинство даже не знало. Или она не во всех дистрибутивных комплектах доса была. Кому хотелось многозадачности именно для дос-программ те DesqView пытались применить. Но ей требовалось четыре мега памяти и 386 процессор,что по тем временам было дороговато и мало распространено в РФ.

Наличие исходников 2.Х и 4.Х при отсутствии куда более общеупотребительной 3.Х лично у меня вызывает определенные конспирологические мысли. Например 3.Х вполне может быть по сей день актуальна для встроенных компов всякого промышленного оборудования - поэтому и не выложили.

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

Причем о встроенной многозадачности большинство даже не знало

Многозадачной была отдельная версия доса. Большая редкость, скажем так.

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

Многозадачный дос - это линух. Ну, зачем этот бред с TSR, когда можно было просто 10 сеансов придумать с переключением по Ф1-10

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

Не то что не лучше FreeDOS, MS-DOS 4 был так забагован, что все просто переходили с MS-DOS 3 сразу на 5.

Кстати, по традиции скомпирировать этот MS-DOS 4 конечно-же нельзя (в деталях).

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

Многозадачный дос - это линух. Ну, зачем этот бред с TSR, когда можно было просто 10 сеансов придумать с переключением по Ф1-10

Видишь ли, в 1991 г. Торвальдс только Linux написал, а машину времени чтобы отправить его в 1988 - год сабжевого мсдоса - ниасилил.

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

Вот если бы они DOS из состава 98 винды открыли…

А что там в нём особенного? Windows 9x переопределяет почти все интерфейсы DOS своей реализацией. Было бы куда интереснее если бы открыли исходники Windows 1-3.

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

Какой смысл использовать FreeDOS для запуска Windows 98? Особой свободности это не прибавит, совместимость с современным железом тоже т.к. у Windows почти все драйвера свои.

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

Даже Windows 1 было бы интересно. Наверное откроют когда-нибудь.

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

Это всё исключительно в рамках исторической ценности.

Для исторической ценности надо наверное использовать аутентичный DOS, не?

X512 ★★★★★
()

Собственно капец линуксу, как и любой другой пародии на DOS. Можете закрывать ЛОР.

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

Спасибо!

https://www.mikecramer.com/qnx/qnx_4.25_docs/watcom/compiler-tools/wlink.html

Из исходников Watcom

6.  The following first tier target libraries will be built:
        DOS 16          - tiny,ms,mm,mc,ml,mh,overlay mm,overlay ml
        DOS 32          - register ms,stack ms
        OS/2 1.x        - ms,mm,mc,ml,mh,multi-thread ml,DLL ml
        OS/2 2.x        - multi-thread DLL register ms,
                          multi-thread DLL stack ms
        QNX 16          - ms,mm,mc,ml,mh,share
        QNX 32          - register ms
        Win 3.1         - ms,mm,mc,ml
        Win386          - multi-thread DLL register mf,
                          multi-thread DLL stack mf
        Win NT          - multi-thread DLL register ms,
                          multi-thread DLL stack ms
        NetWare         - mulit-thread stack ms
        Kanji 16        - ms,mm,mc,ml,mh
        Kanji 32        - register ms, stack ms
        Linux           - register ms, stack ms
        RDOS            - register mf, stack mf
        RDOS dev        - register mc, 32-bit
    Some of these target systems are really -mf but we are building -ms.
    This is to avoid problems with calling into the -ms math library.
    It means that all calls out to user code (including startup) must
    be bracketed with a setup of the segment registers for FLAT and an
    assumption that the user code trashes the segment registers on return.
    This is required for the -r switch that is used to build the library.
    The remaining -mf libraries (Win386??) either don't have
    the math issue or have other issues.

https://jake-shadle.github.io/xwin/ Cross compiling Windows binaries from Linux

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

https://github.com/Jake-Shadle/xwin A utility for downloading and packaging the Microsoft CRT headers and libraries, and Windows SDK headers and libraries needed for compiling and linking programs targeting Windows.

На форуме был вопрос о том как можно в Linux собрать exe для Windows.
Этот проект похоже поможет это сделать.

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

Вот если бы исходники MSDOS 6.22 открыли ...

Не нашёл нигде проекта, который мог бы exe собрать для Windows.

Имеется проект https://lld.llvm.org/windows_support.html.

Текущий статус таков, что LLD используется для связывания производственных сборок крупных реальных двоичных файлов, таких как Firefox и Chromium.

Вообщем-то неплохо.

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

Уж лучше бы открыли OS/2!

Кому нужна эта мертворождённая ОС? К тому же в то время IBM платил за количество строк в коде так что исходники скорее всего будут нечитаемой простынёй.

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

Ну, есть страждущие.

...исходники скорее всего будут нечитаемой простынёй.

Вот это скорее всего.

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

что есть 16-разрядный линукс?

https://github.com/ghaerr/elks

но появился он в году так 1999, до этого были разные коммерческие юниксы в т.ч xenix от Майкрософта/ SCO (?)

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

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

Чтобы утверждать это, надо быть внутри проекта. Лично я только подползаю, поэтому утверждать ничего не могу.

sparkie ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)