Vision Basic for Commodore 64

Vision Basic by Dennis Osborn, is a must have for the power programmers of the Commodore 64. With a nostalgic taste of what SYSRES was back in the 80’s for the basic environment of the Commodore, this new software of today ramps it up by giving full access of the 64K environment, with one catch - obviously if you are using all 64K, you need an REU (RAM Expander Unit). That said, they are not hard to come by these days. REUs are found in all kinds of shapes and sizes so long as you are not hardcore for the “originals”.

But with that in hand, be prepared for some fun. You have a nice new BASIC environment with a lot of cool twists and gadgets put into the BASIC engine, and what comes out of that is smooth machine language coded material for your use. Check it out at Vision BASIC for the Commodore 64 - a better BASIC programming language - make games and more! - YouTube and

One of the coolest features is you can merge basic code right along side with machine code together in your program! Another one of my favorites is the use of TAGs, Pointers and PROCs verses traditional line numbers (GOTO SOMETHING instead of GOTO 35757). Extremely helpful to modularize long code segments and clearly articulate (or for me, remember…) what all the jumps are going to and doing.

Yet another truly noteworthy ability is custom commands. Think of custom commands as a subroutine that does something that you can call by name. For instance, I have a routine that will print out to the user port (modem) for a bbs. My routine is called “TXT”, and it takes a string parameter. So now in my code, I can just say, TXT.“PRINT THIS MESSAGE” and the message in quotes will be processed by the routine! This is a fabulous way to cut down on repeated functions!

The program has the ability to “modularize” long programs into program chunks that can come in and out of memory easily.

There are some things to get used to, and may seem odd compared to traditional Commodore Basic:
Some of the observed are:

  • complex multi-function statements, particularly in IF statements
    IF A$=CHR$() will fail, but X$=CHR$(): IF A$=X$ will pass
    same will apply for others like IF LEN(A$)= - “LEN(A$)” has to be assigned to a variable prior to evaluation.
    Likewise, “poke s+x1,(some number or variable)” would not work. The “s + x1” had to be done seperately.

  • Understanding differences between standard number versus extended (Decimal) number variables; not keeping a good eye on use of these will result in a lot of type mismatch errors during compilation

  • Most existing math operations will need to be rewritten into multiple simplified statements

  • Compacting statements don’t always work
    Having a statement like “for d=ml to dl” may not pass the compiler if it is compacted (“ford=mltodl”). Some make it, some don’t.

The benefits far outweigh the quirks! The program is a decent and affordable price and a good support website is available as you work to learn the new environment. It comes with documentation to help you get started, and sample programs to view.

You can’t go wrong if you want to take some of those older programs and give them a great facelift!