{{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 |}}]]