quinta-feira, novembro 19, 2020

Memórias dos Anos 80: Nexus 1600 , parte 4 (SISNE)

Uma das partes mais polêmicas do projeto do Nexus 1600 foi o desenvolvimento de um sistema operacional compatível com o MS-DOS, o SISNE (SIStema do NExus). Muitas pessoas não acreditavam (e não acreditam) que o SISNE foi desenvolvido pela Scopus. O eu dizia na época era: "foi desenvolvido sim, e temos os bugs para provar...".

Texto no livreto "Scopus 30 anos"


Um ponto fraco da reserva de mercado era o software, com a pirataria correndo solta. Mesmo entre os apoiadores da política de reserva existia uma ênfase no hardware, a preocupação com o número de máquinas produzidas e a visão do software como sendo uma atividade secundária que podia ficar para uma segunda etapa. Foi uma surpresa o governo ser convencido a estabelecer uma regra obrigando os micros de 16 bits a serem comercializados com sistema operacional desenvolvido no Brasil (spoiler: esta regra não deu o resultado esperado).

Não que desenvolver um sistema operacional seja uma tarefa impossível. É parte do nosso complexo de vira-latas achar que certas coisas só pode se feitas por empresas estrangeiras.

O MS-DOS 1.x, em particular, não era um sistema complexo. Conforme relatado em vários lugares (aqui por exemplo), o desenvolvimento inicial foi feito por uma pessoa (Tim Paterson) em seis semanas. A interface de programação era baseada no CP/M-80, com cerca de duas dúzias de funções. A maior parte do "núcleo" era a manipulação do sistema de arquivos que se baseava na FAT, criada pela Microsoft para o Standalone Disk BASIC. Suportando apenas disquetes com baixa capacidade, a FAT ocupava apenas 512 bytes e podia ser mantida continuamente na memória.

Além do núcleo, o MS DOS 1.x incluía o interpretador de comando (COMMAND, que implementava internamente os comandos DIR, DEL, COPY, TYPE, RENAME, PAUSE e REM) e os utilitários CHKDSK, DISKCOMP, DISKCOPY, FORMAT, MODE e SYS.

O grande trunfo da Scopus para desenvolver o SISNE era usar uma linguagem de alto nível ao invés de Assembly. A oferta de linguagens neste tempo não era muito grande e acabou sendo escolhido um compilador de PASCAL comercializado pela IBM para a primeira versão do SISNE. Este compilador se mostrou bem adequado, pelo menos em termos de facilidade em programar e estabilidade. É claro que o resultado ficou bem maior que o MS-DOS, mas o Nexus vinha com incríveis 256K bytes na placa de sistema...

Para fazer o SISNE no prazo necessário foi feita uma grande força tarefa. Não lembro mais os detalhes, mas acho que foram duas ou três pessoas fazendo o núcleo (eu uma delas), um pessoa fazendo o COMMAND (sem o COPY, que foi transformado em utilitário externo) e mais duas ou três pessoas para fazer os utilitários (incluindo o COPY).

O SISNE funcionava e (até onde me lembro) não tinha muitos problemas de compatibilidade. O problema mesmo eram os bugs. Nos meses seguintes eu tive bastante trabalho tentando resolvê-los e tive a desilusão de descobrir que um dos desenvolvedores era bem fraco (e isto era bastante conhecido, só eu na minha inocência não sabia).

Em um post futuro eu vou falar sobre a segunda versão do SISNE. Mas eu acho que aqui é um bom ponto para avançar alguns anos, para depois que eu já tinha saído da Scopus e o SISNE estava na versão 3, quando a Scopus foi acusada de ter copiado o MS DOS, com direito a matéria na Veja. Eu procurei a Scopus para saber os detalhes e, na verdade, a situação era boba. O trecho de código que sai estampado na Veja (e em outros lugares) era parte do utilitário SUBST. Este utilitário, pouco usado, permitia converter acessos a uma unidade de disco para outra (para poder rodar aplicativos que tivessem a unidade fixa no código). A lógica deste utilitário é simples: ele intercepta as chamadas ao DOS e troca a letra da unidade na entrada e destroca na volta. A única complicação é que os locais onde pode estar a unidade variam conforme a função. O desenvolvedor da versão Scopus, preocupado com compatibilidade, disassemblou o utilitário original e anotou os passos feitos (basicamente testar um a um os códigos de função e fazer os ajustes conforme ele). Na hora de programar, ele seguiu diretamente estas anotações e acabou fazendo os mesmos testes na mesma ordem... O curioso é que eu acho que dificilmente faria isso pois a minha arrogância juvenil me faria inventar um forma "mais eficiente" de fazer a mesma coisa. Provavelmente usaria uma tabela, que é o que foi feito pela Scopus para gerar uma versão diferente. Mas neste ponto a reserva de mercado já estava no fim e pouco tempo depois a Microsoft foi autorizada a comercializar o MS DOS 3.3 porque as versões nacionais só seriam compatíveis dom a versão 3.2 (ou outra besteira parecida).


Um comentário:

NoviSlot disse...

Lembro de ter instalado uma versão do SISNE em um cliente. Nesta época eu ainda não entendia ou conhecia muito bem estes detalhes sobre sistemas operacionais, mas lembro que o aplicativo que seria utilizador não era 100% compatível com o SISNE. Depois o micro foi reformatado e instalado um MS-DOS.
Parabéns pelos artigos, resgatando os bastidores da informática no Brasil. Não vejo a hora de chegar na "parte 876" (rs!).