Dave Cope's Homepage
   Main | Personal | Photo Gallery | Projects | Linux | Employment Info. | Links | Misc. | About e-mail  

The Ita Operating System

The Ita Operating System is very basic compared to what is expected of most operating systems. Many abstractions available in other OS's are not available in the Ita OS.

Object System

Instead of having a file system, the OS provides an object system. The object system provides a way of locating objects in a folder hierarchy. The object system is entirely resident in memory, and there is no support for external storage at the moment.

Instead of loading an application from disk, all applications are in memory. Launching an application involves calling the applications Run method.

Coroutines

Coroutines are actually implemented at the OS level, instead of being implemented in the compiler. There is a SystemCoroutine type that provides the most primitive form of a coroutine. Other control flow mechanisms are then implemented on top of the SystemCoroutine. For example, user level coroutines and threads are implemented using the SystemCoroutine. It would also be possible to implement exception handling using the SystemCoroutine class.

Threading

The Ita OS provides a cooperative multi-tasking environment. Threads are only switched when an application calls Yield. In theory, all safe code in the system could have compiler generated yields that would prevent any one program from monopolizing the CPU. However the current system has no such provision.

Drivers

Text Display

The operating system provides a Console class that provides functions for writing to the text display. The class/driver takes care of wrapping lines of text, scrolling the display and keeping track of the cursor position.

Unsafe applications could access the text display directly through the display's memory map, but well behaved applications should instead make use of the OS console functions.

PS/2 Driver

The operating system comes with a PS2 keyboard driver. Since the CPU lacks interupts, the keyboard driver will poll the PS/2 port when a key press is requested. The driver tracks if certain keys are being held down (e.g. shift or ctrl) and it also maps PS2 scan codes into ASCII values. Special extended values are used for non-ASCII keys like the cursor keys.



This site was designed and coded by Dave Cope - © 1998-2003