Information for teachers
Here is a list of the new features for Liberty BASIC v3.02.  Bug fixes are listed at the bottom.  Click to download!
  • Included new help file
  • Included new version of Freeform GUI editor
  • Improved BASIC program execution speed up to 10%.
  • Added an auto indenting feature to the Liberty BASIC source
    editor. This can be turned on and off in the Preferences window.
  • Changed to a two tiered registration system. Now users can buy
    SILVER or GOLD licenses. A SILVER license has no size restriction on
    the programs it will run, and a GOLD license also adds runtime engine
    support to this. Existing Liberty BASIC v3.0x licenses still work
    fine with v3.02 (they are equivalent to GOLD licenses).
  • Added the ability to pass in a number to the date$() function and
    it returns a string representing the date as "mm/dd/yyyy".
  • Added a new form to the word$() function. You can now specify
    the delimiter string so optionally you can read comma delimited or
    other strings.
  • Added the ability to get the number of days since Jan 1, 1901
    using the date$() function.
  • Changed <, <=, >, >= string operators so that they they will now
    compare strings in a case sensitive way like most other programming
    languages do.
  • Added a txcount(#handle) function to get a count of bytes in a
    serial communications transmit queue.
  • Added support for the double type (double precision floating
    point) in structs.
  • Added a randomize command so that you can seed the random
    number generator in a predictable way.
  • Added a locate command so that the cursor can be positioned
    anywhere within the mainwindow.
  • Changed the fs part of a window style so that it sizes the window
    normally (using WindowWidth and WindowHeight) and then maximizes
    the window right after opening it.
  • Adds support for reloading the current file being edited if the file's
    date and time have been updated. This happens when the editor
    has been activated. This option can be turned on or off in the
    preferences dialog. The default is off.
  • Changed the debugger so that it uses the equal sign instead of a dash
    to separate a variable's name from its value.
  • Improved support for running over networks including the general
    bolstering of support for files and paths making use of network
    resource locators (ie. \\netres\name). Liberty BASIC should now be
    able to open and save files using resource locators in their path
    names, and it should also properly treat file specifications having
    resource locators in their path specifications. Commands such as the
    following are supported: open, name, rmdir(), mkdir(), kill, files, loadbmp, bmpsave, bmpbutton, filedialog, playwave, run

Fixes for Liberty BASIC v3.02!

  • Fixed a compiler bug when using a PRINT statement with only a
    semicolon like so:   print ;
  • Fixed a bug in the WAIT command which was messing around with
    the position of the flashing cursor in the main window, causing
    printed lines to run together.
  • Fixed a bug in the USING() function where it was not rounding
    numbers when the template was for an integer.
  • Fixed. FOR/NEXT and WHILE/WEND loops were not managing their
    context properly in recursive calls.
  • The syntax colorer was not registering the token TO as a reserved
    word.
  • Fixed the compile error reporting for wrong number of array
    parameters and for array parameter type mismatch. It was not
    correctly reporting the error when compiling for debug, and it
    was failing to highlight the errant line of code. Additionally,
    the error was different when running than for debugging.
  • Fixed the "Float underflow exception". Now when the result of a
    calculation is too small it will in effect become zero.
  • Bolstered syntax and type checking of the built-in functions.
    This will reduce the incidence of compile errors that result in
    a dump to error.log and also increase the consistency in the
    error messages that appear at compile time.
  • Fixed a bug where closing a program's mainwindow while the
    program is waiting for keyboard input at an input$() function
    would produce an index out of collection bounds error.
  • Fixed a bug where while/wend loops having user functions as
    part of the loop conditional would only execute those user
    functions for the first iteration of the loop.
  • Removed DO and LOOP from the list of commands because they aren't
    commands. These tokens were being treated as though they were
    Liberty BASIC commands, but this would only cause the compiler to
    crash if you tried to use them.
  • Strengthened the error checking for the following: calldll,
    callfn, callsub, gettrim, kill, let, lprint, name, notice, open,
    out, print, prompt, titlebar
  • Make sure that the initial font gets properly added to the first
    open segment when opening a graphics window or a graphicbox.
  • Make sure that graphicboxes get painted white when their parent
    window is opened.
  • Eliminated a bug causing an endless loop on certain misformed
    syntax for case statements.
  • Fixed the text_fs_nsb style so that it doesn't crash when you try
    to use it.
  • Fixed a problem with the input$() function, which was echoing
    keys pressed to the mainwindow when it should not.
  • Fixed a bug where using the restart item in the mainwindow
    would cause the mainwindow would become deactivated.
  • Fixed a problem with the highlighting of source code when a compile
    error happens during "Make TKN file". It would always highlight the
    line after the error.
  • Modified the syntax colorer so that it colors reserved words blue
    instead of coloring commands blue.
  • Extends the error line selection in the source pane so that it
    spans over logical lines.
  • Fixed the execute feature in the debugger so that it produces a
    proper error message when you try to execute code that calls a sub
    or a function.
  • Fixed the debugger so that it truncates variable items that would
    display more than 200 characters in the debugger. This is to
    prevent protection violations and or crashes that may occur with some
    video drivers when they attempt to display very long strings on the
    screen.
  • Fixed a bug in the chr$() function which caused it to choke on
    floating point values.
  • Fixed a bug that permitted IF/THEN statements to have a colon
    after the THEN.