Since TI Forth

New to fbForth 2.0 are

  • The facility for loading your own font in place of the default font in the cartridge (see Chapter 13 “Screen Fonts and the Font Editor”). Chapter 13 also provides instruction for using the author’s Font Editor. New words are SCRFNT , FNT , USEFFL and FONTED .
  • A stack-based string library has been added to FBLOCKS and is fully described in Chapter 14 “The Stack-based String Library”.
  • Chapter 15 “TI Forth Block Utilities” describes a set of utilities added to FBLOCKS for browsing/reading/writing TI Forth blocks.
  • Chapter 18 “Signed Integer Division” discusses signed integer division and the different methods available in fbForth 2.0 for its implementation. The ANS Forth words, SM/REM and FM/MOD , now part of fbForth 2.0, are discussed in detail, as is the User Variable S|F that allows the user to specify which method of signed integer division fbForth 2.0 should use.
  • Several software packages, previously requiring loading from FBLOCKS, are now part of the resident dictionary:
    • 40/80 Column Editor, rewritten in TMS9900 Assembly Language (ALC) for efficiency, now including an on-screen menu.
    • Floating Point Math Library, which no longer uses the console GPL/XML-based library, and contains several new words, including FFMT. (includes a formatted print option for 3-digit E-notation), >DEG , >RAD , CEIL , DEG/RAD , EXP10 , EULER_E , F>R , FABS , FCONSTANT , FMT. , FLOOR , FMINUS , FP1 , FP10 , FRAC , FROT , FVARIABLE , LN10INV , LOG10 , R>F , RAD/DEG and TRUNC .
    • File I/O Library.
    • BSAVE—Binary Save Routine.
    • All Graphics modes, including VMODE , an all-purpose mode-changing word.
    • Graphics Primitives Library, much of it rewritten in ALC.
  • .BASE —a new word for displaying the current radix (number base) in decimal: This is useful because, regardless of the current radix, executing BASE @ . will always display 10—not particularly useful! For example, HEX .BASE yields 16 , which is much more informative.
  • DIR —new disk cataloging word in FBLOCKS that uses the DSR’s catalog “file” to get disk and file information. The actual byte size of PROGRAM files is unavailable with this word.
  • CAT —new disk cataloging word in FBLOCKS that uses the disk’s VIB, FDIR and FDRs to get disk and file information. The actual byte size of PROGRAM files is displayed.
  • Many new words have been added and many words have been removed. Many of them are noted in this “Author’s Introduction”. See Appendix E “Differences: fbForth 2.0, fbForth 1.0 and TI Forth” for a detailed list.
  • SAMS memory expansion (1024 KiB) is supported with SAMS? , SAMS! , S0&TIB! and >MAP .
  • Sound for the four separate sound generators is supported with SOUND .
  • fbForth 2.0 ISR has been extensively modified to support interrupt driven speech and sound lists.
    • The sound lists include sound list #1, which can be interrupted by sound list #2. Sound list #1 will not be paused, but rather will be muted. These sound lists are implemented with PLAYING? and PLAY .
    • The TI Speech Synthesizer is supported with TALKING? , SAY and STREAM .
  • Scrollable panels (windows) are supported with PANEL , WRAP and SCROLL .
  • ASM:;ASM and CODE:;CODE provide clearer ways of defining words with Assembly Language and machine code, respectively.
  • DOES>ASM:;ASM and DOES>CODE:;CODE provide clearer ways of coding the runtime behavior of defining words with Assembly Language and machine code, respectively.
  • N>S pushes to the stack the next number in the input stream. This word is required to get a number to the stack within CODE: … ;CODE and DOES>CODE: … ;CODE constructs.
  • The DATA[ ]DATA construct allows for quickly compiling a block of cells to HERE or into a word definition. This is particularly useful for character ( DCHAR ) and sprite ( SPDCHAR ) patterns as well as sound lists, etc.
  • Users of the nanoPEB or CF7+ devices manufactured by Jaime Malilong, available on arcadeshopper.com and, occasionally, on eBay.com, (see website: nanopeb.com for description) can use the Compact Flash utilities, added to FBLOCKS and described below, to discover what volume numbers are mounted as DSK1, DSK2 and DSK3, as well as to temporarily or permanently mount a specific volume in DSK1, DSK2 or DSK3:
    • CF? ( -- flag )
      leaves a flag for whether a nanoPEB or CF7 is present.
    • CFVOLS ( -- volDSK1 volDSK2 volDSK3 )
      leaves on the stack the volume numbers associated with DSK1, DSK2 and DSK3.
    • CFMOUNT ( vol# dsk# -- )
      temporarily mounts CF vol# in DSK<dsk#>. This mount does not survive a system reset.
    • CFPMOUNT ( vol# dsk# -- )
      permanently mounts CF vol# in DSK<dsk#>. This mount is stored on the CF card so it persists until changed by user.
  • New words added to the kernel of fbForth 2.0:11 are
    • ABORT" ( --- ) ( IS:<string>" ) (compiling)  [IMMEDIATE word]
             ( flag --- ) (executing)
      [Note: “IS:”, above, stands for “Input Stream:”.] ABORT" is used in the definition of a word in the form:
                flag ABORT" <string>"
      When later executed:
      • If flag is true, the <string>, delimited by " (close-quote),  is displayed, followed by execution of ABORT .
      • If flag is false, execution continues normally.
    • CMOVE>  ( src dst cnt --- )
      copies cnt bytes from src RAM to dst RAM from high to low memory. This word is not overlap safe!
    • SD0  ( --- addr )
      leaves on the stack the address of the bottom of the sound stack.
    • BYE  ( --- )
      is a synonym for MON , which unconditionally exits fbForth 2.0 to the startup screen.