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: 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