O KiddieOS é um sistema operacional open-source básico em desenvolvimento pelo curso gratuito D.S.O.S [Desenvolvendo Sistemas Operacionais Simples]. A intenção deste sistema será: Criar, editar ou excluir arquivos, codificar em uma linguagem própria do sistema, criar objetos visuais e automatizados (desenhos) através desta linguagem, utilizar uma interface simples e intuitiva, criar novas interfaces gráficas, como: Janelas, botões, campos, etc... e estimular crianças, jovens e adultos a programar numa linguagem simples dentro do sistema operacional KiddieOS. A intenção do curso D.S.O.S é dá início ao desenvolvimento de sistemas operacionais utilizando a linguagem Assembly e entender a fundo sobre diversos conceitos internos deste tipo de sistema. Aqui neste repositório serão armazenados arquivos de APIs do KiddieOS, a imagem de disco para teste e futuramente - todo o sistema operacional completo. Visite o link abaixo para nos acompanhar no curso do Youtube, se inscreva neste canal para se manter atualizado e siga-me no GitHub. Vejo vocês lá:
MIT License
46
stars
5
forks
source link
KiddieOS_v1.3.11: Atualizações do comando WRITE - Estruturação e deslocamento de textos [setas e backspace] + Resolução de bugs #16
A linha de comando travava quando dava ENTER e nenhum comando era digitado, então foi preciso inserir uma condicional pra verificar se o início do buffer é 0. Caso for, ele quebra a linha do Editor.
Reinicialização do sistema quando era fornecido parâmetros incorretos no WRITE (como Strings sem aspas), então é verificado se não contém aspas, caso sim, um erro é apresentado na tela. As Strings antes do parâmetro -FC e -FA devem inserir aspas.
Reinicialização em outros momentos, como Strings sem aspas após o comando -FC ou novos parâmetros.
Quebras de linhas usando caracteres de escape não eram identificadas.
Features
Uma String sem aspas pode ser colocado no comando exceto nos casos em que esta String aparece antes do -fc ou -fa, no entanto, se aparecer depois, o comando tem uma nova função de exibir os últimos textos editados do arquivo e adicionar a nova String (de maneira escondida, sem apresentar a String).
Um novo parâmetro foi feito pra caso o usuário não quiser adicionar aspas mas também não quiser ver os últimos textos editados, que é o parâmetro -hi (hidden ou oculto), que serve para ocultar o texto na edição de -fa.
O parâmetro -hi só funciona pra quando o comando estiver usando parâmetro -fa e o -hi deve ser colocado sempre antes do parâmetro -fa, após o comando write. Ele também oculta textos no editor, caso o usuário tenha certeza de que quer adicionar os novos textos no final do arquivo (Sem editar os textos anteriores).
Deslocamento de cursor utilizando as teclas de setas direcionais, como: arrow up, arrow left e arrow right. Exceto pra tecla arrow down que não foi implementada ainda. O sistema realiza cálculos usando a memória de arquivos (onde os textos são controlados em 0x6800:0) e a memória padrão de texto do computador (em 0xB800:0). Os cálculos descobrem exatamente onde o ponteiro DI devem apontar pro buffer (mesmo sendo textos sequenciais) e onde o cursor na tela deve ficar.
Deslocamento de textos no buffer e na tela caso o caractere a ser digitado esteja no meio do texto, antes de qualquer outro caractere. No entanto, apenas o texto na sequência é deslocado, isto é, se houver um texto que percorre várias linhas do editor, todo esse texto será deslocado, se não, se o texto tiver uma quebra de linha antes da coluna final do editor, apenas esse texto será deslocado e os outros abaixo continuarão intactos.
Novas rotinas implementadas
CheckToOffsetChars: Rotina que verifica se o caractere está no meio do texto, caso tiver ela fará os processamentos adequados de deslocamento textual, incluindo para quebras de linhas.
FillZeroTextMemory: Serve para preencher a memória de texto com Zeros, limpando os bytes restante debaixo do texto antes do deslocamento. Sua responsabilidade é evitar que caracteres de sobra ainda fiquem em outras partes do editor.
CheckCharBack: Verifica inicialmente se o caractere anterior é uma quebra de linha no BackSpace, se for, ele toma uma ação pra zerar este caractere e depois executar EraseCharBack para apagar o caractere 0x0D, ou apagar o último caractere.
SearchPositionBack: Rotina que identifica a coluna exata da linha anterior no momento que um backspace é digitado na 1ª coluna da linha atual, ou no momento da tecla arrow left, posicionando o cursor (podendo ser na coluna final ou não).
WriteEditor.ArrowLeft: Processa o deslocamento do cursor pro lado esquerdo, no buffer e na tela.
WriteEditor.ArrowRight: Processa o deslocamento do cursor pro lado direito, no buffer e na tela.
WriteEditor.ArrowUp: Processa o deslocamento do cursor para cima, no buffer e na tela. Esta rotina precisa executar de forma mais rígida em cálculos, usando a função citada logo abaixo.
GetZeroTextMemory: Contabiliza a quantidade de caracteres da linha anterior no editor a partir da memória de texto com byte nulo no final da String (este byte é colocado pelo próprio código, pois por padrão não são zerados).
PutZeroTextMemory: Código que coloca o byte nulo no final de Strings de cada linha do editor na memória de texto. Isto significa que qualquer quebra de linha no editor, seja ela proposital ou não, terá um byte nulo substituído na memória de texto.
Observações: Todas estas atualizações não estão 100% estáveis, pois nem todas as situações poderá funcionar da forma correta, então mais algumas atualizações para correções ainda serão feitas.
Bug fixes
Features
Novas rotinas implementadas
CheckToOffsetChars: Rotina que verifica se o caractere está no meio do texto, caso tiver ela fará os processamentos adequados de deslocamento textual, incluindo para quebras de linhas.
FillZeroTextMemory: Serve para preencher a memória de texto com Zeros, limpando os bytes restante debaixo do texto antes do deslocamento. Sua responsabilidade é evitar que caracteres de sobra ainda fiquem em outras partes do editor.
CheckCharBack: Verifica inicialmente se o caractere anterior é uma quebra de linha no BackSpace, se for, ele toma uma ação pra zerar este caractere e depois executar EraseCharBack para apagar o caractere 0x0D, ou apagar o último caractere.
SearchPositionBack: Rotina que identifica a coluna exata da linha anterior no momento que um backspace é digitado na 1ª coluna da linha atual, ou no momento da tecla arrow left, posicionando o cursor (podendo ser na coluna final ou não).
WriteEditor.ArrowLeft: Processa o deslocamento do cursor pro lado esquerdo, no buffer e na tela.
WriteEditor.ArrowRight: Processa o deslocamento do cursor pro lado direito, no buffer e na tela.
WriteEditor.ArrowUp: Processa o deslocamento do cursor para cima, no buffer e na tela. Esta rotina precisa executar de forma mais rígida em cálculos, usando a função citada logo abaixo.
GetZeroTextMemory: Contabiliza a quantidade de caracteres da linha anterior no editor a partir da memória de texto com byte nulo no final da String (este byte é colocado pelo próprio código, pois por padrão não são zerados).
PutZeroTextMemory: Código que coloca o byte nulo no final de Strings de cada linha do editor na memória de texto. Isto significa que qualquer quebra de linha no editor, seja ela proposital ou não, terá um byte nulo substituído na memória de texto.
Observações: Todas estas atualizações não estão 100% estáveis, pois nem todas as situações poderá funcionar da forma correta, então mais algumas atualizações para correções ainda serão feitas.