
picoBASIC
PICOBASIC v0.3
A Tiny BASIC Interpreter Running inside PICO-8
INTRO
PICOBASIC is a cartridge that implements the BASIC programming language - with additions for graphics -, plus some extras like an editor and a command mode to manage your programs.
It’s retro computing inside a fantasy console. A meta 8-bit experience!
GOALS
The goal of this is to learn how an interpreted language works, as well as to carry out a fun project that allows me to keep developing my skills in Lua with PICO-8.
Also, want to give people a way to easily create and run simple programs in BASIC when they have no programming experience in Lua.
CURRENT STATUS
Now, project is functional but i need to implement basic things like arrays, better error diagnosis, expanded editor features like syntax highlighting, import and export code, etc...
You can find code here: https://github.com/rudahee/picoBASIC
FEATURES
Program Instructions
- write text to the terminal
- LET
- assign a value to a variable
- INPUT
- read a value from the user
- REM
- add comments to your code
Flow Control
- IF THEN
- execute code conditionally
- FOR NEXT STEP
- repeat code a number of times
- RETURN
- return from a subroutine
- GOTO
- jump to a line number
- GOSUB
- call a subroutine
- END
- finish the program or subroutine
Math Functions
- ABS
- absolute value
- INT
- integer part of a number
- LEN
- length of a string
- MID$
- extract substring from a string
- STR$
- convert number to string
- VAL
- convert string to number
- REM
- add comments to your code
Graphics Functions
- CLS
- clear the screen
- PSET
- set a pixel on the screen
- CIRC
- draw a circle
- RECT
- draw a rectangle
- TEXT
- draw text on the screen
- WAIT
- pause the program for a short time
- BTN
- check if a button is pressed
EXAMPLE PROGRAMS
Example 1: Hello World
10 print "Give me your name: "
20 input name$
30 print "Hello, " + name$ + "!"
Example 2: Growing Circle
10 cls 0
20 for i=0 to 64 step 4
30 circ 64,64,i,7
40 wait
50 next i
60 goto 10
Example 3: A Simple Game
10
20 bx=64
30 by=20
40 bdx=1
50 bdy=1
60 px=54
70 score=0
80 spd=1
100 cls 1
110 if btn(0)=0 then goto 130
120 px=px-3
130 if btn(1)=0 then goto 150
140 px=px+3
150 if px<0 then px=0
160 if px>107 then px=107
170 bx=bx+bdx
180 by=by+bdy
190 if bx<2 then bdx=0-bdx
200 if bx>125 then bdx=0-bdx
210 if by<2 then bdy=0-bdy
220 if by<115 then goto 280
230 if bx>px+20 then goto 350
250 bdy=0-bdy
260 score=score+1
270 if score<5 then goto 280
275 if score<10 then goto 278
276 spd=3
277 goto 280
278 spd=2
280 rect px,117,px+20,121,7
290 circ bx,by,2,10
300 line 0,6,127,6,5
310 text "score:"+str$(score),2,0,11
320 text "spd:"+str$(spd),90,0,6
330 wait
340 goto 100
350 cls 0
360 print "game over"
370 print "score:"+str$(score)
380 if score>9 then goto 420
390 print "keep playing!"
400 input
410 goto 440
420 print "great!"
430 input
420 wait
430 wait
440 wait
450 end
Download
Development log
- Updated page.1 day ago




Leave a comment
Log in with itch.io to leave a comment.