# AmigaOS

O AmigaOS é uma família de sistemas operacionais nativos proprietários dos computadores pessoais Amiga e AmigaOne. Ele foi desenvolvido primeiramente pela Commodore International e introduzido com o lançamento do primeiro Amiga, o Amiga 1000, em 1985. As primeiras versões do AmigaOS exigiam a série Motorola 68000 de microprocessadores de 16 e 32 bits. Versões posteriores foram desenvolvidas pela Haage & Partner (AmigaOS 3.5 e 3.9) e depois pela Hyperion Entertainment (AmigaOS 4.0-4.1). É necessário um microprocessador PowerPC para a versão mais recente, o AmigaOS 4.
O AmigaOS é um sistema operacional de usuário único baseado em um kernel multitarefa preemptivo, chamado Exec.
Ele inclui uma abstração do hardware do Amiga, um sistema operacional de disco chamado AmigaDOS, uma API de sistema de janelas chamada Intuition e um ambiente de área de trabalho e gerenciador de arquivos chamado Workbench.
A propriedade intelectual do Amiga está fragmentada entre a Amiga Inc., a Cloanto e a Hyperion Entertainment. Os direitos autorais dos trabalhos criados até 1993 são de propriedade da Cloanto. Em 2001, a Amiga Inc. contratou o desenvolvimento do AmigaOS 4 para a Hyperion Entertainment e, em 2009, concedeu à Hyperion uma licença exclusiva, perpétua e mundial do AmigaOS 3.1 para desenvolver e comercializar o AmigaOS 4 e versões subsequentes.
Em 29 de dezembro de 2015, o código-fonte do AmigaOS 3.1 vazou na Web; o fato foi confirmado pela licenciada, a Hyperion Entertainment.

## Componentes

O AmigaOS é um sistema operacional de usuário único baseado em um kernel multitarefa preemptivo, chamado Exec. O AmigaOS fornece uma abstração do hardware do Amiga, um sistema operacional de disco chamado AmigaDOS, uma API de sistema de janelas chamada Intuition e um gerenciador de arquivos de área de trabalho chamado Workbench.
Uma interface de linha de comando (CLI), chamada AmigaShell, também está integrada ao sistema, embora também seja totalmente baseada em janelas. Os componentes da CLI e do Workbench compartilham os mesmos privilégios. Notavelmente, o AmigaOS não tem nenhuma proteção de memória integrada.
O AmigaOS é formado por duas partes, a saber, um componente de firmware chamado Kickstart e uma parte de software geralmente chamada de Workbench. Até o AmigaOS 3.1, as versões correspondentes do Kickstart e do Workbench eram normalmente lançadas juntas. Entretanto, desde o AmigaOS 3.5, o primeiro lançamento após o fim da Commodore, somente o componente de software foi atualizado e a função do Kickstart diminuiu um pouco. As atualizações de firmware ainda podem ser aplicadas por meio de patches na inicialização do sistema. Isso foi até 2018, quando a Hyperion Entertainment (detentora da licença do AmigaOS 3.1) lançou o AmigaOS 3.1.4 com uma ROM Kickstart atualizada para acompanhá-lo.

### Firmware e carregador de inicialização

O Kickstart é o firmware de bootstrap, geralmente armazenado em ROM. O Kickstart contém o código necessário para inicializar o hardware padrão do Amiga e muitos dos componentes principais do AmigaOS. A função do Kickstart é comparável à do BIOS mais o kernel do sistema operacional principal em compatíveis com o IBM PC. No entanto, o Kickstart oferece mais funcionalidades disponíveis no momento da inicialização do que seria de se esperar em um PC, por exemplo, o ambiente de janelas completo.
O Kickstart contém muitas partes essenciais do sistema operacional do Amiga, como Exec, Intuition, o núcleo do AmigaDOS e a funcionalidade para inicializar o hardware de expansão compatível com o Autoconfig. Versões posteriores do Kickstart continham drivers para controladores IDE e SCSI, portas de placas de PC e outros hardwares integrados.
Após a inicialização ou reinicialização, o Kickstart executa várias verificações de diagnóstico e do sistema e, em seguida, inicializa o chipset do Amiga e alguns componentes principais do sistema operacional. Em seguida, ele examinará os dispositivos de inicialização conectados e tentará inicializar a partir daquele que tiver a maior prioridade de inicialização. Se nenhum dispositivo de inicialização estiver presente, será exibida uma tela solicitando que o usuário insira um disco de inicialização, normalmente um disquete.
Na inicialização, o Kickstart tenta inicializar a partir de um dispositivo inicializável (normalmente, um disquete ou uma unidade de disco rígido). No caso de um disquete, o sistema lê os dois primeiros setores do disco (o bloco de inicialização) e executa as instruções de inicialização ali armazenadas. Normalmente, esse código passa o controle de volta para o sistema operacional (invocando o AmigaDOS e a GUI) e usando o disco como o volume de inicialização do sistema. Qualquer disco desse tipo, independentemente de seu outro conteúdo, era chamado de "disco de inicialização" ou "disco inicializável". Um bloco de inicialização pode ser adicionado a um disco vazio com o uso do comando install. Alguns jogos e demos em disquete usavam blocos de inicialização personalizados, o que lhes permitia assumir a sequência de inicialização e gerenciar o hardware do Amiga sem o AmigaOS.
O bloco de inicialização tornou-se um alvo óbvio para os criadores de vírus. Alguns jogos ou demos que usavam um bloco de inicialização personalizado não funcionavam se fossem infectados por um vírus de bloco de inicialização, pois o código do vírus substituía o original. O primeiro vírus desse tipo foi o vírus SCA. As tentativas de antivírus incluíam blocos de inicialização personalizados. Esses blocos de inicialização alterados anunciavam a presença do verificador de vírus enquanto verificavam o sistema em busca de sinais reveladores de vírus residentes na memória e, em seguida, passavam o controle de volta para o sistema. Infelizmente, eles não podiam ser usados em discos que já dependiam de um bloco de inicialização personalizado, mas alertavam os usuários sobre possíveis problemas. Vários deles também se replicavam em outros discos, tornando-se pouco mais do que vírus em si mesmos.

### Kernel

O Exec é o kernel multitarefa do AmigaOS. O Exec fornece funcionalidade para multitarefa, alocação de memória, manipulação de interrupções e manipulação de bibliotecas compartilhadas dinâmicas. Ele atua como um agendador de tarefas em execução no sistema, fornecendo multitarefa preemptiva com agendamento round-robin priorizado. O Exec também fornece acesso a outras bibliotecas e comunicação interprocessos de alto nível por meio de passagem de mensagens. Outros microkernels comparáveis tiveram problemas de desempenho devido à necessidade de copiar mensagens entre espaços de endereço. Como o Amiga tem apenas um espaço de endereço, a passagem de mensagens do Exec é bastante eficiente.

### AmigaDOS

O AmigaDOS fornece a parte do sistema operacional de disco do AmigaOS. Isso inclui sistemas de arquivos, manipulação de arquivos e diretórios, interface de linha de comando, redirecionamento de arquivos, janelas de console e assim por diante. Suas interfaces oferecem recursos como redirecionamento de comandos, piping, criação de scripts com primitivos de programação estruturada e um sistema de variáveis globais e locais.
No AmigaOS 1.x, a parte do AmigaDOS era baseada no TRIPOS, que é escrito em BCPL. A interface com ele a partir de outras linguagens se mostrou uma tarefa difícil e sujeita a erros, e a porta do TRIPOS não foi muito eficiente.
A partir do AmigaOS 2.x, o AmigaDOS foi reescrito em C e Assembler, mantendo a compatibilidade com o programa BCPL 1.x, e incorporou partes do AmigaDOS Resource Project, que já havia escrito substitutos para muitos dos utilitários e interfaces BCPL.
O ARP também forneceu um dos primeiros solicitadores de arquivos padronizados para o Amiga e introduziu o uso de funções curinga (globbing) mais amigáveis no estilo UNIX em parâmetros de linha de comando. Outras inovações foram um aprimoramento na variedade de formatos de data aceitos pelos comandos e o recurso de tornar um comando residente, de modo que ele só precisa ser carregado na memória uma vez e permanece na memória para reduzir o custo de carregamento em usos subsequentes.
No AmigaOS 4.0, o DOS abandonou completamente o legado BCPL e, a partir do AmigaOS 4.1, foi reescrito com suporte total a 64 bits.
As extensões de arquivos são usadas com frequência no AmigaOS, mas não são obrigatórias e não são tratadas de forma especial pelo DOS, sendo apenas uma parte convencional dos nomes de arquivos. Os programas executáveis são reconhecidos usando um número mágico.

### Interface gráfica do usuário

O sistema de janelas nativo do Amiga é chamado Intuition, que lida com a entrada do teclado e do mouse e com a renderização de telas, janelas e widgets.
Antes do AmigaOS 2.0, não havia uma aparência padronizada e os desenvolvedores de aplicativos tinham que escrever seus próprios widgets não padronizados. A Commodore adicionou a biblioteca GadTools e o BOOPSI no AmigaOS 2.0, ambos fornecendo widgets padronizados. A Commodore também publicou o Amiga User Interface Style Guide (Guia de estilo da interface do usuário do Amiga), que explicava como os aplicativos deveriam ser dispostos para garantir a consistência. Stefan Stuntz criou uma popular biblioteca de widgets de terceiros, baseada no BOOPSI, chamada Magic User Interface, ou MUI. O MorphOS usa a MUI como seu kit de ferramentas oficial, enquanto o AROS usa um clone da MUI chamado Zune. O AmigaOS 3.5 adicionou outro conjunto de widgets, o ReAction, também baseado no BOOPSI.
Um recurso incomum do AmigaOS é o uso de várias telas exibidas no mesmo monitor. Cada tela pode ter uma resolução de vídeo ou profundidade de cor diferente. O AmigaOS 2.0 adicionou suporte a telas públicas, permitindo que os aplicativos abram janelas nas telas de outros aplicativos. Antes do AmigaOS 2.0, apenas a tela do Workbench era compartilhada. Um widget no canto superior direito de cada tela permite que as telas sejam percorridas. As telas podem ser sobrepostas arrastando cada uma delas para cima ou para baixo por suas barras de título. O AmigaOS 4 introduziu telas que podem ser arrastadas em qualquer direção.

### Gerenciador de arquivos

O Workbench é o gerenciador de arquivos gráfico nativo e o ambiente de trabalho do AmigaOS. Embora o termo Workbench tenha sido originalmente usado para se referir a todo o sistema operacional, com o lançamento do AmigaOS 3.1 o sistema operacional foi renomeado para AmigaOS e, posteriormente, Workbench se refere apenas ao gerenciador de área de trabalho. Como o nome sugere, é usada a metáfora de uma bancada de trabalho, em vez de uma área de trabalho; os diretórios são representados como gavetas, os arquivos executáveis são ferramentas, os arquivos de dados são projetos e os widgets da GUI são gadgets. Em muitos outros aspectos, a interface se assemelha ao Mac OS, com a área de trabalho principal mostrando ícones de discos inseridos e partições do disco rígido, e uma única barra de menus na parte superior de cada tela. Diferentemente do mouse do Macintosh disponível na época, o mouse padrão do Amiga tem dois botões - o botão direito do mouse opera os menus suspensos, com um mecanismo de "soltar para selecionar".