Old news
- 11.4.2009: release 3.4
- core: renamed the words for the serial terminal to be more generic since they can deal with any serial port, not only the first one.
- lib: dropped
forgetsince it cannot work with multiple wordlists, fixedmarker. - core: changed again
digit?stack effect (and fixed a little bug). - core:
numberhonors a leading &, $ or % sign to temporarily switch to DECIMAL, HEX or BIN base resp. Thanks to Michael Kalus for factoring the code.
- 22.2.2009: release 3.3
- core: faster
noop. - added ANS94 search order wordlist.
- core:
withinhad problems with signed boundaries, literal numbers are processed faster (again). - core: improved
digit?andnumber. They now report errors on invalid characters at the wrong position. The following strings are no longer valid numbers: --1 or 0@ (in base hex). - core:
-1 spacesnow prints nothing, Fix from Lothar Schmidt. - core:
(loop)(runtime of loop) now checks for equality only, as specified in ANS94.
- core: faster
- 10.1.2009: release 3.2
- core: bugfix for trailling 0x00 byte during
itype. - core: enable use of other usart port than 0.
- pc-host: Ken Staton wrote a nice pc based terminal with upload functionality.
- core: New controllers: ATmega328P and ATmega640.
- core: changed
digittodigit?found in many other forth's. - core: new word
within. - core: split application dictionary definition into 2 parts, one for the lower flash, one for the upper (NRWW) flash. Both can be empty, but need to exists.
- core: changed some names for internal constants (baudrate -> BAUD) and registers (EEPE vs EEWE).
- core: new directory
driversfor low level driver functions. Currently only the generic ISR and the USART0 interrupt handler.
- core: bugfix for trailling 0x00 byte during
- 10.11.2008: release 3.1
- core:
icomparenow has a similiar stack effect ascompare. - core: new word:
environment?. Supports/holdquery. - core: Strings in flash (incl. names in the dictionary) contain now 16bit length information, previously only 8 bit.
- core:
- 17.10.2008: release 3.0
- core:
s"new with interpreter semantics.s" hello world" typeworks at the command prompt. The compiled version is: hw s" hello world" itype ;. - core: Placement of Stacks is now an application setting. See example apps.
- core: added VM register A and B. See http://www.complang.tuwien.ac.at/anton/euroforth/ef08/papers/pelc.pdf for details. Uses Atmega Register R6:R7, R8:R9 resp.
- core: added
cmoveas a primitve. - core:
f_cpuused the old (pre-2.7) stack order for double cell values. - lib: moved some definitions to more appropriate files.
- core:
- 1.8.2008: release 2.9
- core:
heap,hereandedpare now VALUEs.dpis gone (usehere) - lib: more VT100 sequences.
- core: The TIB location and size are accessible with the VALUEs
TIBandTIBSIZE. - core: fixed TIBSIZE default configuration.
- lib: created math.frt, contains among others the standard words
sm/rem,fm/mod. - Alexander Guy fixed a bug in
u*/mod. - Bernard Mentink adapted Julian Noble's Finite State Machine code.
- applications: Lubos Pekny designed a smart computer with a 4line character LCD and a PS/2 keyboard. Details are in the Application Repository, a video is here.
- core:
- 27.6.2008: release 2.8
- core: Lubos Pekny found that
-jtagsometimes used the wrong mcu register. - core: Bernard Mentink wrote a Atmega128 device file, Thanks alot.
- core: Atmega88 & Atmega168 work too.
- core: Fixed regression for atmega128.
- core: Moved serial interface words to application dictionary (not every amforth installation may have a serial terminal).
- library: Updated assembler from Lubos Pekny.
- examples: sieve benchmark, optimized for 1K RAM.
- core: Lubos Pekny found that
- 5.4.2007: release 2.7
- core, lib and sample applications are now in one package.
- restructured repository layout. Now the trunk has most of the sources.
- core: re-arranged the register mapping.
- core:
m*was in factum*. - core: double cell numbers changed stack order: TOS is now the most significant cell.
- library: new: assembler written by Lubos Pekny, www.forth.cz. Thank you!
- examples: PWM example from Bruce Wolk. TWI/I2C EEPROM access
- 27.1.2008: release 2.6
- core: new defining words
codeandend-code.codestarts a new dictionary header with the XT set to the data field. The 2nd one appends thejmp NEXTcall into the dictionary. - core: removed the pre-assembled
case/endcasewords. Added them as forth library. - core: new words
-jtag(turns off JTAG at runtime) and-wdt(turns off watch dog timer at runtime. They need to be implemented as primitives due to timing requirements. - core:
quit: Keepbasewhen handling an exception. - library: TWI/I2C EEPROM Support.
- core: new defining words
- 6.12.2007: release 2.5
- Bug:
hex 8000 .froze the controller. Now it prints -8000. Thanks to Lubos for the hint. - Moved init of
basefromquittocold.turnkeybe used to change it permanently. Thanks to Lubos for the hint. - nice looking dumper words for RAM/EEPROM/FLASH, dropped idump.asm.
- Extended Upload utility (tools/amforth-upload.py) from piix:
include files using following syntax:
\ demo file #include ans94/marker.frt marker empty
- usart transmit (
tx0) made more robust. - User Area restructured for the new multitasker.
- added documentation: Karl's User guide and a Technical guide.
- Bug:
- 11.10.2007: release 2.4
- Added AT90CAN128. Other Atmega128 style controllers should work too.
- lot of fine tuning.
- dropped the assembler device init portion.
- New file:
dict_compiler.inc. Without these words the forth system is (more or less) a pure interactive system without extensibility. - new words
[char],fill. - re-arranged usart code. fixed bug when usart baud rate calculation leads to values greater 255.
- renamed
/intto-intandintto+int, it's more fortish ;=)
- 29.7.2007: release 2.3
- new words
spacesandplace. - Improved
i!. - bugfixing runtime parts of
do/loopand co. - re-coded
findandicomparefor better readability. - eliminated code duplets in some primitives.
- moved usart init from
coldto application specific turn key action. Added error checking in receive module.
- new words
- 17.6.2007: release 2.2
- new download section: application
- optional dictionary is now part of the application, therefore renamed to dict_appl.
- new words:
leaveand?do.
- 22.5.2007 release 2.1
- changed stack effect for
#to ansi (from single cell value to double cell). Double cell values do not work (yet). - introduced
deferredwords instead of tick-variables. Works for EEPROM based vectors (turnkey), RAM based (PAUSE) and User based (EMIT etc) vectors. - new words:
wdr(Watchdog reset),d>andd<(double cell compare).
- changed stack effect for
- 2.5.2007 release 2.0
- internal restructure of targets.
- new words:
u>andu<. - bugfixing interrupts.
- new word:
log2logarithm to base 2, or the number of the highest 1 bit. - fixed wrong addresses for usart-io (esp. butterfly)
- 25.4.2007 release 1.9
- renamed
dict_low.asmtodict_minimal.asm. - new word
parse( c -- addr len) parsessourcefor char delimited strings. - new word
sleep( -- ) puts the controller into (previously defined) sleep mode. - new words
s"( -- addr len) parses TIB for " character and compiles it into flash,s,( addr len -- ) does the real copying of the string into flash atheretogether with the invisible word(sliteral)(-- flash-addr len). - bugfix:
f_cpuhad wrong word order. Useswapas a temporary work around. - re-wrote initialisation of usart0 ( baud -- ) to forth code. Startup speed is taken from (eeprom) VALUE
baud0.
- renamed
- 10.4.2007 release 1.8
- interrupt handling redesigned. Now every interrupt (except those for usart0) can be used.
intcounteris gone. New words areint@,int!and#int. - double and mixed cell arithmetics.
- bugfix: proper initialization of data stack pointer. Thanks to Maciej Witkowiak.
- move TOS into register pair.
- interrupt handling redesigned. Now every interrupt (except those for usart0) can be used.
- 3.4.2007 release 1.7
- new word:
f_cpusets a double cell value with the cpu clock rate. HLDis now atPADto save RAM.paddid return some compile-time stochastic value- lots of internal changes.
- optional dictionary:
d-,d+,s>dandd>s.
- new word:
- 25.3.2007 release 1.6
- split
blocks/ans.frtinto pieces. signno longer inserts a space for non-negative values.- new word:
/key. It is vectorized via'/keyand gets called byacceptto signal the sender to stop transmission. Seeblocks/xonxoff.frt for example usage. - replaces
upwithup@andup!. - new word:
j( -- n). - new word:
?execute( xt|0 -- ) if non-zero execute the XT. - The Atmega644 works fine :=) but needs the Atmel assembler (see FAQ) :=(
- Bugfix:
+!did a+. - Bugfix: too many spaces in
.(dot). - give user variables
rpandspa name.
- split
- 14.3.2007 release 1.5
- changed:
itypeand (new)icountrefactored by Michael Kalus. These words now have similiar stack effects as there RAM counterparts. - changed:
.now operates on signed values. - new word:
u/modis basically the former/mod. - new word:
u.to display unsigned values. - fixed bug in
/modfor values less -FF (hex). createleft the address of the XT insted of the PFA. Fixed.- deleted word:
idump. It is now in the fileblocks/misc.frt. - new word:
:noname( -- xt) creates headerless entry in the dictionary. - new word:
coldas main entry point. It executes the turnkey action.abort& co do not trigger the turnkey action.
- changed:
- 5.3.2007 release 1.4
padis now in the unsed (according toheap) ram. That may helpwordto store longer strings.- new word:
unused( -- n) gives the number of unused flash cells in the dictionary. /mod(and/andmod) now honor signed numbers, division is symmetric.- new word:
abort" quitnow aborts on every catched exception.quitno longer prints anything,veris now a turnkey action.- new optional dictionary, included at compiletime. Contains now
case& Co and somed-words for double cell arithmetics. - 24.2.2007 release 1.3
- bug:
digitdid not work properly - bug:
<: equal is not less - interrupts are processed faster
- Interrupt counter are now only 1 byte long (access with
c@) - change:
allotworks now for ram not for flash - added/corrected stack comments
- bug:
createleaves flash address insted of first cell content - change:
.snicer for empty stack - internal:
i!internally completly turns off interrupts - bug:
abortnow works again, error was inquit - bug:
whileandrepeatchanged stack effects - bug:
r@now works correctly - new word:
immediate - removed words:
forget,postpone(these and many more are now in theblocks/ans.frtlibrary) - bug: if
'(tick) does not find the word, it now throws the exception -13
- bug:
- 3.2.2007 release 1.2
- anyone missed
emit??. - increased user area to 24 bytes (12 cells). Fixed a overlap between
handlerandemitff. - AVR Butterfly works (again). Many thanks to the German FIG for providing me with one.
- internal changes for multitarget development (for the AREXX asuro minirobot).
- anyone missed
- 20.1.2007 release 1.1
emit,keyandkey?are now vectored viauserbased variables.forgetfrees most of the flash space too- internal go back for
i!to previous code - Code for Atmega8 was broken due to nrww flash overflow (found by Milan Horkel)
- Bugfix: backspace key in
acceptnow stops at beginning of line (found by Milan Horkel)
- 4.1.2007 release 1.0
- new immediate word:
['] - new word
userdefines user variables - new controller: atmega169 (atmel butterfly)
- renamed
eheaptoedp.
- new immediate word:
- 17.12.2006 release 0.9
- interrupts in high level forth colon words (INT0 and INT1 for now).
- new word:
noopa colon word for doing nothing. numberrespects minus sign- changed
turnkeyinto'turnkey. The "turn-off" value is now 0 (zero) - new words:
pauseand'pause.pausewill execute the XT stored in'pause(a RAM cell) when non zero handler(used bycactchandthrow) is a USER variable.
- 7.12.2006 release 0.8
- new words:
create,does>,up,0 - Support for user variable, turned
base,rp0andsp0into user variables - words like
(do)which should not by called by user are now invisible to save nrww flash space - bugfix for negative increment for
+loop.
- new words:
- 24.11.2006 release 0.7
- new word:
turnkey: executed wheneverquitstarts. See HOWTO - numbers may contain lower case characters (if
basepermits) - bugfixing case & co.
numberemits -13 if an invalid character is found- renamed
vheaderto(create) abortre-initializes both stacks- made backslash
\immediate
- new word:
- 20.11.2006 release 0.6
- backspace now works in
accept depthbased onsp0/sp@- "unused" control characters are treated as spaces
- bugfixes for
(loop)and(+lopp). - New words:
1msbusy waits 1 millisecond
- backspace now works in
- 13.11.2006 release 0.5
- definition files for varios atmega types
- core wordlist should be complete
- internal cleanups and bugfixes
- 5.11.2006 release 0.4
- start using
catch/throw - Atmega8 works fine
- few new words (
case, comments) - nicer prompt
- start using
- 31.10.2006 release 0.3
- New website
- Atmega16 works fine
- Bugfixing, true flag always 0xffff
- 27.10.2006 release 0.2
- Compiler works
- Many new words
- 16.10.2006 release 0.1
- first public release
- interpreter over serial terminal