-- CHForth 1.2.0 - 1.2.1

Control characters met ^X en CTRL X of [CTRL] X moeten
  met een hoofdletter.

Hex getallen achter $ moeten met hoofdletters.

Bug, sprong verkeerd, JB moet JNB zijn:
INTERNAL $73 ' GETKEY #11 + C! FORTH ( Alleen CHF386.EXE )

Alle fillers nu centraal in ALIGN : $90

PTYPEX uit TYPEX verwijderd, LIB\PRINTER.FRT is niet meer,
  later misschien weer toevoegen?

16 juli, na een bericht van MHX:
REFILL ging niet goed aan het einde van een file, bij EOF werd
wel FALSE gegeven, maar #TIB stond niet goed, nu staat hij wel op
het einde van de juist ingelezen regel.

21 juli
VIEW dacht dat er een adres achter NEXT stond, maar dit stond
achter FOR.
AFT was nog niet bekend aan VIEW.

23 juli
Een overloop van 32 bytes toegevoegd aan de code area van FLYER,
de list had er al een van 256, niet zo overdreven, definities met
strings kunnen zo lang zijn. De toegelaten gebieden zijn beide
256 bytes lang.

ACCEPT (eigenlijk NACCEPT) beschouwt tekens 32..255 allemaal als
ASCII (was 32..127), dus '' (254) is ook mogelijk, misschien
iets voor iForth fans. SEPARATOR is mee veranderd.

FRTSEG, LSTSEG, HDRSEG, ENVSEG werken nu als konstanten onder de
namen CSEG, LSEG, HSEG en ESEG en zijn zelf niet meer
beschikbaar. Toegevoegd zijn LLEN, HLEN en ELEN. STKSEG blijft
voorlopig in INTERNAL.

25 juli
Vergeten 'POP BASE' toe te voegen na 'PUSH BASE DECIMAL' in
LIB/EDITOR.FRT (twee maal). Na het typen van WHAT na een fout en
dan weer terug in Forth kwam het bericht: delen door nul, want
BASE was daarna waarschijnlijk nul.

.DEC ipv DEC. UDEC. weggelaten, werd toch niet gebruikt.

-- CHForth 1.2.1 - 1.2.2

27 juli
Naam van E.D. verwijderd uit ACCEPT.FRT

28 juli
Kijk uit met LIBGLOSS, doe geen NEWGLOSS voor een andere colondefinitie,
want colondefinities hebben een eigen forgetroutine die LDP terugzet, dus
ze worden gewoon overschreven!

1 augustus
S" en C" strings in codesegment, dus geen queue meer boven PAD/TEMPORARY
nodig en ze zijn nog wat sneller en eenvoudiger te implementeren. 
." en ABORT" strings blijven in LSEG.

FORGET> verwijderd, alles gaat nu met IS-FORGET. Je kunt natuurlijk
speciale gevallen doen met HEAD>FORGET H!

Colon definities hebben ook een forgetroutine, deze hoeft alleen LDP terug
te zetten.

2 augustus

Invoering van DOER: in de kernel en DOERCODE in de assembler.
Alle basistypes, met uitzondering van : zelf bestaan uit DOER's

View laat in cseg ook headers zien op even en oneven adressen

8 augustus

SETBIT, CLEARBIT en TESTBIT werkten op een character in de 86
versie en in de 386 versie op een cell. Nu werken ze beide op een
cell.

TRACE vervangen door de woorden ECHO en NOECHO. Deze werken op
bit 5 van PSW. Als dit staat worden gelezen tekens op het scherm
gechood.

9 augustus

In EDIT nu SYSTEM in plaats van EVALUATE

In INCLUDED geen SYSTEM-ERROR meer, maar normale THROW

In COLD by fouten ook LOG-ERROR, dan krijg je bij laden van de
commandline met fouten ook een error.log.

Geen LLEN meer, lengte van listsegment, (LIT) lstmax @ in META is
voldoende. Ook geen HLEN meer, lengte van listsegment, (LIT)
hdrmax @ in META is voldoende.

11 augustus

EXTRA-WORDLIST enzovoorts verwijderd, je krijgt nu het wid door
GET EXTRA in te tikken.

MESSAGE veranderd in .MESS

FIND checkt op =LOCAL en geeft foutmelding -9 als er een local
dreigt te worden gevonden.

17 augustus

'WORD in DOC (voor UPPER) vervangen door TEMPORARY, anders worden
belangrijker zaken overschreven.

20 augustus

Woorden als RESERVE, LRESERVE EN HRESERVE toegevoegd, alle
buffers naar onder in de segmenten (vooral de drie FLYER buffers)
dan is het verzetten van (L/H/code)LIMIT maar een peuleschil. Nu
kun je ook in TURNKEY wat ruimte reserveren voor ALLOT, wat
sommige sommige filterprogramma's nodig hebben. Turnkey en saved
programma's zijn nu in core een flink stuk kleiner.

ASSEMBLER: aliassen als RP voor BP verwijderd. Aliassen als JNB
voor JAE verwijderd.

22 augustus

"CD overal vervangen door SET-DIRECTORY
Backslash aan het einde van LIBPATH en HELPPATH onzin

23 augustus

Keywords in .HLP bestanden hoeven geen spaties meer achter zich
te hebben.

24 augustus

Attributen zetten met INVERS -INVERS | BRIGHT -BRIGHT | BLINK
-BLINK en default met NORMAL . Woorden als >INVERS< zijn onnodig
en verwarrend. INVERS zet invers en -INVERS zet normaal inplaats
van dat ze hetzelfde doen: verwisselen van voor- en achtergrond.

RESERVE en zijn tegenvoeters kunnen ook het geheugen vergroten,
bovenste adres blijft natuurlijk $FFFE .

26 augustus

Zie 24 aug: INVERS BRIGHT en BLINK zetten de attributen in de
andere stand zodat na twee maal de vorige weer bereikt wordt.
Ontsnappen gaat dan met NORMAL .

-- CHForth 1.2.2 - 1.2.3

30 augustus 1994

In QUIT stond: CURRENT-DIRECTORY SET-DIRECTORY THROW
waarschijnlijk als veiligheid, maar op floppysystemen begint dan
bij elke foutmelding de schijf te draaien, wat alleen maar
hinderlijk is en onverklaarbaar lijkt.

Zet altijd een null achter de string in COMSPEC, zo werkt het ook
bij systemen waar \DOS er tussen uit gevallen is. Gerepareerd in
\META\FINISH.FRT

SHOW-ERROR verder gefactoriseerd, .WHERE zegt waar de fout plaats
vond. Niet in te tikken vanaf de terminal (SOURCE-ID is dan nooit
groter dan nul).

CATCH in GO4TH in META\FINISH.FRT om fouten in CHFORTH.CFG op te
vangen (en dan naar DOS terug te keren). Nu zie je tenminste waar
de fout zit.

1 september 1994

De variable PSW bestaat niet meer en is gesplitst in de volgende
VALUEs: CONSOLE? PRINTING? BIOS? LOGGING? ECHO? STATUS? en het
bit van insert wordt niet meer gedefinieerd, deze staat uiteraard
in lib/accept.frt.

+ORIGIN werd nooit gebruikt.

Glossary voor CD aangepast aan de nieuwe SET-DIRECTORY die ook de
current drive kan veranderen, in tegenstelling tot DOS.

De assembler foutmeldingen zijn nu met THROW getallen inplaats
van met ABORT" gemaakt, zodat fouten ook in de logfile wat
duidelijker zijn, al treedt de fout meestal op in de regel die de
melding aangeeft, door het prefix mechanisme.

3 september 1994

CHANGEBIT toegevoegd. Dit en de andere bitmanipulators werken op
het hele 65536 bit array, met het basis adres in het midden. Dus
ook de 86 versie, die een stuk trager is dan de 386 versie.

5 september 1994

Bij turnkey programma's wordt er een nieuwe routine in COLD
gezet, dit is al geruime tijd zo, maar nu gaat ook Ctrl-Break
naar COLD in plaats van naar QUIT. Als er geen DFTCOLD (zie meta)
in staat wordt er geen bericht meer afgedrukt. Een value RESTART?
die de eerste keer waar is wordt by turnkey programma's gelijk op
nul gezet, zodat Ctrl-Break het programma stopt, wat meestal de
bedoeling is.

Een value STRINGS? toegevoegd, zo kun je zelf regelen of VIEW
inline strings dumpt of niet. Ook ." en ABORT" strings worden dan
gedumpt.

6 september 1994

Na SP0 SP! geeft SP@ hetzelfde als SP0, dat was vroeger een cell
te weinig.

8 september 1994

MAKEHELP.FRT is wat intelligenter, dank zij Willem Ouwerkerk, er
wordt nu expliciet naar een defining word gezocht, zodat VALUE
zijn parameters op dezelfde regel kan hebben. Het defining word
en de naam moeten beide in hoofdletters.

HELP gaat nu 20 maal zo snel dank zij het binair zoekalgorithme
uit iForth.

20 september 1994

BL SCAN en BL SKIP zien nu alle controlcharacters als gelijk aan
spaties, zo heb je geen last meer van tabs en ^Z's. Je kunt er
natuurlijk expliciet naar zoeken door ^I PARSE te gebruiken, maar
op deze manier kun je bestanden in je geheugen plempen en dan met
EVALUATE lezen. Je moet dan \ herdefinieren als
    : \ ^J PARSE 2DROP ; IMMEDIATE
of altijd haakjes ;-) gebruiken.

SHOW-CURSOR staat nu ook in TERMINAL, nu zie je de cursor
tenminste knipperen na een foutmelding.

(* en DOC zoeken niet meer in een 1-woords minivocabulaire, dit
was complete overhead om niet te zeggen onzin. ENDDOC mag met
kleine letters worden geschreven.

23 september 1994

.S geeft foutmelding -4 als de diepte van de stack negatief is.
Het was daar weggelaten uit misplaatste zuinigheid op het gebied
van snelheid. Onzin, het is een debugging tool, die toch als
trager werkt dan de naakte code. Dit staat dus nu ook in
LIB\TRACER.FRT. Bij tracen zie je niet meer van die enorme
zinloze reeksen nullen traag voorbij flitsen. Stel je dit eens
voor met een 32 bits Forth!

-- CHForth 1.2.4

5 oktober 1994

Ik was dus alles kwijt na mijn nog onverklaarbare crash, als ik
AH en WO niet mijn volledige sources had gegeven zou ik met met
versie 1.2.0 hebben moeten behelpen, ik heb nu goede voornemens,
maar of die blijven is voor jou een vraag, voor mij een weet. Ik
moet dus ook een heleboel wijzigingen in de \Glossary opnieuw
intypen.

COMPARE-UPPERCASE ingevoerd omdat je dan kleine letters in kunt
tikken na HELP. Dit heeft wel als gevolg wanneer een woord op
twee manieren geschreven wordt, je ze in verschillende helpfiles
moet plaatsen, want met binair zoeken kun je er in principe maar
een geval vinden.

EXTENSION was een slim woord dat DOS extensies achter
bestandsnamen plakte, dit gaat ook met SCAN om de punt te vinden
en als deze ontbreekt, zet je de extensie gewoon achter de
string. Bestandsnamen zonder extensie maak je door ze af te
sluiten met een punt.

8 oktober 1994

FOR ?FOR NEXT AFT UNNEXT en I@ verwijderd. Deze staan niet meer
in de standaard en op dit soort machines gaan ze net zo snel als
do-loops.

11 oktober 1994

(.ID) geeft nu een string in het CSEG als c-addr u inplaats van
een x-addr u in HSEG. Dit is wat minder verwarrend. De echte naam
staat natuurlijk wel in HSEG, die van (.ID) kun je veranderen,
maar dat helpt niets.

?OR en ?AND verwijderd.

13 oktober 1994

Spaties in een string voor DOS: zijn niet meer nodig, DOS: voegt
ze zelf als er argumenten worden gegeven. Het woordje APPEND-CHAR
blijkt hier nuttig.

26 oktober 1994

GETTIME gaf al eerder de tijd in milliseconden in plaats van
kloktikken, maar de melding daarvan was ik vergeten. Veranderde
ook 10000 182 M*/ naar 14006 255 M*/ wat iets nauwkeuriger is.

LOAD bewaart de input source specificatie op de returnstack, net
als in FIG en wellicht ook volgens ANS.

ABORT" zet een stringadres in ERR$ en doet dan een -2 THROW .
QUIT vangt dat op en drukt de string af. ERR$ blijft naar de
string wijzen, zodat je hem later nog kunt vinden. QUIT is wat
meer in overeenstemming met de standaard gebracht.

28 oktober 1994

HELP en SF (enz.) wachten op het einde van een pagina. Drukken op
Esc stopt dan en andere toetsen gaan door.

De FLYER buffers zitten nu weer bovenaan, zodat ze niet meer op
de schijf hoeven weggeschreven. De top van de dictionary is LIMIT
en daarboven zit de buffer met aan het eind ervan MEMTOP .
(Varianten zijn LLIMIT en HMEMTOP etc.) Deze worden gezet met
RESERVE en SAVE/TURNKEY. Het scheelt bijna 4 Kb.

MESS" geeft geen foutmelding als het nummertje als eens is
gebruikt. Zo kun je je eigen foutmeldingen maken, bijvoorbeeld in
het Nederlands of Swahili.

.ID vervangen door .HEAD wat gewoon duidelijker is.

SETBIT e.d. naar de library bits.frt omdat ze zo weinig gebruikt
worden dat de plaats in de kernel niet gerechtvaardigd lijkt.

31 oktober 1994

DEFER vervangen door VECTOR Het beestje heeft nu een zelfstandig
naamwoord en niet een bijvoegelijk naamwoord als roepnaam. DEFERS
was ook zo onduidelijk en is vervangen door CHAIN wat ook de
werking ervan is. TO voor zo'n woord moet weer als IS geschreven
worden.

De FLYER buffers, TIB en de handle stack staan weer boven LIMIT
en MEMTOP is echt het einde van de Spijkerbereik.

3 november 1994

SEGMENTS #SEGMENTS en SEGMENT-ALIGNED hebben een wat langere naam
gekregen, namelijk PARAGRAPHS #PARAGRAPHS en PARAGRAPH-ALIGNED
die hun aktie juister weergeven.

-- CHForth 1.2.5

11 november 1994

WRITEP in de kernel, zo kun je SEGMENTs aanvragen groter dan 64
Kb en ze gewoon mee wegschrijven. MOVEP FILLP en TYPEP staan nu
maar in lib\paragraph.frt omdat je ze toch zelden gebruikt.

Met RESERVE is een probleem, met SAVE in een bestand kan dit niet
meer worden afgesloten, de handles moeten nu weer naar het lage
geheugen.

Zet ook TIB en de lineinputbuffer laag, dus alleen FLYER blijft
bovenaan.

Nu is RESTART? bij het starten altijd FALSE en Ctrl-Break zet hem
op TRUE . Dat is een betere verklaring van de naam. Niet alleen
de TURNKEY kijkt hiernaar, maar ook de gewone COLD .

14 november 1994

PROJ$ CAT$ en CREAT$ in utility.frt zodat je ze in chforth.cfg
kunt vullen en niet pas in project.frt. Dit leek me wel handig.

-- Einde bestand