Indice

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 ADDC ADDRESS AFTER 
 AGE AGOGO ALL ALLOW ALPHA ALT ALTO AND ANIMATE 
 ANIMATING ANIMATION APPLAUSE ARRAY ARROW AS ASC ASCII ASCIICODE 
 ASM ASTERISK ASYNC AT ATARI ATARIXL ATLAS ATMOSPHERE AUDIO 
 AUTO AVAILABLE AY8910 BACK BACKGROUND BAG BANJO BANK BANKED 
 BAR BARITONE BASIC BASS BASSOON BECKER BEG BEGIN BELL 
 BELLS BELONG BETA BF BIG BIN BINARY BIRD BIT 
 BITMAP BITMAPADDRESS BITMAPS BLACK BLIT BLOCK BLOWN BLUE BOOLEAN 
 BOOM BORDER BOTTLE BOTTOM BOUNCE BOWED BOX BRASS BREATH 
 BRIGHT BRIGHTNESS BROWN BUFFER BUT BY BYTE BYTES C128 
 C128Z C16 C64 C64REU CALL CALLIOPE CAN CAPS CAPSLOCK 
 CASE CDOWN CELESTA CELLO CENTER CENTRE CGOTO CHAIN CHANNEL 
 CHAR CHARANG CHECK CHIFF CHOIR CHR CHURCH CIRCLE CLAMP 
 CLARINET CLASS CLAVI CLEAN CLEAR CLEFT CLINE CLIP CLOSE 
 CLR CLS CMOB CMOVE COARSE COCO COCO1 COCO2 COCO3 
 CODE COLECO COLLISION COLON COLOR COLORMAP COLORS COLOUR COLOURMAP 
 COLOURS COLUMN COLUMNS COMBINE COMMA COMMODORE COMPILE COMPLETE COMPRESS 
 COMPRESSED COMPRESSION CONFIGURE CONNECTED CONSOLE CONST CONTRABASS CONTROL COPPER 
 COPY COS COUNT CPC CPU6309 CPU6502 CPU6510 CPU6809 CPU7501 
 CPU8086 CPU8501 CPU8502 CPUSC61860 CPUSM83 CPUZ80 CREATE CRIGHT CRSR 
 CRYSTAL CSET CSPRITE CSV CUP CURS CURSOR CYAN CYCLES 
 CYMBAL DAC1 DARK DATA DEC DECLARE DEFAULT DEFDGR DEFINE 
 DEGREE DELAY DELETE DESTINATION DESTROY DETECTION DEVICE DIALECT DIGITS 
 DIM DIRECTION DISABLE DISTANCE DISTORTION DIV DLOAD DO DOJO 
 DOJOKA DOUBLE DOWN DOWNB DOWNW DRAGON DRAGON32 DRAGON64 DRAW 
 DRAWBAR DRUM DRUMS DSAVE DTILE DTILES DULCIMER DUP DWORD 
 DYNAMIC EASEIN EASEOUT ECHOES ELECTRIC ELLIPSE ELSE ELSEIF EMBEDDED 
 EMPTY EMPTYTILE EMULATION ENABLE END ENDCOPPER ENDIAN ENDIF ENDPROC 
 ENDSELECT ENDSTORAGE ENDTYPE ENGLISH ENSEMBLE ENVELOPE EQUAL ERROR EVERY 
 EXACT EXEC EXIT EXITIF EXP EXPAND EXPLICIT EXPLOSION F1 
 F2 F3 F4 F5 F6 F7 F8 FADE FALSE 
 FAST FCIRCLE FELLIPSE FHEIGHT FI FIDDLE FIFTHS FILESIZE FILEX 
 FILL FINAL FIND FINGER FIRE FIRST FLASH FLIP FLOAT 
 FLUTE FONT FOR FORBID FRAME FRAMES FREE FREEZE FRENCH 
 FRET FRETLESS FROM FSIZE FUJINET FUNCTION FWIDTH FX GAMELOOP 
 GB GET GLOBAL GLOCKENSPIEL GMC GOBLINS GOLD GOSUB GOTO 
 GR GRAND GRAPHIC GRAPHICS GRAY GREEN GREY GUITAR GUNSHOT 
 HALO HALT HALTED HARMONICA HARMONICS HARP HARPSICHORD HAS HDBDOS 
 HEIGHT HELICOPTER HEX HIRES HIT HOME HONKY HORIZONTAL HORN 
 HSCROLL HTTP IAF ID IF IGNORE IMAGE IMAGEREF IMAGES 
 IMPLICIT IN INC INCLUDE INCREMENTAL INDEX INK INKB INKEY 
 INPUT INSERT INST INSTR INSTRUMENT INT INTEGER INTERRUPT INVERSE 
 IS JAZZ JDOWN JFIRE JLEFT JMOVE JOY JOYCOUNT JOYDIR 
 JOYSTICK JOYX JOYY JRIGHT JSON JUP KALIMBA KEY KEYBOARD 
 KEYGET KEYSHIFT KEYSTATE KILL KOTO LATENCY LAVENDER LAYER LBOTTOM 
 LBOUND LCASE LEAD LEFT LEFTB LEFTW LEN LET LIGHT 
 LINE LITTLE LOAD LOCATE LOCK LOG LOGIN LONG LOOP 
 LOWER MAGENTA MARIMBA MASKED MAX MELODIC MEMCLR MEMCONT MEMDEF 
 MEMLEN MEMLOAD MEMOR MEMORIZE MEMORY MEMPEEK MEMPOS MEMRESTORE MEMSAVE 
 MESSAGE METALLIC MID MIDI MILLISECOND MILLISECONDS MIN MINUS MMOB 
 MMOVE MO5 MOB MOD MODE MONOCOLOR MONOCOLOUR MOVE MOVEMENT 
 MOVING MSPRITE MSX MSX1 MUL MULTI MULTICOLOR MULTICOLOUR MUSIC 
 MUTED NAME NAMED NARROW NEW NEWLINE NEXT NIBBLE NOISE 
 NONE NOP NORMAL NOT NOTE NRM NTSC NUMBER NYLON 
 OBOE OCARINA OF OFF OFFSET OLIVE ON ONLY OOHS 
 OPACITY OPEN OPTION OR ORANGE ORCHESTRA ORCHESTRAL ORGAN ORIGIN 
 OUT OVERDRIVEN OVERLAYED PAD PAGE PAINT PAL PALETTE PAN 
 PAPER PARALLEL PARAM PARSE PASSWORD PATH PAUSE PC128OP PC1403 
 PCLS PEACH PEEKD PEEKW PEN PER PERCUSSIVE PERIOD PI 
 PIANO PICCOLO PICK PING PINK PIPE PIZZICATO PLACE PLAY 
 PLOT PLOTR PLUS PLUS4 PMODE POINT POKED POKEW POKEY 
 POLYLINE POLYSYNTH POP PORT POSITION POSITIVE POST POUND POWERING 
 PRECISE PRECISION PRESERVE PRESET PRESS PRESSED PRINT PROBABILITY PROC 
 PROCEDURE PROGRAM PSET PSG PURPLE PUT QUERY RADIAN RAIN 
 RANDOM RANDOMIZE RANGE RASTER RATE RATIO RAW READ READONLY 
 READY REC RECEIVE RECORDER RECT RED REED REGISTER RELATIVE 
 RELEASE RELOC REMEMBER REPEAT REPLACE RESET RESIDENT RESOLUTION RESPAWN 
 RESTORE RESUME RETRIES RETURN REVERSE RGB RIGHT RIGHTB RIGHTW 
 RING RLE RND ROCK ROLL ROT ROTATE ROUNDS ROW 
 ROWS RUN RUNNING RUNSTOP SAFE SAVE SAWTOOTH SAX SBYTE 
 SC3000 SCALE SCAN SCANCODE SCANSHIFT SCI SCREEN SCROLL SEASHORE 
 SECOND SECTION SEEK SELECT SEMICOLON SEMIGRAPHIC SEND SEPARATOR SEQUENCE 
 SERIAL SET SG1000 SGN SHADES SHAKUHACHI SHAMISEN SHANAI SHARED 
 SHIFT SHOOT SHUFFLE SID SIGNED SIMPLE SIN SINGLE SIO 
 SITAR SIZE SJ2 SLAP SLASH SLEEP SLICE SLOT SN76489 
 SOPRANO SOUND SOUNDTRACK SOURCE SPACE SPAWN SPC SPEED SPEN 
 SPRITE SQR SQUARE STACK STANDARD START STATE STATIC STATUS 
 STEADY STEEL STEP STOP STORAGE STORE STR STRING STRINGS 
 STRIP STRPTR SUBSTRING SUCCESS SUM SUSPEND SWAP SWEEP SYNC 
 SYNTH SYNTHBRASS SYNTHSTRINGS SYS SYSTEM TAB TAIKO TAN TANGO 
 TARGET TASK TED TELEPHONE TEMPORARY TENOR TEXT TEXTADDRESS TEXTMAP 
 THEN THREAD THRESHOLD TI TICK TICKS TILE TILEMAP TILES 
 TILESET TIME TIMER TIMPANI TINKLE TO TO8 TOM TONK 
 TPS TRANSPARENCY TRANSPARENT TRAVEL TREMOLO TRIANGLE TROMBONE TRUE TRUMPET 
 TSB TUBA TUBULAR TURQUOISE TWEET TYPE UBOUND UCASE UGBASIC 
 UNBANKED UNFREEZE UNIQUE UNSIGNED UNTIL UP UPB UPDATE UPPER 
 UPW USE USING VAL VALUE VALUES VAR VARBANK VARBANKPTR 
 VARIABLES VARPTR VBL VCENTER VCENTRE VECTOR VERTICAL VG5000 VHCENTER 
 VHCENTRE VIBRAPHONE VIC VIC20 VIDEO VIOLA VIOLET VIOLIN VIRTUALIZED 
 VISIBLE VOICE VOLUME VSCROLL VZ200 WAIT WARM WAVE WEND 
 WHILE WHISTLE WHITE WIDE WIDTH WITH WITHOUT 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:

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