2009-03-10 1 views
13

я перечитывал Джоэла Strategy Letter II: Chicken and Egg problems и наткнулся на этой забавной цитате:Что было сменой одного байта для порта WordStar от CP/M до DOS?

В самом деле, WordStar был перенесен в DOS , изменив один единственный байт в коде. (Реальные программисты могут рассказать вам , что это за байт, я давно забыл ).

Я не нашел других ссылок на это с помощью быстрого поиска Google. Это правда или просто фигура речи? В интересах моего стремления стать «настоящим программистом», что изменилось с помощью одного байта?

+0

Ха-ха, я тоже это читал сегодня. Я пошел в Google, и ваш вопрос появился как первый хит. Это было всего 2 часа после того, как вы его спросили, команда stackoverflow преуспевает в SEO. Я полагаю :) –

ответ

6

Звучит немного преувеличен, нашел историю WordStar here

WordStar 3,0 для MS-DOS

апреля 1982

В одном всенощной сессии Джим Фокс залатал CP/M-86 версии WordStar, чтобы он запускался под MS-DOS на IBM PC, чтобы это можно было продемонстрировать Rubenstein. Фактический порт был сделан группой ирландских программистов с использованием систем разработки Intel, в которых работала операционная система ISIS II. Сборки программного обеспечения было сделано на 8" дискетах и ​​двоичные (исполняемые файлы) были затем переданы на компьютер IBM с помощью последовательного кабеля.

Но ... Джоэл может быть, имел в виду MS-DOS 1.0/QDOS

MS-DOS 1.0 на самом деле была переименованной версией QDOS (Quick and Dirty Operating System), которую Microsoft купила у компании Seattle, соответственно названной Seattle Computer Products, в июле 1981 года. QDOS был разработан как клон восьмибитовой операционной системы CP/M система для обеспечения совместимости с популярными бизнес-приложениями дня, такими как WordStar и dBase. CP/M (программа управления для микрокомпьютеров) была написана Гари Килдалл из Digi Исследование было несколько лет назад и стало первой операционной системой для микрокомпьютеров общего пользования.

+0

Не слишком ли гипербола? – Powerlord

+6

нет, гипербола УДИВИТЕЛЬНАЯ! –

+0

нет, Джоэл УДИВИТЕЛЬНО! – epatel

1

Я не уверен, является ли утверждение Джоэла точным или нет. Возможно, он имел в виду демонстрационную версию, которую сделал Джим Фокс?

См http://www.wordstar.org/wordstar/history/history.htm

Я процитирую соответствующую секцию:

WordStar 3.0 для MS-DOS

апр 1982

В одном всенощного сессии Джим Fox заплатил версию CP/M-86 от WordStar, чтобы запустить ее под MS-DOS на ПК IBM, чтобы uld be , продемонстрированный Рубенштейну. Фактический порт был выполнен группой программистов ирландских с использованием систем разработки Intel , в которых работала операционная система ISIS II .Программное обеспечение сборки было сделано на 8" дискетах и ​​бинарные (исполняемые файлы) были затем переданы в IBM PC через последовательный кабель

(Edit:.. К сожалению, слишком поздно, кто-то уже нашел точно такой же, что: -../Не стесняйтесь игнорировать меня)

2

This Wikipedia entry утверждает, что CP/M и MS-DOS разделяют двоичные форматы это говорит о том:

Хотя формат файла совпадает в MS-DOS и CP/M, это не означает , что программы CP/M могут быть напрямую , выполненные под MS-DOS или наоборот; MS-DOS COM-файлы содержат инструкции x86 , в то время как COM-файлы CP/M содержат инструкции 8080, 8085 или Z80 .

Под CP/M 3, если первый байт COM-файла равен 0xC9, тогда это указывает на наличие наличия 256-байтового заголовка; , так как 0xC9 соответствует инструкции RET 8080 , это означает, что COM-файл немедленно прекратит работу, если работает на более ранней версии CP/M, что не поддерживает это расширение.

Это означает, что, возможно, исправление/порт меняет эту первую инструкцию на что-то другое, что заставляет остальных выполнять. Не уверен, хотя, похоже, это означает, что двоичный файл должен быть «толстым», что кажется необоснованным для старого двоичного кода.

+0

Можно сделать :-) http://www.desertpenguin.org/blog/cpm-and-ms-dos-fat-binary/ –

1

WordStar был написан на ассемблере 8080, а затем были инструменты для преобразования ассемблера 8080 на 8086 (набор инструкций 8086 был разработан для этого), если бы весь код мог вписаться в один сегмент, так что это вполне возможно ,

Я впервые использовал WordStar в 1979 году на коробке Z80 CP/M. Сегодня люди могут не понимать, как им повезло: сколько пользователей MS Word будет подготовлено в качестве первой задачи по установке своего текстового процессора, чтобы написать пару небольших ассемблерных подпрограмм (в шестнадцатеричном формате) для эффективного взаимодействия текстового процессора (вы мог использовать подпрограммы CP/M, но они были медленными и не работали должным образом) с экраном и клавиатурой? Счастливые дни ...

3

Вам нужно было бы изменить более одного байта. Исполняемые файлы CP/M-86 (.CMD) имеют 128-байтовый заголовок, который не похож на заголовок .EXE.

Если ограничить все API вызовов к общему подмножеству CP/M и DOS, то вы можете использовать условную сборку для создания версии CP/M и DOS из того же источника:

bdos: 
     if CPM86 
     int 0E0h 
     else 
     mov ah, cl 
     int 21h 
     endif 
+0

Порт был сделан от CP/M-80 до MS-DOS, а не от СР/М-86. Я понимаю, что WordStar был написан на ассемблере. Существовал инструмент, который преобразует мнемонику Intel 8080 в 8086 мнемоников. Вероятно, этот байт должен был быть изменен в результате выдающегося мнемонического кода x86. –

+0

Источник, цитируемый выше epatel, прямо указывает, что порт был от CP/M-86, а не CP/M-80. –

2

«В факт, WordStar был портирован в DOS, изменив один байт в коде. (Настоящие программисты могут рассказать вам, что это за байт, я давно забыл) ».

Понедельник 6/08/2009 18:27. Мое предположение состоял в том, что Спольский говорил о 8080 CP/M до 8086 MSDOS, и эта история, вероятно, была фиктивной.8086 CP/M никогда не был большим предметом - я имею в виду, что был, полностью уничтоженный MSDOS, и кто-то мог преобразовать WordStar с 8080-CPM в 8086-CPM - путем его сборки, как отмечали другие, используя специальный переводчик 8080-to-8086 - и , затем, возможно, только один байт пришлось изменить.

1

Важно понять, что в то время как 16-разрядные машины 8086 просто выходили на смену нынешним 8-разрядным машинам, где операционная система CP/M была Windows дня. Все с дисководом, предназначенным для работы под управлением CP/M. Эта версия позже называлась CP/M-80, чтобы отличать ее от CP/M-86 для процессора 8086.

К сожалению, для выхода на рынок было так много времени, что на QDOS было написано, что SOMETHING запускает программы, и это было по существу быстрой реализацией функций CP/M (но с другим синтаксисом). QDOS позже был куплен Microsoft и внесен в MS-DOS. Следовательно, MS-DOS на самом деле имеет внутреннее ядро ​​CP/M, и поэтому объем работы, необходимый для запуска программы CP/M-86 для работы под MS-DOS, был ограничен (не одним байтом, а управляемым).

Я с удовольствием проработал несколько лет с CCP/M-86, что позволило многозадачность, очень похожую на то, что Linux в текстовом режиме (с виртуальными консолями) позволяет сегодня. К сожалению, он никогда не попадал. О, ну, у нас есть Linux :)

+0

MSDOS 4 имел многозадачность. Это было оплачено несколькими британскими компьютерными компаниями (например, ICL и абрикосом) и хорошо работало. Однако это не сильно укрепилось, а более поздняя версия MSDOS была названа MSDOS 4. https://en.wikipedia.org/wiki/MS-DOS_4.0_(multitasking) –

Смежные вопросы