- Overall speed up by writing HERE ALLOT >DIGIT and HOLD as code words. This improves compilation speeds and number printing is 50% faster.
- Found a bug where the new faster scroll obliterated first two sprite records when scrolling. Repaired.
- Committed change in 2.0.13 which fixes an old bug that caused difference entry address for DOVAR between cross-compiler varibles and TI-99 created variables. Homemade cross-compilers... what are you gonna do?
- SND! is now a code word. Speeds up writes to the sound chip by 75% for a 2 byte penalty.(more important with background players)
- ?ABORT is smaller because it use SOURCE instead of HERE COUNT. (totally missed that)
- ">BODY" was a wrapper on 2+. Now it is a code word synonym for 2+.
- Oops, Making a faster >BODY broke the multi-tasker. Somehow changing R14 ?? Removed >BODY from KERNEL. It now loads in the DSK.START file as a library file: TOBODY.F
- Re-wrote looping primitives in Structured Assembler. Found some wasted instructions and speedups.
- Found size savings in FILESYSD.F
- Kernel now 40 bytes smaller.
- Change to EOF to now take a file handle.
- Re-wrote demo programs
- Fixed bug in file handle server and RELEASE handle routine
- New manual version 0.99 needs final edit review.
- Internal test version
- Kernel is 16 bytes smaller
- Removed word INCLD from kernel and put code in body of INCLUDED
- Change INIT code to use structured assembler loop
- Comment improvements
- Move DATA stack reset in COLD word to just before QUIT. This fixed the first error bug. (First bad word entered at console gave "empty stack" error)
- Removed SPRITE support word DXY from KERNEL, moved to DIRSPRIT (direct sprite control) as a machine code word.
- Added SEE.F to DSK1 which is a Forth decompiler.
- Moved @ and DROP primitives into 16 bit RAM for small speed improvement.
- Put MOVE in the kernel which is used by PLACE. This makes PLACE a little slower but means it can be used in more dynamic memory environments (PLaying with lists)
- Fixed silly bug with FUSE
- changes to MOTION.F, a simple sprite motion control wordset (not automotion)
- Uploaded DEMO/ELIZA/ELIZA2.FTH a preliminary verion of the classic lisp psychotherapist (bugs)
- fixed bug in POS$ (STRINGS.FTH)
- V2.0.22 now can print text and numbers to VDP screen from any task
- Changes to Video i/o primitives so they are multi-tasking friendly. ASM code now uses USER variable indexed addressing so that variables VROW VCOL C/L and OUT are unique for every task.
- HOLD reverted back to Forth version for multi-tasking
- Added TPAD USER VARIABLE which hold the offset of PAD from HERE. By setting TPAD to bigger number for other tasks, each task gets a pad and HOLD buffer in unallocated dictionary memory.
- Floored division is now the default per ANS/ISO standard. Symmetrical division is set using the FLOOR variable: FLOOR OFF, FLOOR ON Due to the slow speed of the 9900 CPU it is coded in Forth Assembler. The code is a re-work of code, used by permission, from FB-Forth by Lee Stewart. ( fbforth.stewkitt.com/ )
- Forth primitives separated into 2 files: 9900FAS2.HSF, TI99PRIMS.HSF
- RSTPAB (reset PAB) added to QUIT for stability when using file system.
- Improved ?TERMINAL so it waits for key release after key press.
-
*COMPILER CHANGE: To handle ITC and DTC versions the cross-compiler "word creators" are kept in separate files and are included in the Forth system source code as required. Documentation is forth coming. See compiler/ITCTYPES.HSF and compiler/DTCTYPE.HSF
-
Source file CAMEL99F.HSF now has a compiler switch, SMALLER, that uses Forth words to save space when set to TRUE and more CODE words if SMALLER is set to FALSE. SMALLER saves ~46 bytes, but runs a little slower.
-
Addition of CALLCHAR and LOADSAVE libraries allows compiling FONT information into binary font files that load into VDP ram in 1 second.
-
Font file source code examples are in FONTS folder. Compiled binary versions are in DSK3.
-
Addition of a direct threaded code (DTC) version of the system that runs about 10% faster. note CREATE DOES> is not functional in the DTC version at this time.
- Version G corrects a long-time bug in the interpreter that reported "empty stack" under some conditions erroneously (CAMELG2.HSF)
- Compiler switch name has been changed to USEFORTH (previously SMALLER) because sometimes Forth is smaller and sometimes Assembler code is smaller.
- Version G has a code word for DIGIT? to improved compile times
- The word ?SIGN is now PRIVATE, no visible in the dictionary to save space
- The word >NUMBER has been changed slighly from the original CAMEL FORTH that speeds it for the 9900 cpu.
- The ELAPSE.FTH program has been significantly improved for accuracy and the code size has been reduced.
- A file based BLOCK system is available as a library: /LIB.ITC/BLOCKS.FTH These blocks are compatible with FBFORTH and Turbo Forth allowing the developer read programs from these other Forth systems. Compiling this code will not be possible without writing a "translation harness" however for simple programs this is not too difficult.
- A simple demo of BLOCK usage is file LINEDIT80.FTH for use with 80col displays or the TTY based kernel CAMEL99T
- data structures per Forth 2012 are now supported in file STRUC12.FTH. A simple example is part of the file. (remove or comment out if you use the file)
- ACCEPT has been changed passing backspace cursor control to EMIT. (see below)
- EMIT has been changed to handle newline and backspace characters
- (EMIT) and (CR) i/o primitives can be compiled as Forth or CODE (controlled by USEFORTH )
- Version CAMEL99T is built to use RS232/1 as the primary console. It has been tested with Tera Term, Hyper-terminal and PUTTY under windows 10. Terminal configuration is 9600,8,n,1, hardware handshake.
- A word VTYPE ( $addr len VDPaddr -- ) is part of the CAMEL99T to allow simple printing to the VDP screen at a screen address. (no protection!)
- Library file call XONXOFF.FTH vectors EMIT to provide XON/XOFF protocol
- File VT100 can be included to provide cursor control for a VT100 terminal.
- CAMEL99.FTH source is a cleaned up code using mostly Forth to create the FORTH compiler
- CAMEL99G has a few cosmetic changes in the source but use DSRLNKA and FILESYSX
- DSRLNKA is a corrected version of the DSR link program and it also takes a filename string VDP address from the top of stack as an input argument.
- FILESYSX gives us a faster FILEOP word because it passes the argument to DSRLINK on the top of the stack and DSRLNKA now does the GPLstatus clearing and reading in Assembler for us.
- THEFLYDEMO is demonstrates how to create BASS frequencies in the TMS9919 sound chip channel 4 using NOISE MODE 3 and controlling the frequency with channel 3. The BUZZ of the fly is created this way.
Indirect Threaded Version
- Settled on one build of CAMEL99 Forth. All variations are removed.
- 25% speed up of CREATE DOES> structures by using BRANCH & LINK instruction
- Fixed DSK1.ANSFILES file handle bug. Errors did not release current file handle.
- Improved VDP screen driver using 1+@ code word
- Improved DSK1.VALUES. Faster TO and +TO
- Cleaned up LIB.ITC. TI99 versions are in DSK1.
- Added DSK1.TRAILING. (-TRAILING -LEADING TRIM)
- Added DSK1.HEXNUMBER. H# is a prefix word to interpret numbers as radix 16.
- DSK1.TOOLS now includes VDUMP for VDP ram and SDUMP code for SAMS card. (HEX and BINARY numbers alway print unsigned after tools are loaded.)
- DSK1.CODEMACROS provides native 9900 indexed addressing arrays.
- DSK1.VTYPE improved VTYPE updates VCOL. AT" ( x,y) placing text.
- DSK1.AUTOMOTION provides Automatic sprite motion like Extended BASIC