
-- CURRENT WORK --
------------------

  Buggy words:
    '/' and '*/' are FUBAR
    '.' puts a '-' in front of any number >= $40000 hex (suspect 'SIGN')

  Fix those last few problems in the assembler (base/index regs..)

  Make sure registers are callee-saved
    Done: forth.f, prim.f,
    TBD: keyboard.f, display.f

  compilation (with separate Main and Compiler dictionary sections)

  Wish list:
    FILL ERASE CMOVE CMOVE>
    FH +LOAD +THRU (relative block loading)


-- CONSIDER MAKING THESE CHANGES --
-----------------------------------
  Make metacompiler code look (almost) exactly like normal code
    Rename TCODE: to CODE:
    Rename [[ to [ and ]] to ]   ....?

  case-insensitive FIND
  hash-table FIND (simple extension to linked-list FIND)

  Unit test for every word, as suggested by the "Extreme Programming" rules.



-- CHANGES TO DO BEFORE RELEASE --
----------------------------------
  Tweak assembler to use more compact encodings for base/offset addressing
  Add a 'reboot' keystroke
  Add basic exception handlers (80386 cpu exceptions)
  Add disk drivers
  Convert source code to BLOCKs



-- PROGRESS --
--------------
FOS CORE - boot, kernel, forth, assembler, editor
  Assembler		 95%	could produce more compact code
  Boot Sector		100%	bare minimum (but it works)
  Init pmode		100%
  Display driver	100%
  Keyboard driver	100%
  Floppy driver		 10%
  IDE driver		  2%
  Metacompiler		100%
  FORTH words		 60%
  Block editor		 90%	add a few features (see ~/forth/editb/)

Note: I flag unfinished code with "TBD:", so I can do a "grep -n TBD: *.f"


FORTH COMPILER
	References:
		Moving Forth by Brad Rodriguez (in ~/forth/)
		ANS Forth spec
		Summary (under doc/summary.txt)
		http://www.ultratechnology.com/meta.html
	OK to borrow from:
		Retro2 - cuz it's mine!
		Pygmy - ok to reuse parts (assembler in particular)
		Win32forth - public domain (but assembler is GPLed)
	Some problems w/ using these in Public Domain software:
		gForth - GPL2
		PFE - LGPL2
		Camel - "free for noncommercial use" (bj@zetetics.com)
	Don't use / can't use:
	Not sure yet:
		SPF, F-PC, eForth, F83
		Aztec - doesn't really say, ok I guess.

EXPERIMENTS
	Color Forth (Use chars 0-31 as spaces which also set the color)
	Optimized native code (an extension of STC)
	Indirect- and Token-threaded (portable, reflective)
	Direct-threaded
	LISP-over-FORTH (see ~/forth/flisp/, obtained from ftp.forth.org)
	Persistent Object Store (see NOTES)
	Secure way to run untrusted code (using objects? types?)

