MAIS Forth versie 1.4d voor MAIS kastje
=======================================

Dit is een voorlopige release, het programma is nog niet compleet,
maar wel al goed bruikbaar.

Dit is de eerste versie die gemaakt is met een geheel nieuwe
metacompiler, bedacht door Albert Nijhof.
De CAMEL-forth van Brad Rodriguez is als uitgangspunt genomen
maar vrijwel geheel herschreven. Daarom is de naam nu ook
MAIS Forth.

Omdat de release nog niet compleet is worden alleen de files,
nodig voor het maken van een eprom, en een testprogramma ingesloten:

MAIS_14D.BIN	Binary image van de eprom.
		De eprom is van het type 27128 (16KB)
MAIS_14D.HEX	Intel Hex file van de eprom.

MAISTEST.FRT	Test programma voor bijna alle definities
WORDS.LOG       Lijstje van alle definities in MAIS Forth


Wijzigingen:
------------

o   De complete set van metacompiler, crossassembler en
    targetforth is nu werkend onder verschillend ANSI-Forth's.
    Er is getest met win32forth, jinforth en minforth
    Hiermee kan de eprom-image van MAIS-Forth gegenereerd worden.
o   De DO..LOOP constructie is helemaal herschreven en gebruikt geen
    aparte stack meer.
o   VALUE en de woorden TO en +TO
o   Alles werkt nu zowel met hoofdletters als kleine letters
o   De dictionaire is threaded gemaakt met 16 kettingen. Daardoor
    verloopt het compileren vele malen sneller.
    Er is een definitie /WORDS die de woorden per ketting toont.
o   Directe ingave van getallen in een ander talstelsel met
    %X (hex), %D (decimaal) en  %B (binair).
    voorbeeld:
    DECIMAL 
    %X C000 32 DUMP
o   anonieme woorden met :NONAME zijn nu mogelijk
o   een array maken met VARIABLES
    b.v.   12 VARIABLES maanden
o   foutmeldingen meer volgens ANSI-standaard
o   alle create does-woorden hebben nu een eigen 'DO'-woordje voor
    het gedrag tijdens uitvoering. Dit is veel duidelijker in de
    metacompiler en tevens is hiermee een decompiler eenvoudiger te maken.
    b.v.   CONSTANT en DOCONSTANT
           VARIABLE en DOVARIABLE
    etc.
o   TUCK en NIP zijn toegevoegd.


Nog te doen:
------------
o   vocabulaires
o   assembler
o   opschonen van de sourcefiles
o   ??? 

14 november 2004
Frans van der Markt



Hieronder nog de geschiedenis van oudere versies:

Camel Forth versie 1.3 voor MAIS kastje
=======================================

Source-file: chrom_13b.frt

Wijzigingen:

- vanaf deze versie werk ik met een gewone file chrom_13b.frt
  die geconverteerd wordt naar een blokkenfile chrom13b.scr en
  dan met F83 omgezet wordt naar de file 6809B.HEX (Intel-hex)
  Deze laatste kan in ram geladen worden om te testen of er
  kan een eprom van gemaakt worden.
- utilities:
  tomblock     voor conversie van gewone naar blokkenfile
  maishex3.frt voor het laden van een intel-hex file in het ram
  ansi2.txt    testfile voor alle core ansi woorden               
- UM* is verbeterd, ook grote getallen worden nu correct 
  vermenigvuldigd (ansi test)
- toegevoegd comment-teken '\' 
  alles na '\' tot einde van de regel is commentaar
- toegevoegd definitie INIT_USART
  hiermee kan de baudrate van het mais-kastje ingesteld worden
  op 1200,2400,4800 of 9600 (default) Bd
  Gebruik:  <baudrate> INIT_USART


2 mei 2004
Frans van der Markt


Camel Forth versie 1.2 voor MAIS kastje
=======================================

Source-file: chrom_12.scr


Wijzigingen:

- FM/MOD is verbeterd  (ansi test)
- WHILE en REPEAT zijn verbeterd (ansi test)
- De prompt na elke regel is aangepast voor sneller uploaden 
  met de windows server32:

  	interpreteren:  OK + CR + LF
 	compileren:          CR + LF

- Systeem variabelen zijn nu onderin het geheugen geplaatst
  op de adressen hex 0080-02FF, zo werkt het met elke ram-configuratie
- Na cold wordt er een memory test gedaan om te meten hoeveel
  geheugen er is en dit wordt geprint
- Toegevoegd definities voor: NOT 0<> en ?
- Prefixen voor getallen toegvoegd:
   #xxx   decimaal getal xxx
   $xxx   hexadecimaal getal xxx
   %xxx   binair getal xxx
   &c     ascii waarde van karakter c
   ^c     control waarde van karakter c
- adressen aangepast voor 16k eprom (C000-FFFF)


10 september 2003
Frans van der Markt



Camel Forth versie 1.1 voor MAIS kastje
========================================

Configuratie:
-------------
RAM hex 0000-1FFF
EPROM hex E000-FFFF
De Eprom is van het type 27128 (16 kB) de onderste 8 kB hiervan
worden nog niet gebruikt

Source:
-------
File CHROM2.SCR
Deze wordt uitgevoerd met F83 en levert dan de file: 6809.HEX


Verbeteringen:
--------------
- .S controleert op empty stack en underflow

- DUMP toont nu ook de ASCII inhoud indien mogelijk

- de constantes TRUE (-1) en FALSE (0) zitten er nu in (ANSI)

- het RAM geheugen is nu vrij van hex. 0100 -1D80

- de interrupt vectors zijn nu aan te passen omdat de adressen van de
  vectors in de USER variabelen zijn gezet. Door zo'n USER variabele aan
  te passen kan men de interrupt overal heen laten springen.
  Bij opstart wijzen al deze vectoren naar een instructie RTI,
  (return from Interrupt) in de eprom.


Interrupt vectoren:
------------------
Adres	USER var	Interrupt
hex     dec.
1E14	10		SWI3  software interrupt 3
1E16	11		SWI2  software interrupt 2
1E18    12		FIRQ  fast interrupt request
1E1A	13		IRQ   normal interrupt request
1E1C	14		SWI   software interrupt 1
1E1E	15		NMI   non-maskable interrupt


Memory map:
-----------
0000-1D7F RAM dictionary (for new definitions)
1D80-1DFF Terminal Input Buffer
1E00-1E7F User Area (USER variables)
1E80-1EFF Parameter Stack (grows downward)
1F00-1F27 HOLD area (grows downward) 
1F28-1F7F PAD area (general purpose buffer)
1F80-1FFF Return Stack (grows downward)

C000-DFFF bottom part of eprom not used 
E000-FFFF Forth kernel in eprom


1 augustus 2003
Frans van der Markt

