Sistema Operacional de Disco - Apple DOS



Apple DOS
Apple DOS



Um pouco da história sobre o Apple DOS

Apple DOS é a família de sistemas operacionais de disco para a série de micros Apple II, iniciando no final de 1978 e ficando disponível até o início de 1983. Foi substituído pelo ProDOS em 1983.

O Apple DOS possui três versões principais: DOS 3.1, DOS 3.2 e DOS 3.3; cada uma dessas três versões foi seguida por uma segunda versão menor de "correção de bugs", mas somente no caso do Apple DOS 3.2 essa versão secundária recebeu seu próprio número de versão, Apple DOS 3.2.1.

A versão mais conhecida e mais utilizada é o Apple DOS 3.3 de 1980 e 1983. Antes do lançamento do Apple DOS 3.1, os usuários da Apple utilizavam fitas cassete de áudio para armazenamento e recuperação de dados.

Histórico de versões


Quando a Apple Computer lançou o Apple II em abril de 1977, o novo computador não tinha drive de disco ou sistema operacional de disco (DOS). Embora Steve Wozniak tenha projetado o controlador Disk II no final daquele ano e planejando que ele poderia cricar um DOS, Steve Jobs decidiu terceirizar a tarefa para ter um sistema para discos o quanto antes.

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 US$ 13.000 com a Shepardson Microsystems para escrever um DOS e entregá-lo em 35 dias. A Apple forneceu especificações detalhadas, e o antigo 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 em um minicomputador.

Não havia Apple DOS 1 ou 2. As versões 0.1 a 2.8 eram revisões enumeradas em série durante o desenvolvimento, que poderiam muito bem ter sido chamadas de builds 1 a 28. O Apple DOS 3.0, 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 do DOS 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 mais tarde, resolvendo um problema por meio de seu utilitário MASTER CREATE, que era usado para criar discos mestres (inicializáveis) do Apple DOS: O comando INIT embutido criava discos que podiam ser inicializados apenas em máquinas com pelo menos a mesma quantidade de memória como aquele que os havia criado. MASTER CREATE inclui uma versão auto-realocada do DOS que inicializa em Apples 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 incluiu um recurso de inicialização automática que localiza automaticamente um controlador de disco e inicializa à partir dele quando o computador é ligado - ganhando o nome de "Autostart ROM ". DOS 3.2.1 foi então lançado em julho de 1979 com algumas pequenas correções de bugs.

O 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 em disquete disponível; as PROMs P5A/P6A mais recentes no controlador de disco permitiram a leitura e gravação de dados em uma densidade mais alta, portanto, em vez de 13 setores (3,25 KB) por trilha, passou a utilizar 16 setores (4 KB) de dados por trilha, aumentando a capacidade de 113,75 KB para 140 KB por lado do disco – 16 KB dos quais são usados ​​pela sobrecarga do sistema de arquivos e uma cópia do DOS, em um disco formatado em DOS 3.3, deixando 124 KB para programas e dados do usuário.

O DOS 3.3, no entanto, 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 arquivos e programas do Apple DOS 3.2 para discos da versão 3.3. A Apple nunca ofereceu um utilitário para copiar na outra direção. Para migrar os arquivos do 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 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 um cartão de idioma (expansão de RAM) ou cartão de firmware.

Detalhes técnicos


Os discos Apple DOS 3.1 usam 13 setores de dados por trilha, cada setor sendo 256 bytes. Ele usa 35 trilhas por lado do disco e pode acessar apenas um lado do disquete por vez. 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 "leitura/gravação de trilha e setor". Esta camada consiste em sub-rotinas para busca de trilhas, leitura e escrita de setores e formatação de disco.

Uma API chamado de Gerenciador de Arquivos foi construído em cima disso e implementa funções para abrir, fechar, ler, gravar, excluir, bloquear (ou seja, proteger contra gravação), desbloquear (ou seja, habilitar para gravação) e renomear arquivos e verificar a integridade estrutural. 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 DOS, armazenando uma cópia do DOS nas três primeiras trilhas e armazenando um programa de inicialização (geralmente chamado HELLO ) que é iniciado automaticamente quando este disco é inicializado.

No topo da API do Gerenciador de Arquivos, as principais rotinas do DOS são implementadas, que se conectam ao interpretador BASIC da máquina e interceptam todos os comandos do disco. Foram adicionados os comandos BLOAD , BSAVE e BRUN para armazenar, carregar e executar executáveis ​​binários. Comandos LOAD, RUN e SAVE para programas BASIC, e um EXEC foi fornecido para executar 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 Integer BASIC
A – Programas Applesoft BASIC
B – Arquivos binários , programas executáveis ​​em linguagem de máquina ou arquivos de dados
T – arquivos de texto ASCII (ou arquivos de lote descompactados de texto simples)

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

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

Carregando o DOS na memória


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 alguns passos antes de passar o controle para o próximo programa na cadeia.

- Originalmente, a ROM do Apple II não suportava a inicialização do disco. Ao ligar, ele exibia 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, portanto, a maneira convencional de inicializar a partir do disco era comandar o computador para iniciar a "impressão" na placa de interface do disco, normalmente instalada no slot 6 , usando o comando 6 Control-P (do monitor ML) ou PR#6 (do BASIC).
Quando o monitor ou BASIC emite o próximo caractere de prompt, o computador chama as rotinas ROM no cartão de disco para "imprimir" nele, que então prossegue com a sequência de inicialização. (Pode-se usar o redirecionamento de entrada para fins semelhantes.) Alternativamente, no monitor de LM, 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 incluiu a capacidade de escanear cada slot de expansão (buscando do slot 7 para o slot 1) por uma ROM de cartão de expansão inicializável e chamá-lo automaticamente.

- O código de inicialização da ROM da placa de expansão tenta inicializar da unidade 1 do controlador movendo o braço de leitura/gravação para a faixa zero e tentando ler 256 bytes do setor zero dessa faixa. 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 de 0 a 9 da trilha zero na memória usando parte do código de inicialização da ROM (releitura do setor 0 no processo).

- A programação nos setores 1 a 9 da trilha 0, inclui o código RWTS completo, prossegue para carregar as trilhas 1 e 2, que contêm o restante 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 o mais alto possível na memória do sistema, até o limite de 48 KB da memória principal do Apple II ($BFFF).

- 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 (aquele nome que foi informado no comando INIT). Geralmente é 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.
O prompt de aparência do colchete direito ( ] ) na tela é uma indicação para o usuário de que um programa de inicialização Applesoft BASIC está sendo carregado, enquanto um símbolo maior que ( > ) indica que um programa Integer BASIC está sendo carregado. (Estes são os prompts para as respectivas versões do BASIC, que estão sendo inicializadas neste momento).

- O programa de inicialização então começa a ser executado.

Suporte para Integer BASIC e Applesoft BASIC


O Apple II original incluía um interpretador BASIC em ROM conhecido originalmente como Apple BASIC e posteriormente como Integer BASIC. Variáveis ​​nesta linguagem só podem lidar com números inteiros que variam 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 à atualização para ele.

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 alternar entre os dois BASIC. O Integer BASIC é carregado na RAM no cartão de idioma do Apple IIs (se houver) e digitando FP ou INT do BASIC, o usuário pode alternar entre as duas 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 executados 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 do 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 de cada 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 inteiramente 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 apresenta um novo formato de alto nível 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 a partir do II Plus podem rodar tanto o DOS 3.3 quanto o ProDOS, o Plus requer uma expansão de memória "Language Card" para usar o ProDOS; os modelos //e e posteriores possuem hardware de cartão de idioma integrado e, portanto, podem executar o ProDOS diretamente.
O 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 gostaram 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 significa que o software comercial pode ser usado independentemente do sistema operacional do usuário. 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 disquetes com um disco rígido.

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

Os jogos comerciais geralmente não usavam o Apple DOS, em vez disso, tinham 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 escrever 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 gravado), e se esse 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 "explodir uma rotação" e é um gargalo de desempenho bem entendido 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

Mais tarde, 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 provavelmente 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 drive sempre terá que esperar uma volta extra pelo setor 0 na mesma trilha. No entanto, o setor 0 realmente necessário na maioria dos casos estará na próxima trilha mais alta, e essa trilha pode ser organizada em relação à última 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 trilha completa pode ser lida em duas voltas do disco.

Infelizmente, o gerenciador de arquivos do DOS inicial subverteu essa eficiência copiando bytes lidos ou gravados em um arquivo, um de cada vez entre um buffer de disco e a memória principal, exigindo mais tempo e resultando em muitas esperas do DOS nas rotações ao ler ou gravar arquivos. Programas se tornaram disponíveis 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, melhorando o problema.

Mais tarde, programadores de 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 escrever setores diretamente para ou da memória principal, em vez de um buffer de disco, sempre que um setor completo fosse transferido. Um "patch" inicial para fornecer essa funcionalidade foi publicado no Call-A.P.P.L.E. As 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, juntamente com recursos adicionais, mas nunca foi usado em uma versão oficial do DOS da Apple. Funcionalidade semelhante foi, no entanto, empregada pelo sistema operacional sucessor da Apple, o ProDOS. O sistema operacional GS/OS específico do Apple IIGS acabaria empregando uma técnica de "leitura dispersa" ainda mais eficiente que leria qualquer setor que estivesse passando sob o cabeçote de leitura se fosse necessário para o arquivo sendo lido.

Versã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.



Guia rápido do Apple DOS


Importante ressaltar que junto com o Apple DOS, foram adicionados comandos específicos para utilizar as unidade de disco e manipular arquivos, como abertura, leitura, escrita...
Para diferenciar alguns comandos em fita K7, foi adicionado um artifício quando o comando está em execução pelo BASIC.
O artifício é utilizar o caracter de controle Control-D (chr$(4)) antes de executar cada comando dentro do BASIC.
Por exemplo, para listar os arquivos no disco, utiliza-se o comando CATALOG.

No BASIC fica:
10 PRINT CHR$(4);"CATALOG"

Comandos para arquivos binários

BRUN nomeArq
     Carrega para a memória e executa o arquivo binário "nomeArq" do disco.

BSAVE nomeArq, A$xxxx, Lyyyy
     Salva o conteúdo da memória no arquivo "nomeArq", começando no endereço A($ binário), comprimento L(bytes).

BLOAD nomeArq
     Carrega para a memória o arquivo binário "nomeArq" do disco.


Comandos para programas BASIC

FP
     Ativa o Applesoft Basic "]" e limpa qualquer programa e variáveis autalmente na memória.

INT
     Se carregado em memória, ativa o Integer Basic ">" e limpa qualquer programa e variáveis autalmente na memória.

RUN nomeArq
     Carrega para a memória e executa o arquivo "nomeArq" do disco. Ajusta o dialeto Basic automanticamente.

LOAD nomeArq
     Carrega para a memória o arquivo "nomeArq" do disco. Ajusta o dialeto Basic automanticamente.

SAVE nomeArq
     Salva o programa atual na memória como "nomeArq" no disco. Ajusta o tipo de arquivo para o dialeto BASIC.

INIT nome
     Inicializa um disco, apagando todos os dados dele, transferindo o Apple DOS e configurando o programa
     de inicialização para "nome". No próximo boot deste disco, "nome" será carregado em memória e executado.

MAXFILES n
     Define o número máximo de arquivos abertos para "n".

MON {,C} {,I} {,O}
     Seleciona se Comandos, Saída ou Entrada são ecoados na tela.

NOMON {,C} {,I} {,O}
     Desativa a impressão de operações do DOS.


Comandos para manipular arquivos em disco

CATALOG
     Exibe o conteúdo do diretório do disco atual.

RENAME nomeAntigo, nomeNovo
     Altera o nome de um arquivo no disco.

DELETE nomeArq
     Apaga do disco o arquivo "nomeArq".

LOCK nomeArq
     Impede que o arquivo "nomeArq" seja excluído, renomeado ou alterado.
     Na listagem de arquivos, aparece o simbolo (*) ao lado do nomeArq.

UNLOCK nomeArq
     Remove o bloqueio do arquivo "nomeArq".

VERIFY nomeArq
     Verifica se o arquivo "nomeArq" está integro e acessível no disco.


Comandos para manipular arquivos Texto

OPEN nomeArq
     Abre o arquivo de texto "nomeArq" no disco.

CLOSE nomeArq
     Fecha o arquivo de texto "nomeArq" no disco.

READ nomeArq
     Define o modo para leitura de dados para "nomeArq".

WRITE nomeArq
     Define o modo para gravação de dados para "nomeArq".

APPEND nomeArq
     Define o modo para adição de dados no final do arquivo para "nomeArq".

POSITION nomeArq,x
     Move o ponteiro de dados do arquivo "nomeArq", para a posição definida em "x".

EXEC nomeArq
     Lê o texto do arquivo "nomeArq", passando-o para o programa atual como se fosse digitado no teclado.


Comandos diversos

CHAIN nomeArq
     Permite que o programa em memória execute "nomeArq" do disco. Apenas para Integer Basic.

PR# n
     Redireciona a saída de caracteres para o slot n.
     Este comando está disponível na ROM e não necessariamente precisa do Apple DOS.

IN# n
     Redireciona a entrada de caracteres para o slot n.
     Este comando está disponível na ROM e não necessariamente precisa do Apple DOS.


Copyright © 2012 ~ 2022, Apple2Pro.com.br. Todos os direitos reservados.
#251806