1. Re: EuOS (was: 2 Pass Binder)

EU>>Actually, I have used dynamic construction of routine names to spcify
EU>>the types of arguments. I did this to construct an Euphoria interpreter
EU>>for my compiled Euphoria bytecodes (I've been working on a Euphoria
EU>>assembly language and a compiler and interpreter for it).

EU>Ah yes, you were working on the Euphoria OS, right? Sorry about
EU>switching subjects mid-stream, but how is that going? It sounds
EU>like a pretty neat idea.

EU>Rod

It's kind of hard to say how EuOS is going. I've done quite a bit of
programming and thinking, but I don't know how much of it is actually
very useful. I've posted a lot of messages to the EuOS message board
(see the web site at http://euos.hypermart.net), but I don't know what
anyone else is doing.

I can say what I've finished and what I'm working on, so I'll describe
my work briefly here in case anyone is interested.

First, I started developing a kernel for EuOS in Euphoria. I've finished
about five revisions with small additions etc.. It basically works like
so:
1. The kernel is an include file which would be included by the actual
EuOS program - perhaps a distribution as with linux (like Red Hat has
specific parts of Linux unique to Red Hat, but the kernel is the same).
2. Programs, drivers etc. are in include files which are included in a
programs.e file which is included in the kernel. The kernel can modify
the programs.e file to add and remove programs.
3. Each program calls the addProgram procedure and passes its name,
version, stability, priority, and the routine_id of its main routine
(and a few other arguments). The addProgram procedure then uses this
information to find and resolve conflicts and warn the user about
unstable programs etc.
4. Each program is divided into functions which are run by the task
scheduled. The function returns the routine_id of the next function to
call, or an invalid routine_id to end the program. I've tested the task
scheduled with 2000 counters that count from 0-9. It seems to work
pretty well. The counter function works like this:
function counter_func()
        add 1 to counter for this instance
        display counter
        if counter = 9 then
                return -1
        else
                return routine_id("counter_func")
        end if
end function

My next major EuOS-related development was ESE (Event System for
Euphoria). Although I designed it for just regular Euphoria programs, I think
it could be applied to EuOS for a messaging system, though I haven't
experimented with implementing it in the kernel yet.

Then I started developing compiled Euphoria for several reasons:
* speed improvement (I think its faster to interpret bytecodes than
code)
* smaller programs
* no need to distribute source code
* possibility of competition in compilers (trying to produce the most
optomized Euphoria assembly code from an Euphora program)
* easier to interpret (makes it easier to build a fast interpreter in C)
* possibility of developing a true preemptive multi-tasking system, not
cooperative like the kernel I've developed so far is
* security (there's no machine calls in Euphoria assembly language -
everything is done through the oscall instruction (so EuOS could check
it))

The compiler is finished, and I've been developing two interpreters -
one in Euphoria and one in C++. The Euphoria version can do 82 sieves
per second compared to Euphoria's 3000+ on my 200 MHz Pentium. The C++
version does 450 sieves per second or so, but has a number of bugs I
haven't fixed yet.

Now, being unable to approach Euphoria's speed in interpretation, I've
put the compiler and interpreter somewhat on hold and decided to
continue developing the kernel. I recently had a great idea that I
hadn't thought of before. The problem with security was that programs
could access the machine calls and file operations etc. without any
restrictions. This obviously wouldn't do for a secure and stable
operating system. My great (and now seemingly obvious) idea is to have
the kernel override the built-in system functions.

So now I've started working on the kernel some more. I'm probably going
to totally re-write it to clean it up and allow it to be extended by
programs or the EuOS "distribution" or parent Euphoria program. I could
really use some help with designing the standard API and interfaces for
GUI libraries etc.. One of the really great features I hope will be in
EuOS is the ability to extend virtually every part of the operating
system very easily - for example, anyone who wanted a different GUI
should be able to write a few routines based on a standard GUI API,
register them with the kernel, and all the existing programs now work
with the new GUI.

So that's where I'm at with EuOS. If anyone wants to help, please e-mail
me. I think that with some help, I could get a complete version up and
running on top of DOS, and maybe Linux or Windows. Then the only thing
needed to make a true operating system would be getting an interpreter and some
drivers to allow it to run when the computer boots without needing another
operating system.

Jeffrey Fielding
JJProg at cyberbury.net
http://members.tripod.com/~JJProg/

new topic     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu