Apple DOS - Apple DOS

Apple DOS
Apple DOS.png
Computador Apple executando um programa Hello World
Desenvolvedor computador Apple
Escrito em conjunto
Família de sistema operacional Apple DOS
Estado de trabalho Interrompido
Modelo fonte Fonte fechada
lançamento inicial 1978 ; 43 anos atrás ( 1978 )
Último lançamento 3.3 / 1980 ; 41 anos atrás ( 1980 )
Tipo de kernel Kernel monolítico
Licença Contrato de Licença de Software Apple

Apple DOS é a família de sistemas operacionais de disco para a série de microcomputadores Apple II do final de 1978 até o início de 1983. Ele foi substituído pelo ProDOS em 1983. O Apple DOS tem três versões principais: DOS 3.1, DOS 3.2 e DOS 3.3; cada um desses três lançamentos foi seguido por um segundo lançamento menor de "correção de bug", mas apenas no caso do Apple DOS 3.2 esse lançamento menor recebeu seu próprio número de versão, Apple DOS 3.2.1. A versão mais conhecida e mais usada é o Apple DOS 3.3 nos lançamentos de 1980 e 1983. Antes do lançamento do Apple DOS 3.1, os usuários da Apple dependiam de fitas cassete de áudio para armazenamento e recuperação de dados.

Histórico de versão

Quando a Apple Computer lançou o Apple II em abril de 1977, o novo computador não tinha unidade de disco ou sistema operacional de disco (DOS). Embora o co-fundador da Apple Steve Wozniak tenha projetado o controlador Disk II no final daquele ano e acreditado que ele poderia ter escrito um DOS, seu co-fundador Steve Jobs decidiu terceirizar a tarefa. A empresa considerou usar o CP / M da Digital Research , mas Wozniak buscou um sistema operacional que fosse mais fácil de usar. Em 10 de abril de 1978, a Apple assinou um contrato de $ 13.000 com a Shepardson Microsystems para escrever um DOS e entregá-lo em 35 dias. A Apple forneceu especificações detalhadas, e o primeiro funcionário da Apple, Randy Wigginton, trabalhou em estreita colaboração com Paul Laughton, de Shepardson, enquanto este escrevia o sistema operacional com cartões perfurados e um minicomputador .

Não havia Apple DOS 1 ou 2. As versões 0.1 a 2.8 eram revisões numeradas em série durante o desenvolvimento, que também podiam ser chamadas de builds 1 a 28. Apple DOS 3.0, um problema renomeado da versão 2.8, nunca foi lançado publicamente devido a bugs . A Apple não publicou nenhuma documentação oficial até o lançamento 3.2.

O Apple DOS 3.1 foi lançado publicamente em junho de 1978, pouco mais de um ano após o lançamento do Apple II, tornando-se o primeiro sistema operacional baseado em disco para qualquer computador Apple. Um lançamento de correção de bug veio depois, abordando um problema por meio de seu MASTER CREATEutilitário, que foi usado para criar discos mestres Apple DOS (inicializáveis): O INITcomando embutido criou discos que podiam ser inicializados apenas em máquinas com pelo menos a mesma quantidade da memória como aquele que os criou. MASTER CREATEinclui uma versão de auto-relocação do DOS que inicializa no Apple com qualquer configuração de memória.

O Apple DOS 3.2 foi lançado em 1979 para refletir as mudanças nos métodos de inicialização do computador que foram incorporados ao sucessor do Apple II, o Apple II Plus. O novo firmware incluía um recurso de inicialização automática que localizava automaticamente um controlador de disco e inicializava a partir dele quando o sistema era ligado - ganhando o nome de "Autostart ROM ". O DOS 3.2.1 foi então lançado em julho de 1979 com algumas pequenas correções de bugs.

Apple DOS 3.3 foi lançado em 1980. Ele melhora várias funções da versão 3.2, ao mesmo tempo que permite grandes ganhos no armazenamento de disquete disponível ; os PROMs P5A / P6A mais recentes no controlador de disco permitiram a leitura e gravação de dados em uma densidade mais alta, então, em vez de 13 setores (3,25  KiB ), 16 setores (4 KiB) de dados podem ser armazenados por trilha do disco, aumentando a capacidade de 113,75 KB a 140 KB por disco - 16 KB dos quais são usados ​​pela sobrecarga do sistema de arquivos e uma cópia do DOS, em um disco formatado para DOS 3.3, deixando 124 KB para programas e dados do usuário. O DOS 3.3, entretanto, não é compatível com versões anteriores ; ele não pode ler ou gravar discos DOS 3.2. Para resolver esse problema, a Apple Computer lançou um utilitário chamado "MUFFIN" para migrar os arquivos e programas do Apple DOS 3.2 para os discos da versão 3.3. A Apple nunca ofereceu um utilitário para copiar na outra direção. Para migrar os arquivos Apple DOS 3.3 de volta para os discos da versão 3.2, alguém escreveu um utilitário "NIFFUM". Existem também utilitários comerciais (como o Copy II Plus) que podem copiar arquivos de e para qualquer formato (e eventualmente ProDOS também). A versão 3.3 também melhora a capacidade de alternar entre Integer BASIC e Applesoft BASIC, se o computador tiver uma placa de idioma ( expansão de RAM ) ou placa de firmware.

Detalhes técnicos

Os discos Apple DOS 3.1 usam 13 setores de dados por trilha, cada setor sendo 256 B. Ele usa 35 trilhas por lado do disco e pode acessar apenas um lado do disquete, a menos que o usuário vire o disco . Isso dá ao usuário uma capacidade total de armazenamento de 113,75 KB por lado, dos quais cerca de 10 KB são usados ​​para armazenar o próprio DOS e o diretório do disco, deixando cerca de 100 KB para os programas do usuário.

A primeira camada do sistema operacional é chamada RWTS, que significa "setor de faixa de leitura / gravação". Esta camada consiste em sub-rotinas para busca de trilha, leitura e gravação de setor e formatação de disco. Uma API chamada File Manager foi construída em cima disso e implementa funções para abrir, fechar, ler, gravar, excluir, bloquear (ou seja, proteção contra gravação), desbloquear (ou seja, habilitar para gravação) e renomear arquivos e verificar integridade estrutural de um arquivo. Há também uma função de catálogo, para listar arquivos no disquete, e uma função "init", que formata um disco para uso com o DOS, armazenando uma cópia do DOS nas três primeiras trilhas e armazenando um programa de inicialização (normalmente chamado de HELLO ) que é iniciado automaticamente quando este disco é inicializado. No topo da API do gerenciador de arquivos, as principais rotinas DOS são implementadas, conectando-se ao interpretador BASIC da máquina e interceptando todos os comandos do disco. Ele fornece BLOAD , BSAVE e BRUN para armazenar, carregar e executar executáveis ​​binários. LOAD, RUN e SAVE são fornecidos para programas BASIC, e um EXEC foi fornecido para a execução de arquivos em lote baseados em texto que consistem em comandos BASIC e DOS. Finalmente, existem quatro tipos de arquivos, identificados por letras em uma listagem de catálogo:

  • I - programas BASIC inteiros (armazenados em um formato compacto, não em texto simples)
  • A - Programas do Applesoft BASIC (também armazenados em um formato compacto para economia de espaço)
  • B - Arquivos binários , sejam programas executáveis ​​em linguagem de máquina ou arquivos de dados
  • T - arquivos de texto ASCII (ou texto simples, arquivos em lote descompactados)

Existem quatro tipos de arquivo adicionais; "R", "S" e um "A" e "B" adicionais, nenhum dos quais totalmente compatível. O DOS reconhece esses tipos apenas para listagens de catálogos e não há maneiras diretas de manipular esses tipos de arquivos. O tipo "R" encontrou algum uso para arquivos executáveis ​​binários relocáveis. Alguns programas suportam o tipo "S" como arquivos de dados.

Uma tabela de vetores de chamadas na região de $ 03D0–03FF 16 permite que os programas encontrem o DOS onde quer que esteja carregado na memória do sistema. Por exemplo, se o DOS conectado ao BASIC CLI parar de funcionar, ele pode ser reinicializado chamando o local $ 03D0 16 (976 10 ) - daí o comando tradicional "3D0G" ("3D0 go") para retornar ao BASIC a partir do Monitor do Sistema .

Carregador de inicialização

O processo de carregamento do Apple DOS envolve uma série de programas muito pequenos, cada um dos quais leva o processo de carregamento adiante algumas etapas antes de passar o controle para o próximo programa na cadeia.

  • Originalmente, a ROM do Apple II não suportava inicialização de disco. Na inicialização, ele exibiria o prompt do Monitor do Sistema. Tanto o Monitor quanto o Integer BASIC têm comandos para redirecionar a impressão para um driver de impressora em um slot designado, então a maneira convencional de inicializar a partir do disco era comandar o computador para iniciar a "impressão" na placa de interface de disco, normalmente instalada no slot 6 , usando o comando 6 Control-P (do monitor ML) ou PR # 6 (do BASIC). Quando o monitor ou o BASIC emitia o próximo caractere de prompt, o computador chamava as rotinas ROM no cartão de disco para "imprimir" nele, que então prosseguia com a seqüência de inicialização. (Pode-se usar o redirecionamento de entrada para fins semelhantes.) Como alternativa, no monitor ML, o usuário pode digitar o número do slot, digitando C600G para invocar o código de inicialização do controlador diretamente.
  • Quando o Apple II Plus foi lançado, ele incluía a capacidade de escanear cada slot de expansão (trabalhando para baixo do slot 7 ao slot 1) em busca de uma ROM de placa de expansão inicializável e chamá-la automaticamente.
  • O código de inicialização da ROM da placa de expansão tenta inicializar a partir da unidade 1 do controlador movendo o braço de leitura / gravação para a trilha zero e tentando ler 256 bytes do setor zero dessa trilha. (Se nenhum disco legível estiver disponível, a unidade gira indefinidamente até que um seja fornecido e a porta da unidade seja fechada.)
  • O setor zero contém um pequeno programa que instrui o computador a ler os setores 0 a 9 da trilha zero na memória usando parte do código de inicialização da ROM (relendo o setor 0 no processo).
  • O programa nos setores 1–9 da faixa 0, incluindo o código RWTS completo, prossegue para carregar as faixas 1 e 2, que contêm o resto do DOS. Em um disco mestre do sistema, o código também é incluído para determinar a configuração de RAM do computador e realocar o DOS na memória do sistema o mais alto possível, até o limite de 48 KB da memória principal do Apple II ($ BFFF 16 ).
  • Depois que o DOS é carregado na memória, ele tenta carregar e executar um programa de inicialização conforme indicado no código do programa DOS. Normalmente é um programa de linguagem BASIC chamado HELLO (ou algum outro nome), mas o DOS pode ser modificado para executar outros tipos de programas na inicialização, como um arquivo binário executável. A aparência do colchete do lado direito ( ] ) na tela é uma indicação para o usuário de que um programa de inicialização do Applesoft BASIC está carregando, enquanto um símbolo maior que ( > ) indica que um programa Integer BASIC está carregando. (Estes são os prompts para as respectivas versões do BASIC, que estão sendo inicializadas neste momento.)
  • O programa de inicialização começa a ser executado.

Suporte a Integer BASIC e Applesoft BASIC

O Apple II original incluía interpretador BASIC em ROM conhecido originalmente como Apple BASIC e mais tarde como Integer BASIC . As variáveis ​​nesta linguagem só podem lidar com números inteiros variando de -32.768 a +32.767 ( valores binários de 16 bits ); números de ponto flutuante não são suportados. A Apple contratou a Microsoft para desenvolver o Applesoft BASIC , capaz de lidar com números de ponto flutuante. O Applesoft BASIC não pode executar programas Integer BASIC, fazendo com que alguns usuários resistam a atualizá-lo.

O DOS 3.3 foi lançado quando o Applesoft BASIC era padrão em ROM no Apple II Plus, então a Apple o projetou para suportar a alternância entre os dois interpretadores BASIC. O BASIC inteiro é carregado na RAM no cartão de idioma do Apple IIs (se houver) e, digitando FP ou INT no BASIC, o usuário pode alternar entre as versões.

Declínio

Depois de 1980, o Apple DOS entrou em um estado de estagnação quando a Apple concentrou seus esforços no malfadado computador Apple III e seu sistema operacional SOS . Mais duas versões do Apple DOS, ambas ainda chamadas de DOS 3.3, mas com algumas correções de bugs e melhor suporte para o novo modelo Apple IIe , foram lançadas no início e meados de 1983.

Sem patches de terceiros, o Apple DOS só pode ler disquetes em execução em uma unidade Disk II de 5,25 polegadas e não pode acessar nenhuma outra mídia, como unidades de disco rígido, unidades de RAM virtuais ou unidades de disquete de 3,5 polegadas. A estrutura dos discos Apple DOS (particularmente o mapa de setor livre, que era restrito a parte de um único setor) é tal que não é possível ter mais de 400 KB disponíveis por vez por unidade sem uma grande reescrita de quase todas as seções do código; esta é a principal razão pela qual a Apple abandonou esta iteração do DOS em 1983, quando o Apple DOS foi totalmente substituído pelo ProDOS .

O ProDOS mantém o formato de baixo nível de 16 setores do DOS 3.3 para discos de 5,25 polegadas, mas introduz um novo formato de alto nível que é adequado para dispositivos de até 32  MB ; isso o torna adequado para discos rígidos daquela época e disquetes de 3,5 polegadas. Todos os computadores Apple do II Plus em diante podem executar DOS 3.3 e ProDOS, o Plus requer uma expansão de memória "Language Card" para usar o ProDOS; os modelos e e posteriores possuem hardware de placa de idioma integrado e, portanto, podem executar o ProDOS diretamente. ProDOS inclui software para copiar arquivos de discos Apple DOS. No entanto, muitas pessoas que não precisavam das melhorias do ProDOS (e que não gostavam de sua pegada de memória muito maior) continuaram usando o Apple DOS ou um de seus clones muito depois de 1983. A convenção da Apple de armazenar um sistema operacional inicializável em cada disquete disco significa que o software comercial pode ser usado independentemente do sistema operacional que o usuário possui. Um programa chamado DOS.MASTER permite que os usuários tenham várias partições virtuais DOS 3.3 em um volume ProDOS maior, o que permite o uso de muitos programas DOS baseados em disquete com um disco rígido.

Pouco depois do lançamento do ProDOS, a Apple retirou a permissão de terceiros para redistribuir o DOS 3.3, mas concedeu a uma empresa, a Syndicomm, uma licença exclusiva para revender o DOS 3.3.

Os jogos comerciais geralmente não usavam o Apple DOS, em vez de terem suas próprias rotinas de disco personalizadas para fins de proteção contra cópia e também para desempenho.

Melhorias de desempenho

A rotina RWTS do DOS pode ler ou gravar uma trilha em duas revoluções com intercalação adequada. Um setor do disco giratório passa sob a cabeça de leitura / gravação enquanto a rotina RWTS está decodificando o setor recém-lido (ou codificando o próximo a ser escrito), e se este setor perdido for o próximo necessário, o DOS precisa esperar quase uma revolução inteira do disco para o setor voltar. Isso é chamado de "soprando uma rotação" e é um gargalo de desempenho bem conhecido em sistemas de disco. Para evitar isso, os setores em um disco DOS são organizados em uma ordem intercalada:

0 7 e 6 d 5 c 4 b 3 a 2 9 1 8 f

Posteriormente, o ProDOS organizou os setores nesta ordem:

0 8 1 9 2 a 3 b 4 c 5 d 6 e 7 f

Ao ler e decodificar o setor 0, o setor 8 passa, de modo que o setor 1, o próximo setor que provavelmente será necessário, estará disponível sem espera. Ao ler o setor 7, dois setores desnecessários, f e 0, passam antes que o setor 8 esteja disponível, e ao ler o setor 15, o inversor sempre terá que esperar uma revolução extra para o setor 0 na mesma trilha. No entanto, o setor 0 realmente necessário na maioria dos casos estará na próxima faixa superior, e essa faixa pode ser organizada em relação ao último para permitir o tempo necessário para decodificar o setor recém-lido e mover a cabeça antes que o setor 0 chegue por aí. Em média, uma faixa inteira pode ser lida em duas revoluções do disco.

Infelizmente, o primeiro gerenciador de arquivos do DOS subverteu essa eficiência, copiando bytes lidos ou gravados em um arquivo, um por vez, entre um buffer de disco e a memória principal, exigindo mais tempo e resultando em um aumento constante das rotações do DOS ao ler ou gravar arquivos. Os programas foram disponibilizados desde o início para formatar discos com intercalações de setor modificadas; esses discos dão ao DOS mais tempo entre os setores para copiar os dados, amenizando o problema.

Posteriormente, os programadores fora da Apple reescreveram as rotinas do Gerenciador de Arquivos para evitar fazer cópias extras para a maioria dos setores de um arquivo; O RWTS foi instruído a ler ou gravar setores diretamente para ou da memória principal, em vez de de um buffer de disco sempre que um setor completo fosse transferido. Um "patch" inicial para fornecer essa funcionalidade foi publicado no Call-APPLE . Acelerações no comando LOAD de três a cinco vezes eram típicas.

Essa funcionalidade logo apareceu em produtos comerciais, como Pronto-DOS, Diversi-DOS, Hyper-DOS e David-DOS, junto com recursos adicionais, mas nunca foi usada em uma versão oficial do Apple DOS. Funcionalidade semelhante foi, entretanto, empregada pelo sistema operacional sucessor da Apple, o ProDOS. O GS / OS do sistema operacional específico do Apple IIGS eventualmente empregaria uma técnica de "leitura dispersa" ainda mais eficiente, que leria qualquer setor que passasse sob o cabeçote de leitura se fosse necessário para o arquivo sendo lido.

Liberação do código fonte

Em 2013, mais de 35 anos após o lançamento do Apple II , o código-fonte original do Apple DOS foi lançado pelo Computer History Museum em seu site. Foi doado pelo autor original, Paul Laughton.

Referências

Leitura adicional

  • Worth, Don; Lechner, Pieter (1981), Beneath Apple DOS , Quality Software, ISBN 0-912985-00-3

links externos