================================================================================ QUINTALOS - O SISTEMA PARA ESTUDOS E MODIFICAÇÕES! ================================================================================ Autor: Oddler - u/Personal-Sandwich157 Title: QuintalOS e as linguagens de programação! Licença: AGPL 3.0 Arquitetura: x86 16-Bit Real Mode -------------------------------------------------------------------------------- INTRODUÇÃO -------------------------------------------------------------------------------- O QuintalOS, mesmo sendo um sistema operacional pequeno, simples e feito para estudos e modificações bare-metal, já carrega consigo um SDK (Software Development Kit) nativo. Esse SDK chama-se QDK (ou QuintalOS DevKit) e tem a seguinte missão: adicionar suporte ao desenvolvimento dentro do QuintalOS. Por isso, o QuintalOS possui suporte nativo/integrado às seguintes linguagens: BASIC, COBOL, Q (linguagem de programação nativa do QuintalOS), FORTRAN e Pascal! -------------------------------------------------------------------------------- CAPÍTULO 1: AMBIENTE DE DESENVOLVIMENTO DO QDK -------------------------------------------------------------------------------- Para começar a codar usando o QDK (que é nativo do QuintalOS), você, por padrão, poderá usar a ferramenta Code Editor (ce.asm). O Code Editor é uma mini IDE dentro do sistema QuintalOS que lhe permite codar e executar scripts simples de qualquer linguagem disponível no QDK em tempo real, sem depender de compiladores externos. Fluxo do ambiente de desenvolvimento: 1. Edição na RAM: O código fonte é mantido em um buffer de memória contíguo (ex: q_code_buffer). 2. Renderização Visual: Conforme você digita, os caracteres são enviados diretamente para a VRAM (0xB800). 3. Invocação do Runtime: Ao mandar executar, o kernel intercepta a ação e repassa o ponteiro do buffer para o interpretador da linguagem correspondente. -------------------------------------------------------------------------------- CAPÍTULO 2: LINGUAGENS DISPONÍVEIS NO QDK (DETALHADO) -------------------------------------------------------------------------------- Cada linguagem dentro do QDK cumpre um papel histórico e técnico na arquitetura 16-bit: 1. Linguagem Q (q.asm) - Foco: Sintaxe moderna, orientação a blocos e interpolação. - Estruturas principais: class main (), var, if/else, return(). 2. Pascal (pascal.asm) - Foco: Programação estruturada, legibilidade e elegância. - Estruturas principais: PROGRAM, BEGIN, WRITELN, END. 3. FORTRAN (fortran.asm) - Foco: Processamento numérico, cálculo e matrizes. - Estruturas principais: PROGRAM, PRINT *, rotinas de cálculo. 4. BASIC (basic.asm) - Foco: Aprendizado rápido, execução simples e direta. - Estruturas principais: PRINT, GOTO, LET. 5. COBOL (cobol.asm) - Foco: Processamento de dados empresariais e registros. - Estruturas principais: DISPLAY, PROCEDURE DIVISION. -------------------------------------------------------------------------------- CAPÍTULO 3: A LINGUAGEM Q EM PROFUNDIDADE -------------------------------------------------------------------------------- A Linguagem Q é o carro-chefe do QDK. Ela combina a sintaxe moderna baseada em blocos com a eficiência de um parser escrito diretamente em Assembly x86. Exemplo de Código na Linguagem Q: class main () { var idade is int = 13; if (idade) = 13 { return("Ele tem %idade% anos de idade"); } else { return("Ele nao tem %idade% anos de idade"); } end 0; } Funcionamento Interno: - 'var idade is int = 13;': Reserva e armazena o valor numérico na RAM (q_var_idade). - 'if (idade) = 13': Avalia a condição no parser comparando o valor guardado. - '%idade%': Interpola o valor convertendo o número 13 para ASCII direto na VRAM. -------------------------------------------------------------------------------- CAPÍTULO 4: PROGRAMAÇÃO GRÁFICA E JOGOS 2D COM A GASM -------------------------------------------------------------------------------- A GASM (Game Assembly API) é a engine gráfica 2D interna do QuintalOS. Ela disponibiliza funções reutilizáveis para desenhar elementos visuais na VRAM: - gasm_draw_pixel: Desenha um caractere e atributo de cor na coordenada (X, Y) centralizada. - gasm_draw_sprite: Lê a estrutura [Largura, Altura, Cor, ASCII] e desenha sprites na tela. Exemplo em Assembly x86: mov dl, 10 ; Coordenada X mov dh, 5 ; Coordenada Y mov si, sprite_player ; Ponteiro para o Sprite call gasm_draw_sprite ; Renderiza na VRAM 0xB800 -------------------------------------------------------------------------------- CAPÍTULO 5: ARQUITETURA INTERNA DOS COMPILADORES E INTERPRETADORES -------------------------------------------------------------------------------- A execução dos scripts no QDK ocorre de forma ultra-rápida devido às rotinas em Assembly: 1. Tokenizer: A instrução 'lodsb' faz a leitura byte por byte a partir do registrador SI. 2. Keyword Matching: A rotina 'check_keyword' valida se os tokens correspondem a instruções reservadas. 3. Mapeamento VRAM: A posição em tela é calculada com a fórmula: Offset = (Y * 80 + (X + Shift_Central)) * 2 -------------------------------------------------------------------------------- CAPÍTULO 6: FUTURO E ROTEIRO DE EXPANSÃO (QUINTALOS 1.2.0) -------------------------------------------------------------------------------- Metas e funcionalidades planejadas para o QuintalOS v1.2.0: - Heap Allocator (Gerenciador de Memória Dinâmica): Implementação das rotinas malloc e free na faixa de RAM (0x2000 - 0x7C00). - Driver de Mouse PS/2: Leitura da interrupção do mouse e desenho de cursor em modo texto. - Sistema de Arquivos FAT12: Leitura/escrita de scripts .Q, .PAS e .BAS diretamente de imagens de disco .img. - Driver do PC Speaker: Emissão de beeps e notas de 8-bit utilizando a porta 0x61 do hardware. ================================================================================ Desenvolvido com registradores, VRAM e paixão por baixo nível. ================================================================================