¿Cuál fue el cambio de un solo byte al puerto WordStar de CP / M a DOS?

StackOverflow https://stackoverflow.com/questions/632145

  •  08-07-2019
  •  | 
  •  

Pregunta

Estaba releyendo Carta de estrategia II: Problemas de huevo y gallina de Joel. a través de esta divertida cita:

  

De hecho, WordStar fue portado a DOS   cambiando un solo byte en el   código. (Los verdaderos programadores pueden decirte   cuál fue ese byte, hace mucho tiempo que   olvidado).

No pude encontrar ninguna otra referencia a esto con una búsqueda rápida en Google. ¿Es esto cierto o solo una figura retórica? En interés de mi búsqueda para convertirme en un "Programador real", ¿cuál fue el cambio de un solo byte?

¿Fue útil?

Solución

Suena un poco exagerado, encontré algo de historial de WordStar aquí

  

WordStar 3.0 para MS-DOS

     

Abr 1982

     

En una sola sesión de toda la noche, Jim Fox parchó la versión CP / M-86 de WordStar para que se ejecute bajo MS-DOS en la PC de IBM para que se pueda demostrar a Rubenstein. El puerto real fue realizado por un grupo de programadores irlandeses que usaban sistemas de desarrollo Intel, que ejecutaban el sistema operativo ISIS II. La compilación del software se realizó en 8 '' los disquetes y los archivos binarios (ejecutables) se transfirieron a la PC de IBM por cable serie.

Pero ... Joel quizás quiso decir MS-DOS 1.0 / QDOS

  

MS-DOS 1.0 era en realidad una versión renombrada de QDOS (Sistema operativo rápido y sucio), que Microsoft compró a una compañía de Seattle, apropiadamente llamada Seattle Computer Products, en julio de 1981. QDOS se había desarrollado como un clon del CP / M sistema operativo de ocho bits para proporcionar compatibilidad con las aplicaciones comerciales más populares de la actualidad, como WordStar y dBase. CP / M (Programa de control para microcomputadoras) fue escrito por Gary Kildall de Digital Research varios años antes y se había convertido en el primer sistema operativo para microcomputadoras de uso general.

Otros consejos

Tendrías que cambiar más de un byte. Los ejecutables CP / M-86 (.CMD) tienen un 128- encabezado de bytes, que no se parece en nada al encabezado .EXE.

Si restringe todas sus llamadas API al subconjunto común de CP / M y DOS, entonces puede usar el ensamblaje condicional para construir versiones de CP / M y DOS desde la misma fuente:

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

Esta entrada de Wikipedia afirma que CP / M y MS-DOS comparten formatos binarios Continúa diciendo:

  

Aunque el formato del archivo es el mismo   en MS-DOS y CP / M, esto no significa   que los programas de CP / M pueden ser directamente   ejecutado bajo MS-DOS o viceversa;   Los archivos COM de MS-DOS contienen x86   instrucciones, mientras que los archivos CP / M COM   contiene 8080, 8085 o Z80   instrucciones.

     

En CP / M 3, si el primer byte de un   El archivo COM es 0xC9, entonces esto indica   la presencia de un encabezado de 256 bytes;   ya que 0xC9 corresponde al 8080   instrucción RET, esto significa que el   El archivo COM terminará inmediatamente si   ejecutar en una versión anterior de CP / M que   no es compatible con esta extensión.

Esto implica que quizás el arreglo / puerto estaba cambiando esta primera instrucción en otra cosa, que permitió que el resto se ejecutara. Sin embargo, no estoy seguro, eso parece implicar que el binario debe haber sido "gordo", lo que parece irrazonable para un binario heredado.

" De hecho, WordStar fue portado a DOS cambiando un solo byte en el código. (Los verdaderos programadores pueden decirte cuál fue ese byte, lo he olvidado hace mucho tiempo). & Quot;

Lun 6/08/2009 6:27 pm. Supuse que Spolsky estaba hablando de 8080 CP / M a 8086 MSDOS, y que la historia es probablemente falsa. 8086 CP / M nunca fue un elemento importante, es decir, fue completamente aplastado por MSDOS, y alguien puede haber convertido WordStar de 8080-CPM a 8086-CPM, al volver a ensamblarlo, como otros han notado que, usando un traductor especial 8080 a 8086, y luego tal vez solo se tuvo que cambiar un solo byte.

No estoy seguro de si la declaración de Joel es precisa o no. ¿Quizás quiso decir la versión de demostración que hizo Jim Fox?

Consulte http://www.wordstar.org/wordstar/history/history. htm

Citaré la sección pertinente:

  

WordStar 3.0 para MS-DOS

     

Abr 1982

     

En una sola sesión de toda la noche Jim   Fox parchó la versión CP / M-86 de   WordStar para que se ejecute en MS-DOS   en la PC de IBM para que pueda ser   demostrado a Rubenstein. El actual   puerto fue realizado por un grupo de irlandeses   programadores que utilizan el desarrollo de Intel   sistemas que ejecutaban el ISIS II   sistema operativo. La compilación del software   se hizo el 8 '' disquetes y el binario   archivos (ejecutables) fueron entonces   transferido a la PC de IBM por serie   cable.

(Editar: Vaya, demasiado tarde. Alguien más ya encontró exactamente lo mismo: - / Siéntete libre de ignorarme.)

WordStar fue escrito en el ensamblador 8080, y había herramientas en ese entonces para convertir el ensamblador 8080 a 8086 (el conjunto de instrucciones 8086 fue diseñado para permitir esto) si todo el código pudiera caber en un solo segmento, por lo que esto es bastante posible.

Utilicé WordStar por primera vez en 1979, en una caja Z80 CP / M. Es posible que la gente de hoy no se dé cuenta de la suerte que tienen: cuántos usuarios de MS Word estarían preparados como la primera tarea en la instalación de su procesador de textos para tener que escribir un par de pequeñas rutinas de ensamblador (¡en hexadecimal!) Para interconectar el procesador de textos de manera eficiente (usted podría usar las rutinas CP / M pero eran lentas y no funcionaban correctamente) con la pantalla y el teclado? Días felices ...

Una cosa importante para entender es que en ese momento las máquinas 8086 de 16 bits acababan de salir para reemplazar las máquinas actuales de 8 bits, donde el sistema operativo CP / M era el Windows del día. Todo con una unidad de disco destinada al trabajo ejecutó CP / M. Más tarde, esa versión se denominó CP / M-80 para diferenciarla de CP / M-86 para el procesador 8086.

Desafortunadamente, tomó tanto tiempo llegar al mercado que QDOS fue escrito para tener ALGO para ejecutar programas, y eso fue esencialmente una rápida reimplementación de las funciones CP / M (pero con una sintaxis diferente). QDOS luego fue comprado por Microsoft y convertido en MS-DOS. Por lo tanto, MS-DOS en realidad tiene un núcleo CP / M en el fondo, y por lo tanto, la cantidad de trabajo necesaria para que un programa CP / M-86 se ejecute bajo MS-DOS fue limitada (no a un solo byte, sino manejable).

Tuve el placer de trabajar unos años con CCP / M-86 que permitió la multitarea muy similar a lo que permite Linux en modo texto (con consolas virtuales) hoy en día. Lamentablemente, nunca se dio cuenta. Oh, bueno, tenemos Linux :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top