{{htmlmetatags>metatag-robots=()
metatag-title=(Syntax | ugBASIC User Manual)
metatag-keywords=(ugBASIC,Commodore 64,Commodore PLUS/4,ZX Spectrum)
metatag-description=(An isomorphic language for retrocomputers)
metatag-media-og:image=(:ugbasic:logo-ugbasic-fb.png)
metatag-og:title=(Syntax | ugBASIC User Manual)
metatag-og:description=(An isomorphic language for retrocomputers)
}}
====== 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:
* 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 =====
[[https://ugbasic.iwashere.eu|{{ :ugbasic:user:logo-ugbasic.png?nolink&600 |}}]]