******** Forthmacs 3.0/3.1 Sources
******** Hanno Schwalm Forthware
******** schwalm@bre.winnet.de

3.1/2.82 10.01.98
           - m* um* improved, no testing for SA in routine any more
           - decompiler problem with unloop fixed
           - included inlining optimizer plus support in decompiler and
             changes in kernel for improved compiler optimizing
           - ?0=branch and (oflit) removed
           - implementation of last-compiled is changed
           - rotr bug fixed for ( n1 n2 -- n3 ) n2=0
           - disassembler didn't show condition for swi
           - assembler instruction mov uses condition codes also for 'long'
             immediates
           - div0 trap gives correct pc
           - emacs support not continued

3.1/2.81 03.01.98
           - minor speed improvements in fontdriver by underbar cursor
           - bubble-sort find included as source, option in shell
           - unused terminal functions save_screen and restore_screen removed
           - included HANDLE-ILLEGAL

3.1/2.80 05.12.97
           - string problem in (pwd fixed
           - again speed improvements in fontdriver, also first release
             implementing all terminal fuctions

3.1/2.79 03.12.97
           - font driver does much faster hardware scrolling.

3.1/2.78 26.10.97
           - GDEFER included, this defines an object behaving as a DEFERred
             word but is globaly set for all tasks.
           - fixing D> D< UD<
           - serial_dev is more stable now with opening several drivers
           - fixing FSIZE, it now returns a files true length instead of the
             buffered one. Changes in FOPEN and all file writing words.
           - interface library improved
           - uses Wimp$ScrapDir for all temporary files
           - included the minimal Forthmacs database in lib.database
           - between changed, no pre-NEXT
           - minor speed improvement in fontdriver
 
3.1/2.77 24.09.97
           - : (colon) is now immediate for security
           - included the user defined stacks in the kernel. (fload) now
             uses such a stack instead of the return stack, this makes
             catch and throw more stable with input-file tracking
           - SET-TERMINAL and COLD-HOOK are both checked in cold for
             exections via the catch&throw sheme. This takes care for
             most of the errors occurring with target applications
             missing resources/memory/drivers. Standard error messages
             are printed instead of hardware crashes
           - dynamic memory manager for ALLOCATE FREE RESIZE ... had a small
             memory leakage problem with RESIZE, this has been fixed
           - MENUs work with submenus
           - debugger didn't show the first word of a debugged word, fixed
           - rearranged a few sources with the interface library
           - included a first v0.0 swi binder to the RISC OS GNU dbm
             module
           - STACK: and LOCALS| supported by metacompiler
           - some filing primitives recoded with locals for better
             readability
           - .ERROR switches to interpret state before interpreting message file,
             some minor problems fixed
           - CRASH (uninitialised deferred words) fixed to give correct error information
           - LOSE gives information about the word it was compiled in
           - more exact error messages for compiler nesting and more, you will find
             out about these changes when problems with your code occur :-)
           - >FLOAT accepted numerous misspelled floating numbers, it now does a
             state-machine type syntax checking before starting the real conversion
           - UNLOOP included
           - :NONAME included
           - UNUSED included

3.2/2.76 27.08.97
           - just some fontdriver 'features' fixed that made problems
             with multitasking menus and hot-spots
           - updated Forth mode for StrongED
           - manual includes new features
           - SET-FONT-COLOURS, TEMP-SINGLE included&documented

3.1/2.75 22.07.97
           - minor problems with font driver fixed
           - RMA area of kernel enlarged
           - ESC works only when in main-task
           - some BUFFERS: replaced by local strings
           - PUSH-BASE/POP-BASE used when possible
           - minor speedup of ?BRANCH
           - fix in font driver fixed - not doing auto cr after typing
           - optimizer squeezer included as source, minor changes in the
             kernel had to be included for safety.

3.1/2.74  15.05.97
           - StrongARM? is tested on every bootup
           - Font aware driver is ARM3-ARM7 ready now
           - disassembler improved/fixed for SWI and MUL,MLA
           - KEY? improved for faster switching
           - CLOSE-FILES is morestable after severe crashes
           - SET-PRECISION fixed
           - FLOATVAL behaving as FCONSTANT object defined
           - SerialDev drivers are included in devices.serialdev.???.driver
           - FLOAT, defined
           - FOVER fixed

3.1/2.73   - experimental version

3.1/2.72   01.04.97
           - ?NEGATE and ?DNEGATE test for n2 < 0 correctly
           - FILL fixed
           - SAVE-IMAGE resets SET-RELOCATION-BIT in a correct way

3.1/2.71   17.03.97
           - new beta-video driver included for testing and comments
           - save-image doesn't set AUTOFILE? by default
           -     "  tests after opening image file
           - task initialize improved for turnkey applications
           - Forthmacs$Path includes an explicit path
           - disassembler bug fixed
           - line editor for different DEL keys fixed
           - CTRL-F12 gives an escape interrupt
           - CLI-calls redirect output, this is read by (more
           - (MORE improved for CR+LF files as created by redirection

3.1/2.70   26.02.97
           - official release with 2.62 fully suported, faster object access implemented
           - first 8 words in user area are reserved for runtime changing of NEXT used
             by the new debugger
           - NEW and more powerfull debugger included
           - the BUG register objects RR0 RR1 RTOP RSR ... have been renamed to R0 R1 TOP PSR
             also because of compatibility reasons
           - the application sheller has again been modified. grrr, that part just
             gets on my nerves. I just can't figure out when to do a shell-exit. Applications
             are done ok, but leaving an obey file is not tracked by RISC OS. So far there
             seems to be no legal&correct&reliable way. Anyway, this only is important when
             using nested obey scripts. One way to do it would track the appropriate SWIs :-(

3.1/2.62   17.02.97
           A complete new IS handler is built in. It knows about LOCALS,
           all kernel-type objects and multiple-code-field objects as
           defined in extend/objects.fth. Testing for object method
           conflict take place at compile time but the actual binding
           follows a late binding sheme and is also checked.
           This is implemented ratherstraightforward with almost no
           speed penalty.
           Also the decompiler knows about all these objects.
             - variable 2variable constant 2constant pointer
             - locals| nuser tuser auser value defer
           ;CODE doesn't assemble the stack instructions any longer,
              you can access the parameter address by r0 get-link
           MOVE has also been fixed, is also has optimized speed in both
             directions now
           FLUSH-CACHE-AREA is replaced by SYNC-CACHE for portability
             See the manual for stack effect
           HISTORY-EXPECT has been fixed
           a bug in the search application has been fixed

3.1/2.61  11.02.97
           Work is now concentrated on making this Forthmacs port more
           portable to NetBSD and other platforms. Also register usage
           will be the same as used in the ARM FirmWorks port for code
           reusability.
           This results in:
             - no rdx register any more; this wasn't a significant
               advantage anyway
             - the floating stack pointer is held in a user variable
             - ip the instruction pointer is redefined as r12
           ASSEMBLER is renamed to ARM-ASSEMBLER but you
           may use ASSEMBLER within a single-target environment.
           The disassmbler is pure forth code now, better support
           for non-RISC OS ARM platforms.

3.1/2.60, 03.02.97
           No real changes to the program.
           The main point in releasing this version is the replacement
           of the !4th launcher by a more powerful Tcl/shade front end.
           Also many sources have been regrouped/changed for a better
           developing environment for cross/multi target environments.
           Most non-portable things have been moved to risc_os.
           Anyway, the Tcl frontend is improving the desktop situation
           a lot and i will continue to support that.


3.1/2.50
           exception messages have been moved to the risc_os.messages directory.
           Each territory identifies it's file by the filename, it's the
           territories number - default is 0 for UK

3.1/2.49, 20.01.97
         - COMPARE, CAPS-COMP and COMP now all user the ANS style
           ( str1 len1 str2 len2 ) stack effects. substring sifting had to be
           recoded, many sources had to be fixed.
         - LCC UPC and all words concerning character handling with
           internationally different character usages use the appropriate
           territory modules now.
         - char>ctrl converts a char to it's controlcode, used by CONTROL
         - DIGIT is internationalized also using digit>char
         - FIND is internationalized in (FIND)
         - C" replaced by ANS S"
         - K included

3.1/2.48, 13.01.97
         - conditional compiling bug fixed, new kernel.iftrue
         - syscall: compiler produced buggy code with dummy registers
           being top, should be fixed now
         - also takes up to 10 parameters in registers
         - (see) does ?cr first for better output
         - auto file changed

3.1/2.47, 06.01.97
         - some small bugs removed
         - exception messages removed from binaries

3.1/2.46, 27.12.96
         - all multitasking functions didn't work in a correct way with
           the faster loops, shame on me.

3.1/2.45, 20.12.96
         - frame stack pointer made unnecessary, used now as a fast loop index

3.1/2.44
         - swapping improved and more simple

3.1/2.43
         - some kernel primitives have been optimized (number comparing)
         - (do) (?do) use one memory cycle less

3.1/2.42
          - parameter stack increased to 2k words for large apps
         - showcrash doesn't crash when no error occured

3.1/2.41, 06.12.96
         - small/big binaries now available, standard Forthmacs
           is distributed with 32 file-handlers, the small kernel
           and kernel/based applications have 8 handlers and
           1k instead of 4k filebuffers.
         - FILE-PROTECTION hold the filetype in the upper 16bit, the
           lower the acces type
3.1/2.40, 24.11.96
         - public release of the debugged SA compatible and somewhat
           optimized version
         - m* and um* switch to optimized primitives when possible
         - StrongARM? is true when a SA cpu is available
         - RECURSE is included in kernel
         - FLUSH-CACHE-AREA used whenever securely possible, this speeds
           up the comiling significantly.

3.1/2.32
         - rare StrongARM related problems removed, new version
           because 2.31 was released and shipped already

3.1/2.31, 18.11.96
         - tool.makedisc improved
         - application swapping in/out synchronizes code
         - All archives are now zip/deflated instead of tar/gz
           easier to use with Spark
         - new simpler page terminal
         - tested with StrongARM including tools
         - some kernelheaders added for improved debugging
         - removed some undocumented terminal functions of the riscos
           driver, the paged driver will have them.

3.1/2.30
         - StrongARM compatible Forthmacs binaries
         - File$Path is not used permanently

3.1/2.20
         - ANS Floating and Floating Extend included

3.1/2.12
         - some job files improved
         - optimized compiles compresses (lit) n (of) adr -> (oflit) n adr 
         - further work on paged terminal output
         - floating system is included in kernel tasking ...

3.1/2.11,20.08.96
         - terminal functions prepared for paged output
         - decompiler knows about use-actions
         - @territory alias language included in kernel
         - ARM floating point assembler included
         - task switching also sets floating point stack
         - convert accepts doubles only when point-at-end as
           suggested in ANS
         - number conversion uses >NUMBER

3.1/2.10
         - loading the autofile is included in (QUIT for improved error trapping
         - fgetline recoded using -trailing
         - bug in catch seems to be fixed now
         - bug in MOVE fixed
         - bug in [ELSE] fixed

3.1/2.09
         - completely new written online help search engine giving manual
           extractions in html or ascii
         - pinhole optimizer installed, so far
           0= IF
           0= WHILE
           0= UNTIL
           now use ?0=BRANCH. metacompiler, compiler and decompiler are fixed
         - absolut branch addresses
         - bug in "CAT fixed
         - html search engine included in the registered-user version
         - -TRAILING also removes white/hard spaces
         - terminal initialising is changed

3.1/2.08
         - correct auto file
         - emacs related files moved to a seperate archive

3.1/2.07
         - OS_ReadMonotonicTime is used by all timing routines
         - THROW and CATCH included, handles all stacks and filehandles
         - all abort" messages and others have been recoded using
           throw.
         - exception messages are available in german and english,
           you may switch by  7 is language -> german
         - runtime profiler uses seperate timer
         - [if?????] words redefined a bit more clever
         - SAVE-STRING is move to the compatible mode file
         - ABORT" and ABORT have all been re-coded with CATCH&THROW
         - STRING-LOAD moved to compatible
         - FIDSTATUS added, telling all filehandlers in use
         - .BLK is another accepted extension for DOS2RISCOS conversion
         - file caching using fbuf is improved



3.1/2.06
         - INVERT is added
         - EVAL is renamed to EVALUATE
         - AT and AT? are renamed to AT-XY and AT-XY?
         - RP@ included
         - UNLINK-ALL removes temporary (cold-hook definition
         - SerialDev drivers are included in risc_os.serialdev.???.driver

3.1/2.05
          - ( hopefully ) all places where cpu instructions are assembled
           and enabled for being executed FLUSH-CACHE instructions are
           included. This will probably run on StrongARMs. Optimized
           cache handling will be done later.
         - iftrue otherwise ifend ifdef ifndef are replaced by their
           ANS compliant words: [IF] [ELSE] [THEN] [IFDEF] [IFNDEF]
         - The OS interface is more stable, illegal/non interpreted
           charcters in RISC OS are changed to BL
         - some mmmmmminor bugs removed, improved source, useless stuff
           removed.
         - The Working Disk is now delivered as a self-extracting
           archive ( Dicottery )

3.1/2.04
         - GET-CURSOR-STATUS and SET-CURSOR-STATUS have been added to
           the terminal functions
         - The whatis search engine has been redefined to work with the
           new StrongED modes.
         - The StrongED Forth-type has an icon to start the HTML pages
         - Sh^H looks for the filename under the cursor
         - ENVIRONMENT? is included

3.1/2.03
         - AT and AT? have been redefined with ANS conforming stack
           effects as x/y or column/row order, many changes in sources 
         - terminal: has save_screen and restore_screen; both are
           used with extend.menu & tools
           !!! This is quick&dirty PRELIMINARY/EXPERIMENTAL VERSION 
         - delete-line and insert-line bugs removed
         - terminal functions improved
         - sysvar@ and functions calling it are changed

3.1/2.02
         - (pwd fixed for different filing systems

3.1/2.01
         - two weired problems fixed;
           hard-space $a0 was not recognized as a space !!!
           Both SCANBL and SKIPBL have been changed.
         - allocation problems -> the OS dynamic memory manager has been
           replaced. The new sheme is ~ as fast as the old one but does
           not need a defined heapspace.
           1.99 method was rather unstable in certain conditions.
         - save-image sets the filetype and disables set-relocation-bit
           for the first bootup part!
         - deompiler displays IS instead of (IS), " now is c"
         - each filebuffer is 4k if enough memory is available, this results
           in faster file access on slow media
         - debugger windows redefined for correct doubles
         - autofile deals with the tools.jobs files, improved user interface
         - assembler knows about negative cmp literals
         - each tasks limit is set, tasks set their user-area-id

3.1/2.00
         - intermediate version, non-public

3.1/1.99
         - the keyboard is installed before cold-hook !
         - heapsize now calculates memory needed by the file system plus
           the relocation-map plus Forthmacs$heapsize
         - Forthmacs$maximage is not supported any more, the wimpslotsize
           minus stack minus heap-size is the maximage.
         - the typing interface has been changed to support more keyboards,
           ^S shows all words
           ^C completes the word
         - tib enlarged to h# 104 - this improves redirected input

3.1/1.98
         - postpone included, compile removed.
           sources with wide changes!
         - " renamed to c"
         - StrongED is supported much better now, this results in NOT doing
           active support on emacs any more
         - delete and copy don't abort but give error messages instead

3.1/1.97
         - shame on me! 2@, 2! and 2literal have been fixed
         - double representation is ANS correct

3.1/1.96
         - sys-expect now doesn't leave a <cr>
         - debugger stack has been enlarged

3.1/1.95
         - unknown words are offered to the cli interpreter before accepted
           as incorrect.

3.1/1.91-1.94
         - buggy & non public versions.

3.1/1.90
        - Forthmacs sources are no longer compatible in some areas
          so the major version has also changed.
        - NOW included double (64bit) intermediates in */ */mod fm/mod sm/rem
        - BEWARE: number output/input has been redefined using ANS compliant
          stack effects.
          The input of literals accepts doubles if there was a dot like 2.0
          Affected words:
          #>            (s ud# -- addr len )
          #             (s ud1 -- ud2 )
          #s            (s ud1 -- ud2 )
          convert       (s ud addr -- ud' addr' )
          number?       (s str -- d flag )
          number        (s addr -- d )
          literal?      (s str -- str false  | dliteral true )
        - long? has been renamed to double? 
        - BEWARE: some Arithmetic words have been redifined using ANS
          compliant stack effects in:
          m*            (s n1 n2 -- d )
          um*           (s u1 u2 -- ud )
          m/mod         (s d n -- n n )
          um/mod        (s ud u -- u u ) -- this has replaced u/mod
          mu/mod        (s ud u - u.rem ud.quot)
          fm/mod        (s d n -- n n )
          sm/rem        (s d n -- n n )
        - complete ANS double wordset
        - new double size number output words:
          (du.) (d.) d. d.r du. du.r
        - size of buffer #-buf has been increased to d# 68, so 64bit
          binary numbers can be displayed.
        - sources using above mentioned words have been updated
        - the decompiler knows about double literals

1.83d
        - */ wrong sources replaced, thanks to Andreas Schubert
        - emacs cmds updated and whatis support included
        - File$path set to include emacs commands

1.83c
        - (ren has been renamed as (rename as described in the docs.
          Also the stack behaviour is now correct
        - (pwd has been included
        - auto file has been debugged, autoinstalling is now done by auto.fth
        - mailing service included
        - swap-file is removed after swapping in
        - standard-terminal doesn't clear the screen
        - pwd now gives path including filin-system
        - initializing won't set (bye to bye any more
        - NEW: >tab and eof? included

1.83
        - systems vocabulary included
        - NEW: to-current relinks a word to another vocabulary
        - more debugging stuff in debug
        - interactive tool selection in auto
        - data-type conversions, long operators moved to lib.compatible
          and lib.compatible
        - improved unaligned-@, unaligned-! flip

1.82
        - um*, m* now give true 64-bit results
          portability support has be moved to lib.compatible
        - gzipped tar-archives can be copied to risc_os.installing,
          the will automatically be installed when running Forthmacs
        - KEY1 is default of KEY, structure as in EMIT

1.81
        - more ANSI stuff included
        - internal source-tree unique for ANS/Forth-83 developm.
        - binaries moved to risc_os.bin,now called
                risc_os.bin.Forthmacs / ANSForth
                risc_os.bin.Kernel    / ANSKernel

1.80
        - update tool included, gzip & tar accessible
          *** READ docs.ascii.convention ***
        - whatis files found in <Forthmacs$Dir>Path
        - better org. of bin.*
        - debugger registers rtop rr0 ... in vovabulary BUG

1.71
        - relocated userdata tuser, auser hold relocation bit in target
          binary
        - decompiler rearranged
        - some ANSextensions included, /cell /char ....
        - lib.compatible holds stuff for updating
        - .pointers included for successfull debugging

1.70
        - RMEnsure ColourTrans included for RISC OS2 comps
        - division bugs removed !!!!

1.69
        - first version to be given away.

1.68
        - Versions up to 1.69 internal use only
