Progress Log
The Dynatos Operating System and Related Projects
Progress Log of Keith E. Kanios, DynatOS Core Designer
2007 October:
* All of the basic 32-bit portions of DynatOS that apply to
the 64-bit version have been converted. Unfortunately, that
was the easy part. I now have to revamp the Memory Manager
and Process Manager, for starters. I would imagine that it
will take quite some time. 25% of the former code is going
to take 75% of the time to revamp. Wish me luck :)
* Nearly two weeks of grunt work and I have a 64-bit version
of DynatOS that I am very excited about. I have removed the
INT 0x30 ABI SYSCALL in favor of the actual "SYSCALL"
instruction found on 64-bit processors, which greatly reduces
the time wasted on giving applications access to core functions.
Much of the Memory Management and Process Management code have
not only been converted, but greatly improved!!! Well, enough
"talk" for one entry, I want to get back to work and keep this
momentum going!!!
2007 September:
* I've managed to produce much work on the assembler in very
little time. File parsing and recursion is working fine. The
tokenizer is operation properly. Just have to finish up the
preprocessor basics.
* Nearly finished with the core of the preprocessor for my
assembler.
* Finished with the preprocessor, at least the guts of it. I
have been actively working on the "%define" directive in order
to develop the interactions within the preprocessor.
* "%include" support is complete. It is nice to see true file
recursion :)
* I've had enough of assembler development for the time being.
I have found that NASM is sufficient enough for x86-64 output
and I have decided to focus entirely the on 64-bit version of
DynatOS for the foreseeable future. There is something about
"64-bit" that grabs my interest, so I will go ahead with that
instinct.
2007 August:
* I've submitted my recent work to the DynatOS CVS.
* Struck interest in developing my own assembler again, so
I will be focusing on that for the time being.
* Making good progress with the assembler since the code base
is already there from previous efforts.
2007 July:
* Back from vacation.
2007 June:
* Found some boring down-time on my vacation and started to
fine tune the Memory Manager.
2007 May:
* Still on vacation...
2007 April:
* Late last month I decided to join the NASM development team
since no one really seemed to be up to initiating 64-bit
support. I intend to continue diverting my attention to
bringing said 64-bit support to NASM... as long as I can.
+ I've made much progress with developing 64-bit support in
NASM and it has brought a few other people back to help
in the effort. I am glad they did as I am going on vacation
shortly and won't be back for a nearly four months!!!
Hopefully by the time I get back I can begin work on a
64-bit version of DynatOS :P
* I have decided to release the source code to DynatOS as
public domain equivalent open source. Perhaps some will
find it useful and learn from it :)
2007 March:
* I've scraped the idea of loading "initial drivers"
that are attached to the Core. Instead, I am
implementing basic PC standards into the Core.
* I understand FAT-12, but I think even a floppy disk
filesystem can be done better. I have to make a choice
between using a wide known standard, or doing my own
stuff. In this case, I think I will try to design a
a basic filesystem for DynatOS to utilize. The summary
of such a process will hopefully help me to formulate
my designs much more efficiently and rapidly. I can always
add working drivers for other filesystems, later :)
+ That was rather quick, I have a basic filesystem in place
and it operates under the notion of fixed nodes. I have
also designed a basic "read-only" driver to help me along
the way of this crucial development of the Core.
* It seems that using my own filesystem has had a huge
effect on the design of DynatOS. Many decisions that
I had to make, went from seemingly unclear to blindingly
obvious. I have already scraped the use of the standard
80x25 VGA Text Mode. Instead, I am utilizing the standard
640x480 VGA Graphics Mode as the "bare minimum" instead.
Also, I don't know how much longer I will be using RDOFF2,
as I don't really need it since I dropped the idea of
attaching drivers directly to the Core.
+ Yeah... back to using flat binary files... at least for
the Core itself ;)
2007 February:
* I've been playing around with RDOFF2 and the idea of
"initial drivers" and in the process, I have designed
a special linker program to carry out this task for me.
2007 January:
* Yet another year gone.
* I've been contemplating the naming conventions as to the
various systems and subsystems of the DynatOS Core. Some
time ago, I eliminated the "subsystem" name in favor of
calling such things simply "system". Now, due to the nature
of my code and the basic fact that DynatOS itself is the
"system", I have changed those names to simply "managers",
as that is really what they do.
+ The "System Libray Interface" naming convention has been
changed to the "Application Binary Interface". A commonly
accepted term for what the interface actually is.
+ The "Data Relay System" naming convention has been changed
to the "Resource Manager".
2006 December:
* I've reached an impass in how I need to achieve the dynamic
loading of DynatOS, so I finally invested in a file format.
I am currently using RDOFF2, a native format of NASM.
+ I've changed the DynatOS initialization code to compensate
for the need to fix-up address relocations due to the use
of the RDOFF2 file format.
+ I've totally revamped the entire DynatOS initialization
routine. Protected Mode, paging, memory management and
everything else is initialized in an efficient manner.
* I spent time developing a different way of booting my test
versions of DynatOS. Loading is now done in a trivial manner
from a common floppy disk formatted in FAT-12.
2006 November:
* MILESTONE: Yet again, and to prove how much Memory Management
and Process Management depend on each other; I have completed
basic Process Managment. I have, temporarily, placed the CLI
Runtime entirely within its own process, running in Ring3 and
making calls to the System Library Interface whenever needed!!!
2006 October:
* Absolutely nothing has been done to work on DynatOS :(
2006 September:
* MILESTONE: Completed basic Memory Management Initialization,
a process I started, along with Memory Management and Process
Management, well over one year ago. It is about time it works!!!
* The Routine works by detecting the E820 BIOS method, and
fails back down to older methods. So far it has worked on
all the emulators I use and 2 real machines. Time to revamp
my cheesy user interface to accomodate a "mem" command :P
+ Only took a couple of days to revamp my cheesy user interface.
Half of the time was spent reformatting my 2+ year old code
to something more readable and consistent. There is a basic
"mem" command as apart of other built-in UI commands, right
now it spews out the ASCII Hex equivalents of the memory byte
sizes. I will be working on converting this to KiloByte and
displaying in BCD.
+ Same day service... only took a few hours to revamp the "mem"
command to display in KiloBytes/BCD. I am going to go ahead
package this one up as a "basic release". Hopefully I will
get some decent feedback as to how Memory Management
Initialization works across other people's computers :)
2006 August:
* Another college semester is here and it is time for me to
drop back down to designing things. I will be working on
one of my original concepts of a portable instruction set,
much like what is commonly understand as VM/Bytecode these
days.
2006 July:
* Memory Management is becoming nicer and gives me much more
hope that I am not wasting my time, but I am still working
on it.
* I've been sidetracked with helping out a friend pertaining
to releasing his Assembly Language material. I have been
neglecting work on DynatOS, but this project seems like a
nice and productive break.
+ Well that was quick. The entire Assembly Language project
idea fell through. I guess it was not what everyone wanted.
Oh well, back to work on DynatOS :)
2006 June:
* I have decided to go deeper into revamping the source and
touching up on the memory management details. Needless to
say, this is going to take quite some time (months).
2006 May:
* Latest rewrite of the source code is mostly finished. I have
written in software based task switching, though the
interrupts and task scheduler still need some heavy work
before they are even considered "Alpha" ready. I will
continue to approach problems as they occur.
2006 April:
* I am currently revamping my source code in order to include
software-based task switching for the purpose of protection,
something I have neglected to do for quite some time. Still
working on the memory management along with the new multi-
tasking system since they complement each other in their use.
2006 March:
* I finally have the server situation under control... I think.
Getting back to my memory management work :)
2006 February:
* Working harder on more efficient methods of memory management.
* Work has stopped for a while and will stay that way until I
can fix issues with my server being attacked.
2006 January:
* Yet another year gone.
2005 December:
* Spent some time updating my Operating System Development
Guide.
* Switching this log over to the DyantOS Project Website
(finally)... probably pending reformatting though.
2005 November:
* mov eax,DWORD[fiancee] ;???
mov DWORD[wife],eax ;!!! :D
* Spending some of my time on switching the Win32ASM Community
Site over to ASM Community (www.asmcommunity.net).
* Been at the drawing board again coming up with more efficient
ways of running programs that have no target architecture.
2005 October:
* Finacee is visiting... enough said :)
2005 September:
* Still going at it with memory/process management, on top of work and
school.
2005 August:
* Spending most of my time on the Win32ASM Community Site
(www.win32asmcommunity.net). Really just trying to overhaul
the multi-lingual x86 assembly language tutorial that has
been negelected.
* Back to the drawing board. Trying to per-fect my process manager,
and it is going to be some time before I am done with that.
2005 July:
* Been on vacation, and will be on vacation for the most of this
month.
+ Back from vacation, it will take me time before I get back
into programming, on top of work and school :(
2005 June:
* Attempting to re-code DynatOS in C/inline ASM. Bare with me :S
+ Couldn't do it, back to programming DynatOS in assembly langauge...
because it is my favorite programming language :)
2005 May:
* Spent time fixing the "Guestbook" script on the DynatOS
Project Website, forgot to update it when I implemented the new
server format :S
* Not much in the way of DynatOS programming due to my job and
school.
+ Found enough time to release an cheesy Alpha Release of DynatOS.
It simply gauges if the basic Memory Management used in DynatOS
works on most computers.
2005 April:
* Seem to be getting closer to an actual release of DynatOS,
but unfortunately it isn't exactly what I had in mind. If I
continue to push towards releasing something, the initial version
will be static and interdependent instead of my desire to make
things dynamic and modular.
2005 March:
* Been spending most of my free time transfering a friend's site
(www.win32asmcommunity.net) to my server.
* Not much has been done in the way of DynatOS programming, I no
longer have an idea of when the initial release will be available
2005 February:
* Most of my focus has been on pushing for an initial release
(DynatOS Alpha), in which will have a basic CLI with a few
commands available... just to show I have actually been doing
something all these years :)
2005 January:
* Yet another year gone.
* Pretty much finished with the changes to the DynatOS Project
Website and the host server. I will be switching my focus back to
programming DynatOS and related projects :)
2004 December:
* Not much programming has been done, been concentrating more on the
DynatOS Project Website than anything else as of late.
2004 November:
* Still developing the program model. My focus has mostly been on
the assembler. I plan to have it complete, or at least have a good
working version, before I work on anything else.
2004 October:
* Shifted focus on furthering the program model development that I
started quite some time ago, which is the key to achieving uniform
execution across different computer systems. It is pretty vital to
any further development and much work needs to be done just to
implement it.
* I have decided to start creating a basic assembler that will run on
DynatOS itself, this will take some time away from OS development.
2004 September:
* Fixed the guestbook on the dynatos.org website. A friend of
mine brought to my attention that when you try to submit a
guestbook entry, it doesn't submit it to the database and
annoyingly takes you back to the guestbook without your entry.
I used the functionality of the old guestbook and designed a
new PHP script around it. Everything works as it should... so far :)
* The next few months are going to be another crunch time where
I won't have much time for DynatOS :(
2004 August:
* Without having to deal with the maintenance of the gaming
community I used to help run, and as I projected, I am working
much more on maintenance of the dynatos.org website and DynatOS.
It really is surprising how much energy I wasted on that
gaming community :S
* RIP-OFF!!! For the first time since I bought the domain dynatos.net,
it doesn't show up on Google's search engine. Instead when I search
for "dynatos" it shows a couple rip-off websites. One of them is
called Dynatos Solutions, seems like they are trying to play off
my Dynatos.Net Solutions name. The other site is operated privately
by someone who seems to have riped-off my project name (DynatOS).
I wasn't as annoyed until I saw "DynatoS Core" on his website, the
chances of that being coincidental is slim to none. I think I will
abandon dynatos.net and the Dynatos.Net Solutions name before I get
hi-jacked on a legal manner. As long as I have dynatos.org, I will
be content :)
2004 July:
* Not much going on. I disassociated myself with a gaming
community I helped get off the ground. I fought myself
tooth and nail, on multiple occasions, from just dumping
the whole scene and to try and understand the attitudes of some
who play online games, mostly disrespectful ones. In the end,
I couldn't stand the kind of disrespect these 24-7 game playing
kids give out. I pulled my resources from that community and am
putting that energy into working on DynatOS.
2004 June:
* Not much to report, just another month gone it seems like.
2004 May:
* Still pumping away at code, everything is coming along
slowly but surely.
2004 April:
* Just programming away :)
2004 March:
* Done with school and exam stuff early. I have so much free time
I don't know what to do with!!! I have been using most of it
to clean up my DynatOS source code a little bit and insert
some better commentation so I don't forget where I left off.
+ My code looks so pretty and organized now! I am porting it
to C and see how it sits with me.
* I've tried, but using C just doesn't feel right for this
project. Some people can fly with C but I feel like it holds
me back from the power of the processor and has too much
overhead. I feel I can program pretty quick and efficient for
assembly so that is what I'll stick to :)
2004 January:
* I'm not quite sure how much time I will have to work on DynatOS,
I only know it will be much more than I have had in the last
year. I still have school and to worry about so I will get as
much done as I can.
2003 December:
* Argh! Time to go, going home!!! I don't know how well this
vacation is going to be if I am this wound-up. I get to go
home to my family so hopefully that will break the stress
and let my motivation and energy come back so I can work on
DynatOS :)
2003 November:
* Still not much done with DynatOS. I've been working on memory
management stuff but that is about it.
2003 October:
* Haven't done much in the way of DynatOS lately due to school.
2003 August:
* I have decided that the DynatOS project alone is too big to be apart
of something such as Dynatos.Net Solutions (www.dynatos.net), so I
bought a new domain dedicated solely for the DynatOS Project
(dynatos.org)
* I have combined together all my seperate log entry files into this
new unified format since there are so many now and I have a
dedicated website to post them at (eventually)
2003 July:
* Finished with my basic technical school, now on to the more serious
stuff, after a nice 4th of July break back home of course ;)
* I have been working on the instruction set I plan on using for my
uniform execution again and I have got it down to something that
could be most efficient when implemented properly :D
2003 June:
* All my computer related stuff I needed from home is here now!!! I
can get back to programming DynatOS!!!!!!
* I am a bit rusty at this programming stuff and now I truly
understand why people comment their source code :S
* I have given up the "hardcore" ideology I formed at the end of last
year pertaining to my programming capabilities... not to say that it
wasn't fun ;) What used to be a single file of inline assembly code
is is now multiple files consisting of seperation based on function.
I am also looking into a more stable approach to the way I want
things executed in a uniform manner.
+ I notice that there is not much I can do but little things while I
am at school here, I take comfort in that I can stil be useful by
switching back to the design of DynatOS for a bit.
2003 May:
* I have a faster computer now but I need my DynatOS stuff from home
before I can continue working on DynatOS :(
2003 February:
* Been two years since I first came up with the idea for DynatOS. Out
of that The Dynatos Runtime Project and my compression algorithm
have sprung. The last 2 years have left me some pretty exciting
projects to work on. The last 2 years have also allowed me to get my
foot in the door as a serious administrator managing multiple
servers with different operating systems including website design
and and setup, e-mail server operations, database operations, domain
name service management and pretty much everything else a modern
internet server is used for including gaming... CS was so fun :D
+ I won't be able to work on DynatOS for the next few months because
I will be transitioning to a school in another state for further
personal education.
2003 January:
* After a little refresher my C programming skills are adequate and I
have written a basic file parser and loader that follows the
guidelines of my executable binary format.
* I feel pretty good about how the binary executable is loaded into
memory, now I have to concentrate on programming the instruction
emulation. If this little project goes well it could be used to
finally bring true uniform execution of programs across multiple
operating systems!!!
2002 December:
* Not much to report, still tossing the idea of the execution style
(of programs) around in my head. Ideas are forming slowly but
surely. Little work has been done to actually implement any of this
in assembly, just some heavy decisions on design.
* I have decided to break out my C programming skills and test this
execution format on current operating systems. It will be not much
more than "emulation" at first but it should turn into something a
hell of a lot more efficient, better than Java(tm) at least :P
2002 November:
* After that little crunch time with real life I have come back to
DynatOS and I am at the point where I need to think about how I want
programs to run, this is where my idea of uniform execution across
multiple platforms comes in!
* I've been working on it and have come up with an idea for virtual
registers that I even surprised myself with, it should allow for
huge increase in code efficiency.
2002 October:
* I have decided to give my computer to my father and break out my 386
with 100MB HD, a DOS version of VIM and NASM, and some printed out
manuals... time to go hardcore with my assembly programming!!!
2002 September:
* I have turned dynatos.net into the home of Dynatos.Net Solutions,
formerly Dynatos Development Foundation, as I will be doing more
than just programming DynatOS. In time Dynatos.Net Solutions will be
a website design/hosting solution (at the very least).
2002 July:
* Where does the time go? I believe I have finally grasped how
interrupts work, they are merely the equivalent of routines called
in programming languages such as C. The interrupt tables hold the
information pertaining to where the functions are located in
physical memory
+ Another oversight. It seems that interrupts in general have
specific ways of being processed, and that the interrupts used by
the Programmable Interrupt Controller have even more of a specific
way to be processed. I am doing fine with the standard interrupts
since I have learned of IRET (instead of RET for regular routines),
but the Programmable Interrupt Controller Interrupts are giving me
problems
+ I hope my work and study continues to go this well. I have found out
why Programmable Interrupt Controller based Interrupts weren't
working, they need an additional "End of Interrupt" signal prior to
using IRET
* I am kind of in shock... it WORKS!!! I made a generic interrupt
routine in assembly and made a copy of it for every interrupt I
need. The Programmable Interrupt Timer interrupt spews out some
characters to video memory. A small but glorious victory :D
2002 June:
+ I have been studying interrupts for over a month now and have come
across another stepping stone, a device called the Programmable
Interrupt Controller needs to be (re)setup properly when going into
32-bit protected mode with a new interrupt table.
* Didn't think it would be that easy, only took a few days after
reading the specifications of how the PIC needs to be programmed. I
mapped the pic to interrupt "vectors" 32-47, the next 16 after the
first 32 Intel(R) predefined ones.
2002 May:
* Success!!! Well over a month of work and study has paid off. It has
took some time but after studying the little mandatory quirks that
the x86 series processors have to offer just to get to 32-bit
protected mode, I put together a neat little efficient way of
getting there :D
+ One thing I failed to mention in my last entry is that I was able to
jump to 32-bit mode but not stay there. I have been experiencing
what is called the "triple-fault" syndrome. It seems I have
overlooked the need of something called the Global and Interrupt
Descriptor Tables, a way of the computer to tell DynatOS that
something external to the CPU needs to be taken care of.
* The Global Descriptor Table was a piece of cake, just defines how
memory is used, so I mirrored a generic way of making memory
readable/writable and can be used for code or data. The real monster
is the Interrupt Descriptor Table :S
2002 March:
+ I was trying to approach a bootloader for DynatOS, but I am having
trouble deciding how to go about doing it... plus I don't have a
working filesystem so I will stick to a working on a generic
floppy disk version that gets the job done and concentrate on a real
one when the time comes for me to need actually need something so
complex
* I have my generic little floppy disk bootloader working, now if I
could get my generic little kernel to work :S
2002 February:
+ Since I now have a fully working internet server that belongs to me,
it is time to buy my own domain name (dynatos.net) =D
* Got it... dynatos.net is all mine!!!
* After a year of study, design of DynatOS commences
* I've decided that the initial release will be for Intel(R) 32-bit
Architecture (Modern PC) and will be designed using x86 Assembly
2002 January:
* A new year and a fresh start :D
* After months of study and reading up on other people's work in this
area I have throughly convinced myself that this project is going to
take me a long time to complete, even for my first working version to
be out but I know I will love and enjoy working on it
+ Fidgeting with my Linux again... I have found an "old" 200MHz
computer I built along time ago and decided to install
Mandrake-Linux(R) on it and make it a dedicated server on it
* Stuyding this aspect of Linux(R) has lead me to believe that I can
host my own website and other stuff from this computer so I put two
network cards in the server and fed my cable internet and my
hardware router to it creating my own little LAN Server with
internet capabilties... it sits in my laundry chute!!!
* No one is going to find my website if they have to type my IP
address in all the time so I decided to make a cjb.net "redirection"
link to it (http://dynatos.cjb.net)
2001 October:
* Past months have been dedicated to learning Intel(R) Assembly
Language for 32-bit Processors (ix86)
* Discovery of the Netwide Assembler (http://nasm.sourceforge.net)
+ The quality of NASM (Netwide Assembler) leads me to focus on NASM
syntax pertaining to Intel(R) Assembly language
* Designed a few routines and such under DOS using the PC Interrupt
method to control the program
2001 August:
* Result of my overall studies leads me to a very popular project that
has been going on for around a decade, it is called Linux(R)
(http://www.kernel.org)
* After careful consideration and study I decided to install a
distribution of Mandrake-Linux(R) (http://www.mandrake.org) along
side my Windows(R) Millenium Edition(R) installation on my blazing
fast 800MHz custom built computer =P
* Studying Linux(R) has helped greaten my understanding of how the
modern PC works internally and allowed me to better understand how a
computer "thinks"
2001 July:
* Months of studying leads to the need of fully understanding Machine
Language (Assembly) in order to fully understand a computer's design
+ Focus shift from studying CPU Architecture to learning Intel(R)
Assembly Language
2001 March:
+ Still studying...
* Previously learned languages such as BASIC, C and C++ are helping in
the basic understanding of CPU Architecture
2001 February:
* Idea of a new operating system born out of noticable design flaws in
Microsoft(R) Windows(R) (http://www.microsoft.com), and because I
know Microsoft(R) too well I decided to start this log incase it
becomes a big thing... I am not too fond of my ideas being stolen ;)
+ The idea of a new operating system started me off on a name quest
and being of Greek origin, I am browsing the online Greek Dictionaries
for a word more symbolic and "catchy" than the typical over-used
English ones
* After looking up Greek equivalents of English words, the English
word in which I wanted to represent my operating system, "powerful",
turned up in translation as "dynatos"... this instantly caught my
eye as the last two letters of dynatos are OS, which is an acronym
for Operating System and I thought I struck gold. DynatOS is born :)
* After days of searching the web I discovered the name for my OS is
original in the respect it is used so with that encouragement I am
compelled to pursue this project as my major goal with computers
and as one of my major goals in this life
+ My study of Intel(R) 32-bit Architecture commences