Um caractere piscando na tela não tem grande utilidade além de indicar que o kernel está em execução. Mas para que possamos realmente escrever algo útil, como o conteúdo de um registrador, devemos ter alguns procedimentos básicos que permitam isso.
Como recolhemos algumas informações do vídeo durante o boot, iremos usá-las agora para implementar um “driver simples” de vídeo, que chamei de GrossCRT (gross = grosseiro, bruto), que será utilizado até que um “driver de verdade” seja implementado.
Na unit GrossCRT implementei as funções básicas de controle do vídeo. Com essa unit é possível escrever constantes strings. Esta implementação resultou em Kernel.002.
Tenho idealizado o sistema com consoles independentes, semelhantes ao Linux/Unix, para isso comecei implementar um meio-terminal (somente saída) de kernel que será por onde o kernel escreverá no vídeo, para uso como debug ou para informar sobre algum erro.
Inicialmente o único terminal disponível é este, o do kernel, porem conforme for possível, outros terminais estarão disponíveis em outros consoles.
A unit KrnlTTY cria uma interface de terminal simples para o kernel usar, o que também torna o sistema modular, pois uma alteração no protocolo do terminal não afeta diretamente todo o código que o utiliza mas somente a biblioteca de interface.
Nesse estágio foi adicionado mais algumas rotinas na unit System e iniciado a implementação da unit SysUtils. Agora diversas rotinas internas do compilador já estão disponíveis e é possível fazer algumas operações com strings, além de escrever o conteúdo de variáveis string e numéricas. Esta implementação resultou em Kernel.003.
Edit: Após organizar os repositórios no github, modifiquei a funcionalidade dos pacotes (seguindo os repositórios), assim o pacote "kernel" tem somente o kernel do SO, e o pacote "system" possui agora todas as partes necessárias para funcionamento do sistema (ex.: kernel, bootloader, shell, ...).
Download dos fontes e binários:
Como recolhemos algumas informações do vídeo durante o boot, iremos usá-las agora para implementar um “driver simples” de vídeo, que chamei de GrossCRT (gross = grosseiro, bruto), que será utilizado até que um “driver de verdade” seja implementado.
Na unit GrossCRT implementei as funções básicas de controle do vídeo. Com essa unit é possível escrever constantes strings. Esta implementação resultou em Kernel.002.
Tenho idealizado o sistema com consoles independentes, semelhantes ao Linux/Unix, para isso comecei implementar um meio-terminal (somente saída) de kernel que será por onde o kernel escreverá no vídeo, para uso como debug ou para informar sobre algum erro.
Inicialmente o único terminal disponível é este, o do kernel, porem conforme for possível, outros terminais estarão disponíveis em outros consoles.
A unit KrnlTTY cria uma interface de terminal simples para o kernel usar, o que também torna o sistema modular, pois uma alteração no protocolo do terminal não afeta diretamente todo o código que o utiliza mas somente a biblioteca de interface.
Nesse estágio foi adicionado mais algumas rotinas na unit System e iniciado a implementação da unit SysUtils. Agora diversas rotinas internas do compilador já estão disponíveis e é possível fazer algumas operações com strings, além de escrever o conteúdo de variáveis string e numéricas. Esta implementação resultou em Kernel.003.
Edit: Após organizar os repositórios no github, modifiquei a funcionalidade dos pacotes (seguindo os repositórios), assim o pacote "kernel" tem somente o kernel do SO, e o pacote "system" possui agora todas as partes necessárias para funcionamento do sistema (ex.: kernel, bootloader, shell, ...).
- Kernel.002-1 (Correção 14/06/2013);
- Kernel.003-1 (Correção 14/06/2013);
- System.002-1 (Correção 14/06/2013);
- System.003-1 (Correção 14/06/2013);
Próximo - Kernel, fase 3 - Construindo alicerces >>
<< Anterior - Kernel, fase 1 - Bem vindo Pascal
Voltar a Faça seu próprio sistema operacional.
Nenhum comentário:
Postar um comentário
Obs.: Após escrever seu comentário, inscreva-se por e-mail para seguir os próximos comentários. Ou assine a postagem de comentários (Atom).