Pesquisar este blog

Novidades no blog

- Passamos das 120k visitas \o/

- Os repositórios ainda precisam ser organizados!

- Nova postagem: Organizando a casa;
- LOS versão 0.7 (acesse, em breve, no github.com);

domingo, 12 de maio de 2013

Kernel, fase 2 - Abastecendo o tinteiro

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:

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).