quarta-feira, 13 de junho de 2012

Micro OS - Para processadores 86x

Ano passado eu estudei cerca de  4 à  5 meses a respeito de sistemas operacionais , muita documentação , projetos open source e tudo mais , compilei alguns exemplos  e brinquei de programar SO (Como faço até hoje HAHAHAAHA....) . O meu primeiro SO , foi com base em um exemplo na internet e com a documentação de um emulador de processador 86x (Arquitetura IA-32) , 16 bits também .Ele somente escrevia "Meu primeiro SO"! Pronto , não precisava mais nada , eu era o cara mais feliz do mundo , então pesquisando na internet eu achei uma página muito bacana (http://www.htlsteyr.ac.at/~morg/pcinfo/hardware/interrupts/inte1at0.htm)
de um professor de computação , Roger Morgan , acho que ele é americano . Ok , ta bom , eu não sei!
Nesta página esta listada as Interrupções para processadores 86x , vale a pena conferir . Então baixei um emulador e assembler para 86x o emu86 , comecei a estudar aos poucos , pegava um pouquinho todo dia , de vez em quando largava de mão , mas nunca parava , rodei alguns exemplos , escrevi os meus próprios e alguns pequenos programas. Então no EMU8086 , tem uma ótima documentação , e vários exemplos e tutoriais , então achei um micro-kernel e um micro-loader  , Então comecei a estudar ambos , com mais atenção ao kernel , e então criei um projeto baseado nele , que tinha apenas 3 comandos , reiniciar , deligar e exibir ajuda . Até então foi o máximo que tinha conseguido , pois bem , continuei meus estudos sobre OS e resolvi trabalhar com o exemplo do kernel , estudei todas seu código fonte , lógica.E então resolvi traduzir toda sua documentação os comentário e quero traduzir o código funcional também para português , além de modificar várias coisas , como : Interrupções ,criar mais opções para o shell, modificar sistema e vídeo e etc.Eu pretendo fazer um interpretador de linguagem BASIC, mas porém tenho que antes criar um sistema de arquivos , e está complicado :) . Ta bom , eu admito , fico brincando com Borland C++ Builder,VBA e Fortran  ao invés de estuda isso! Mas eu quero fazer !
 Enfim , foi um trabalho que durou no máximo uma semana , somando os dias que eu enrolei ! Eu criei meu projeto com a base nesse exemplo , tem aproximadamente 800 linhas ou mais (O kernel) , o loader 300 (OBS : O exemplo está com loader para disquete) e mais algumas 200 à 300 de macros e procedimentos que criei , tudo tem cerca de 1250 + Linhas, não é um sistema funcional , pois ainda não tem utilidade alguma a não ser acadêmica e de estudo!
Veja uma print abaixo:

Rodando no emulador 86x do EMU8086

Bem...Ontem eu enrolei , hoje pretendo começar a escrever um protótipo de interpretador de BASIC em C para pegar a lógica e fazer o disassembly e implementar em assembly no OS , está complicado...

Chegamos ao fim dessa postagem... Assim que tiver novidades com o projeto eu divulgo aqui!
Aos interessados tem alguns links abaixo que podem ser úteis.

OS Dev - http://wiki.osdev.org/Expanded_Main_Page
OS Dev Brasil - http://www.osdevbrasil.net/
Assembly86x - http://www.cs.virginia.edu/~evans/cs216/guides/x86.html
Boot  - http://pt.wikipedia.org/wiki/Boot
Kernel - http://en.wikipedia.org/wiki/Kernel_(computing)
EMU8086  : http://www.baixaki.com.br/download/emu8086-microprocessor-emulator-and-8086-assembler.htm

Um comentário: