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