Today's Extended Basic Level II extension for VIC20 featuring SuperNumbers (tm)


WimBasic is an extension for CBM Basic V2 on the famous Commodore VIC20. It is built from the Extended Basic Level II extension that was published by Michael Krause and Andreas Dripke in 1982.

What began as simply patching the ROM-file, ended up as a nearly complete rewrite of this little gem. A lot of bugs and shortcomings were fixed and a lot of optimizations were done.

From ExBasic, the function DEC() was removed and the following was added: 

  • Function XOR()
  • Command UNNEW
  • A faster SQR() algorithm (5x faster than the CBM Basic version)
  • Left-MID$ function to replace (part of) a string by (part of) another string
  • Inline hexadecimal and binary notation (A=$1E00:B=%1101)
  • SuperNumbers (20% faster floating variables)
  • INPUTLINE#<file>
  • ERROR <code>
  • Joystick support (through USR())
  • DIVMOD, to calculate DIV and MOD
  • AUXCOL to set auxiliary color for multicolor characters
  • ERASE to erase a DIMmed array from memory
  • TOGGLE to toggle a poxel

In total, WimBasic adds over 50 new commands and 14 new functions to your VIC20. It enhances existing commands and functions, such as RESTORE and RND(). 

All new functions and commands:

  • check parameter types
  • check parameter values
  • support recursivity
  • are guarded against garbage collections
  • respect memory configurations
  • are fully optimized

In addition to this, WimBasic delivers

  • DOS commands to floppy at #8
  • Autostart function
  • Datasette Turbo LOAD/VERIFY/MERGE and SAVE functions
  • Extended scroll control functions
  • Interactive LIST scrolling functions
  • Runtime debug tracing

The project is finished in the fall of 2012. I managed to optimize the original Extended Basic Level II by approximately 8% in size. This gave enough headroom for the new and improved features.

WimBasic is now 8176 bytes in size and is built to run in BLK5, just like its predecessor. 

Thanks to forum members on Denial for support and inspiration.

To download WimBasic, click here: wimbasic.zip

The ZIP-file contains two .ASM files, two .PRG files and two .CART files. The wimbasic.* files contain the 6502-version, whereas the wbc02.* files contain the 65C02 version. The 65C02 version is 193 bytes shorter and a little faster at some points (e.g. RENUM is 4% faster). Both versions have the same functionality.

The .PRGs and the .CARTs are padded with $ff. The .CART files do not have the load address prepended.

If you have RAM in BLK5: The .PRG must be loaded with ,<dev>,1 so that it ends up in $A000-$BFFF. After that, a SYS64802 must be performed so WimBasic will start automatically. The screen will look like this:

...with a blinking cursor of course ;-)...

If you do not have RAM in BLK5, make sure you burn an 8KB EPROM with the .CART file and hook it up. Or acquire a Final Expansion 3 or a MegaCart.


 Some sample programs can be downloaded from:  wb_samples.zip