                                                        Nov. 7, 1998


                          The RETRO Operating System


History

        Back in March or April, I started designing my own computer language.
        Naturally, I had been looking at other programing languages, and this
        summer I stumbled upon FORTH. Finally, something I could work with!
        I gave up writing my own language. Sometime in August, I took a
        boot-loader I had been playing with and turned it into a little
        FORTH-based operating system. Last weekend I rewrote it from scratch,
        and here it is.

        It's a lot simpler. The code is clean and relatively efficient.
        The direct video and keyboard I/O is gone; it's using the BIOS
        for everything, for now. The Forth dictionary layout has also
        been revamped in preparation for a segmented 8086 version
        (similar to F-PC) that won't limited to 64K. The approach is
        different, too. Before, I was trying to write a system that could
        compile itself, so I wouldn't have to do development under Linux.
        That meant writing an 80x86 assembler, which is a nightmare thanks
        to Intel's incompetence.

        Now I'm just trying to build a complete Forth system, using a
        combination of NASM and Forth. Later on I'll write my own assembler
        in high-level Forth. Right now I'm more interested in graphics,
        filesystems, and practical things like editors and networking.


Status - Here's what's done so far:

        Forth Compiler-Interpreter
        BIOS keyboard input & screen output
        Prints and parses numbers in any base
        Disk blocks (the full ANS-Forth BLOCK wordset, and some extensions)
        Block editor
        Basic graphics (line & pixel drawing)


Goals

        32-bit protected mode is on the way. It'll provide benefits like
	linear addressing, memory protection (for reliability & security),
	and efficient use of the CPU. At first, I'll do a quick hack to
	use V86 BIOS calls for I/O. Then I'll take the time to write my
	own direct I/O routines. I can bum code from Linux, but it's in C
	so I have to translate it to Forth and Assembly.

        A new graphical interface is also in the works. Unlike other GUI's,
        this one won't use a mouse (except for things like drawing, where a
        mouse is useful). It'll use disk space, memory, and CPU
        time efficiently. It won't waste your time with bad user interfaces
        (like the "Start menu") either.

        I'm not limiting myself to the ANS-Forth standard, but I'm conforming
        to it except where it would be inefficient to do so. Later on, I'll
        support the full standard.



Installation

        You need:
         1. NASM, the Netwide Assembler
            www.nasm.org (???)

         2. A floppy disk

         3. RAWRITE (DOS users only)
            sunsite.unc.edu/pub/Linux/dos-utils/rawrite.exe (???)

        Linux:
         1. Type 'make'
         2. Put a floppy in drive A
         3. As root, type 'make bdisk'
         4. Reboot
            (Or, if you have DOSEMU, type 'dos -A')

        DOS:
         1. Type 'make'
         2. Put a floppy in drive A
         3. Type 'rawrite image a:'
         4. Reboot





--
        Tom Novelli
        Email: tcn@clarityconnect.com

