en.wikipedia.org, 2021-12-13 | Main page
---------------------------------------------------------------------------------------
Saved from web.archive.org, with Lynx.
---------------------------------------------------------------------------------------
   #alternate Edit this page Wikipedia (en)

Sinclair BASIC

   From Wikipedia, the free encyclopedia
   Jump to navigation Jump to search
   Dialect of the programming language BASIC

   This article has multiple issues. Please help improve it or discuss
   these issues on the talk page. (Learn how and when to remove these
   template messages)
   This article is written like a manual or guidebook. Please help rewrite
   this article from a descriptive, neutral point of view, and remove
   advice or instruction. (October 2012) (Learn how and when to remove
   this template message)
   This article needs additional citations for verification. Please help
   improve this article by adding citations to reliable sources. Unsourced
   material may be challenged and removed.
   Find sources: "Sinclair BASIC" - news . newspapers . books . scholar .
   JSTOR (October 2012) (Learn how and when to remove this template
   message)
   (Learn how and when to remove this template message)

   CAPTION: Sinclair BASIC

   Paradigm Imperative
   Designed by John Grant, Steve Vickers
   Developer Nine Tiles Networks,
   Sinclair Research
   First appeared 1979; 42 years ago (1979)
   Platform ZX80, ZX81, ZX Spectrum
   License Proprietary

   Sinclair BASIC is a dialect of the programming language BASIC used in
   the 8-bit home computers from Sinclair Research and Timex Sinclair. The
   Sinclair BASIC interpreter was made by Nine Tiles Networks Ltd.^[1]
   [ ]

Contents

     * 1 History
     * 2 Syntax
          + 2.1 Keywords
          + 2.2 Keyword entry
          + 2.3 Variable names
     * 3 Official versions
     * 4 Other versions, extensions, derivatives and successors
          + 4.1 Interpreters for the ZX Spectrum family
          + 4.2 Compilers for the ZX Spectrum family
          + 4.3 Derivatives and successors for other computers
     * 5 See also
     * 6 Notes
     * 7 References
     * 8 Bibliography
     * 9 External links

History[edit]

   Sinclair BASIC was originally developed in 1979 for the ZX80 by Nine
   Tiles. The programmers were John Grant, the owner of Nine Tiles, and
   Steve Vickers.

   It was initially an incomplete implementation of the 1978 American
   National Standards Institute (ANSI) minimal BASIC standard with integer
   arithmetic only, termed the 4K BASIC (for its ROM size) for the ZX80.
   It evolved through the floating-point 8K BASIC for the ZX81 and TS1000
   (which was also available as an upgrade for the ZX80^[2]), and became
   an almost complete version in the 16 KB ROM ZX Spectrum. It is present
   in all ZX Spectrum compatibles.

   As of 2015, interpreters exist for modern operating systems, and older
   systems, that allow Sinclair Basic to be used easily.

Syntax[edit]

   New BASIC programmers might start with a simple program, perhaps using
   the language's PRINT statement to display a message on the screen; a
   well-known and often-replicated example is Kernighan and Ritchie's
   Hello world program:
  10 PRINT "Hello, World!"

Keywords[edit]

   On the 16K/48K ZX Spectrum, there are 88 keywords in Sinclair BASIC,
   denoting commands (of which there are 50), functions and logical
   operators (31), and other keywords (16, including 9 which are also
   commands or functions):
   Keyword Parameters^[note 1] Entered using^[note 2] Type Summary
   ABS number EXTENDED MODE then G Function Returns the absolute value of
   number^[3]
   ACS number EXTENDED MODE then SYMBOL SHIFT+W Function Returns the
   arccosine of number^[4]
   AND SYMBOL SHIFT+Y Logical operator Returns true if both conditions on
   either side of the AND keyword are true, else returns false^[note
   3]^[5]
   ASN number EXTENDED MODE then SYMBOL SHIFT+Q Function Returns the
   arcsine of number^[6]
   AT line, column; SYMBOL SHIFT+I Other Used in a PRINT statement to
   print at the line and column specified;^[7] for example, PRINT AT
   5,10;"*" puts a star in column 10 of line 5.
   ATN number EXTENDED MODE then SYMBOL SHIFT+E Function Returns the
   arctangent of number^[4]
   ATTR (line, column) EXTENDED MODE then SYMBOL SHIFT+L Function Returns
   a byte containing information on the colours of the text cell on the
   screen, corresponding to the specified line and column;note that,
   unlike most Sinclair BASIC keywords, the parentheses are required; the
   first three bits indicate the ink (foreground)colour, the fourth, fifth
   and sixth bits the paper (background) colour, the seventh bit whether
   the colours are bright or not, and the eight, whether they are
   flashing^[8]
   BEEP duration, pitch EXTENDED MODE then SYMBOL SHIFT+Z Command Produces
   sound from the computer's speaker; duration is in seconds, pitch is in
   semitones above (positive value) or below (negative value) middle C^[9]
   BIN number EXTENDED MODE then B Other Indicates number is in binary
   notation^[10]
   BORDER number B Command Sets the outer border of the screen to the
   colour specified by the number^[note 4]^[11]
   BRIGHT number EXTENDED MODE then SYMBOL SHIFT+B Command/other Makes all
   following colours brighter if number is 1, or its normal shade if
   0^[note 5]^[12]
   CAT number EXTENDED MODE then SYMBOL SHIFT+9 Command Displays contents
   of ZX Microdrive specified by number^[note 6]^[13]
   CHR$ number EXTENDED MODE then W Function Returns the character
   corresponding to the decimal number in the computer's character
   set^[14]
   CIRCLE x, y, r EXTENDED MODE then SYMBOL SHIFT+H Command Draws a circle
   with its centre at coordinates (x,y) and radius r^[15]
   CLEAR address X Command Clears the screen,^[16] all variables and the
   GO SUB stack,^[17] and optionally sets the maximum RAM address to be
   used by BASIC^[18]
   CLOSE # number EXTENDED MODE then SYMBOL SHIFT+5 Command Closes the
   specified stream number for access^[note 6]
   CLS V Command Clears all text and graphics from the screen^[16]
   CODE string EXTENDED MODE then I Function/other Returns the number
   corresponding to the first character in string in the computer's
   character set;^[14] also used to save arbitrary chunks memory to tape,
   disk, etc. and load them back in -- see LOAD, SAVE and VERIFY for
   details
   CONTINUE C Command Restarts a program after it has stopped due to an
   error or the user pressing the CAPS SHIFT+SPACE or BREAK keys^[19]
   COPY Z Command Sends the currently displayed screen to the printer^[20]
   COS number EXTENDED MODE then W Function Returns the cosine of
   number^[21]
   DATA comma-separated values EXTENDED MODE then D Command/other Provides
   numbers and/or strings to use with the READ command^[22] and allows
   saving the contents of an array to tape when used with the SAVE
   command^[23] (as SAVE filename DATA array name()
   DEF FN name(variable) = operation EXTENDED MODE then 1 Command Defines
   a custom function that can be used with the FN command;function
   definitions must be of the form f(x)=operations, for example f(x)=x*2
   and the function name may not consist of more than one letter, plus a
   $-symbol if the function returns a string^[24]
   DIM variable(dimensions) D Command Declares an array with the specified
   dimensions, which may be multi-dimensional (for example, DIM a(10,10);
   if used with strings, the last dimension indicates the length of each
   of the strings (thus, DIM a$(2,5) is an array of two strings each of
   five characters long, and DIM b$(5) is one string of five
   characters)^[25]
   DRAW x, y [, r] W Command Draws a line in the current INK colour to
   coordinates (x,y) from the coordinates used by the previous PLOT or
   DRAW command; if the optional r is supplied, it indicates the radius of
   the circle segment to be drawn, in radians^[26]
   ERASE drive;"filename" EXTENDED MODE then SYMBOL SHIFT+7 Command
   Deletes the specified file from a ZX Microdrive^[note 6]^[27]
   EXP number EXTENDED MODE then X Function Returns e to the power
   number^[28]
   FLASH number EXTENDED MODE then SYMBOL SHIFT+V Command/other Makes all
   following text alternate its foreground (INK) and background (PAPER)
   colours^[note 5]
   FN function(value) EXTENDED MODE then SYMBOL SHIFT+2 Function Calls the
   function defined earlier in the program using DEF FN^[24]
   FORMAT drive;"name" EXTENDED MODE then SYMBOL SHIFT+0 Command Formats
   the cartridge in the indicated Microdrive and assigns it the identifier
   name^[note 6]^[29]
   FOR variable = start TO end F Command Starts a FOR-NEXT loop;^[30] the
   variable name may only be one character long^[31]
   GO SUB number H Command Makes the program jump to the BASIC line
   specified by number; when the program encounters the command RETURN, it
   will jump back to the statement after the GO SUB^[32]
   GO TO number G Command Makes the program jump to the BASIC line
   specified by number
   IF condition THEN U Command Evaluates the condition, and if true,
   executes the statement that follows the keyword THEN that must come
   after the condition,^[33] for example IF a=1 THEN LET b=2^[note 7]
   IN address EXTENDED MODE then SYMBOL SHIFT+I Function Returns a byte
   read from the hardware input/output port corresponding to the
   address^[34]
   INK number EXTENDED MODE then SYMBOL SHIFT+X Command/other Sets the
   foreground colour for text and graphics^[note 4]^[note 5]^[35]
   INKEY$ EXTENDED MODE then SYMBOL SHIFT+Z Function Returns a string
   representing the key being pressed on the keyboard at the moment the
   function is called, or an empty string if none is,^[36] but does not
   wait for a keypress
   INPUT [prompt,] variable I Command Halts program execution until the
   user types in something on the keyboard and presses the Enter key, then
   stores the entered value in the specified variable; if the optional
   prompt is supplied, this will be shown on the screen^[37]
   INT number EXTENDED MODE then R Function Returns the integer value of
   number, rounding down to the nearest whole number^[3] (thus, INT -1.1
   returns -2, not -1)
   INVERSE number EXTENDED MODE then SYMBOL SHIFT+M Command/other Reverses
   the colours on all following text if number is 1, so that it uses the
   current ink colour for the background and the current paper colour for
   the text, or sets them back to normal if number is 0^[note 5]^[38]
   LEN string EXTENDED MODE then K Function Returns the number of
   characters (bytes) in string^[39]
   LET variable=value L Command Assigns value to the named variable^[40]
   LINE EXTENDED MODE then SYMBOL SHIFT+3 Other
     * When used in an INPUT statement before a string variable, will not
       put quotation marks ("") around its prompt,^[7] for example INPUT
       "Name: "; LINE n$
     * When used in a SAVE statement so that when the BASIC program being
       saved is loaded again, it starts automatically at the line number
       indicated^[41]

   LIST [number] K Command Outputs the current BASIC program to the
   screen; if the optional number is provided, it omits all lines with a
   lower number^[42]
   LLIST [number] EXTENDED MODE then SYMBOL SHIFT+V Command As LIST except
   the listing is output to the printer^[20]
   LN number EXTENDED MODE then SYMBOL SHIFT+Z Function Returns the
   natural logarithm of number^[43]
   LOAD "[filename]" [CODE [address[, length]]| DATA variable()] J Command
   Loads a program or data into RAM from tape, ZX Microdrive, disk, etc.,
   deleting any existing BASIC program and variables;^[37] if an empty
   string ("") is provided, this loads the first program found, else it
   will search the tape for the program named in the string; if the
   optional CODE is provided, will load the program into memory at the
   address it had when it was saved, or at the specified address (length
   is intended as a safety, to try and load the right program in case
   there are multiple on the tape with the right name but of different
   lengths);^[44] if the optional DATA variable() is provided, will load
   the data from the tape into the array named variable()^[23]
   LPRINT text EXTENDED MODE then SYMBOL SHIFT+C Command As PRINT except
   output is sent to the printer^[20]
   MERGE "[filename]" EXTENDED MODE then SYMBOL SHIFT+T Command As LOAD,
   except it does not delete the current program and variables; if a line
   number exists in both, that of the newly loaded program overwrites the
   existing one^[45]
   MOVE stream1 TO stream2 EXTENDED MODE then SYMBOL SHIFT+6 Command Moves
   data from one stream (keyboard, screen, file, printer, network, etc.)
   to another^[note 6]^[46]
   NEW A Command Erases the current BASIC program and all variables^[37]
   NEXT variable N Command Closes a FOR-NEXT loop; the variable must match
   that of the corresponding FOR command^[47] -- "empty" NEXTs to refer to
   the immediately preceding FOR in the program are not allowed
   NOT condition SYMBOL SHIFT+S Logical operator Returns true if the
   condition is false, else returns false^[note 3]^[5]
   OPEN # stream EXTENDED MODE then SYMBOL SHIFT+4 Command Opens a stream
   for reading from and/or writing to^[note 6]^[48]
   OR SYMBOL SHIFT+Y Logical operator Returns true if either of the
   conditions on either side of the OR keyword are true, else returns
   false^[note 3]^[5]
   OUT address, value EXTENDED MODE then SYMBOL SHIFT+O Command Sends the
   value (a byte) to the hardware [Memory-mapped I/O|input/output port]
   corresponding to the address^[34]
   OVER number EXTENDED MODE then SYMBOL SHIFT+N Command/other Will make
   following text overprint with an XOR operation what is already on the
   screen if number is 1, instead of erasing it, or erase it if number is
   0^[note 5]^[38]
   PAPER number EXTENDED MODE then SYMBOL SHIFT+C Command/other Sets the
   background colour for text and graphics^[note 4]^[note 5]^[35]
   PAUSE delay M Command Halts program execution for the specified delay,
   in
   [MATH: <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle
   displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD">
   <mfrac> <mn>1</mn> <mn>50</mn> </mfrac> </mrow> </mstyle> </mrow>
   <annotation encoding="application/x-tex">{\displaystyle {\frac
   {1}{50}}}</annotation> </semantics> :MATH]
   {\displaystyle {\frac {1}{50}}} of a second in Europe or
   [MATH: <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle
   displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD">
   <mfrac> <mn>1</mn> <mn>60</mn> </mfrac> </mrow> </mstyle> </mrow>
   <annotation encoding="application/x-tex">{\displaystyle {\frac
   {1}{60}}}</annotation> </semantics> :MATH]
   {\displaystyle {\frac {1}{60}}} in North America^[49] (thus, PAUSE 50
   halts for one second in Europe)
   PEEK address EXTENDED MODE then O Function Returns a byte representing
   the contents of the memory location pointed to by address^[50]
   PI EXTENDED MODE then M Function Returns the value of pi^[43]
   PLOT x, y Q Command Draws a pixel in the current INK colour on the
   screen at the coordinates (x,y)^[51]
   POINT (x,y) EXTENDED MODE then SYMBOL SHIFT+8 Function Returns 1 if the
   pixel pointed at graphical coordinates (x,y) is currently in the ink
   (foreground) colour, else returns 0^[15]
   POKE address, value O Command Sets the contents of address in RAM to
   value^[52]
   PRINT [AT x,y;] text P Command Prints text (which must be a string or a
   number) to the screen;^[40] if used with AT, will print at the
   specified text coordinates, else in the first column of the line after
   that used by the last PRINT statement^[7]
   RANDOMIZE [number] T Command Initializes the random number generator;
   if used without a number (or with 0), it does this based on the
   computer's internal clock, else it uses the number supplied, which must
   be in the range [1,65535]^[53]
   READ variable EXTENDED MODE then A Command Takes a value from a DATA
   statement and stores it in the named variable: the first time READ is
   used, it gets the first value after the first DATA, the second time it
   gets the next one, and so on^[22]
   REM text E Command Begins a comment in the source code, meaning that
   everything after the REM statement is ignored, until the end of the
   line^[37] -- note this includes everything after a colon, which
   normally begins a new segment: 10 REM Nothing to see here : PRINT
   "Unprintable" will not produce any output, for example
   RESTORE [number] EXTENDED MODE then S Command Resets where READ
   commands look for values in DATA statements: if used without a number,
   the next READ will use the first DATA in the program, with a number it
   will use the first DATA on or after the line whose number is
   indicated^[54]
   RETURN Y Command Returns execution to the first statement following the
   last GO SUB command that was executed^[32]
   RND EXTENDED MODE then T Function Returns a pseudo-random number with
   eight significant figures in the range [0,1)^[55]
   RUN [number] R Command Starts the current BASIC program, from its first
   line if no number is specified, else from the line with that number (or
   the first one after, if it does not exist)^[56]
   SAVE "filename" [DATA variable() | LINE number] S Command Saves the
   current BASIC program to tape or other storage device, with the
   filename specified; if the optional LINE followed by a line number is
   used, then the program will start automatically at the indicated line
   number when it is LOADed back in; with the optional DATA, the command
   saves the contents of the array named by the variable instead of the
   current BASIC program^[23]
   SCREEN$ [(line, column)] EXTENDED MODE then SYMBOL SHIFT+
   Function/other As a function, identifies the character at the specified
   line and column on the screen.^[7] Used after the filename in a LOAD or
   SAVE command, indicates that the contents of the display memory should
   be loaded or saved; this essentially makes it a shortcut for CODE
   16384,6912^[note 8] but does not work with VERIFY because the contents
   of the display memory will be different by the time that command reads
   back the saved data;^[57]
   SGN number EXTENDED MODE then F Function Returns 1 if number is
   positive, 0 if it is 0, and -1 if it is negative^[3]
   SIN number EXTENDED MODE then Q Function Returns the sine of
   number^[21]
   STEP number SYMBOL SHIFT+D Other Indicates the interval used by a FOR
   statement,^[31] for example FOR n=2 TO 6 STEP 2 will skip n=3 and n=5
   in the loop
   STOP SYMBOL SHIFT+A Command Ends execution of the current program,
   exiting to the BASIC editor; can also be given when the computer is
   waiting for input using the INPUT command;^[56] once the program is
   stopped, it can be resumed with CONTINUE
   SQR number EXTENDED MODE then H Function Returns the square root of
   number^[24]
   STR$ number EXTENDED MODE then Y Function Returns the character from
   the computer's character set corresponding to number^[58]
   TAB column EXTENDED MODE then P Other In a PRINT statement, makes sure
   that the text to be output begins in the column specified, wrapping to
   the next line as necessary, but never more than one line^[16]
   TAN number EXTENDED MODE then E Function Returns the tangent of
   number^[59]
   THEN statement SYMBOL SHIFT+G Other Follows the condition in an IF
   statement to indicate what should happen when the condition evaluates
   to true^[note 7]^[33]
   TO SYMBOL SHIFT+F Other Indicates a range from the number to the left
   of TO to the number of the right of it, inclusive;^[60] when used with
   FOR both numbers must be supplied, while if used to slice strings,
   either may be left off to indicate the start or end of the string
   USR string or address EXTENDED MODE then L Function When called with a
   single-character string, this returns the memory address at which the
   glyph for the user-defined graphic character corresponding to that
   character is defined.^[10] If called with an address, it starts machine
   code execution at that address (thus making it one of the few Sinclair
   BASIC functions to have a Side effect) and returns the contents of the
   Z80's BC register pair.^[61]
   VAL string EXTENDED MODE then J Function Evaluates the string as a
   number and returns the result;^[62] this can perform calculations: VAL
   "1+2" returns 3, for example, and also evaluates variables and even
   other VAL statements: LET a=1: VAL "a+VAL ""2"""^[note 9] also returns
   3
   VAL$ string EXTENDED MODE then SYMBOL SHIFT+J Function Similar to VAL
   but evaluates the string as a string^[3]
   VERIFY "[filename]" EXTENDED MODE then SYMBOL SHIFT+R Command Reads a
   program from tape or other storage, much like LOAD, but instead of
   loading it into memory, compares it to the program that is currently in
   memory; this is intended to make sure the program, has been SAVEd
   correctly^[63]
   ZX Spectrum
   ZX Spectrum+

Keyword entry[edit]

   In 48K models and older, the keywords are entered via Sinclair's unique
   keyword entry system, as indicated on the table. The most common
   commands need one keystroke only; for example, pressing only P at the
   start of a line on a Spectrum produces the full command PRINT. Less
   frequent commands require more complex key sequences: BEEP (for
   example) is keyed by pressing CAPS SHIFT plus SYMBOL SHIFT to access
   extended mode (later models include an EXTENDED MODE key), keeping
   SYMBOL SHIFT held down and pressing Z. Keywords are colour-coded on the
   original Spectrum keyboard to indicate which mode is required:^[64]
     * White: key only
     * Red on the key itself: SYMBOL SHIFT plus the key
     * Green above the key: EXTENDED MODE followed by the key
     * Red below the key: EXTENDED MODE followed by SYMBOL SHIFT plus the
       key

   The ZX81 8K BASIC used the shorter forms GOTO, GOSUB, CONT and RAND,
   whereas the Spectrum used the longer forms GO TO, GO SUB, CONTINUE and
   RANDOMIZE. The ZX80 4K BASIC also used these longer forms but differed
   by using the spelling RANDOMISE. The ZX81 8K BASIC was the only version
   to use FAST, SCROLL, SLOW and UNPLOT. The ZX80 4K BASIC had the
   exclusive function TL$(); it was equivalent to the string operator (2
   TO ) in later versions.

   Unique code points are assigned in the ZX80 character set, ZX81
   character set and ZX Spectrum character set for each keyword or
   multi-character operator, i.e. <=, >=, <>, "" (tokenized on the ZX81
   only), ** (replaced with ^| on the Spectrum). These are expanded by
   referencing a token table in ROM. Thus, a keyword uses one byte of
   memory only, a significant saving over traditional letter-by-letter
   storage. This also meant that the BASIC interpreter could quickly
   determine any command or function by evaluating one byte, and that the
   keywords need not be reserved words like in other BASIC dialects or
   other programming languages, e.g., it is allowed to define a variable
   named PRINT and output its value with PRINT PRINT. This is also related
   to the syntax requirement that every line start with a command keyword,
   and pressing the one keypress for that command at the start of a line
   changes the editor from command mode to letter mode. Thus, variable
   assignment requires LET (i.e., LET a=1 not only a=1). This practice is
   also different from other BASIC dialects. Further, it meant that unlike
   other BASIC dialects, the interpreter needed no parentheses to identify
   functions; SIN x was sufficient, no SIN(x) needed (though the latter
   was allowed). The 4K BASIC ROM of the ZX80 had a short list of
   exceptions to this: the functions CHR$(), STR$(), TL$(), PEEK(),
   CODE(), RND(), USR() and ABS() did not have one-byte tokens but were
   typed in letter-by-letter and required the parentheses. They were
   listed as the INTEGRAL FUNCTIONS on a label above and to the right of
   the keyboard.^[65]

   The 128K Spectrum models, the ZX Spectrum 128, +2, +3, +2A, and +2B,
   also stored keywords internally in one-byte code points, but used a
   conventional letter-by-letter BASIC input system. They also introduced
   two new commands:
     * PLAY, which operated the 128k models' General Instrument AY-3-8910
       music chip
     * SPECTRUM, which switched the 128k Spectrum into a 48k Spectrum
       compatibility mode

   The original Spanish ZX Spectrum 128 included four additional commands
   in Spanish,^[66] one of which was undocumented. These can be translated
   as:
     * EDIT (to edit a line number or invoke the full screen string
       editor)
     * RENUM (to renumber the program lines)
     * DELETE (to delete program lines)
     * WIDTH (to set the column width of the RS232 device, but
       undocumented as the code was broken)

   Unlike the LEFT$(), MID$() and RIGHT$() functions used in the
   ubiquitous Microsoft BASIC dialects for home computers, parts of
   strings in Sinclair BASIC are accessed by numeric range. For example,
   a$(5 TO 10) gives a substring starting with the 5th and ending with the
   10th character of the variable a$. Thus, it is possible to replace the
   LEFT$() and RIGHT$() commands by simply omitting the left or right
   array position respectively; for example a$( TO 5) is equivalent to
   LEFT$(a$,5). Further, a$(5) alone is enough to replace MID$(a$,5,1).

Variable names[edit]

   Variables holding numeric values may be any length, while string and
   array variable names must consist of only one alphabetical character.
   Thus, LET a=5, LET Apples=5, LET a$="Hello", DIM a(10) and DIM a$(10)
   are all good, while LET Apples$="Fruit", DIM Apples(10) and DIM
   Apples$(10) are not.

   The long variable names allowed for numeric variables can include
   alphanumeric characters after the first character, so LET a0=5 is
   allowed but not LET 0a=5. The long variable names can also include
   spaces, which are ignored, so LET number of apples = 5 is the same as
   LET numberofapples = 5

Official versions[edit]

     * 4K BASIC is the original ZX80 BASIC with integer-only arithmetic,
       by John Grant of Nine Tiles for the ZX80, so named for residing in
       4 KiB read-only memory (ROM).
     * 8K BASIC is the ZX81 BASIC (also available as an upgrade for the
       ZX80^[2]), updated with floating-point arithmetic by Steve Vickers,
       so named for residing in 8 KiB ROM.
     * 48 BASIC is the BASIC for the original 16/48 kB random-access
       memory (RAM) ZX Spectrum (and clones), with colour and more
       peripherals added by Steve Vickers and John Grant. It resides in
       16 KiB ROM and began to be called 48 BASIC with the introduction of
       the ZX Spectrum 128 at which time the 16 kB Spectrum was no longer
       sold and most existing ones in use had been upgraded to 48 kB^[67]
     * 128 BASIC is the BASIC for the ZX Spectrum 128.^[68] It offers
       extra commands and uses letter-by-letter input.
     * +3 BASIC is the BASIC with disk support for the ZX Spectrum
       +3.^[67]
     * T/S 2000 BASIC was used on the Spectrum-compatible Timex Sinclair
       2068 (TS2068) and has the following six keywords and the ordinary
       Sinclair BASIC ones:
          + DELETE deletes BASIC program line ranges. CAPS SHIFT+0 with
            the K cursor produces the command DELETE.
          + FREE is a function that gives the amount of free RAM. PRINT
            FREE will show how much RAM is free.
          + ON ERR is an error-handling function mostly used as ON ERR GO
            TO or ON ERR CONT.
          + RESET can be used to reset the behaviour of ON ERR. It was
            also intended to reset peripherals.
          + SOUND controls the AY-3-8192 sound chip.
          + STICK is a function that gives the position of the internal
            joystick (Timex Sinclair 2090).
     * BASIC64 by Timex of Portugal, is a software extension^[69] to allow
       better Basic programming with the 512 *192 graphic mode available
       only on Timex 2000 series computers. This extension adds commands
       and does a complete memory remap to avoid the system overwriting
       the extended screen memory area. Two versions exist due to
       different memory maps - a version for TC2048 and a version for
       TS/TC2068.

Other versions, extensions, derivatives and successors[edit]

Interpreters for the ZX Spectrum family[edit]

   Several ZX Spectrum interpreters exist.^[70]
     * Beta BASIC by Dr. Andy Wright, was originally a BASIC extension,
       but became a full interpreter.
     * YS MegaBasic by Mike Leaman.^[70]
     * ZebraOS by Zebra Systems in New York, a cartridge version of T/S
       2000 BASIC that used the 512 *192 screen mode.
     * Sea Change ROM by Steve Vickers and Ian Logan, modified by Geoff
       Wearmouth, a replacement ROM with an enhanced Sinclair BASIC.^[71]
     * Gosh Wonderful by Geoff Wearmouth, a replacement ROM that fixes
       bugs and adds a tokenizer, stream lister, delete and renumber
       commands.^[70]^[72]
     * OpenSE BASIC (formerly SE BASIC) by Andrew Owen, a replacement ROM
       with bug fixes and many enhancements including ULAplus^[73]
       support, published as open source in 2011^[74]^[75]

Compilers for the ZX Spectrum family[edit]

   Several ZX Spectrum compilers exist.^[70]
     * HiSoft COLT Compiler (a.k.a. HiSoft COLT Integer Compiler)^[76]
     * HiSoft BASIC (a.k.a. HiSoft BASIC Compiler), an integer and
       floating-point capable compiler^[77]
     * Laser Compiler^[78]
     * Softek 'IS' Integer Compiler^[79] (successor to Softek Integer
       Compiler^[80])
     * Softek 'FP' Full Compiler^[81]
     * ZIP Compiler^[82]

Derivatives and successors for other computers[edit]

     * SuperBASIC, a much more advanced BASIC dialect introduced with the
       Sinclair QL personal computer, with some similarities to the
       earlier Sinclair BASICs
     * SAM Basic, the BASIC on the SAM Coupe, generally considered a ZX
       Spectrum clone
     * ROMU6 by Cesar and Juan Hernandez - MSX^[70]
     * Spectrum 48 by Whitby Computers - Commodore 64^[70]
     * Sparky eSinclair BASIC by Richard Kelsh, an operating system
       loosely based on ZX Spectrum BASIC - Zilog eZ80^[83]
     * Sinbas by Pavel Napravnik - DOS^[70]
     * Basic^[84] (and CheckBasic^[85]) by Philip Kendall - Unix
     * BINSIC^[86] by Adrian McMenamin, a reimplementation in Groovy
       closely modelled on ZX81 BASIC - Java
     * BASin^[87] by Paul Dunn, a complete Sinclair BASIC integrated
       development environment (IDE) based on a ZX Spectrum emulator^[70]
       - Windows
     * SpecBAS^[88] (a.k.a. SpecOS) by Paul Dunn, an integrated
       development environment (IDE) providing an enhanced superset of
       Sinclair BASIC - Windows, Linux, Pandora, and Raspberry Pi
     * ZX-Basicus^[89] by Juan-Antonio Fernandez-Madrigal, a synthesizer,
       analyzer, optimizer, interpreter and debugger of Sinclair BASIC 48K
       for PCs, freely downloadable for Linux and Windows.

See also[edit]

     * List of computer system emulators S: Sinclair ZX80
     * List of computer system emulators S: Sinclair ZX81
     * List of computer system emulators S: Sinclair ZX Spectrum and
       clones

Notes[edit]

    1. ^ Optional parameters are enclosed in [square brackets]
    2. ^ These assume the computer is in  K  (keyword) mode, which it
       normally is at the start of a line when entering BASIC. On the
       Spectrum 16K and 48K, Extended Mode is entered by pressing CAPS
       SHIFT and SYMBOL SHIFT simultaneously rather than the EXTENDED MODE
       key that is present on the Spectrum+ and later models.
    3. ^ ^a ^b ^c "False" in Sinclair BASIC equates to 0 (zero),
       everything else equates to "true". Functions that return
       true-or-false values thus actually return 0 for false and 1 for
       true, while AND usually returns the first of the conditions
       supplied for true, or 1 if no numerical values were given. For
       example, 6 AND 7 returns 6, while NOT 6=7 returns 1.
    4. ^ ^a ^b ^c The available numbers for colours are:

       1    2   3       4     5    6      7     0
       blue red magenta green cyan yellow white black
       In all colour-related commands, the number 8 may be used to
       indicate "transparent" while in INK and PAPER may also be set to 9
       for "contrast" -- that is, to put a dark colour on a light
       background or vice versa automatically.
    5. ^ ^a ^b ^c ^d ^e ^f INK, PAPER, FLASH, BRIGHT, OVER and INVERSE set
       attributes for outputting text and graphics to the screen. They can
       be used either as commands, to apply to all subsequent output until
       set again, or within a PRINT statement, to apply only from that
       point until the end of the statement.
    6. ^ ^a ^b ^c ^d ^e ^f CAT, ERASE, FORMAT and MOVE were originally
       designed to be used with peripherals, but at the launch of ZX
       Spectrum, they had not been completely implemented, such that their
       use generated an error message (Invalid Stream). Later with the aid
       of the ZX Interface 1 shadow ROM, they were used for the ZX
       Microdrive. (The shadow ROM was paged when the BASIC interpreter
       detected a syntax error, which is why most ZX Microdrive commands
       use a "*").
    7. ^ ^a ^b Unlike many other BASIC dialects, Sinclair Basic did not
       include the ELSE operator in the IF-THEN[-ELSE] clause. A
       workaround would be to use an IF-THEN-GO TO construct instead,
       bypassing the lines that would have been in an ELSE clause with the
       GO TO
    8. ^ The Spectrum's display memory starts at address 16384 and is 6912
       bytes long
    9. ^ A string inside a string must have its quotes doubled in Sinclair
       BASIC

References[edit]

    1. ^ Garfield, Simon (2010-02-28). "Sir Clive Sinclair: "I don't use a
       computer at all"". The Guardian. Retrieved 2011-05-23. "He is keen
       to credit [...], not least Nine Tiles, the company that made the
       Basic operating software."
    2. ^ ^a ^b "ZX80 - 8K BASIC ROM Upgrade". www.fruitcake.plus.com.
    3. ^ ^a ^b ^c ^d Vickers 1983, p. 59.
    4. ^ ^a ^b Vickers 1983, p. 70.
    5. ^ ^a ^b ^c Vickers 1983, p. 85.
    6. ^ Vickers 1983, p. 69-70.
    7. ^ ^a ^b ^c ^d Vickers 1983, p. 101.
    8. ^ Vickers 1983, p. 116.
    9. ^ Vickers 1983, p. 135.
   10. ^ ^a ^b Vickers 1983, p. 93.
   11. ^ Vickers 1983, p. 113.
   12. ^ Vickers 1983, p. 110-111.
   13. ^ Cambridge Communication 1983, p. 15.
   14. ^ ^a ^b Vickers 1983, p. 91.
   15. ^ ^a ^b Vickers 1983, p. 123.
   16. ^ ^a ^b ^c Vickers 1983, p. 103.
   17. ^ "World of Spectrum - Documentation - ZX Spectrum manual - Chapter
       24". worldofspectrum.org.
   18. ^ Vickers 1983, p. 168.
   19. ^ Vickers 1983, p. 19.
   20. ^ ^a ^b ^c Vickers 1983, p. 151.
   21. ^ ^a ^b Vickers 1983, p. 68.
   22. ^ ^a ^b Vickers 1983, p. 41.
   23. ^ ^a ^b ^c Vickers 1983, p. 142.
   24. ^ ^a ^b ^c Vickers 1983, p. 60.
   25. ^ Vickers 1983, p. 79-81.
   26. ^ Vickers 1983, p. 11-123.
   27. ^ Cambridge Communication 1983, p. 18.
   28. ^ Vickers 1983, p. 66.
   29. ^ Cambridge Communication 1983, p. 19.
   30. ^ Vickers 1983, p. 31.
   31. ^ ^a ^b Vickers 1983, p. 32.
   32. ^ ^a ^b Vickers 1983, p. 37.
   33. ^ ^a ^b Vickers 1983, p. 25.
   34. ^ ^a ^b Vickers 1983, p. 159.
   35. ^ ^a ^b Vickers 1983, p. 110.
   36. ^ Vickers 1983, p. 131.
   37. ^ ^a ^b ^c ^d Vickers 1983, p. 16.
   38. ^ ^a ^b Vickers 1983, p. 112.
   39. ^ Vickers 1983, p. 57.
   40. ^ ^a ^b Vickers 1983, p. 13.
   41. ^ Vickers 1983, p. 144.
   42. ^ Vickers 1983, p. 15.
   43. ^ ^a ^b Vickers 1983, p. 67.
   44. ^ Vickers 1983, p. 142-143.
   45. ^ Vickers 1983, p. 147.
   46. ^ Cambridge Communication 1983, p. 39.
   47. ^ Vickers 1983, p. 31-32.
   48. ^ Cambridge Communication 1983, p. 22.
   49. ^ Vickers 1983, p. 129.
   50. ^ Vickers 1983, p. 130.
   51. ^ Vickers 1983, p. 121.
   52. ^ Vickers 1983, p. 163.
   53. ^ Vickers 1983, p. 74.
   54. ^ Vickers 1983, p. 42.
   55. ^ Vickers 1983, p. 73.
   56. ^ ^a ^b Vickers 1983, p. 14.
   57. ^ Vickers 1983, p. 143.
   58. ^ Vickers 1983, p. 58.
   59. ^ Vickers 1983, p. 69.
   60. ^ Vickers 1983, p. 32, 51.
   61. ^ Vickers 1983, p. 180.
   62. ^ Vickers 1983.
   63. ^ Vickers 1983, p. 141.
   64. ^ Vickers 1983, p. 7-8.
   65. ^ "Picture of ZX80".
   66. ^ "Spectrum 128 ROM Disassembly - Spanish Spectrum 128".
       www.fruitcake.plus.com.
   67. ^ ^a ^b "World of Spectrum - Documentation - ZX Spectrum +3 -
       Chapter 7". worldofspectrum.org.
   68. ^ "World of Spectrum - Documentation - ZX Spectrum 128 Manual Page
       6". worldofspectrum.org.
   69. ^ "Timex tech info - Basic 64 for TC2048". timex.comboios.info.
   70. ^ ^a ^b ^c ^d ^e ^f ^g ^h
       http://www.worldofspectrum.org/sinclairbasic/
   71. ^ "Sinclair BASIC history - Sinclair Wiki".
       sinclair.wiki.zxnet.co.uk.
   72. ^ "The Incomplete Spectrum ROM Assembly". Archived from the
       original on 2015-09-01.
   73. ^ "ULAplus". sites.google.com.
   74. ^ "ZX Interface 2 - SE BASIC (3rd Party ROM Cartridge)".
       www.fruitcake.plus.com.
   75. ^ "OpenSE BASIC". SourceForge.
   76. ^ "World of Spectrum - HiSoft COLT Compiler". World of Spectrum.
   77. ^ "World of Spectrum - HiSoft BASIC". World of Spectrum.
   78. ^ "World of Spectrum - Laser Compiler". World of Spectrum.
   79. ^ "World of Spectrum - Softek 'IS' BASIC Compiler". World of
       Spectrum.
   80. ^ "World of Spectrum - Integer Compiler". World of Spectrum.
   81. ^ "World of Spectrum - Softek 'FP' Full Compiler". World of
       Spectrum.
   82. ^ "World of Spectrum - ZIP Compiler". World of Spectrum.
   83. ^ "Sparky eZX BASIC Project". rk-internet.com.
   84. ^ "Philip Kendall - Basic". www.shadowmagic.org.uk.
   85. ^ "Philip Kendall - CheckBasic". www.shadowmagic.org.uk.
   86. ^ "Binsic Is Not Sinclair Instruction Code". June 25, 2012.
   87. ^ "ZX Spin and BASin - ULAplus". sites.google.com.
   88. ^ "ZXDunny/SpecBAS". June 5, 2021 - via GitHub.
   89. ^ "ZX-Basicus: analyzer/synthesizer/optimizer/interpreter of
       Sinclair BASIC programs for the ZX Spectrum 48K". jafma.net.

Bibliography[edit]

     *

   Ardley, Neil (1984). Sinclair ZX Spectrum+ User Guide. Dorling
   Kindersley in association with Sinclair Research. ISBN 0-86318-080-9.



   Vickers, Steven (1982). Sinclair ZX Spectrum BASIC Programming.
   Sinclair Research.

     Vickers, Steven (1983). Sinclair ZX Spectrum BASIC Programming
   (2 ed.). Sinclair Research.

     Cambridge Communication (1983). Sinclair ZX Spectrum Microdrive and
   Interface 1 manual. Sinclair Research.

External links[edit]

     * Sinclair ZX Spectrum BASIC Programming: The original 1982 manual by
       Steven Vickers (referenced above)
     * Sinclair ZX81 Basic Programming: also by Vickers
     * The History of Sinclair BASIC: By Andrew Owen
     * Timex Computer World: Basic 64 user manual for Timex Computer 2048
     * Sinclair BASIC grammar: A LL(1) grammar specification for parsing
       Sinclair BASIC 16/48K

     * v
     * t
     * e

   Dialects of the BASIC programming language (list)

   Classic

   Atari
     * Atari BASIC
     * Atari ST BASIC
     * BASIC Programming (Atari 2600)

   Microsoft
     * Altair BASIC
     * Applesoft BASIC
     * Atari Microsoft BASIC
     * Color BASIC
     * Commodore BASIC
     * Disk Extended Color BASIC
     * Extended Color BASIC
     * GW-BASIC
     * IBM BASIC
     * MBASIC
     * Microsoft BASIC (MS BASIC for Macintosh)
     * MSX BASIC
     * TRS-80 BASICs (Level I, Level II/III)
     * Thomson BASIC 1.0

   Texas Instruments
     * TI BASIC (TI 99/4A)
     * TI-BASIC (calculators)
     * TI Extended BASIC (aka XBasic)
     * TI-BASIC 83

        Hewlett Packard
     * HP Time-Shared BASIC
     * Rocky Mountain BASIC

      Locomotive Software
     * Locomotive BASIC
     * Mallard BASIC

   Optimized Systems Software
     * BASIC A+
     * BASIC XE
     * BASIC XL

   Microcomputers
     * Atom BASIC
     * Integer BASIC
     * JR-BASIC
     * North Star BASIC
     * Sinclair BASIC
     * S-BASIC
     * Southampton BASIC System
     * SCELBAL
     * Vilnius BASIC

   Minicomputers
     * BASIC-11
     * Business Basic (B32, Data General)
     * Data General Extended BASIC
     * Wang BASIC

   Time sharing computers
     * BASIC-PLUS
     * VSI BASIC for OpenVMS
     * Dartmouth BASIC
     * SUPER BASIC

   Other
     * AlphaBasic
     * BASICODE
     * BAL
     * Casio BASIC
     * CBASIC
     * Chinese BASIC
     * Family BASIC
     * MacBASIC
     * PBASIC
     * SDS BASIC
     * STOS BASIC
     * Tiny Basic
     * Turbo-BASIC XL
     * UBASIC
     * ZBasic
     * ETBASIC [zh]

   Extenders
     * BASIC 8
     * Graphics BASIC
     * Simons' BASIC
     * Super Expander
     * Super Expander 64
     * YS MegaBasic

   Procedure-oriented

   Proprietary
     * AmigaBASIC
     * AMOS BASIC
     * ASIC
     * BasicX
     * BBC BASIC
     * Beta BASIC
     * FutureBASIC
     * GFA BASIC
     * GRASS
     * Liberty BASIC
     * LSE
     * MapBasic
     * Mobile BASIC
     * OWBasic
     * PowerBASIC
     * PureBasic
     * QBasic
     * QuickBASIC
     * SuperBASIC
     * SmileBASIC
     * ThinBasic
     * Tiger-BASIC
     * True BASIC
     * Turbo Basic
     * WordBASIC

   Free and open source
     * Basic-256
     * Basic4GL
     * DarkBASIC
     * Euphoria
     * Indic BASIC
     * Open Programming Language
     * SdlBasic
     * SmallBASIC
     * QB64
     * wxBasic
     * XBasic
     * Xblite
     * Yabasic

   With object extensions

   Proprietary
     * AutoIt
     * Chipmunk Basic
     * GLBasic
     * LotusScript
     * Morfik
     * PowerBASIC
     * ProvideX
     * Run BASIC
     * VBA
     * VBScript
     * VB 5 for Microsoft Excel 5.0
          + VSTO
          + VSTA
     * Embedded Visual Basic
     * WinWrap Basic

   Free and open source
     * BlitzMax
     * FreeBASIC
     * Microsoft Small Basic
     * Mono-Basic
     * OpenOffice Basic
     * ScriptBasic
     * Roslyn

   RAD designers
   Proprietary
     * CA-Realizer
     * Visual Basic (classic)
     * Jabaco
     * NS Basic
     * Phoenix Object Basic
     * RapidQ
     * Visual Basic (.Net)
     * Xojo

   Free and open source
     * Basic For Qt
     * B4X (Basic4android, Basic4ppc)
     * Gambas
     * HBasic
     * WinFBE / Visual FB Editor

   Retrieved from
   "https://en.wikipedia.org/w/index.php?title=Sinclair_BASIC&oldid=105195
   7325"

   Categories:
     * ZX Spectrum
     * Sinclair Research
     * BASIC interpreters
     * Discontinued BASICs
     * BASIC programming language family

   Hidden categories:
     * Articles with short description
     * Short description matches Wikidata
     * Use British English from November 2018
     * Wikipedia articles with style issues from October 2012
     * All articles with style issues
     * Articles needing additional references from October 2012
     * All articles needing additional references
     * Articles with multiple maintenance issues

Navigation menu

Personal tools

     * Not logged in
     * Talk
     * Contributions
     * Create account
     * Log in

Namespaces

     * Article
     * Talk

   [ ]

Variants expanded collapsed

Views

     * Read
     * Edit
     * View history

   [ ]

More expanded collapsed

Search

   ____________________ Search Go

Navigation

     * Main page
     * Contents
     * Current events
     * Random article
     * About Wikipedia
     * Contact us
     * Donate

Contribute

     * Help
     * Learn to edit
     * Community portal
     * Recent changes
     * Upload file

Tools

     * What links here
     * Related changes
     * Upload file
     * Special pages
     * Permanent link
     * Page information
     * Cite this page
     * Wikidata item

Print/export

     * Download as PDF
     * Printable version

Languages

     * Catal`a
     * Cestina
     * Espanol
     * Hrvatski
     * Italiano
     * Lietuviu
     * Nederlands
     * Polski
     * Portugues
     * Russkij
     * Slovenscina

   Edit links

     * This page was last edited on 26 October 2021, at 15:09 (UTC).
     * Text is available under the Creative Commons Attribution-ShareAlike
       License; additional terms may apply. By using this site, you agree
       to the Terms of Use and Privacy Policy. Wikipedia(R) is a
       registered trademark of the Wikimedia Foundation, Inc., a
       non-profit organization.

     * Privacy policy
     * About Wikipedia
     * Disclaimers
     * Contact Wikipedia
     * Mobile view
     * Developers
     * Statistics
     * Cookie statement

     * Wikimedia Foundation
     * Powered by MediaWiki
---------------------------------------------------------------------------------------
Saved from web.archive.org, with Lynx.
 
Main page
 
© 2022 Matei. No cookies®