External Links

Creative Science Centre


Version Information

Known Problems

  • Select/endseclect does not work inside a for-next loop, work round: use while/wend instead
  • // comments after a constant in certain circumstances
  • // comment function << the word 'function' in a comment will cause problems, use 'Function' instead for now
  • Reset is required after flsave("")


  • Added flerase(address), flstore(address,value) non-volatile storage
  • added hload(n) - mostly used by BVSerial V16 up
  • ok prompt sends ACK(6) as well
  • serial number format changed
  • fltell outputs number of saves

2.30 (Serial 201615088)

  • Added taskup() that can be used in a program loop and tasking will still work
  • Changed tasksee()
  • Added BV517
  • Fixed program loading with SD Card
  • Added fdirlist(a$,iter) -- needs documenting
  • Added BV508_2 (Version 2 of the BV508)

2.30 (Serial 201603083)

Special note about this version. Because the echo is off by default some older script files may need modifying; change:

waitfor 'start'                to    waitfor 'ok'
waitfor 'bytes to save'   to    waitfor 'ok'

  • task commands added, timer 1 devoted to this
  • Added atan2(a,b)
  • Changed sign on screen to minimal information
  • Default system flag is now 0x12c (no echo)
  • Additional prompt '>' available, use 0x32c
  • Added firmware fro BV517

2.30 (Serial 201401060)

  • Fixed 'runaway' error where op went into a continuous loop
  • Saving strings fixed
  • float2string fixed
  • Loading from SD Card with \ fixed

2.30 (Serial 201418058)

  • Minor bug fixes to stop runaway errors

2.30 (Serial 201423056)

  • Bug fix for MX170, wait() not working

2.30 (Serial 201412055)

  • Bug using constants within functions - FIXED
  • Bug constant array not dealing with memory correctly - FIXED
  • Saving string constant (constant V$ "fred") caused crash - FIXED

This release does not handle byte array constants (a${...}) properly, use integer constant instead (a{...}) for now

2.30 (Serial 201405054)

This is a big update which will also incorporate the new MX170 and MX370 devices that have larger RAM and some new features. Because of the large update there is likely to be some bugs. Please report for an early fix. See release and migration section in the Language Guide.

  • Pointer (address) passing has been updated ** syntax change for '?'
  • All devices will be user upgradable including the MX170 (DIL IC)
  • The MX170 will include floating point (with a possible option of none FP firmware)
  • Global variables now share program space and so there is no pre-determined limit
  • Doubles are no longer available and so co-ordinates, replaced by pointer passing
  • Floating point uses 4 bits instead of 8
  • Constants with {brackets} can now be read as arrays, floating point can now be saved as  {}


  • This is the last update for the PIC32MX150 IC. At this point in time only updates will be available for the MX170

2.08 (Serial 201404029)

  • UART 1 is now set as a UART by default instead of GPIO pins and there is also the corresponding SYS_COMPORT1, SYS_COMBAUD1 and SYS_COMSIZE1 constants. This has immediate effect on pins RF2 and RF3 for the MX3. However the PPS will still need to be used for the MX1.
  • Added new function interpret("string")
  • Added new function floadp("filename",position,"terminator string")
  • Bug Fix: saved global variables now have room reserved in RAM after a reset.

2.08 (Serial 201431027)

  • Saved some space on MX1, now more room on free flash
  • Added new function byte2str
  •  Bug fix -ve and % (mod) now returns correct value
  • Increased timeout on tload to give a beter loading rate for internet connections
  • comkey?() now returns correct value when buffer > 255
  • Added function comclear(port)
  • Added function ffload("filename") that loads files onto the SD Card without the need for handshaking - works in conjunction with BvSerial
  • Added support for long filenames
  • Added new function push(value) when used in conjunction with lookup() and exec()
  • General exception will now reset itself instead of user intervention
  • Bug fix SYS_VARLOCAL also effected global variables.

2.08 (Serial 201306023)

  • Just for the BV514 - new screen type returning only partial device code and so was not getting initialised. Now fixed. New file is BV514_11k_V_2.08_SCRN2.bin This applies to all BV514 with a sticker over the PIC32 saying SCRN2

2.08 (Serial 201306022)

  • Just for the MX1 only, fixes a problem when saving a constant directly to flash in the form "constant flash NAME {1,2,3, \ etc. Where the continue is used for the next line. The workaround is not to use the flash modifier but save to ram then use flsave().

2.08 (Serial 201320021)

  • Just a release for the BV514 as there is a new screen fitted to that device that has the x-y co-ordinates swapped. The devices fitted with the new screens have a sticker over the IC indicating "SCRN2"

2.08 (Serial 201310020)

  • Bug Fixed. When saving main() to flash that contained a global variable, on reset the device produced a general exception.

2.08 (Serial 201320019)

  • Added no echo and no prompt  options to system flag
  • Fixed bug when saving floating point variable to flash
  • Fixed negative conversion from integer to float

2.08 (Serial 201307017)

  • Fixed dividing a negative number caused incorrect result.

2.08 (Serial 201310016)

  • Fixed a bug that caused a crash when <> was used in certain circumstances.
  • Array space was not calculated correctly causing too much space to be used in RAM, fixed.
  • BV514 dfont() caused a crash when used
  • flcear() sometimes caused flash corruption if a user interrupt was running

2.08 (Serial 201308012)

  • Added a safety measure so that setting the system variables to ridiculous values would not cause irrecoverable error – mainly for MX1
  • New function added exec(address) that will execute a function given its address. The address can be found from lookup()
  • Updated fonts and bitmaps so that a font or bitmap can be a constant and included into the text of a program
  • Removed flsys() – system constants are now named and set using 'constant' – see user guide
  • Added 'flash' keyword to constant to allow direct saving of constants to flash
  • Not part of this release but there is a new version of BV_COM2 (1.34) that handles the new constants with the #option only keyword properly.

2.07 (Serial 201305077)

  • Added call() for plugin connection
  • Added BV505
  • Fixed dim longername$ //comment
  • Allow the use of a constant to specify string length

2.07 (Serial 201211074)

  • Fixed when flsave used: white space & sting size
  • Fixed dim: string array sizes

2.06 (Serial 201229069)

  • Bug Fixes
  • Rename from machineBASIC to ByPic

2.06 (Serial 201226067)

  • There is a bug in dim that effects strings. The workaround is to define a variable after the string and not use it, thus:
    dim a$,nowt,b$,nowt1,okay_to_use (Fixed in 2.06-69)
  • Added functionality to to 'constant' to allow for creating byte and word tables see keywords.
  • Fixed string size limit

2.05 Serial 201210063

  • There is a limit of 250 as the maximum size of a string (Fixed in 2.06)
  • select/endselect does not work inside a for/next loop – use while wend instead.

2.04 Serial 201210060

  • abs() is not working use negate() instead to convert a negative number into a positive number (Fixed in 2.05)
  • There is a problem with negative numbers and multiplication, workround use brackets. e.g. (-5) * (-1) (Fixed in 2.05)
  • Negative step values for/next do not work use while loop for workaround (Fixed in 2.05)


  • Added low power modes, when used in conjunction with BV_COM V1.33 the line number on the error report is correct even when there are #include files.

[201210059] Floating point comparison (i# > j#) fixed

[2012100560] Spelling corrections