v01.91 (Mar 14, 2017)

Version 01.91 Release Notes

Release date: 2017/03/14

Bugfixes

  • Sw.break works in a single-line IF statement (new in v01.90).
  • Label lines are not cached unless they are executed. Early caching by the preprocessor masked syntax errors. Fixed in v01.89, but broken again in v01.90.
  • Variables passed by reference into a function can autocreate like other variables.
  • Backslash escape no longer doubles ordinary letters.
  • Byte.read.number and Byte.write.number syntax error no longer crashes BASIC!.
  • Run command with an empty filename parameter is ingored, no longer crashes BASIC!.
  • Unhandled App.start and App.broadcast do not stop the program. Instead they report through the GETERROR$() function.
  • Missing or revoked permissions cause an orderly termination instead of a crash.

Enhancements

  • Editor About: opens an information screen with links to interesting resources for BASIC! programmers.
  • Move to SD CARD: added support for the Android Applications manager "MOVE TO SD CARD" option.
  • New ZIP commands: Zip.Dir, .Count, .Open, .Read, .Write, and .Close.
  • New commands Device.language and Device.locale retrieve two common values of the Device command without requiring Telephony permissions.
  • New command Program.info returns a bundle of information about the program you are running.
  • New function COMMAND$() function: if you launch a standalone app based on BASIC! from a registered file extension, this function returns the path to the file.
  • New options on ENCODE$() and DECODE$() allow encryption without first encoding to Base64.
  • New flags parameter on the WakeLock command to wake the screen when a lock is acquired and hold the screen on for a while after the lock is released.
  • Run command with no filename parameter reruns the current program, unless you did not save before running.
  • Audio.load can load data from a URL, such as an audio stream from a website.
  • The HTML mode now supports HTML5 full-screen video.

Credit for most of the enhancements goes to Nicolas Mougin.

See also

The enhancements are described in more detail in De Re BASIC!, the user's guide and reference manual of BASIC!.

Please report any problems to either of these places:

v01.90 (Mar 31, 2016)

Version 01.90 Release Notes

Release date: 2016/03/31

Fixes for new bugs in v01.89

  • Editor Load starts in "source/Sample_Programs" only after initial load.
  • ARRAY.DELETE and UNDIM are now allowed in interrupt-handling code.
  • BYTE.READ.BYTE no longer returns signed values.
  • GR.CLS now preserves your Current Paint and Working Paint. (Was resetting both to default.)
  • GR.TEXT.SKEW now displays skewed text correctly. (Was either not displaying the text or displaying it without skew.)

Fixes for old bugs

  • Crash (since v01.83): ASCII() or UCODE() function with sufficiently complex expression in the index argument.
  • Crash (since v01.84): GR.GET.TYPE with a numeric return variable.
  • Crash (very old) when Gr.Poly list is cleared or changed to have an odd number of coordinates.
  • Bug: single-line IF with function after ELSE was causing syntax error.
  • Minor Edit -> Clear bug, not setting Saved.

Enhancements

  • New function IS_NUMBER(): returns true if VAL() would not cause an error.
  • New command ARRAY.DIMS: returns the dimensions of one array in another array.
  • New commands SCREEN.ROTATION and SCREEN.SIZE: return information about screen rotation and dimensions in all modes.
  • New commands VOLKEYS.ON and VOLKEYS.OFF. (Nicolas Mougin)

  • Editor Save: dialog shows correct path "source" after load from "source/Sample_Programs".

  • Commands that create an array can overwrite an existing array.

  • Array storage is now completely reclaimable. That is, when Undim and Array.Delete delete an array, all of its memory is released.

  • User function always overrides built-in function with the same name.

  • RANDOMIZE(): argument is now optional, same as 0.

  • GR and HTML: support same reverse orientations as Preferences.

  • GR.GET.TYPE, GRABURL, GRABFILE: on certain errors return testable value "" and set GETERROR$() string.

  • Improve timing when GR.OPEN or GR.ORIENTATION change the screen orientation.

  • SENSORS commands: add Step Detector, Step Counter, and Geomagnetic Rotation Vector.

  • SOCKET.MYIP: option to return multiple IP addresses and count of IP addresses.

  • SQL.NEXT: option to return multiple columns' data in a single array, with column count. You don't have to specify all column names in advance, or know now many columns exist.

  • SW.BEGIN: enhanced error detection; the requirement for SW.END is now enforced. (May not be backward-compatible.)

  • Switches are now fully nestable.

  • SW.CASE: allow list of values. (Nicolas Mougin)

  • SW.CASE: allow operators <>, <=, >= (single value only). (Nicolas Mougin)

Retraction

  • A bare variable on a line is no longer a valid statement. (Not backward-compatible. Feature added in v01.85.)

See also

The enhancements are described in more detail in De Re BASIC!, the user's guide and reference manual of BASIC!.

Please report any problems to either of these places:

v01.89 (Dec 30, 2015)

Update: test build v01.89.07

Build date: 2016/03/24

Release v01.89 was buggier than we would have liked. Test build v01.89.07, the last point release before v01.90, represents a concerted effort to fix bugs and improve stability. Even with the significant architectural changes introduced in v01.89.01, v01.89.07 is the most robust release of BASIC! in many months. Everything in it has been rolled forward to v01.90.

Update: test build v01.89.01

Build date: 2015/12/30

Test build v01.89.01 is functionally identical to release build v01.83.
Ideally, the only difference you will see is that some of your programs will run faster.

Internally, the two are very different. The variable management was almost completely rewritten for v01.89.01.
This change addresses many issues. Here are the two most important:

  1. Variable name symbol table searches are many times faster than before. Nicolas Mougin found a way to apply a binary search to what always been a linear search. In many BASIC! programs, variable parsing and searching have been the most time-consuming parts of execution.

  2. Array storage is both more efficient than before and completely reclaimable. That is, large arrays use much less memory, and all of that memory is released when the array is deleted.

Version 01.89 Release Notes

Release date: 2015/12/29

Bugs found in v01.89 since release, fixed in the next version, v01.90.

  • Editor Load starts in "source/Sample_Programs" instead of "source/".
  • ARRAY.DELETE and UNDIM are not allowed in interrupt-handling code.
  • BYTE.READ.BYTE is returning signed values instead of values larger than 127.
  • GR.CLS resets your Current Paint and Working Paint to default values.
  • GR.TEXT.SKEW is not displaying the text, or it is displaying it without skew.

Fixes

  • Since v01.85(!), any GPS.Open with the optional second and/or third parameters caused a hard crash.
  • New in v01.88: Any hard keyboard change, e.g., connect or disconnect USB or Bluetooth keyboard could cause a hard crash.
  • The optional colons used in Sensors.open were being treated as command separators.
  • Label lines are not cached unless they are executed. Early caching by the preprocessor masked syntax errors.
  • Editor: Disabled hardware-accelerated graphics in the Editor and Editor->Search screens. This prevents display errors on some devices.
  • Editor: Corrected an error in "Save and Run" that caused it to save in the directory last viewed in the the Load screen.
  • New in v01.88: an Input or Select Dialog opened just after a GR.close could attach to the GR screen and die with it.
  • Fn.Def does not allow duplicate parameter names.
  • Position after text.open for append is 1, per manual. This has been broken since v01.86. (Position after byte open for append is size of file plus 1, also per manual.)
  • Fixed the data parameter of the AM.Start (now App.Start) command.

Known bug [FIXED! in v01.89.05]

  • Do not Undim arrays in interrupt-handling code. This action may get a Runtime Error, depending on where the arrays were created.

Enhancements

  • Editor: the menu order is different for devices before and since Honeycomb.
  • Preferences: added more choices for Editor menu items that can move to the Action Bar.
  • The "Empty console color" Preference is also applied to Select.
  • Added Manifest permissions so the installer can create shortcuts.
  • If Font.Load can't load a font file, it returns -1 instead of stopping with a Runtime Error.
  • Added Array.fill command.
  • Added Byte.read.number and Byte.write.number commands.
  • Byte.read.byte can take a list of zero or more numeric parameters.
  • Byte.write.byte can take a list of zero or more numeric parameters followed by zero or one string parameter.
  • Text.readln can take a list of zero or more string parameters.
  • Added a Paint pointer parameter to all commands that can create a Paint, so they can modify one instead.
  • Added Paint.copy and Paint.reset commands.
  • Changed AM.Start/Broadcast to App.Start/Broadcast. Added these previously-undocumented commands to the manual.
  • Extended the (undocumented) Debug.stats command to show control stack counts.

See also

The enhancements are described in more detail in De Re BASIC!, the user's guide and reference manual of BASIC!.

Please report any problems to either of these places:

v01.88 (Aug 17, 2015)

Version 01.88 Release Notes

Release date: 2015/04/28

Fixes

  • GR.GET.PARAMS crash (since v01.86)
  • TGET: Fix Menu -> Stop bug (since v01.87)
  • Preprocessor: Allow 0 or more spaces around . and ~ in LIST.ADD and ARRAY.LOAD continuation (since v01.87)
  • Do not allow recursive INCLUDE
  • NOTIFY: clear notification on program termination
  • TTS: Replace Yield() loop with LOCK block to reduce CPU usage
  • GR_COLLISION() and GR.BOUNDED.TEXT work if left coordinate > right or top > bottom
  • OnMenuKey now reports each MENU keystroke only once
  • DEBUG: reliability issue, crash displaying function info, reduced power usage
  • Formatter fixes: indentation of ELSEIF, allow "ELSE IF" and "END IF", capitalize compound keywords after THEN and ELSE, keywords in comments must not affect indent

Enhancements

  • Add GR.BITMAP.FLOOD command
  • Add functions ENCODE$() and DECODE$()
  • Add KB.SHOW, KB.SHOWING, OnKbChange:, and KB.RESUME
  • KB.TOGGLE really toggles
  • Improve soft keyboard management with BACK key
  • Add DEBUG.? alias for DEBUG.PRINT
  • STT.LISTEN: Add "prompt" parameter; can change default prompt in APK
  • STT.RESULTS can reuse list.
  • GR.GET.VALUE can get values of multiple parameters
  • Return bitmap pointer -1 on bitmap creation errors
  • UNDIM of string array releases strings
  • AUDIO.LOAD/PLAY: improve error handling and reporting
  • Add minimum splash screen duration for users of standalone APK
  • Performance enhancement: group commands in loops
  • Add Preference option to enable hardware accelerated graphics
  • Add Preference option for empty console color
  • Reorganize Preference screen
  • Editor: Preference items to put menu items on the Action Bar
  • Editor: Change "Save and Run" so it has no Save dialog
  • Don't restart BASIC! except from Editor, and save Editor state for such a restart

See also

The enhancements are described in more detail in De Re BASIC!, the user's guide and reference manual of BASIC!.

v01.87 (Apr 28, 2015)

Version 01.87 Release Notes

Release date: 2015/04/28

This release is intended to fix critical bugs in the previous release, v01.86.
A few older crash scenarios are fixed, too. We even managed to add a few features.

Fixes

  • Fixed v01.86 crash on any device with Android version before 3.0
  • Restored part of a previous TGet crash fix that was missing
  • Crash if GR.Open immediately after GR.Close
  • Null-pointer crash when GR.Clip optional parameter is omitted
  • Null-pointer crash in GR.Get.BMPixel if bitmap was deleted
  • Multi-command bug when SQL.Update used with continuation lines
  • New Byte.read.byte bug
  • Error when user-defined function parameter and argument have same name
  • False syntax errors in string expression parser
  • Editor Menu->Format error: bad indenting
  • GR.touch initialization error

Enhancements

  • New functions TRIM$(), LTRIM$(), RTRIM$()
  • Let LEFT$(), RIGHT$(), and MID$() functions count argument take negative value
  • New commands JOIN and JOIN.ALL
  • New commands TEXT.EOF and BYTE.EOF
  • Add "Save and Run" option to Editor menu
  • Apply Preferences "Console Menu" option to TGet menu
  • Allow labels anywhere in a multi-command line
  • Improved syntax error highlighting for errors in functions
  • Reduced repeated messages on some errors
  • Turned off animation in TGet

The enhancements are described in more detail in De Re BASIC!, the user's guide and reference manual of BASIC!.

v01.86 (Apr 12, 2015)

Version 01.86 Release Notes

Release date: 2015/04/11

Enhancements

  • Multiple commands on a single line, separated by a colon character ':'. Editor Menu -> Format support for multiple commands per line. Editor Menu -> Format repairs left/right-quotation marks and HTML &nbsp. New Editor Menu -> Load and Run option. Support for decrypting .bas source files encrypted in a standalone APK. LEFT$() and RIGHT$() length parameter can be negative: take "all but" length. MID$() length parameter can be negative: count to left from start position. New command ? is a shorter synonym for PRINT. New commands GR.MOVE and GR.SHOW.TOGGLE. New commands GR.GROUP, GR.GROUP.LIST, GR.GROUP.GetDL, GR.GROUP.NewDL. GR.MOVE and GR.HIDE/SHOW/SHOW.TOGGLE used on a Group affects all objects in the Group. GR.MODIFY "paint" or "alpha" used on a Group affects all objects in the Group. All parameters of GR.OPEN and GR.COLOR are optional, with defaults. All parameters of POPUP, except the message string, are optional, defaulting to 0. Eliminated required PAUSE after GR.OPEN and GR.ORIENTATION. Eliminated required PAUSE between SU/SYSTEM.READ.LINE commands. New command BYTE.TRUNCATE. Preferences option to select wrap or horizontal scroll in the Editor.

Problems Fixed

  • DO or WHILE on first program line did not work with interrupts. [!!] Fixed a null pointer exception on devices with no satellite count in the GPS Location Report. UNDIM in a function did not correctly UNDIM the array passed by reference. It does now. Removed 100 ms offset on first TIMER interrupt. Removed 100 ms minimum TIMER interval limitation. Most Out Of Memory errors caused by large memory allocations (like bitmaps) can now be trapped with OnError:. RUN command in a standalone APK can now run a .bas program from assets. Standalone APK that does not use VIBRATE commands does not need android.permission.VIBRATE in the manifest. Corrected a timing error that allowed an interrupt to occur while only partially returned from a user-defined function, disabling further interrupts. Programs can be cut-and-pasted from the forum to the Editor. Any copied &nbsp are filtered out before the program is run. May be permanently removed with Editor Menu -> Format. Fixed Editor Menu -> Format bugs when handling single-line IF. Fixed Editor Menu -> Format bugs with quoted substrings and escaped quotation marks. Return from Editor Menu->Search does not reset the default position to the top of the program. If you don't find what you search for, you return to where you were in the program when you started the search. Editor Menu->Load gave only one error message for two different conditions. Now it distinguishes "File not directory" from "Source directory does not exist". Fixed an error that kept the Editor from highlighting correctly when a runtime or syntax error occurred near the top or bottom of a program.

Many changes to De Re BASIC!, the user's guide and reference manual of BASIC!.

v01.85 (Feb 16, 2015)

Version 01.85 Release Notes

Release date: 02/15/2015

Enhancements

  • GPS: Enhanced and extended the command set, with bugfixes, new commands, and new parameters.
  • BNOT(): New function. Performs bitwise ones-complement.
  • Phone.Dial: New command. Like Phone.Call but just opens dialer without placing the call.
  • WiFi.Info: New command. Requires Android permission ACCESSWIFISTATE.
  • BT.Status: New parameters for the name and address of local Bluetooth hardware.
  • BT.Status: Status parameter can be either a numeric or string variable.
  • IS_IN(): Added reverse-search capability. Use a negative start-index to count back from the end.
  • INCLUDE: Added option to protect the case of the file name (for using assets in APK).
  • Bundle.Keys and TimeZone.List can re-use an existing list or create a new one.
  • Text.Open and Byte.Open: Return file pointer -1 to indicate nonexistent file or resource in standard BASIC! or APK, whether for read, write, or append. These conditions no longer cause a runtime error. GetError$() returns information about the error. WARNING: not backward-compatible if your existing programs use OnError: to trap OPEN error.
  • SQR(): Negative input gets a runtime error. Previous versions returned NaN.
  • Array.Load and List.Add with continuation are a little more flexible.
  • C-style shortcuts: Integrated into the interpreter, with some bugs fixed and some operators added. There is a performance penalty, but the pre-processor was just too buggy.
  • A side-effect of that integration allows "LET " or just "" (a bare variable name) as a complete statement.
  • String expression parsing is faster.
  • Loops and other repeated code are faster.
  • Removed the artificial 50000-element array size limit.
  • Removed the artificial SoundPool rate limits (SoundPool.Play, SoundPool.SetRate).
  • All SoundPool.Play parameters are optional, with default values.

Problems Fixed

  • Text.Open and Byte.Open: Fixed null pointer crash if the file does not exist. This is a new bug introduced in v1.84.
  • INCLUDE: Fixed crash if the included file does not exist.
  • Editor->Load bug: The ".bas" suffix search is case-sensitive.
  • A stray '~' not at the end of a line is now caught as a syntax error.
  • Restored monospace font in the Editor. This was lost in some Android upgrades.
  • Restored horizontal scrolling (eliminates word-wrap) in the Editor, also lost in some Android upgrades.
  • Fixed f22_benchmark.bas, broken by SQR() change.

Many changes to De Re BASIC!, the user's guide and reference manual of BASIC!.

v01.84 (Oct 30, 2014)

Version 01.84 Release Notes

Release date: 10/29/2014

Enhancements

  • New command BUNDLE.REMOVE removes a key/value pair from a Bundle.
  • New command DIALOG.MESSAGE creates a pop-up window with up to three buttons.
  • New command DIALOG.SELECT, like SELECT but presents list in a pop-up window.
  • New commands TEXT.POSITION.MARK and BYTE.POSITION.MARK allow reduced buffer size, avoiding Out Of Memory when reading large files.
  • New command FONT.LOAD allows loading a font, currently for use with GR.TEXT commands.
  • New commands FONT.DELETE and FONT.CLEAR for managing fonts loaded with FONT.LOAD.
  • New command GR.TEXT.SETFONT selects a font loaded with FONT.LOAD.
  • New command GR.TEXT.HEIGHT provides height and baseline of a font.
  • New command GR.STATUSBAR reports the height of the statusbar that may be shown with the graphics screen.
  • New command GPS.SATELLITES reports the number of satellites locked in for the last position fix.
  • Extended command INPUT: returns a flag indicating if the user cancelled the input window.
  • Extended command PHONE.INFO to provide Signal Strength for some networks - this is experimental.
  • Extended commands that can create a Bundle so they can re-use an existing Bundle.
  • Extended commands that can read a Bundle so they will create an empty Bundle if one does not already exist.
  • Extended command GR.TEXT.TYPEFACE to take a Style parameter (bold, italic, both, or neither)
  • Added a Preferences setting to disable display of the Console Menu.
  • Extended Sample Program f15_gps.bas to include a satellite count and a timestamp.
  • Extended Sample Program f28_bundle.bas to demonstrate BUNDLE.REMOVE, also uses new DIALOG.SELECT.
  • New test f40phoneinfo.bas.

Problems Fixed

  • Fixed crash that could happen when using an array segment with ARRAY.SORT, SHUFFLE, or REVERSE.
  • Fixed crash that could happen if a program started with the RUN command stops with an error.
  • Fixed crash that could happen when using GR.GET.TYPE.
  • Fixed RUN command so it does not corrupt the Bitmap list of the program it runs.
  • Fixed GR.BITMAP.CROP and GR.BITMAP.SCALE so they always create a new bitmap, even if it is the same size as the old one.
  • Fixed GR.BITMAP.SIZE and GR.BITMAP.DRAW to take a full numeric expression, not just a numeric variable.
  • Fixed INCLUDE so it Reports an error if an I/O Exception occurs while reading the target file.
  • Fixed DEBUG.DUMP.STACK so it dumps a stack, not a list.
  • Eliminate the restriction on loadable file size imposed by some devices.
  • Fix an error in Sample Program f16_select.bas, and change it to use the new DIALOG commands.
  • Fix a directory-management error in f38_downloader.

Many changes to De Re BASIC!, the user's guide and reference manual of BASIC!.

NOTE: Some of changes listed here were already described in Release Notes for the test build v01.83.01.

v01.83 (Sep 09, 2014)

Update: test build 01.83.01

Build date: 09/30/2014

v01.83.01 is a test build; it may be removed at any time.
Its purpose is to get user exposure before releasing changes in v01.84

Changes from v01.83:

Enhancements:

  • Bundle auto-create -- also allows reusing existing bundle
  • Added Signal Strength to PHONE.INFO. Experimental?
  • Added canceled_var parameter to INPUT
  • BUNDLE.REMOVE
  • DIALOG.MESSAGE
  • DIALOG.SELECT
  • GR.TEXT.HEIGHT
  • GR.STATUSBAR
  • DEBUG.COMMANDS
  • DEBUG.STATS
  • f28_bundle.bas -- demonstrate DEBUG.REMOVE and DIALOG.SELECT
  • New f40phoneinfo.bas

Fixes:

  • ARRAY.SORT/SHUFFLE/REVERSE with array segment -- crash
  • GR.GET.TYPE -- crash
  • DEBUG.DUMP.STACK -- really dump stacks, not lists
  • Preferences -- spelling of "Sans Serif"
  • Both GR.BITMAP.SIZE and GR.BITMAP take an expression for the source bitmap, not simply a numeric variable.
  • f16_select.bas -- allow June births
  • f39_downloader -- per KeithB

Version 01.83 Release Notes

Release date: 9/9/2014

Enhancements

  • The CALL keyword is now optional in the same way as LET. A function name found at the beginning of a line is executed.
  • Added Custom Colors and four settable colors to Preferences.
  • Grouped Color Scheme, Custom Colors, and settable colors under a new Screen Colors Preference.
  • Per user request, changed the default highlight color to a more visible green. Use setup.xml color4 or Preferences to change it.
  • Added static phone data to the DEVICE command, and a new PHONE.INFO command for dynamic phone data.
  • Extended ASCII() and UCODE() to allow selection of any character within a string.
  • Extended CHR$() to take multiple expressions and create a multi-character string.
  • Extended GR.MODIFY so one command can change more than one property of an object.

Problems Fixed

  • Changes to the INPUT command internals. The visible effect is to eliminate the flash on retry after blank numeric input.
  • Fixed a minor bug in PRINT when a function call plus a comma end the argument list.
v01.82 (Jul 29, 2014)

Version 01.82 Release Notes

Release date: 7/28/2014

You may find BASIC! looks a little different with this release. Your console output will have lines drawn under the text, unless you have turned them off in Preferences.

If you use string representations of numbers, especially if you use hex, please note the change to 64-bit internal representations of some integer values.

Problems Fixed

  • Bug from v01.81: Syntax error on any SMS.RCV.NEXT command.
  • Bug from v01.77: Console lines never visible.
  • n$ = hex$(n) if n is negative writes a twos-complement representation in n$, but n = hex(n$) could not change it back to a negative number, and could be an error. Now it does the conversion correctly, but note that the twos-complement string now has 16 characters.
  • Console menu when running from shortcut now says "Exit" instead of "Editor".

Enhancements

  • "Computed" Goto and Gosub: expression selects target from a list of labels. See manual for details.
v01.81 (Jul 22, 2014)

Version 01.81 Release Notes

Release date: 7/21/2014

Problems Fixed

  • Variable uncertainty in ISR fixed - again
  • Preprocessor: Luca fixed compound assignment ops to work with LET; e.g., LET A += B
  • Preprocessor: fixed predecrement operator
  • Volume keys work on audio playing while in Graphics mode
  • WORD$() ignores multiple leading delimiters
  • IP addresses in sample programs f31sockettime.bas and f32tcpip_sockets.bas were obsolete

Enhancements

  • Splash screen! Thank you Antonis for showing us how and Nicolas for adding it to BASIC!
  • GR_COLLISION() detects collisions with text objects
  • GR.GET.TEXTBOUNDS and GR.TEXT.WIDTH both accept either a string or a text object number
  • HTML.ORIENTATION command
  • INT$() function, like INT() but returns a string
  • Orientation parameter on HTML.OPEN command
  • RINGER commands GET/SET MODE/VOLUME
  • Function USING$(), or FORMAT_USING$()
  • Extended DEVICE command can return a Bundle, includes default language, locale, and phone number
  • Wait parameter on Socket.client.connect
v01.80 (Apr 27, 2014)

Version 01.80 Release Notes

Release date: 4/27/2014

Problems Fixed

  • Restored support for devices running Android versions 2.1 and 2.2.
  • System.open now catches and reports failure to create the AppPath working directory.

Enhancements

  • The BROWSE command now runs in its own task, so it can be run when BASIC! is in the background.
  • Out Of Memory errors are reported on the Console, do not crash the application.
v01.79 (Apr 06, 2014)

Version 01.79 Release Notes

Release date: 4/5/2014

This build incorporates all of the changes in v01.78.01 and v01.78.02, and a few more.

Problems Fixed

  • Initialization problem that may crash the Launcher Shortcut widget. (GitHub Issue #131)
  • Initial file load so it only happens once when the installed version of BASIC! changes.
  • Fix screen color and antialias problems seen on some Android devices.
  • Changes most links to point to Bintray.com or rfobasic.freeforums.org.
  • GOTO/GOSUB bug when label is first non-comment line of program. (GitHub Issue #134)
  • FILE.SIZE and HTML.LOAD.URL when using assets. (GitHub Issue #136)
  • Variable look-up error when calling function from interrupt.

Enhancements

  • Attempts to recognize exfat file systems as Base Drive options. SD cards 64GB and greater will generally be formatted as exfat.
  • Always include default storage device as a Base Drive option. (GitHub Issue #132)
  • Allow paths that go through subdirectories that do not exist; mainly for APK use. (GitHub Issue #133)
  • New math functions INT(), FRAC(), SGN().
  • New parameters on ROUND(): specify decimal places and rounding mode.
  • New command CONSOLE.LINE.COUNT.
  • New command FILE.TYPE, mainly to distinguish files and directories (see user forum). (GitHub Issue #135)
  • New "directory mark" parameter for FILE.DIR and FTP.DIR commands. (GitHub Issue #135)
  • New command WIFILOCK. (GitHub Issue #137)
v01.78 (Feb 24, 2014)

BASIC!

Update: test build 01.78.02

Build date: 3/10/2014

v01.78.02 is a test build; it may be removed at any time.
Its purpose is to get user exposure before releasing changes in v01.79

Changes from v01.78.01:

  • Always include default storage device as a Base Drive option. (GitHub Issue #132)
  • Allow paths that temporarily include directories that do not exist; mainly for APK use. (GitHub Issue #133)
  • Fix GOTO/GOSUB bug when label is first non-comment line of program. (GitHub Issue #134)
  • New command FILE.TYPE, mainly to distinguish files and directories(see user forum). (GitHub Issue #135)
  • New "directory mark" parameter for FILE.DIR and FTP.DIR commands. (GitHub Issue #135)

Update: test build 01.78.01

Build date: 3/02/2014

Changes from v01.78:

  • Attempts to recognize exfat file systems as Base Drive options. SD cards 64GB and greater will generally be formatted as exfat.
  • Fixes a initialization problem that may crash the Launcher Shortcut widget.
  • Changes most links to point to Bintray.com or rfobasic.freeforums.org.
  • Adds new command "Console.line.count <count_nvar>".

Version 01.78 Release Notes

Release date: 2/22/2014

Problems Fixed

The previous release, v01.77, was a long time coming and had a lot in it --
including some bugs. Those are fixed in this release, v01.78.

  • Editor view screen color and behavior problems with color scheme WBL
  • Select pop-up even when message is blank
  • Debug.Dump.Array syntax error

Enhancements

  • Select parameters to separate title and pop-up message
  • Array segments: allow Array commands Average, Copy, Length, Max, Min, Reverse, Search, Shuffle, Sort, Std_dev, Sum, and Variance, and commands GR.NewDL, GR.Set.Pixels, List.Add.Array, and Vibrate to operate on a segment of a one-dimensional array.
  • Significant reduction in CPU and battery consumption when using Select, Text.Input, and TGet.
v01.77 (Feb 24, 2014)

BASIC!

Version 01.77 Release Notes

Release date: 2/9/2014

Enhancements

  • New command Array.search.
  • New flavor of Array.copy -- same syntax as before but now if the destination array exists it is wholly or partially overwritten.
  • New "Continue" statements for each loop type.
  • New command Console.Line.Text retrieves the text of a console line.
  • New command Console.Line.Touched reports the line number and touch length (short or long) of the last OnConsoleTouch.
  • New command GR.Get.Type reports the type of a Display List object.
  • New command GR.Get.Params returns an array of modifiable parameter names of a Display List object.
  • Added an optional Count parameter to SQL.Delete, reports how many records were deleted.
  • Interrupt handlers look first in main program for variable names.
  • Added the extraneous character syntax check to several more commands.
  • Expanded the f18_time.bas demo program.
  • If the system stops BASIC! while it is in the background, and the user tries to restart it, BASIC! now re-initializes itself, instead of requiring the user to do it.
  • Initial resource loading is faster.

Problems Fixed

  • Fixed a category of crash, either from Editor or when running a program, when BASIC! is stopped by the system while in the background and the user tries to restart it.
  • Improved the pre-processor "op-equal" assignment operators +=, -=, *=, /=.
  • Fixed handing of '!' appearing between two valid numerical expressions. Now flagged as a syntax error.
    • Corrected expected values comments in f05dowhile.bas and f06fornext.bas demo programs.
    • Corrected "page not found" error in f37htmldemo.bas.
  • Editor no longer shows stale program name after restarting BASIC!
  • Fixed problem with Console lines being invisible on some devices with some themes.
v01.76 (Feb 24, 2014)

BASIC!
Version 01.76 Release Notes
Release date: 10/24/2013

Special Note

The manual updates for this release were done by Michael Leavitt.

Enhancements

Added SPLIT.ALL, keeps trailing blank fields
Added math functions MIN(), MAX(), and PI()
Added GR.POINT
TTS: Added "wait" flag to SPEAK, added SPEAK.TOFILE, added STOP
GR.CAMERA: added flash and focus modes, added auto-focus, enhanced preview, larger picture sizes
LIST.INSERT can be used to add to the end of a List
Added new sensor types (Android 4.3 support)
INPUT works in graphics mode

Problems Fixed

Fixed TTS and HTML DATALINK to work with Android 4.3
GRABFILE and FILE.SIZE work in standalone APK
HTML.LOAD now works after return to BASIC!
Fixed SENSORS.LIST output format
Fixed Several Menu->Format bugs (see issue #97)
Fixed v01.75 timing bug - error on first GPS command after GPS.OPEN
Fixed BT.READ.BYTES for devices earlier than Android 2.3 (broken in v0.73)
Fixed SPLIT and WORD$() when the source string exactly matches the test string
Fixed TONE minimum duration calculation

Exit Problem Fixed!

At long last the problems with the Exit command have been fixed.

v01.75 (Feb 24, 2014)

BASIC!
Version 01.75 Release Notes
Release date: 7/21/2013

Special Note

The manual updates for this release were done by Michael Leavitt.

Enhancements

Tapping a file with a ".bas" extension in a file browser runs that file in BASIC!.
Extended GrabFile to read Unicode text files.
Added a programmable timeout to GrabURL.
Added programmable sensor delay to Sensors.Open.
Added a programmable message to the End statement.
UnDim can un-dimension multiple arrays in one statement.
Increased maximum array size from 10,000 to 50,000 elements.
Extended BASIC! string literals to recognize "\" as a single embedded backslash and "\t" as a tab. The backslash can be used in a Split statement's regular expression.
BASIC! can now run under the Samsung Multiwindow launcher.
A variable can be enclosed in parentheses. This can be used, for example, to embed a keyword such as "TO" in a variable name.

Problems Fixed

When exiting the BASIC! Editor with Menu->Exit, it asks if you want to save your changes.
In the Search screen, global ReplaceAll is now case-insensitive, matching single Replace behavior.
The Search screen properly informs the Editor if the text gets changed.
Fixed error in RIGHT$() when substring is entire string.
Removed restrictions when using GPS and Sensors statements in Graphics mode
System.Open used in an APK creates the default working directory, preventing a run-time error.
Tightened syntax checking on several commands, including Dim, UnDim, and the FTP set.

Known Problem Not Fixed

The Android 4.2 OS has caused the BASIC! EXIT command do not function properly in many cases. Often executing the EXIT command causes BASIC! to get stuck in the Editor from which you can do nothing. Your only solution to getting BASIC! running again is to use the Android "Settings" Application to "Force Stop" BASIC!. A bug notice has been filed with Android OS team. So far, after several weeks, they have not responded.

v01.74 (Feb 24, 2014)

BASIC!
Version 01.74 Release Notes
Release date: 4/16/2013

Special Note

The manual updates for this release were done by Michael Leavitt.

Enhancements

Print (and Text.Writeln and BT.Write) with no parameters prints (writes) a newline.
New Time() function returns current time or a specified time in milliseconds.
New parameters for the Time command.
New TimeZone commands: TimeZone.Set, Get, and List.
New GR.GetDL command.
New System commands, just like SU commands except they do not need Superuser privileges.
New Console.Title command changes the title of the Output Console window.
Optional parameters on the Text.Input and TGet commands change their window titles.
New Word$() function splits a string on a regular expression and returns one piece.
Split command changed: regex is now optional, default matches all whitespace.
Add anchor capability ("index.html#anchor") to HTML.LOAD.URL.

Problems Fixed

Fixed a crash when loading resources in a custom APK (new in v01.72).
Menu->Format does not change block quote ("!!") indentation.
Menu->Format does not capitalize keywords in quoted strings.
Menu->Format does capitalize math and string function names that start a line.
Editor auto-format ('#') recognizes STACK commands.
Editor auto-format ('#') does not capitalize a keyword embedded in a variable.
"my_program", the default used as an example when building an APK, is now a simple "Hello world".
Crash in List.Search when Start index < 0.

Known Problem Not Fixed

The Android 4.2 OS has caused the BASIC! EXIT command do not function properly in many cases. Often executing the EXIT command causes BASIC! to get stuck in the Editor from which you can do nothing. Your only solution to getting BASIC! running again is to use the Android "Settings" Application to "Force Stop" BASIC!. A bug notice has been filed with Android OS team. So far, after several weeks, they have not responded.

v01.73 (Feb 24, 2014)

BASIC!
Version 01.73 Release Notes
Release date: 2/21/2013

Enhancements

Compiled APK can make use of web resources.
Compiled APK can use resource files in sub-directories.
Simplified loading local files with Html.Load.URL.
Socket.MyIP now returns "" if the socket connection was lost.
BT.Write ending with semicolon sends data immediately, with no newline
New command Sql.Query.Length
New command Sql.Query.Position
New command Socket.Server.Read.File
New commands Socket.Server.Status and Socket.Client.Status
New parameter Socket.Server.Connect {} lets user choose not to block waiting for the connection.
Socket.Server.Disconnect and .Close can now interrupt a pending "Socket.Server.Connect 0".

Problems Fixed

Position errors in large files.
Fixed Byte.Read.Buffer data corruption (introduced in v01.72)
Clean termination of shortcuts and compiled APKs.
Shortcuts made before v01.72 open correctly
Shortcuts are created correctly when BASIC! is not running.
Fixed crashes when shortcuts are exited with the Back key.
Attempting to read a non-existent file returns file index -1 instead of getting RunTimeError.
Fixed loading resource files in compiled APKs.
Timer command's first interrupt waits for the specified time interval.
Fixed crash when SQL command is given a bad database or cursor pointer.
Existing commands Socket.Client.Server.IP and Socket.Client.Close now documented in "De Re BASIC!".
Fixed Html.Load.URL with '#' anchor in the URL.
Fixed GPS on devices running Android 2.2 or older.
Fixed data loss in BT.Read.Bytes from closely-spaced packets.
Fixed potential data loss in BT.Write
GPS not working for Android 2.2 devices.

Known Problem Not Fixed

The Android 4.2 OS has caused the BASIC! EXIT command do not function properly in many cases. Often executing the EXIT command causes BASIC! to get stuck in the Editor from which you can do nothing. Your only solution to getting BASIC! running again is to use the Android "Settings" Application to "Force Stop" BASIC!. A bug notice has been filed with Android OS team. So far, after several weeks, they have not responded.

v01.72 (Feb 24, 2014)

BASIC!
Version 01.72 Release Notes
Release date: 1/9/2013

Enhancements

Some Android devices have more than one external memories. The new Base Drive feature allows you to select which of these external memories you want to use as BASIC!'s base drive. You access the feature from the Preferences menu item in the Editor.
The gr.screen command now allows the setting of the screen density.
The new UCODE() function is like ASCII() but it return Unicode values.
Text and Byte Position setting performance has been improved by a factor of 3.

Problems Fixed.

GR running, rendering, close series of issue fixed
Non handled interrupts will no longer block new interrupts.
F11graphicstouch.bas fixed
F32tcpipsockets.bas fixed.
f34
remotecamera.bas fixed
f35
bluetooth.bas fixed
Opening non existent file now returns -1 as described in the manual.
Super User fixes.
BASIC! no longer closes HTML when FOR: message received.
Read from Raw resource fixed
Numeric literal constants can have signed exponents.

v01.71 (Feb 24, 2014)

BASIC!
Version 01.71 Release Notes
Release date: 11/28/2012

Release Details

The line continue character has been changed from "space" to "~". Variable
names may, once again, start with _.
The new Bluetooth command, bt.disconnect, provides for disconnecting from
a device without having to close and re-open Bluetooth.
The new interrupt label, onConsoleTouch, provides for detecting touches on
the Output Console.
The on ConsoleTouch.Resume command provides the resuming of the run after an
onConsoleTouch interrupt.
The onTouch label has been changed to onGRtouch.
The gr.onTouch.resume command has been changed to gr.onGRTouch.resume.
The Sample Program, f35
bluetooth.bas changed to reflect some of the above changes.
HTML Form return will no longer exit HTML mode.
The clicks, pops and splatter by the Tone command's tones have been eliminated.
The building of an APK now uses Basic.zip rather than MyApp.zip.
See De Re Basic, Appendix D.
The German version of the manual has been updated.

Problems Fixed

Bluetooth can now be open in graphics mode.
Using a numeric list in the select command will now give a run time error.
Superuser crashes have been fixed.
Excessive (>50,000) GOTOs from inside IF/ELSE/FOR blocks will produce a run time error.
Problems with interrupts and in particular resuming after interrupts have been fixed.

v01.70 (Feb 24, 2014)

BASIC!
Version 01.70 Release Notes
Release date: 11/11/2012

Release Details

READ - DATA (in a BASIC! flavor, see manual) has been implemented.

The Bluetooth open and connect commands can now be directed to open secure or
insecure connection.

HTML will no longer be automatically closed when Form data is received.

A number of new Debug. commands have been implemented.
Problems Fixed
The problems with gr.get,pixel, gr.save and gr.screen.to_bitmap have been fixed.

The problem with quote characters on certain devices has been fixed.