HARD OS, A Brand new OS
Posted: Sat Feb 05, 2011 11:55 pm
Ok (all my posts starts with Ok, because i don't now what i should say so...) i'm starting at Osdev Forum, so I'll introduce myself:
My name is Guilherme Ferreira Franco, i live in Brasil, i'm 17 years old and i work on a pseudo-scholarship in a Federal Institute in the State of Rio de Janeiro, in a city called Campos dos goytacazes (The capital of Rio de Janeiro State is the City of Rio de Janeiro), i say pseudo because officially i don't have an scholarship, lets say that i entered and started working, i don't recieve nothing by this, but they let me in.
The question is that the institute need an program to run some internal functions, like: voting of principals and rectors; backuping, formatting and testing of computers. And all them need to be error proof, invasions proof and dummies proof (any one have to understand it), and all that at the same time!.
I decided that no program would do this better than a OS.
Once that a have very much experience in 8086 and in code optmization, and i'm crazy to do an OS, i decide to do an 16-bit pure 8086 code OS.
now, heres the introduction of my OS:
HARD OS:
PURPOSE:
The purpose of this OS is provide a simple 8086 Operational System, wich have modern features, emulating some processor functions through single step debugging, and implementing a more intelligent and efficient use of the 8086 instructions, giving coders much more work to code it, but giving a very high performance, and very good appearence, using only 8086 instructions and 320*200 256 color video mode.
METHODS:
Use more brain power and less hardware power, finding out the most efficient mode to do something, like:
How move 1000 bytes from ds:si to es:di? (in NASM compiler)
If you need space:
Mov cx,500
Rep Movsw
If you need speed:
TIMES 500 db 0A5h
And a a mix of the two:
Mov cx,25
LOOPMOVE:
TIMES 20 db 0A5h
Loop LOOPMOVE
LONG EXPLANATION:
The HARD OS is a modular kernel operational system, coded in 8086 assembly, that runs only the 8086 opcodes, and have modern features, like memory protection, multi-tasking, idle-process, performace counting, watch dog, paging, and all that using the single step debugger to ensure avoiding kernel to be damaged and do alterations on the next opcode to be executed, no process or module can write on the kernel, jump to it, or do anything that could cut off kernel control about the system, and using a invalid opcode manager, so the process can only execute 8086 instruction, so if you try to enter protected mode, or change Control register values or acess any non-8086 functions you'll be blocked out.
One of its features is what i call GMDR (General Maintance and Debugging Routine), an routine attached to Int 08h that test random areas from memory, and each time it is called it test a different checksum of a different module or process (because there are three types of checksum), any error will call the right error handler for it, and if there's none, or there's a double fault (error on error handler) the system's general error handler will be called, and this is defined by the user (generally it locks system in the kernel and asks the user what to do, but in some extreme cases, in wich the managed data is too important, the system prints a minimal phrase on screen warning about the crash, disables PIC and Halt the processor).
The general system Error handler is a interface to decide what to do when system can't solve a problem by its own, and its attached to Int 3 (0CCh in hex), that is called by the GMDR or when system execute a free memory area, because any free memory area is filled out with 0CCh bytes.
Another important interface is the system main setup and managing page, a page that stops everything when called, and its invoked directly by the kernel.
Only the user may call this, by pressing Ctrl+Alt+Del.
And another great feature is that its have an integrated X manager, with some features as dinamic pallete change, graphic object simulation and more things, all that in 320*200 256 color video mode.
The rest will be explained at the first relase.
In sume, the legacy of this OS is, CODE HARD
My name is Guilherme Ferreira Franco, i live in Brasil, i'm 17 years old and i work on a pseudo-scholarship in a Federal Institute in the State of Rio de Janeiro, in a city called Campos dos goytacazes (The capital of Rio de Janeiro State is the City of Rio de Janeiro), i say pseudo because officially i don't have an scholarship, lets say that i entered and started working, i don't recieve nothing by this, but they let me in.
The question is that the institute need an program to run some internal functions, like: voting of principals and rectors; backuping, formatting and testing of computers. And all them need to be error proof, invasions proof and dummies proof (any one have to understand it), and all that at the same time!.
I decided that no program would do this better than a OS.
Once that a have very much experience in 8086 and in code optmization, and i'm crazy to do an OS, i decide to do an 16-bit pure 8086 code OS.
now, heres the introduction of my OS:
HARD OS:
PURPOSE:
The purpose of this OS is provide a simple 8086 Operational System, wich have modern features, emulating some processor functions through single step debugging, and implementing a more intelligent and efficient use of the 8086 instructions, giving coders much more work to code it, but giving a very high performance, and very good appearence, using only 8086 instructions and 320*200 256 color video mode.
METHODS:
Use more brain power and less hardware power, finding out the most efficient mode to do something, like:
How move 1000 bytes from ds:si to es:di? (in NASM compiler)
If you need space:
Mov cx,500
Rep Movsw
If you need speed:
TIMES 500 db 0A5h
And a a mix of the two:
Mov cx,25
LOOPMOVE:
TIMES 20 db 0A5h
Loop LOOPMOVE
LONG EXPLANATION:
The HARD OS is a modular kernel operational system, coded in 8086 assembly, that runs only the 8086 opcodes, and have modern features, like memory protection, multi-tasking, idle-process, performace counting, watch dog, paging, and all that using the single step debugger to ensure avoiding kernel to be damaged and do alterations on the next opcode to be executed, no process or module can write on the kernel, jump to it, or do anything that could cut off kernel control about the system, and using a invalid opcode manager, so the process can only execute 8086 instruction, so if you try to enter protected mode, or change Control register values or acess any non-8086 functions you'll be blocked out.
One of its features is what i call GMDR (General Maintance and Debugging Routine), an routine attached to Int 08h that test random areas from memory, and each time it is called it test a different checksum of a different module or process (because there are three types of checksum), any error will call the right error handler for it, and if there's none, or there's a double fault (error on error handler) the system's general error handler will be called, and this is defined by the user (generally it locks system in the kernel and asks the user what to do, but in some extreme cases, in wich the managed data is too important, the system prints a minimal phrase on screen warning about the crash, disables PIC and Halt the processor).
The general system Error handler is a interface to decide what to do when system can't solve a problem by its own, and its attached to Int 3 (0CCh in hex), that is called by the GMDR or when system execute a free memory area, because any free memory area is filled out with 0CCh bytes.
Another important interface is the system main setup and managing page, a page that stops everything when called, and its invoked directly by the kernel.
Only the user may call this, by pressing Ctrl+Alt+Del.
And another great feature is that its have an integrated X manager, with some features as dinamic pallete change, graphic object simulation and more things, all that in 320*200 256 color video mode.
The rest will be explained at the first relase.
In sume, the legacy of this OS is, CODE HARD