Hoje é 2018 e a mensagem de erro envia saudações a partir de 1974. Essa limitação, encontrada nas versões mais recentes do Windows 10, remonta ao momento em que nem um único episódio
de Guerra nas Estrelas foi filmado. Esse bug é tão antigo quanto o
Watergate . Quando foi escrito, nem um único produto tinha um
código de barras UPC porque foi inventado. Naqueles dias, havia apenas uma
companhia telefônica que não estava dividida.
Ted Bundy estava livre. O recorde de Beiba Ruta para home runs apenas
preparado para cair .
A Roda da Fortuna ainda não havia sido mostrada e ninguém havia assistido ao
Rocky Horror Horror Show .
Steven Spielberg era então um diretor pouco conhecido,
"Saturday Night Live" não apareceu nas telas.
"Edmund Fitzgerald" enquanto carregava minério de ferro. Foi o ano da estréia da Parte 2 de
O Poderoso Chefão !
Naquela época, o Unix, que tinha apenas
5 anos , tinha a ideia legal de que "tudo é um arquivo". Isso significa que você pode fazer coisas diferentes, como gravar em soquetes, tubos, console etc. usando os mesmos comandos e instruções. O conceito foi transferido por
Gary Kildall para o
CP / M em 1974. Você pode copiar dados da porta serial para um arquivo de texto ou imprimir um arquivo de texto diretamente da linha de comando! No Unix, isso é feito usando arquivos especiais localizados em diretórios especiais, por exemplo, / dev / tty para o console ou / dev / lp0 para a primeira impressora. Você pode obter zeros infinitos em / dev / zero, bytes aleatórios em / dev / random, etc.
Mas há um problema: o CP / M foi projetado para computadores de 8 bits com uma quantidade muito pequena de memória e sem discos rígidos. Na melhor das hipóteses, eles tinham 8 "disquetes. E diretórios? Você não precisa deles. Em vez de diretórios, apenas usavam discos diferentes. Mas sem diretórios, não era possível colocar todos os seus arquivos especiais em / dev /. Portanto, na verdade eles estavam" em todos os lugares ". Ou seja, se você tivesse FOO.TXT e precisasse imprimi-lo, poderia fazer PIP LST: = FOO.TXT para copiar FOO.TXT para o arquivo LST, que é a impressora, e funcionou em qualquer lugar, porque que o diretório não existia.
E as extensões? Tudo também não é fácil: os programas preferem adicionar as extensões corretas aos seus arquivos. Ou seja, se você executar o programa e digitar “Digite um nome de arquivo para salvar a lista”, poderá inserir LST para imprimi-lo ou PTP para gravá-lo em fita (porque você está em 1974, lembra-se?). Mas o programa pode tentar adicionar .TXT no final do arquivo! Mas o LST.TXT não é mais uma impressora, certo? Não importa como. É isso. Os nomes dos dispositivos são reconhecidos independentemente dos ramais. Ou seja, se “CON” for atribuído ao teclado, CON.TXT e CON.BUG também. Hum. Isso é um truque, mas funciona. Além disso, em qualquer lixo com 4KB de RAM, não se importa?
Bem, o CP / M se espalhou no final dos anos 70 - início dos anos 80. Ela se tornou um dos principais sistemas operacionais para os negócios, definindo uma interface padrão. Isso significava que você poderia escrever o código CP / M no
NorthStar Horizon e executá-lo no
Seequa Chameleon . A falta de um padrão gráfico em sua maior parte não permitiu a entrada no mercado de jogos (embora houvesse lançamentos da
Infocom ), com foco principalmente em usuários corporativos. Ainda assim, como era significativo, o desejo da IBM de usá-lo em seu projeto de PC no início dos anos 80 tornou-se natural. Em seguida, a IBM lançaria um PC IBM com vários sistemas operacionais, esperando que o CP / M se tornasse um dos principais. Mas o CP / M para x86 não saiu seis meses após o lançamento do IBM PC e custou US $ 240 contra US $ 40 para o DOS.
Como resultado, a grande maioria dos usuários começou a usar o PC-DOS da Microsoft, que se tornou a evolução do novo sistema operacional desenvolvido pela
Seattle Computer Products . A Microsoft comprou o projeto de Tim Paterson e criou o PC-DOS, que mais tarde se tornou o MS-DOS. O sistema operacional de Tim Paterson foi chamado de
"QDOS", que significava "Sistema operacional rápido e sujo". Foi baseado no CP / M, que não possuía uma versão x86, e tentou solucionar algumas das limitações do CP / M. De muitas maneiras, estes eram sistemas muito semelhantes. Um dos recursos comuns era a idéia de usar arquivos especiais e a falta de diretórios. Portanto, QDOS e PC-DOS 1.0 tinham todos esses AUX, PRN, CON, LPT, etc.
Com o lançamento do PC-DOS 2.0 em 1983, a Microsoft redesenhou significativamente o PC-DOS para o novo IBM XT. Obviamente, você só precisava de diretórios para manter em ordem seus enormes discos de 10 megabytes, que apareceram no mercado. E, novamente, azar: os usuários trabalham com seus arquivos especiais há alguns anos desde o lançamento da versão anterior do PC DOS 1.0. Programas e scripts foram escritos para usar esses arquivos. Com o suporte de diretórios, a Microsoft finalmente pôde remover tudo em C: \ DEV ... mas não o fez. Como acontecerá mais de uma vez, a Microsoft trouxe bom senso ao altar da compatibilidade com versões anteriores: arquivos especiais permaneciam em cada diretório com qualquer extensão. Esse legado foi realizado em todas as versões até o Windows 95. Mas, ei, agora não usamos o Windows 95, porque o ramo moderno dos sistemas operacionais é baseado no Windows NT. Mas ela também precisava de compatibilidade com os programas DOS / Windows. Portanto, esses arquivos especiais ainda funcionam, depois de quarenta e quatro anos! Tente você mesmo: abra o explorer, crie um novo arquivo de texto e chame-o de con.txt. aux.txt ou prn.txt. Lá estava.

Ou seja, graças a Gary Kildall, que disse: “Arquivos especiais representam o equipamento! Ótima idéia, Unix. Tomo emprestado e tento implementá-lo no meu sistema operacional de brinquedos "há muito tempo que as pessoas nascidas na época já podem ter filhos que podem beber álcool ... ainda não podemos nomear os arquivos como con.txt. A Microsoft ainda possui uma
lista especial: CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 e LPT8. LPT9. Para tornar as coisas divertidas, lembre-se de que tentar acessar C: \ con \ con (ou C: \ aux \ aux) imediatamente lançou o Windows 95 no BSOD. Foi engraçado em 1995, porque esse bug já tinha 21 anos!

AntecedentesMe deparei com isso quando percebi que tinha um arquivo que não pode ser copiado. Esses nomes de arquivos especiais são implementados no nível do sistema operacional e não no sistema de arquivos. Portanto, eles são nomes de arquivos válidos no NTFS. E eu usei o disco NTFS no Linux. E, aparentemente, o OS / 2 não oferece suporte a esse sistema de nomes especiais, como resultado dos quais os arquivos opengl estavam AUX.H em uma das unidades do Devcon.

E hoje eu tentei fazer backup desse disco NTFS no meu computador principal e "opa, não consigo copiar todos os arquivos por causa do bug, mais antigo que a maioria das pessoas que está lendo isso".
ExplicaçõesNo CP / M, trabalhar com nomes especiais não é tão simples como eu descrevi. Por exemplo, para acessar o dispositivo, você precisa de dois pontos no nome: PRN: é uma impressora, mas o PRN não é. Além disso, no CP / M, o trabalho com arquivos de dispositivo não é implementado no nível do SO, como no DOS. Isso é apenas parte do comando PIP para copiar arquivos. Ou seja, você não poderá pôr em marcha, como no DOS, um truque para instruir o programa a salvar o PRN.TXT para imprimi-lo.
E, para garantir, vou esclarecer: não quero dizer nada como "O Windows é uma merda". A compatibilidade com versões anteriores é geralmente uma grande coisa. Na verdade, quero mais compatibilidade com versões anteriores, nada menos. Fiquei louco, depois de encontrar um bug de 44 anos ao executar o Windows 10 ao tentar copiar de uma unidade SSD USB 3.0 para outra SSD. É como viver em uma estação espacial e ser pisoteado por um cavalo.