Каково было изменение одного байта для переноса WordStar с CP / M на DOS? - PullRequest
13 голосов
/ 10 марта 2009

Я перечитывал Джоэла Стратегическое письмо II: Проблемы с курицей и яйцом и наткнулся на эту забавную цитату:

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

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

Ответы [ 7 ]

6 голосов
/ 10 марта 2009

Звучит немного преувеличено, нашел немного истории WordStar здесь

WordStar 3.0 для MS-DOS

апрель 1982

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

Но ... Джоэл, возможно, имел в виду MS-DOS 1.0 / QDOS

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

3 голосов
/ 15 мая 2009

Вам нужно изменить более одного байта. Исполняемые файлы 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
2 голосов
/ 09 июня 2009

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

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

2 голосов
/ 10 марта 2009

Эта запись в Википедии утверждает, что CP / M и MS-DOS используют двоичные форматы. Далее говорится:

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

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

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

1 голос
/ 29 декабря 2009

Важно понимать, что в то время 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:)

1 голос
/ 11 марта 2009

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

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

1 голос
/ 10 марта 2009

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

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

Я процитирую соответствующий раздел:

WordStar 3.0 для MS-DOS

апрель 1982

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

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

...