Quase ninguém ouviu falar do sistema operacional DOS-777. E isso realmente existia. É verdade que, na realidade, era o MS DOS mais comum, com pequenas alterações, projetado para rodar em um único computador e rodar um único programa. Esse clone deve sua aparência, de alguma forma, ao problema de compatibilidade com versões anteriores. Mas as primeiras coisas primeiro.
Um programa novo e importante de repente se comportou de uma maneira completamente misteriosa. Isso enfureceu tanto seus autores que se decidiu desmontar o MS DOS, entender as nuances de seu trabalho e descobrir as causas de estranhos erros. Agora, mesmo na paixão, dificilmente alguém ousará desmontar, por exemplo, o Windows-10 e entender todas as suas funcionalidades. Mas então, no início dos anos 90, quando o sistema operacional consistia em três arquivos relativamente pequenos, sua desmontagem e análise levaram duas semanas.
Muitos pequenos recursos foram descobertos que provavelmente não interessam a ninguém agora. Mas naquela época, de acordo com os resultados desta análise, era até possível preencher os nomes faltantes dos campos das tabelas internas do MS DOS, que em um dos livros da série Biblioteca do Programador de Sistemas editados pela Frolovs (editora Dialogue MEPhI) eram designados como "reservados".
Repito, é improvável que todas essas sutilezas sejam do interesse de alguém agora, mas as três nuances encontradas, de uma forma ou de outra relacionadas ao problema de compatibilidade com versões anteriores, talvez valham a pena mencionar.
Nuance primeiro. Os primeiros programas "TSR", por exemplo, "SideKick", procuravam o endereço do sinalizador "ocupado" interno do sistema operacional diretamente do contexto de comandos dentro do MS DOS. Em versões subsequentes, esse contexto mudou e uma função documentada de solicitar um sinalizador apareceu, mas vários comandos "antigos" foram movidos especialmente para o segmento de dados (eles não obtiveram controle), de forma que programas antigos ainda encontrem o contexto correto. Uma analogia vem à mente com o lançamento de um novo navio que leva o nome de seu lendário predecessor. Então, de acordo com a tradição, uma placa é cortada do antigo casco e fixada como uma placa memorial ao novo navio. Portanto, todas as versões do MS DOS traziam consigo uma pequena parte da primeira versão de 1981.
A próxima nuance era mais curiosa. Acontece que antes de executar qualquer arquivo EXE, o MS DOS verifica um determinado contexto em um determinado lugar entre seus comandos. Se estiver lá, o sistema operacional "empurra" ligeiramente os comandos vizinhos e adiciona os comandos PUSH CX e 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, .
Assim, o problema de compatibilidade com versões anteriores existe objetivamente e às vezes é necessário resolvê-lo. Mas se nos dois primeiros exemplos dados a solução era engenhosa e, mais importante, escondida para usuários que não precisam dessa compatibilidade, então nos dois últimos exemplos uma tentativa de compatibilidade (na minha opinião, rebuscada!) Levou a soluções de hardware fantasiosas e deu origem a problemas. Além disso, a compatibilidade, mesmo então, era muito melhor e mais fácil de garantir por um modo virtual 8086 especialmente projetado.
O principal problema com qualquer compatibilidade com versões anteriores é que a cada ano há cada vez menos usuários que precisam dela. E todo mundo tem que levar isso em consideração.