User Tools

Site Tools


ugbasic:syntax
Translations of this page:


ugBASIC User Manual

Syntax

Keywords

The following keywords form the entire vocabulary of the language. The keywords must be written in UPPER case. Therefore PRINT is a valid command, while print is not.

 16BIT AAHS ABS ACCORDION ACOUSTIC ADD ADDRESS AGE AGOGO 
 ALL ALT ALTO AND APPLAUSE ARRAY ARROW AS ASC 
 ASM ASTERISK AT ATARI ATARIXL ATMOSPHERE AUTO BACK BACKGROUND 
 BAG BANJO BANK BANKED BAR BARITONE BASS BASSOON BEG 
 BEGIN BELL BELLS BELONG BETA BF BIN BINARY BIRD 
 BIT BITMAP BITMAPS BLACK BLIT BLOWN BLUE BOOM BORDER 
 BOTTLE BOWED BOX BRASS BREATH BRIGHT BRIGHTNESS BROWN BUFFER 
 BUT BYTE CALL CALLIOPE CAN CAPS CAPSLOCK CASE CDOWN 
 CELESTA CELLO CENTER CENTRE CHAR CHARANG CHIFF CHOIR CHR 
 CHURCH CIRCLE CLARINET CLASS CLAVI CLEAN CLEAR CLEFT CLINE 
 CLIP CLS CMOVE COCO CODE COLECO COLLISION COLON COLOR 
 COLORMAP COLORS COLOUR COLOURMAP COLOURS COLUMN COLUMNS COMMA COMMODORE 
 COMPLETE COMPRESS COMPRESSED CONST CONTRABASS CONTROL COPY COS COUNT 
 CPC CRIGHT CRSR CRYSTAL CSPRITE CUP CURSOR CYAN CYCLES 
 CYMBAL DARK DATA DEBUG DECLARE DEFAULT DEFINE DEGREE DELAY 
 DELETE DESTINATION DIM DISABLE DISTANCE DISTORTION DIV DLOAD DO 
 DONE DOUBLE DOWN DRAGON DRAW DRAWBAR DRUM DRUMS DTILE 
 DTILES DULCIMER DWORD ECHOES ECM ELECTRIC ELLIPSE ELSE ELSEIF 
 EMBEDDED EMPTY EMPTYTILE ENABLE END ENDIF ENDSELECT ENDSTORAGE ENGLISH 
 ENSEMBLE EQUAL EVERY EXACT EXEC EXIT EXPAND EXPLICIT EXPLOSION 
 FALSE FAST FI FIDDLE FIFTHS FILEX FILL FINGER FIRE 
 FIRST FLIP FLOAT FLUTE FONT FOR FRAME FRAMES FREE 
 FRENCH FRET FRETLESS FROM FUNCTION FX GAMELOOP GET GLOBAL 
 GLOCKENSPIEL GOBLINS GOLD GOSUB GOTO GR GRAND GRAPHIC GRAY 
 GREEN GREY GUITAR GUNSHOT HALO HALT HALTED HARMONICA HARMONICS 
 HARP HARPSICHORD HAS HEIGHT HELICOPTER HEX HIDDEN HIDE HIT 
 HOME HONKY HORIZONTAL HORN HSCROLL ID IF IGNORE IMAGE 
 IMAGES IN INDEX INK INKEY INPUT INSERT INSTR INSTRUMENT 
 INT INTEGER INVERSE IS JAZZ JDOWN JFIRE JLEFT JOY 
 JOYCOUNT JRIGHT JUP KALIMBA KEY KEYBOARD KEYSHIFT KEYSTATE KILL 
 KOTO LAVENDER LAYER LBOUND LEAD LEFT LEN LET LETTER 
 LIGHT LINE LOAD LOCATE LOCK LONG LOOP LOWER MAGENTA 
 MAP MARIMBA MASKED MAX MCM MELODIC MEMORIZE MEMORY METALLIC 
 MID MILLISECOND MILLISECONDS MIN MINUS MMOVE MOD MODE MONOCOLOR 
 MONOCOLOUR MOVE MSX MUL MULTICOLOR MULTICOLOUR MUSIC MUTED NAMED 
 NEW NEXT NOISE NONE NOP NORMAL NOT NOTE NYLON 
 OBOE OCARINA OF OFF OLIVE ON ONLY OOHS OPACITY 
 OPTION OP_DEC OP_INC OR ORANGE ORCHESTRA ORCHESTRAL ORGAN ORIGIN 
 OUT OVERDRIVEN OVERLAYED PAD PAGE PAINT PALETTE PAN PAPER 
 PARALLEL PARAM PCLS PEACH PEEK PEN PER PERCUSSIVE PERIOD 
 PI PIANO PICCOLO PICK PINK PIPE PIZZICATO PLAY PLOT 
 PLUS PMODE POINT POKE POLYLINE POLYSYNTH POP POSITION POSITIVE 
 POUND POWERING PRECISION PRESERVE PRESET PRESSED PRINT PROBABILITY PROC 
 PROCEDURE PSET PURPLE PUT RADIAN RAIN RANDOM RANDOMIZE RASTER 
 RATE RATIO RAW READ READONLY RECORDER RED REED REGISTER 
 RELATIVE RELEASE REMEMBER RENDER REPEAT REPLACE RESOLUTION RESPAWN RESTORE 
 RETURN REVERSE RGB RIGHT RING RND ROCK ROLL ROW 
 ROWS RUN RUNSTOP SAFE SAWTOOTH SAX SCAN SCANCODE SCANSHIFT 
 SCI SCREEN SCROLL SEASHORE SECOND SECTION SELECT SEMICOLON SEMIGRAPHIC 
 SEPARATOR SEQUENCE SET SGN SHADES SHAKUHACHI SHAMISEN SHANAI SHARED 
 SHIFT SHIFTS SHOOT SHOW SIGNED SIN SINGLE SITAR SIZE 
 SLAP SLASH SLICE SOPRANO SOUND SOUNDTRACK SOURCE SPACE SPAWN 
 SPC SPRITE SQR SQUARE STACK STANDARD STATE STEEL STEP 
 STOP STORAGE STR STRING STRINGS SWAP SWEEP SYNTH SYNTHBRASS 
 SYNTHSTRINGS SYS SYSTEM TAB TAIKO TAN TANGO TASK TELEPHONE 
 TEMPORARY TENOR TEXT TEXTADDRESS TEXTMAP THEN THREAD THRESHOLD TI 
 TICK TICKS TILE TILEMAP TILES TILESET TIME TIMER TIMPANI 
 TINKLE TO TOM TONK TRANSPARENCY TRANSPARENT TREMOLO TROMBONE TRUE 
 TRUMPET TUBA TUBULAR TURQUOISE TWEET TYPE UBOUND UNIQUE UNSIGNED 
 UNTIL UP UPPER USE USING VAL VALUE VAR VARIABLES 
 VARPTR VBL VERTICAL VIBRAPHONE VIDEO VIOLA VIOLET VIOLIN VISIBLE 
 VOICE VOLUME VSCROLL WAIT WARM WEND WHILE WHISTLE WHITE 
 WIDTH WITH WOODBLOCK WORD WRITE WRITING XCURS XGR XGRAPHIC 
 XOR XPEN XTEXT XY XYLOPHONE YCURS YELLOW YGR YGRAPHIC 
 YIELD YPEN YTEXT YX ZX 

In ugBASIC (like CBM BASIC) you do not need to isolate keywords from each other or from other identifiers with any separator, like spaces.

Identifiers

Identifiers are used to give a name to labels, variables, constants, procedures and functions. You may choose any name for identifier. Anyway, you have to follow some rules:

  • the first character must be lowercase alphabetic;
  • the remaining characters can be uppercase;
  • the dollar symbol ($) identify string variables;
  • identifier are case sensitive: pippo and pIPPO are different symbols
  • they can be of any length, and all characters are significant.

Statements

Statements and commands can be separated using the colon symbol (:) character, and can end with LF or CR+LF characters. The separator is not required if there's only one statement in one line, as the following example:

 WHILE NOT finished : PRINT "continue" : WEND
 WHILE NOT finished
    PRINT "continue"
 WEND

Comments

If you begin a line with single quote (') character, or put it after colon symbol, it will be considered a comment until the end of the line. The same for the REM command, that is used to begin a comment.

 ' comment
 REM comment
 line = 1 :' comment
 line = 1 :REM comment

Whitespace

Whitespace (e.g. spaces and tabs) are ignored, since they are not needed. You are encouraged to use them if you need to make make the program more readable, or to remove it if you need to join competitions where number of lines is an important factor.

Labels (and line numbers)

Labels can be used to identify any point of the source code. Labels are used by some statements, like GOTO and GOSUB statements. Labels must be appended with a colon character (:).

    GOSUB subroutine1
    END
 subroutine1:
    PRINT "subroutine1 has been called!"
    RETURN

As in traditional BASIC language, labels can be numeric, as well. Line numbers are treated like special labels by ugBASIC, but they must not followed by colon character (:).

Split long lines

The underscore (_) character at the end of the line can be used to split a single line to multiple lines, in order to be more readable.

 ' Write this very long line in a short one.
 DIM xx AS BYTE(32) = # { _
    x1, x2, x3, x1, x2, x3, x1, x2, x3, x1, x2, x3, x1, x2, x3, x1, _
    x2, x3, x1, x2, x3, x1, x2, x3, x1, x2, x3, x1, x2, x3, x1, x2, _
 }

POWERED BY