|
|
||
|
|
Start of topic | Skip to actions
MBOSMath Based Operating SystemThe aim of MBOS is to recover the original goals of the computer and operating system and integrate these concepts into modern computers. Math, one of the functions of the computer has been merely embedded as simple programs in many operating systems, such as Microsoft's calculator. Many of these modern operating systems have forgotten these original goals and based their systems around GUI and big business. In an attempt to maximize speed and efficiency, MBOS will lack a GUI and will exclusively perform mathematical operations. This project is being developed by Richie Gill, under the supervision of the wonderfully supportive and knowledgeable Walid Taha. BiographyMy name is Richie Gill and I attend Clements High School in Sugar Land. I am a 16 year old sophomore taking Pre-Calculus, Chemistry, Biology, English, Computer Science, World History, and German. In addition, I work at the Walgreens on Sweetwater as a cashier. I enjoy my classes and am always looking for another way to challenge myself. So last year I decided to get involved in the Houston Science fair, along with many other related competitions. As my love for this event evolved, I have truly dedicated all my free time to working on my project. Last years project dealt with random numbers produced by Visual Basic, and this year I am working on MBOS. I am planning on presenting this project at HSEF, TJAS, and an embedded systems conference in Las Vegas through Albert Cheng of UH. Albert Cheng has contributed a great amount of wisdom and advice through these last couple weeks of preliminary research. Of course, I am still looking for other conferences or competitions where I can present this to the public. My interest for operating systems really sparked after I explored some of the concepts and logic that makes up the computers foundation. GCC Cross CompilerThe GCC Cross Compiler is used to compile all the following parts needed to achieve a C screen.Boot loaderThe boot loader is what the computer looks for first to load the kernel into the RAM. So developing and building the boot loader is what is to be accomplished first in this project. # loader.s .global _loader # making entry point visible to linker # setting up the Multiboot header - see GRUB docs for details .set ALIGN, 1<<0 # align loaded modules on page boundaries .set MEMINFO, 1<<1 # provide memory map .set FLAGS, ALIGN | MEMINFO # this is the Multiboot 'flag' field .set MAGIC, 0x1BADB002 # 'magic number' lets bootloader find the header .set CHECKSUM, -(MAGIC + FLAGS) # checksum required .align 4 .long MAGIC .long FLAGS .long CHECKSUM # reserve initial kernel stack space .set STACKSIZE, 0x4000 # that is, 16k. .comm stack, STACKSIZE, 32 # reserve 16k stack on a quadword boundary _loader: mov $(stack + STACKSIZE), %esp # set up the stack push %eax # Multiboot magic number push %ebx # Multiboot data structure call _main # call kernel proper hlt # halt machine should kernel return Assemble this with as -o loader.o loader.s KernelThe kernel is to be written in C, so that script files can be run to perform the math operations wanted by the user. kernel.c This is not exactly your average int main(). Most noteably, you do not have any library stuff available. As soon as you write so much as #include <, you have probably made the first mistake. Welcome to kernel land. void _main( void* mbd, unsigned int magic ) { // write your kernel here } Compile this with gcc -o kernel.o -c kernel.c -Wall -Werror -nostdlib -nostartfiles -nodefaultlibs The scripts will be run using an interpreter. These are the basic commands that one will be able to use to run scripts. The syntax of each will be added as OS continues to develop. Add Subtract Multiply Divide Integer divide Remainder Random number Square root A log, sin, cos, e, pi library Matrix handler Scientific notation handler
Linker.ldThis is easy: ENTRY (_loader) SECTIONS { . = 0x00100000; .text : { *(.text) } .rodata ALIGN (0x1000) : { *(.rodata) } .data ALIGN (0x1000) : { *(.data) } .bss : { _sbss = .; *(COMMON) *(.bss) _ebss = .; } } Link with ld -T linker.ld loader.o kernel.o
Conclusions/DownloadThis project is still in its early stages, and has a lot of development and planning left. Please drop me off an email if you have some advice or insight:
Topic Actions: Edit | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r33 < r32 < r31 < r30 < r29 | More topic actions
Webs: Main | TWiki | Africa | EmbeddedSystems | Gpce | Houston | International | K12 | MetaOCaml | MulticoreOCR | ProgrammingLanguages | RAP | RIDL | Sandbox | SpeechClub | Teaching | Texbot | WG211 Web Actions: |
|
This work is licensed under a Creative Commons Attribution 2.5 License. Please follow our citation guidelines.