Casi nadie ha oído hablar del sistema operativo DOS-777. Y esto realmente existió. Es cierto que en realidad era el MS DOS más común con cambios menores, diseñado para ejecutarse en una sola computadora y ejecutar un solo programa. Este clon debe su apariencia de alguna manera al problema de la compatibilidad con versiones anteriores. Pero lo primero es lo primero.
Un programa nuevo e importante de repente se comportó de una manera completamente misteriosa. Esto enfureció tanto a sus autores que se decidió desmontar MS DOS, comprender los matices de su trabajo y encontrar las causas de extraños errores. Ahora, incluso con pasión, casi nadie se atreverá a desmontar, por ejemplo, Windows-10 y comprender todas sus características. Pero luego, a principios de los 90, cuando el sistema operativo constaba de tres archivos relativamente pequeños, su desmontaje y análisis tomó dos semanas.
Se descubrieron muchas características pequeñas que probablemente no serán de interés para nadie ahora. Pero en aquellos días, de acuerdo con los resultados de este análisis, incluso era posible completar los nombres faltantes de los campos de las tablas internas de MS DOS, que en uno de los libros de la serie System Programmer's Library editado por la Frolovs (editorial Dialogue MEPhI) fueron designados como “reservados”.
Repito, es poco probable que todas estas sutilezas sean de interés para alguien ahora, pero los tres matices encontrados, de una forma u otra relacionados con el problema de retrocompatibilidad, tal vez sean dignos de mención.
Matiz primero. Los primeros programas "TSR", por ejemplo, "SideKick", buscaban la dirección del indicador interno "ocupado" del sistema operativo directamente desde el contexto de los comandos dentro de MS DOS. En las siguientes versiones, este contexto cambió y apareció una función documentada de solicitar una bandera, pero varios comandos "antiguos" se trasladaron especialmente al segmento de datos (no obtuvieron el control) para que los programas antiguos aún encuentren el contexto correcto. Me viene a la mente una analogía con el lanzamiento de un nuevo barco que lleva el nombre de su legendario predecesor. Luego, según la tradición, se corta una losa del casco antiguo y se coloca como una placa conmemorativa del nuevo barco. Entonces, todas las versiones de MS DOS llevaban a bordo una pequeña parte de la primera versión de 1981.
El siguiente matiz fue más curioso. Resultó que antes de ejecutar cualquier archivo EXE, MS DOS comprueba un contexto determinado en un lugar determinado entre sus comandos. Si está allí, el sistema operativo "empuja" ligeramente los comandos vecinos y agrega los comandos PUSH CX y POP CX.
LOOP, , - MicroSoft, , . : « MS DOS !» . , MicroSoft , , . , CX. MS DOS POP CX, , MicroSoft . ( , ) , .
, , , , , . . , , , , , . 8086 . : .. (16 20) .. (16 20). , , , ( ). . 19- ( ) 64 .
1986 32- , 30 ( 32, ). , «» .
«». , - . , , 20- , ! : .
, , , «640 » . «expanded», - 64- «» , MicroSoft MS DOS, , , 640 .
MS DOS . DOS , , , . DOS … , ? ? ? . , DOS , (.. PSP) . ( DOS) . , .
: DOS, , , .
DOS, , . , DOS , . DOS-777 , .
, , . MMX, FPU. : , , FPU. MMX, .
-, : , MMX, ( ) , , Windows. , - MMX . - MMX FPU . - - Windows , MMX, .
Por tanto, el problema de la retrocompatibilidad existe objetivamente y, en ocasiones, es necesario resolverlo. Pero si en los dos primeros ejemplos dados la solución era ingeniosa y, lo más importante, oculta para los usuarios que no necesitan esta compatibilidad, entonces en los dos últimos ejemplos un intento de compatibilidad (en mi opinión, ¡inverosímil!) Llevó a soluciones de hardware fantásticas y dio lugar a problemas. Además, la compatibilidad incluso entonces era mucho mejor y más fácil gracias a un modo virtual 8086 especialmente diseñado.
El principal problema de cualquier compatibilidad con versiones anteriores es que cada año hay menos usuarios que la necesitan. Y todo el mundo tiene que tenerlo en cuenta.