Open Source

os8088: O sistema operacional gráfico estilo Mac para o IBM XT 8088

Conheça o os8088, sistema operacional com interface gráfica para chips 8086 e 8088, multitarefa e consumo de apenas 147K de RAM.

Compartilhar
Computador antigo IBM XT exibindo interface gráfica do sistema operacional os8088 em um monitor CRT.
Computador antigo IBM XT exibindo interface gráfica do sistema operacional os8088 em um monitor CRT.

O ecossistema de sistemas operacionais para a arquitetura x86 original ganhou um novo marco técnico com o lançamento do os8088, um sistema operacional completo com interface gráfica inspirada no clássico Macintosh da Apple, desenvolvido especificamente para rodar em hardware antigo como o IBM XT e processadores 8088, 286 e 386. Capaz de iniciar a partir de um setor de boot compacto de apenas 512 bytes, o núcleo da plataforma assume o controle do hardware diretamente do BIOS e inicializa uma área de trabalho limpa, detectando automaticamente os leitores de disquete configurados pela máquina sem carregar nenhum utilitário pesado na memória RAM durante a inicialização inicial.

Computador antigo IBM XT exibindo interface gráfica do sistema operacional os8088 em um monitor CRT.
Foto: Hacker News

Em testes de carga real, o os8088 demonstrou capacidade de manter cinco programas sendo executados em simultâneo: um editor de texto Note Pad carregado diretamente do disquete de software, um relógio digital Clock, a animação gráfica Bounce de uma bola rebatendo, o painel de controle Control Panel e o gerenciador de tarefas Task Manager. Durante essa sessão multitarefa, o medidor de desempenho do sistema registrou uma taxa de ocupação do processador de 70%, consumindo apenas 147K de RAM da memória total da máquina, comprovando a eficiência extrema no gerenciamento de recursos para arquiteturas do final dos anos 1970 e início dos anos 1980.

Para o mercado de tecnologia no Brasil, onde a preservação de computadores históricos e o estudo de engenharia de software de baixo nível possuem comunidades ativas em universidades e grupos de retrocomputação, o os8088 surge como um estudo de caso prático sobre como arquitetar um ambiente gráfico multitarefa pré-emptivo em chips restritos a registradores de 16 bits. A capacidade de executar aplicações dinâmicas sem depender do MS-DOS subjacente demonstra que os limites técnicos de hardware legado ainda podem ser expandidos através de otimização rígida de código em linguagem assembly e uso eficiente do heap de memória.

Arquitetura e gerenciamento de memória

O gerenciador de memória do os8088 opera alocando blocos contínuos no heap do sistema para cada novo aplicativo ou janela aberta. Programas executáveis como o jogo MINES, que exige um bloco de 2.048 bytes, e o programa utilitário HELLO, de apenas 512 bytes, são lidos diretamente do disquete formatado no padrão FAT12 e alocados em segmentos de memória separados no heap. Como cada programa é compilado para ser executado com deslocamento zero (offset zero) dentro do seu próprio segmento de memória de 16 bits, o núcleo do os8088 elimina a necessidade de aplicar correções dinâmicas de ponteiros (relocation patching) no momento do carregamento.

O isolamento de programas em segmentos próprios permite que instâncias do mesmo executável coexistam na sessão sem conflitos de memória. Quando múltiplas janelas do aplicativo de texto Note Pad são abertas, cada instância recebe um buffer de texto dedicado de 512 caracteres. O limite de programas ativos simultaneamente no os8088 é determinado única e exclusivamente pelo espaço livre restante no heap do sistema, permitindo que a tabela de instâncias registre múltiplos processos simultâneos enquanto houver memória RAM física disponível no equipamento.

O sistema também lida de forma direta com o armazenamento em disquetes de baixa densidade no formato FAT12. No gerenciador de arquivos interno do os8088, ao navegar pela unidade de disquete B:, a listagem de arquivos exibe ícones personalizados para cada aplicativo antes mesmo do executável ser totalmente carregado na memória RAM. Isso ocorre porque o navegador de arquivos faz uma varredura direta no primeiro setor de cada arquivo no disco, extraindo um mapa de bits compacto no formato de matriz 16x16 bitmap contido no cabeçalho do pacote do software.

Interface gráfica e renderização XOR

A interface de usuário do os8088 implementa conceitos visuais consagrados na computação gráfica moderna, adaptados para operar com extrema economia de memória de vídeo. Os menus suspensos da barra superior funcionam enquanto o botão do mouse permanece pressionado: ao clicar e arrastar o ponteiro sobre os itens, o sistema lê as opções e executa o item selecionado assim que o botão é liberado. Para economizar RAM, o os8088 não reserva um buffer secundário (back buffer) da tela inteira; em vez disso, no momento exato em que um menu é aberto, os pixels da área coberta pelo menu suspenso são copiados temporariamente para um bloco reservado no heap e posteriormente restaurados assim que o menu fecha.

O gerenciamento de janelas inclui um mecanismo de movimentação baseado no modo gráfico lógico XOR mode. Ao arrastar a barra de título de uma janela, o os8088 não redesenha todo o conteúdo da janela em tempo real; ele projeta um contorno oco de um pixel de espessura que segue a posição do ponteiro do mouse. Devido às propriedades da operação matemática XOR, desenhar e apagar a moldura sobre a tela é exatamente a mesma operação de inversão de cores, permitindo que o contorno inverta dinamicamente o texto e os gráficos das janelas subjacentes, como a janela Disk, sem corromper ou perder o conteúdo gráfico do fundo.

Cada janela criada na interface do os8088 é registrada como um item individual dentro de uma tabela de instâncias mantida pelo sistema operacional. Ao abrir instâncias duplicadas dos utilitários Clock e Bounce, o sistema calcula o posicionamento das janelas aplicando um deslocamento automático de dezesseis pixels para baixo e dezesseis pixels para a direita em relação à janela anterior. Cada uma das instâncias recebe um ícone correspondente na barra de tarefas (dock), e a posição do ícone na dock refere-se diretamente ao slot numérico atribuído na tabela interna de instâncias do núcleo.

Subsistema de tarefas e escalonamento

O escalonamento de processos no os8088 é dinâmico e pode ser alterado pelo usuário em tempo de execução sem a necessidade de reiniciar o sistema ou realizar processos de reinicialização de conexões internas. No painel de controle Control Panel, ao alternar a configuração do escalonador para o modo Cooperative, a alteração é aplicada imediatamente no byte do registrador do núcleo no próximo ciclo do relógio (timer tick), fazendo com que o sistema recuse a troca compulsória de tarefas até que o programa ativo libere o controle voluntariamente.

A janela sobre o sistema, identificada como caixa About, lê diretamente o estado interno do kernel em tempo real para exibir as especificações de funcionamento. A palavra pre-emptive exibida na terceira linha dessa caixa dialogal é renderizada diretamente a partir do byte do escalonador mantido no kernel toda vez que a janela é redesenhada. Com essa arquitetura de leitura direta da memória do núcleo, programas como o About, o Control Panel e o Task Manager mantêm consonância garantida sobre qual modo do escalonador está em execução no chip 8088.

O monitor de desempenho do sistema, o Task Manager, utiliza um buffer circular de 160 colunas para gerar um gráfico histórico da CPU. O sistema grava uma amostra de uso a cada nove ciclos de relógio do hardware, permitindo que uma varredura completa da largura da janela represente aproximadamente oitenta segundos de histórico contínuo de processamento. Aplicações que não possuem um ciclo de tarefas próprio têm o tempo de execução de suas chamadas de janela (window callbacks) medido e contabilizado no momento exato do despacho da mensagem pelo kernel, garantindo que a soma das porcentagens de processamento das tarefas corresponda exatamente ao total consumido pelo sistema.

O sistema de entrada de dados do teclado destina os pressionamentos de teclas exclusivamente à janela que está em primeiro plano com o foco ativo. No editor de texto Note Pad, o texto digitado via teclado emulado é ajustado automaticamente na área de exibição de 258 pixels de largura da janela, posicionando o cursor piscante (caret) imediatamente após o último caractere visível. Caso uma janela seja minimizada para o dock, como os utilitários Clock e Bounce, o ícone na barra de tarefas é desenhado com cores invertidas para indicar o estado oculto, mas a aplicação continua em execução em segundo plano; o aplicativo Clock mantém a contagem regular das horas enquanto minimizado, apenas pulando as rotinas gráficas de renderização na tela.

Suporte multimídia e recursos gráficos

Apesar das limitações históricas de cores das placas de vídeo dos computadores da era IBM XT, o os8088 inclui uma suíte gráfica e multimídia adaptada para hardware modesto. O editor de imagens Paint suporta uma paleta de 16 cores e oferece ferramentas para manipulação de mapas de bits, incluindo lápis, borracha, preenchimento de cor, desenho de formas geométricas, seleção de área, conta-gotas e inserção de texto. O aplicativo possui suporte a redimensionamento de tela de pintura, área de transferência, desfazer alterações (undo) e leitura e escrita nativa nos formatos de imagem BMP e GIF.

Na área de reprodução sonora, o os8088 oferece um player de áudio denominado Tracker, capaz de carregar e reproduzir arquivos de som de quatro canais no formato .MOD originários da plataforma Amiga diretamente a partir de um disquete. Durante a execução da música, o padrão de notas do arquivo rola verticalmente sob a linha de reprodução ativa enquanto quatro medidores visuais de volume acompanham o ritmo dos canais de áudio, permitindo que o usuário continue interagindo com outros aplicativos no desktop sem interrupção do som.

O suporte à geração de som do sistema inclui o utilitário Recorder, desenvolvido para captura e reprodução de áudio amostrado com indicador de forma de onda (waveform) e um tom de demonstração pré-gravado. O software detecta automaticamente se o computador possui uma placa de som Sound Blaster instalada; na ausência da placa dedicada, o sistema redireciona a saída de som para o alto-falante interno do computador (PC speaker), exibindo o modo ativo diretamente na linha de status da interface. Para síntese musical, o aplicativo Piano oferece um teclado virtual de duas oitavas com reprodução de pauta musical e suporte a síntese de frequência FM synthesis quando uma placa compatível é identificada.

A geração avançada de matemática fractal também está presente no sistema através do aplicativo Fractal, um explorador de conjuntos de Mandelbrot. O programa permite aplicar zoom, escolher esquemas de cores e renderizar os cálculos matemáticos complexos através de três etapas sucessivas de refinamento visual (passes). O motor de cálculo do Fractal executa em segundo plano no os8088, o que possibilita que o usuário utilize a área de trabalho para outras atividades enquanto a imagem é processada pela CPU.

Desenvolvimento e execução de software

Para quem deseja desenvolver aplicativos nativos para o sistema, o os8088 inclui o programa HELLO, que serve como o menor exemplo funcional de código para a plataforma. Trata-se de uma janela simples composta por apenas duas linhas de texto estático, ocupando 512 bytes de espaço compilado. O HELLO é fornecido sem um ícone embutido no seu primeiro setor, o que faz com que a janela do gerenciador de disco Disk utilize um ícone genérico do sistema para representá-lo na listagem de arquivos.

A oferta de jogos e softwares de produtividade desenvolvidos ou adaptados para o sistema inclui o editor de texto focado em sintaxe Markdown chamado ArtfulType. Trata-se de uma reconstrução para o processador 8086 de um aplicativo de escrita criado pelo desenvolvedor ActionRetro originalmente para computadores Macintosh clássicos com processadores da família Motorola 68k. O editor opera em modo de tela cheia (Writer mode), possui sua própria barra de menus, formatação dinâmica durante a digitação e gera arquivos em texto puro compatíveis com editores modernos.

Entre os jogos nativos incluídos na distribuição do os8088 está o Solitaire, uma versão do jogo de cartas Klondike na qual o jogador distribui as cartas do monte, move conjuntos de cartas entre sete colunas e constrói as quatro pilhas principais a partir dos áses. Durante a movimentação das cartas pelo cenário com o mouse, as cartas projetam um contorno gráfico em modo XOR semelhante ao utilizado no arraste de janelas do sistema.

Outro título presente no ecossistema é o Arkanoid, um jogo de quebra de blocos controlado pelas teclas direcionais do teclado onde o objetivo é destruir seis fileiras de tijolos enquanto o jogador mantém a pontuação acumulada através dos níveis. A velocidade da bola no jogo é gerenciada por um temporizador (timer) próprio do aplicativo, garantindo que o deslocamento dos elementos do jogo permaneça constante independentemente da carga de processamento das outras tarefas no desktop.

O sistema traz ainda a sua própria implementação do clássico jogo de campo minado, identificado como MINES ou Minesweeper. Com um arquivo executável compacto de 1.510 bytes, o jogo opera em um tabuleiro de grade 9x9 contendo exatamente 10 minas escondidas. Ao dar um duplo clique no arquivo MINES no gerenciador de disco, o executável é alocado em seu segmento próprio de memória RAM e inicializa sua janela gráfica; a partir desse momento, as rotinas internas de pintura de tela, tratamento de teclas e cliques do jogo funcionam como chamadas curtas (near offsets) tratadas pelo kernel de forma idêntica aos aplicativos embutidos do sistema.

O Minesweeper do os8088 se destaca tecnicamente por ser o único componente de todo o sistema operacional a utilizar uma paleta com mais de duas cores em seus elementos nativos de tela. A jogabilidade exige apenas um clique com o mouse em uma célula para revelá-la, a tecla F para ativar o modo de inserção de bandeiras e a tecla N para reiniciar uma nova partida. Para evitar derrotas instantâneas no início do jogo, a lógica interna do programa gera o posicionamento aleatório das dez minas somente após o jogador realizar o primeiro clique na grade de células, garantindo que a área selecionada inicialmente sempre abra uma região limpa no tabuleiro.

Por fim, a interoperabilidade de dados entre o os8088 e plataformas modernas é mantida por meio dos padrões de arquivos gravados pelo editor Note Pad. Os documentos gerados pelo aplicativo são salvos como arquivos de texto sem formatação diretamente na estrutura de diretórios da mídia magnética no padrão FAT12. Essa escolha de projeto permite que um disquete gravado por um computador antigo rodando o os8088 possa ser lido e editado diretamente por leitores de disquete USB em sistemas operacionais contemporâneos sem necessidade de conversão de dados.

#os8088#retrocomputacao#ibm-xt#sistemas-operacionais#assembly
Compartilhar

Artigos Relacionados