Message board for the users of flat assembler.
> OS Construction > Introducing people to my new project - ZNU.
I am introducing you guys to my new project call BendLoad, (ZNU Loader),
as my next project is a 32-bit Operating System called BenderOS,
It has the following features :
1. Load the Kernel to 4MB (KERNEL32.SYS)
2. Leave the control the kernel in a stable state i.e. interrupts enabled, IRQs unmasked, PAE Enabled etc.
3. Provide a simple API to the kernel (like the BIOS).
Here's a rough draft :
It'll make life of current OSDevers easier....
Here's a screenshot in progress : (The K is printed by the kernel)
Well changed the name - It's now ZNU (Zicronix is not Unix)
What do you guys think?
"Those who can make you believe in absurdities can make you commit atrocities" -- Voltaire https://github.com/Benderx2/R3X
Last edited by sid123 on 05 Mar 2014, 15:37; edited 1 time in total
|04 Feb 2014, 12:18||
Good, make it like Windows!
|05 Mar 2014, 14:49||
It's meant to provide a Early Boot Environment (EBE, No there isn't a term like that),
like the BIOS, When BIOS loads it leaves the CPU in a stable state, like Interrupts enabled,
Descriptors loaded along with some interrupts that can be invoked by the OS at an early stage.
However the BIOS is obsolete and is near it's end, since UEFI is coming in, I feel there is a need of
such a thing because of UEFI's complexity. Similarly like the BIOS this load the kernel and will give access to certain functions. I think I go the EFI way,
1. Boot Services (Keyboard, Timer, R/W HDD, etc) - Can be used by Kernel at Boot Time invoked through interrupts.
2. Exit Boot services() - Does nothing except that it nulls out the Interrupt Descriptor (It's not a interrupt, but a memory address, since issuing an IRET after having an insane IDT is dangerous, maybe not?)
3. Runtime Services() - These are not accessible by interrupts by they need to be accessed by direct memory addresses, I think the implementation should be like before calling Exit Boot services() the kernel should request this to fill a table that points to the address of the calls, these calls with involve things like Setting Video Resolution, PCI, USB (I am way behind this one) etc, to make things easier.
4. Kernel Formats:
1. ELF - Should be easy enough
2. PE - Not sure.
3. Binary -
5. User Shell
I think it would also provide a simple shell, in which will give the user to configure the Loader, Browse the disk etc.
Well looks like this:
It supports Binary executables which can be compiled either by SmallerC or FASM.
The loader is in fasm btw.
Right now I am working on ZNULIB, which is a C library for my upcoming OS, the testc.znx
application shown in this image is using that library. The args.znx application is written in FASM.
|05 Mar 2014, 15:34||
It's now ZNU (Zicronix is not Unix)
You have a broken recursion. "ZNU is not Unix" is much better as definition.
Tox ID: 48C0321ADDB2FE5F644BB5E3D58B0D58C35E5BCBC81D7CD333633FEDF1047914A534256478D9
|05 Mar 2014, 16:08||
< Last Thread | Next Thread >
Copyright © 1999-2020, Tomasz Grysztar. Also on GitHub, YouTube, Twitter.
Website powered by rwasa.