Vision BASIC

From C64-Wiki
Jump to navigationJump to search
Stub This article is very short and not very detailed. Please help to improve it.
Vision BASIC
Start screen of Vision BASIC.
Developer Dennis Osborn
Release 2022
Licence Full version
Platform C64
Genre BASIC Expansion
Operation Keyboard Paddles Joystick
Media Diskette
Language(s) Language:english
Information Several versions
Price: 49 U$ / 59 U$

Vision BASIC was created by American programmer Dennis Osborn and released in 2022 for the Commodore 64. This development tool provides over 100 new BASIC commands for bitmap graphics, sprites, characters, sound, interrupts, and more.  The programming environment includes features such as a memory manager, an improved program editor, simplified disk commands, user-created commands, and complete compatibility with emulators such as VICE and THEC64.  All Vision BASIC programs are compiled into extremely fast standalone machine language for execution, and assembly language can be mixed seamlessly with BASIC code to give an even further speed boost.

Technical Details[edit | edit source]


  • A C64 or C128 or suitable C64 emulation (like VICE).
  • An extra 256K of RAM in the form of an REU or a SuperCPU with added RAM. However, this extra RAM is for the development environment. Compiled programs will run on a standard C64 without the extra RAM unless the program actually requires an REU.
  • A peripheral that can read the provided media.
  • A decent familiarity with C64 BASIC and the C64 itself.


Versions[edit | edit source]

The following versions of Vision BASIC exist:

  • Vision BASIC 1.0a - Launch Package (59 U$, with disk)
  • Vision BASIC 1.0b - Basic Package (59 U$, with disk)
  • Vision BASIC 1.0d - Basic Package Digital Only (49 U$)
  • Vision BASIC 1.0e - Manual + Digital (49 U$, included shipping)

Starting Screen[edit | edit source]

If you use Vision BASIC with a REU the starting screen shows that in green background and lighter green border and text color:

            VISION BASIC 1.0





New Commands[edit | edit source]

These BASIC commands are new:[2]

  • ADD
  • COMP
  • CLS [poke-code [, color]] - clear the screen. If you use poke-code a char as value from 0 to 255 is printing on the whole screen (optional space; 32), also by using POKE; also can use a color for the char from 0 until 15 (optional no).
  • DEC
  • DO
  • ELSE
  • FILE
  • INCE
  • TAG <label> - define a label
  • [assembler code]

These BASIC command are enhanced:

  • CHR$ (more parameters) - like CHRS$(96,20)
  • GOSUB - also can used tags or labels - like GOSUB DEMO
  • GOTO - also can used tags or labels - like GOTO MORE
  • LET
  • IF-THEN-ELSE (can also split other more columns!)
  • PEEK (more parameters) - like PEEK(53280,2)
  • POKE (more parameters) - like POKE 1065,8,5,12,12,15," C64-WIKI"
  • SAVE "file",<device_number>,<device_number2|address1>,<address2> - for saving machine language codes or memory areas like SAVE "C64WIKI-DATAS",8,49125,50000

Using Machine Code[edit | edit source]

Vision BASIC allows to mix Vision BASIC code with Machine Language.

  • If a machine language code is using together with BASIC lines, brackets are need for the mnemonics: [ ...assembler... ]
100 REM *** MACHINE CODE ***
200 [JMP C000]
  • Important is only the open bracket [ !

Also you can use the integrated machine language monitor:

  • START address - the start address of a machine language program. It should be used as first command of the machine language program and only once time.
  • This reserved commands can be used only in the machine monitor as command (not as variable or tag name!): ADD< SUBTRACT, BYTES, COMPARE, DEBUG, DOUBLE, GOTO, GOSUB, HALF, HALT, LOCAL, GLOBAL, MODULE, PROC, RASTER, RETURN, REM, RESUME, START, STARTINT, STRINGS, TAG, VARIABLES, VERSION.
  • Tags and variables can replaced values and addresses
  • ; - a semicolon starts a comment in machine language mode.

Important Tips[edit | edit source]

Difference to BASIC V2.0 are:

  • Loops with FOR-TO­-STEP-NEXT and DO will only work with integer variables.
  • Strings and string variables cannot be returned from Vision BASIC subrou­tines.
  • By using the new sound commands FREQ, PULSE, ADSR and WAVE you must first set a current VOICE before calling them.
  • The maximal value for variables in Vision BASIC is: ±16.777.215
  • Parent­heses are not allowed in mathem­atical expres­sions like A = 1+ ((2*5) *9). If you use this, you must write it like: A = 2*5: A = A*9 = A = A+1
  • All mathem­atical expres­sions are strictly evaluated from left to right!
  • The file commands are optimize for the device floppy disc (optional 8, or 9 until 12)

Not available BASIC commands[edit | edit source]

BASIC commands that aren't available in Vision BASIC:

Example[edit | edit source]

A little example of a Vision BASIC program:[3]

  0 clock0
  1 clr
  2 random
  5 dim a(4),b(4)
  6 decimal sr, ti
 10 colors 1,0,0:cls
 20 a(0)=-2:a(1)=-80:a(2)=2:a(3)=80
 22 b(0)=-1:b(1)=-40:b(2)=1:b(3)=40
 30 sc=1105
 31 sr=rnd*10:a=sr*80+sc
 33 sr=rnd*10:a=sr*2+a
 40 [lda #160:ldx #0]
 41 [sta 1064,x:sta1304,x:sta1544,x:sta1784,x:inx:cpx#240:bne41:lda#32:ldx#0]
 42 [sta1984,x:inx:cpx#40:bne42]
 43 fori=0to23:p=i*40+1063:pokep,32:next
100 poke a,4
110 j=rnd(2)and3:let x=j
112 compare s,sm:[bcc120]:let sm=s,fi=b
120 pb=peek(a,a(j))
122 compare pb,160:[bne130
123 aa=b(j):add a=a+aa:pokea,32
125 :      :add a=a+aa:pokea,j
127 let b=a:incs
129 goto110
130 inc j:j=j and3
131 compare j,x:[bne120
140 j=peek(a)
141 poke a,32
142 dec s
143 comp j,4:[bcs150
144 a=a-a(j):goto110
150 pokea,1:pokefi,2
160 ti=clock/60:printti

Links[edit | edit source]

References[edit | edit source]