quinta-feira, novembro 12, 2020

Memórias dos Anos 80: O Nexus 1600, parte 3 (BIOS)

 Agora é hora de falar nos altos e baixos do BIOS do Nexus 1600.

O início do BIOS do PC IBM


Uma coisa inesperada no Technical Reference era a listagem completa do BIOS original do PC-IBM. Inicialmente a Scopus, como outras empresas inclusive americanas, viu nisso um bom atalho para lançar rapidamente um micro compatível.

Como o Nexus tinha diferenças no hardware, é claro que o BIOS da IBM não rodaria sem alterações. Na primeira encarnação, as alterações estavam relacionadas ao suporte à operação a 8MHz, a  retirada das esperas pelo retraço nos acessos à memória de vídeo e o acréscimo ao suporte aos disquetes de 8" e ao HD.

O alarme soou bem cedo: reportagens nas revistas americanas começaram a relatar que a IBM estava indo atrás dos fabricantes que tinham copiado o BIOS. Falava-se que a IBM tinha desenvolvido um programa sofisticado para detectar cópias.

O resultado foi um projeto a toque de caixa na Scopus para reescrever o BIOS. Algumas empresas adotaram o esquema de "sala limpa", onde um grupo estudava a listagem e escrevia uma especificação e um segundo grupo desenvolvia o BIOS a partir destas especificações sem conhecer as listagens. A Socpus não chegou a esse ponto.

Aqui cabe uma divagação sobre o que seria interface e o que seria implementação no BIOS. Muitos softwares eram escritos em Assembler e a listagem do BIOS era a especificação definitiva para os desenvolvedores. Tradicionalmente o conteúdo das EPROMs dos microcomputadores é bastante estável e muitos desenvolvedores usavam diretamente endereços de rotinas e variáveis.

O princípio do reprojeto do BIOS era que naturalmente o código sairia diferente. Salvo necessidades maiores, os endereços e significados das variáveis foram mantidos. Também foi evitado mudar só para ficar diferente: a arquitetura do 8088 leva a certas sequencias tradicionais de instruções e elas foram utilizadas sem remorso. Mas não houve preocupação em fazer a mesma divisão de rotinas, muito menos os seus endereços. A parte que eu fiz foram as funções de vídeo e (consistente com a minha arrogância juvenil) eu procurei fazer um código mais eficiente que o original. O resultado final da reescrita foi quase perfeito...

Algum tempo depois a IBM discretamente procurou a Scopus com listagens mostrando semelhanças entre o BIOS do PC-IBM e o BIOS do Nexus. Ao contrário do apregoado, o programa de comparação não era incrivelmente sofisticado. Mas a impressão em duas cores (com as semelhanças em vermelho) impressionavam na época (e dificultavam fazer uma cópia xerox). Pânico, até que um exame revelou que as principais semelhanças estavam entre a rotina de disquete da IBM e as rotinas de disquete 8" e HD do Nexus. Estes trechos tinham sido esquecidos na reescrita (o disquete de 8" ninguém usava e não passou pela cabeça que as rotinas de HD tinham sido feitas a partir das de disquete). A correção foi simples e a IBM não pressionou mais (até onde lembro isto não vazou para a imprensa). O único ponto chato é que a culpa foi jogada sobre o projetista original destas rotinas (que não trabalhava mais na empresa).


Um comentário:

Anônimo disse...

Muito Bom o texto ! Abração !