A Zebra é um sistema operacional multitarefa para computadores Z80, implementado principalmente em C com algum assembler.
Este software está licenciado no GPLV3. Para os termos completos da licença, veja aqui.
Se você estiver interessado em configurar o sistema operacional para o seu próprio sistema, entre em contato!
O sistema operacional tem como alvo meu computador modular Z80 personalizado.
O kernel destina -se a executar com 32kb de RAM e fornece interação do usuário por meio de uma interface serial. Cada um dos programas de usuários é alocado uma página de 32kb de RAM bancária, permitindo que os vários programas executem simultaneamente.
Este repositório também contém alguns programas de utilitário construídos, como um intérprete básico.
Carregador de inicialização de dois estágios, permitindo o carregamento de imagens do sistema operacional do FileSystem
rst Instruçãodir para visualizar arquivos Na inicialização, o computador modular possui 8k de ROM em 0x0000 e 32k de RAM a 0x8000 . Um carregador de inicialização reside na ROM e possui drivers básicos de cartão CF capazes de ler setores individuais do disco.
Um carregador de inicialização secundário reside nos 9 primeiros setores do cartão CF. Esse carregador de segundo estágio possui as mesmas rotinas de cartão CF, mas adicionalmente possui um driver FAT-16 capaz de ler arquivos do disco, que é formatado no formato FAT16.
Este carregador de inicialização secundário é carregado na RAM em 0x8000 e depois executado. Primeiro, ele troca o banco inferior ( 0x0000 para 0x7fff ) da ROM para RAM e escreve a imagem do kernel, localizada no sistema de arquivos do CF-card como kernel.bin , para RAM em 0x0000 . O carregador secundário redefine para 0x0000 para inicializar no kernel.
O kernel inicializa um driver completo do sistema de arquivos e outros componentes do sistema operacional, carrega o comando-processador ( command.exe ) do disco e começa a executá-lo.
Nesse ponto, o controle é entregue ao usuário, que pode interagir com o sistema por meio da linha de comando para executar programas.
Low RAM High RAM
0x0000┌────────────────────────┐ 0x8000┌────────────────────────┐
│ Kernel │ │ User Program Area │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ 0xe000├────────────────────────┤
│ │ │ Stack │
│ │ │ │
│ │ │ │
│ │ 0xF800├────────────────────────┤
│ │ │ User Program Args │
└────────────────────────┘ └────────────────────────┘
0xF7FF na inicialização do programa e cresce.argv e argc ).