;      ___           ___                       ___           ___     
;     /  /\         /  /\          ___        /  /\         /  /\    
;    /  /  \       /  / /_        /  /\      /  /  \       /  /  \   
;   /  / /\ \     /  / / /\      /  / /     /  / /\ \     /  / /\ \  
;  /  / /~/ /    /  / / / /_    /  / /     /  / /~/ /    /  / /  \ \ 
; /__/ / / /___ /__/ / / / /\  /  /  \    /__/ / / /___ /__/ / \__\ \
; \  \ \/     / \  \ \/ / / / /__/ /\ \   \  \ \/     / \  \ \ /  / /
;  \  \  /~~~~   \  \  / / /  \__\/  \ \   \  \  /~~~~   \  \ \  / / 
;   \  \ \        \  \ \/ /        \  \ \   \  \ \        \  \ \/ /  
;    \  \ \        \  \  /          \__\/    \  \ \        \  \  /   
;     \__\/         \__\/                     \__\/         \__\/    
;
; Retro Native Forth, Release 6
; Visit http://retro.tunes.org
;
; Created by Tom Novelli, Currently developed by Charles Childers
;--------------------------------------------------------------------
This is the Retro 6 codebase, the latest generation of RETRO Native Forth. It builds on the solid Retro 4 and Retro 5 code bases, so those who are familiar with those releases won't find too many problems in learning it. We have fewer primitives, a cleaner structure, full support for Linux, new dictionary build system, and more. It's a lot nicer than the previous releases.

The primary goal is to keep within Retro's Philosophy (A simpler alternative for those willing to make a clean break with legacy software). Along the way, we also want to implement Tom Novelli's ideals as expressed in his conclusions from his work on Retro (interface, management of programs), but keeping the legacy Unix-inspired areas out. Retro will be a clean, efficient operating system, redesigned as needed to be cruft-free and fast.

An Outline of the Key Principles
1) Use less assembly code
  a) Write most code in Forth
  b) Just low-level drivers and a minimal Forth in assembly
  c) Support other languages as needed
2) Use few loops/flow control
  a) Retro currently has no words for looping
  b) Know the possible outcomes and respond manually
  c) Only the inner system should use loops (if possible)
3) Interface
  a) Simple
    1) Basic Forth console with optional sidebar/UI Framework   
    2) Rune Console (with split screens, multiple sessions, sidebar)
  b) Clean
    1) No bloat
    2) Written by hand in assembly and Forth
    3) Good color/font choices
  c) Keyboard Control


What have we already finished? Quite a bit:
1) Core Forth primitives
2) Interpreter/Compiler
3) Minimal Assembler
4) Compact, but usable Forth implementation
5) Block Editor
6) VGA graphics
   a) Basic primitives (rect, blit, at)
   b) Other words (hline, vline, pixel)
   c) A few words to draw in the sidebar (sb:hl, sb:vl, sb:px)
7) Initial port to Linux
   a) Textmode
   b) Works great!
8) Complete port to Linux
   a) SVGALIB graphics
   b) 100% Native Compatible
     1) Native drivers don't work under Linux
   c) Returns to textmode without problems
9) Basic ATA/IDE driver for Native Modes
10) Install to hard drive
   a) Using SYSLINUX

But a lot still needs to be done:
1) Improved drawing
   a) circle, hollow circle, hollow rect, line
   b) Minimal set of 3D drawing words
   c) Support for BITMAPS (for gaming, visual applications)
   d) Port of Allegro (compact subset, forked from main codebase)
2) Drivers
   a) Support for basic hardware under native and Linux
   b) Move new drivers to CDI (once specs are done)
   c) Eventually support UDI? (depends on C language, posix-ish structure)
      We could eventually make a CDI front-end for it
3) Improved Interface (RUNE)
   a) Sidebar
   b) Sessions
   c) Common UI wordset
   d) Split screens
4) Applications
   a) We have a minimal block editor
   b) Other apps are needed
5) Support for non-english languages
   a) Distant future (in Retro 7 or beyond? Unless someone wants to do it now)
   b) We'd need fonts and keymaps
   c) And translated documentation


Are you an assembly or Forth programmer? Why not help us out? Feel free to choose anything (listed or not) and contribute your code to the project. We'd love your help. Even if you don't help work on the project, please let us know your thoughts about what we've done and what we should do. Just send an email to: crc@bespin.org