Manual del Locomotive Basic 1.1 del Amstrad CPC (inglés)

AMSTRAD     INSTRUCTIONS    by CHOIN Nicolas ©1995


IMPORTANT:

AMSTRAD CPC is a registered trademark of AMSTRAD Consumer Electronics Plc.

If you have questions or suggestions, or if you want to see a doc in this file please write to (join a reproduction):

CHOIN Nicolas

1 porte de MONS

59570 BAVAY

(FRANCE)

Information : Ce document est redige en anglais pour une plus large diffusion.  Si la demande est suffisante et si le temps me le permet, une version en francais verra jour. Ce document peut etre copie et diffuse librement dans sa forme originale.

COPYRIGHT : This document may be freely copied without charge : FREEWARE

Listing of BASIC keywords

 

Notation :

Special characters

& or &H Prefix for hexadecimal constant

&X      Prefix for binary constant

:       Separates statements typed on the same line

#       Prefix for stream director

Data types

<string expression>  less than 255 characters

numeric data can be either integer or real.

type markers are : % integer

! real

$ string

<stream expression> refers to a <numeric expression> which identifies a peripheric.

() are required as part of the command or function.

[] enclose optional items.

<> enclose various expressions which are described in the subsequent

description.

“” are parts of the BASIC program structure.

ABS

Function : Returns the absolute value of the given expression which primarily means that negative numbers are returned as positive.  Syntax : ABS (<numeric expression>)

  Example :   PRINT ABS(-12.86)

             12.86

Associated keywords : SGN

AFTER

Function : Invoke a subroutine after a given time period has elapsed. The first <integer expression> indicates the period of the delay, in unit of 1/50 second, and the second <integer expression> (in range 0...3), indicates which of the four avaible delay timers should be used.

Syntax : AFTER <integer expression>,<integer expression> GOSUB <line>

Example :   AFTER 150,2 GOSUB 210

Associated keywords : EVERY, REMAIN

ASC

Function : Gets the numeric value of the first character of a string as long as ASCII characters are used.

  Syntax :   ASC (<string expression>)

  Example :   PRINT ASC(“X”)

              88

Associated keywords : CHR$

ATN

Function : Calculates the arc tangent (forcing the <numeric expression> to a real number ranging from -PI/2 to PI/2) of the value specified.  Syntax :  ATN(<numeric expression>)

Example :  PRINT ATN(1)

0.785398163

Associated keywords : SIN, COS, TAN, DEG, RAD

AUTO

Function : Generate line numbers automatically. The <line number> sets the first line to be generated, in case you want to add to he end of an existing program. The value of the <increment> between line numbers, and the first line number to be generated. If it is not specified, the default value is 10 In the case of an existing program line is in danger to be overwritten, the BASIC inserts a star * after the line number generated as a warning.

Syntax : AUTO <line number>,<incriment>

Example : AUTO

or

AUTO 50

or

AUTO 200,50

BIN$

Function : Produces a string of binary digits that represents the value of the <unsigned integer expression>, filling with leading zeros to the number of digits instructed by the second <integer expression>.  Syntax : BIN$(<unsigned integer expression>[,integer expression>])

Example : PRINT BIN$(64,8)

01000000

Associated keywords : HEX$, STR$

BORDER

Function : To change the color of the border on the screen. If two color are specified, the border alternates between the two at the rate determined in the SPEED INK command, if given. The range of border colours is 0...26.  Syntax :  BORDER <colour>[,<colour>]

Example : BORDER 1

BORDER 26,0

Associated keywords : SPEED INK

CALL

Function : Allows an externally developed sub-routine to be invoked from BASIC. Use with caution, not a function for the inexperienced to experiment with.

Syntax : CALL <address expression>[,<list of parameter>]

Example : CALL &BD19

CALL &BB06

Associated keywords : UNT

CAT

Function : Start reading on the drive and display the names of all files found. This does not affect the program currently in memory, and so may be used to verify a program that has just been saved before altering the program memory.

Syntax : CAT

FILENAME BlockNumber Flag OK Flags indicate the type of recording made :

$ a BASIC program file

% a protected BASIC file

·        an ASCII text file

& a Binary file

Other characters may occur in this column if the file was not produced by BASIC.

If Read error replace Ok, then try to save again or replace the tape.

Associated keywords : LOAD, RUN, SAVE

CHAIN

CHAIN MERGE

Function : CHAIN loads a program from tape (or disk) into the memory; replacing the existing program. CHAIN MERGE merges a program from disk (or tape) into the current program memory. It adds the contents of a file to the current program in memory. The <line number expression> indicates the line number from which execution is to begin once the new program is chain merged. In the absence of it, BASIC will default to the lowest line number avaible. If no <file name> is stated, then BASIC will attempt to merge the first valid file encountered. If the first character of the filename is a !  then it is removed from the filename, and suppresses the usual messages generated by the reading process.

CHAIN MERGE retains all current variables although User Functions and open files are discarded. ON ERROR GOTO is turned off, a RESTORE is implemnted and the DEFINT, DEFREAL and DEFSTR settings are reset, and all active FOR, WHILE and GOSUB commands are forgotten. Protected files will not merge.  Syntax :     CHAIN <Filename>[,<line number expression>]

CHAIN MERGE <filename>[,<linenumber expression>][,DELETE <linenumber range>

Example :       CHAIN “TEST”, 450

Associated keywords : LOAD, MERGE

CHR$

Function : Convert a numeric value to its character equivalent, (using the AMSTRAD CPC character set)

Syntax :  CHR$(<integer expression>)

Example : PRINT CHR$(111)

o

Associated keywords : ASC, LEFT$, RIGHT$, MID$, STR$

CINT

Function : Converts the given value to a rounded integer in the range :

·        32768...32767 Syntax : CINT(<numeric expression>) Example :  PRINT CIN(276,86)

277

Associated keywords : CREAL, INT, FIX, ROUND, UNT

CLEAR

Function : Clears all variable and files.

Syntax : CLEAR

CLG

Function : Clear the graphics screen.

Syntax : CLG [<masked ink>]

Example : CLG

Associated keywords : CLS, ORIGIN

CLOSEIN

Function ; Close the input fie. commands such as NEW and CHAIN MERGE will abandon any open files.

Syntax : CLOSEIN

Associated keywords : OPENIN, CLOSEOUT

CLOSEOUT

Function : Close the output file.

Syntax : CLOSEOUT

Associated keywords : OPNOUT, CLOSEIN

CLS

Function ; Clear the given screen windows to its Paper Ink.

Syntax : CLS [#stream expression]

Example : CLS

CONT

Function : Continue program execution after a Break, STOP or END, as long

as the program has not been altered. Direct commands may be entered

Syntax : CONT

COS

Function : Calculates the cosine of a given value. The function defaults to radian measure unless specifially instructed otherwise by the DEG command.  Syntax : COS(<numeric expression>)

Example : PRINT COS(34)

·        0.848570274

Associated keywords : SIN, TAN, ATN, DEG, RAD

CREAL

Function : convert a value to a real number. (as opposed to integer).

Syntax : CREAL(<numeric expression>)

Associated keywords : CINT

DATA

Function : Declares consttant data for use within a program. One of the most widely used features of BASIC that lumps constant data in DATA statements for retrieval as required. The data type must be consistent with the variable invoking if. A DATA statement may appear anywhere in a program.

Syntax : DATA <list of constan>

Associated keywords : READ, RESTORE

DEF FN

Function : BASIC allows the program to define and use simple value returning functions. DEF FuNction is the definition part of this mechanism and creates program-specific function which works within the program in the same way as a function such a COS operates as a built-in function of BASIC.  It may be invoked throughout the program. Variable types must be consistent and the DEF FN command should be written in part of the program outside the execution loop.

Syntax : DEF FN<name>[(<formal parameters>)]=<general expression>

DEFINT

DEFSTR

DEFREAL

Function : Define default variable types where ‘type’ is integer, real or string. The variable will be set according to the first letter of the variable’s name which may be either upper or lower case.

Syntax : DEFtype <range(s) of letters>

Example : DEFINT I-N

DEFSTR A,X-Z

Associated keywords : LOAD, RUN, CHAIN, NEW, CLEAR

DEG

Function : Set degrees mode. The command sets to degree mode until instructed otherwise by a CLEAR, RAD or if any new program is loaded.

Syntax : DEG

Associated keywords : RAD

DELETE

Function : Removes part of the current program as defined in the <line number range> expression.

Syntax : DELETE <line number range>

Example : DELETE 50-100

DELETE 35

Associated keywords : NEW

DI

Function : Disable interrupts (other then the Break interrupt) until

  re-enable explicitly by EI or implicitly by the RETURN at the end of an

interrupt GOSUB routine.

Used when the program wishes to get on literally without interruption.

Syntax : DI

Associated keywords : EI

DIM

Function : Allocate space for arrays and specific maximum subscript values.  BASIC must be advised of the space to be reserved for an array, or it will default to 10. Once set either implicitly or explicitly, the size of the array may no be changed, or an error will result.

Syntax: DIM <list of subscripted variables>

Examples : DIM name$(20)

Associated keywords : ERASE

DRAW

Function : Draws a line on the screen from the current graphics cursor position to an absolute position. The co-ordinate positions remain unchanged between th three different screen modes.(640*400) Syntax : DRAW <X coordinate>,<y coordinate>[,<masked ink>]

Example : DRAW 150,200,1

DRAW 50,60

Associated keywords : DRAWR, PLOT, PLOTR, MOVE, MOVER, TEST, TESTR, XPOS,

YPOS, ORIGIN

DRAWR

Function : Draws a line on the screen from the current graphics cursor to a position relative to it.

Syntax : DRAWR <x offset>,<y offset>[,<masked ink>]

Example : DRAWR 10,10,2

Associated keywords : DRAW, PLOT, PLOTR, MOVE, MOVER, TEST, TESTR ,XPOS,

YPOS, ORIGIN

EDIT

Function : Edit a program line by calling for a specific line number.

Syntax : EDIT <line number>

Example : EDIT 10

Associated keywords : LIST

EI

Function : Enable interrupts disable by a DI command.

Syntax : DI

Associated keywords: DI

END

Fuction : End of program. An END is implicit in BASIC as the program passes the last line of instruction. END closes all fils and return to the direct mode. Sound queues will continue until empty.

Syntax : END

Associated keywords : STOP

ENT

Function : While a sound is being generated, it is possible to vary its tone A tine envelope defines how the tone is to be varied. The <envelope number> is an <integer expression> whose absolute value must be in the range 1...15, which specifies the tone envelope to set. If the <envelope number> is negative, then the envelope is repeated. Up to five <envelope sections> may be supplied, and each may take one of the forms :

<step count>,<step size>,<pause time>

or:=<tone period>,<pause time>

The first form specifies an incremental change relative to the current tone period setting. The second form specifies an absolute setting for the tone period. Where :

<step count> gives the number of steps in the section

·        an <integer expression> in the range 0..239 -

<step size> gives the amount by which to vary the tone period at each step

in the envelope - an <integer expression> yielding a value in the range

-128...+127

<pause time> gives the time to wait between steps

·        an <integer expression> spcifying the time in 0.01 seconds units. The expression must yield a value in the range 0...255 (where 0 is treated as 256) -

<tone period> gives the new setting for the period

·        an <integer expression> yielding a value in the range 0...4095

The SOUND command sets the initial tone period, and may specify on of the fifteen tone envelopes. If no envelope, or an envelope which has not been set up is specified, the the tone remains constant throughout the sound.  A tone envelope has no effect on the duration of the sound. If there are steps remaining in the tone envelope when the sound finihses, they are simply abandoned.

A repeating tone envelope will be restarted each time it finishes until the sound terminates.

The expressions in the tone envelope are evaluated when the command is executed and the results strored away for future use. Using the tone envelope does not cause the command to be re-executed.  Each time a given tone envelope is set, its previous value is lost.  Changing an envelope while a sound using it is active or pending will produce indeterminate effects. (but possibly interesting effects.) Specifying an envelope with no sections cancels any previous setting.  Any further use of the envelope will be ignored and the default used instead.

Syntax : ENT <envelope number>[,<envelope sections>]

Example : ENT 1,100,2,20:SOUND 1,100,500,4,0,1

Associated keywords : ENV, SOUND

ENV

Function : While a sound is being generated, it is possible to vary its volume using this command. A volume envelope consists of :

<step count>,<step size>,<pause time> and defines how the volume is to be varied, by specifying a number of steps in the range 0..127, the size of the step in the range -128..+127, and the pause time in 0.01 second intervals in the range 1..256.  The <envelope number> is an <integer expression> yielding a value in the range 1..15 specifying the volume envelope to set.

Up to five <envelope sections> may be given. Each may take one of the forms:

<step count>,<step size>,<pause time>

or :=<hardware envelopeW,<envelope period>

The first form specifies an envelope section under software control, where the paramaters are :

<step count> gives the number of steps in the section.  integer in the range 0..127 <step size> gives the amount by which to vary the amplitude at each step in the envelope. integer in the range -128..+127 <pause time> gives the time to wait between steps. An <integer expression> specifying the time in 1/100th’s of second. The expression must yield a value in the range 0..255 (where 0 is treated as 256) The second form specifies an envelope section to be executed directly by the sound harware, where :

<hardware envelope> is the value to be set into the envelope shape register (register 15,octal).

<envelope period> is the value to be set into the envelope period register (registers 13&14, octal).

Hardware envelope settings do not have an associated pause time, so the next section of the envelope is immediately executed. It is advisable therefor that the next step should have a pause of a suitable length. If there is no next step, then a pause of 2 second is taken.  The SOUND command sets the initial volume, and may specify one of the fifteen volume envelopes. If no envelope, or an envelope which has not been set up, is specified, then the volume remains constant throughout the sound.

Setting a <step size> of zero with a non-zero step count causes the current volume setting to be maintained.

The expressions in the amplitude anvelope are evaluated when the command is executed and the results stored away for future use. Using the amplitude envelope does not cause the command to be re-executed.  Each time a given amplitude envelope is set, its previous value is lost.  Changing an envelope while a sound using it is active or pending will produce indeterminate effects (but possibly ineteresting effects).  Specifying an envelope with no sections cancels any previous setting.  Any further use of the envelope will be ignored and the default used instead.

Syntax : ENV <envelope number>[,<envelope sections>]

Example : ENV 1,100,2,20:SOUND 1,100,500,4,1

Associated words : ENT, SOUND

EOF

Function : Tests to see if the tape inout is at the end of the file.

Return : -1 true : at the end

0 false : not the end

syntax : EOF

example : PRINT EOF

·        1

Associated keywords : OPENIN

ERASE

Function : When an array is no longer required, it may be ERASEd and the memory used be reclaimed ready for other use.

Syntax : ERASE <list of variable name>

Example : ERASE A$,m

Associated keywords : DIM

ERR

ERL

Function : These variable are used in error handling subroutines to discover the error number and line where the error occured.(-> error message listing)

Syntax : ERR

ERL

Associated keywords : ON ERROR, ERROR

ERROR

Function : Take error action with a given error number. The error may be one already used and recognised by BASIC (-> error message listing), in which wase the action taken is the same as would be taken if such an error had been detected by BASIC. Error numbers beyond those recognised by BASIC may be used by the program to signal its own erros.

Syntax : ERROR <integer expression>

Example : ERROR 12

Associated keywords : ON ERROR, ERR, ERL

EVERY

Function ; The COC maintains a real time clock. The EVERY command allows a BASIC program to arrange for subroutines to be called at regular intervals.  Four delay timers are avaible, specified by the second <integer expression> in the range 0..3 each of which may have a subroutine associated with it.

Syntax : EVERY <integer expression>[,<integer expression>] GOSUB <line>

Example : EVERY 500,2 GOSUB 80

Associated keywords : AFTER, REMAIN

EXP

Function : Calculates ‘E’ to the power given in a <numeric expression> (E=2.7182818)

Syntax : EXP(<numeric expression>)

Example : PRINT EXP(6.876)

968.743625

Associated keywords : LOG

FIX

Function : Unlike CINT, FIX merely removes the part of the

<numeric expression> to the right of the decimal point,and leaves an integer result, rounding towards zero.

Syntax : FIX(<numeric expression>)

Example : PRINT FIX(3.33333)

3

Associated keywords : CINT, INT, ROUND

FOR

Function : Execute a body or program a given number of times, stepping a control variable between a start and an end value. If not specified, STEP defaults to 1.

Syntax : FOR <simple variable>=<start> TO <end> [STEP <size>]

Example : FOR n=1 TO 100 STEP 2

Associated keywords : NEXT, WHILE

FRE

Function : Establishes how much memory remains unused by BASIC. The form FRE(“”) forces a ‘garbage collection’ before eturning a value for avaible space.

Syntax : FRE(<numeruc expression>) or FRE(<string expression>)

Example : PRINT FRE(0)

GOSUB

Function : Call a BASIC subroutine by branching to the specified line.

Syntax : GOSUB <line number>

Example : GOSUB 320

Associated keywords : RETURN

GOTO

Function : Branch to the specified line number.

Syntax : GOTO <line number>

Example : GOTO 60

HEX$

Function ; Converts the number given into Hexadecimal form. The second <integer expression> can be used to specify the minimum length of the result.

Syntax : HEX$(unsigned integer expression>[,<integer expression>])

Example : PRINT HEX$(65534)

FFFE

Associated keywords : BIN$, STR$

HIMEM

Syntaxe : This variable gives the adress of the highest byte of memory used by BASIC, and can be used in numeric expressions in the usual way.  Before resetting the highest byte of avaible memory using the MEMORY command, it is advisable to issue the command mm=HIMEN. You will thereafter be able to return to the previous memory capacity by issuing the command:

MEMORY mm

Syntax : HIMEM

Example : PRINT HIMEN

43903

Associated keywords : FRE, MEMORY

IF

Function : A very widely used command that is used to cnditionally determine branch points in a program. The logical part is evaluated, and if true the THEN or GOTO part is executed, if false, the program skips to the ELSE part, or merely passes onto the next line. The statements may be nested to any depth, limited by line lengh. The IF is determinated by the line end. It is not permissable to have further statements that are independent of the IF on the same line.

Syntax : IF <logical expression> THEN <option part> [ELSE <option part>]

IF <logical expression> GOTO <line number> [ELSE <option part>]

Example : IF a>3 THEN a=c ELSE a=a+1

IF a>b goto 200

Associated keywords : THEN, ELSE, GOTO, OR, AND, WHILE

INK

Function : Depending on the current Screnn Mode, a number of INKs are avaible. The colour, or colours, used for an INK may be changed by an INK command, according to the table of colour values.  Syntax : INK <ink>,<colour>[,<colour>]

Example : INK 0,1

INK 2,3,12

Associated keywords : PEN, PAPER

INKEY

Function : This function interrogates the keyboard to report which keys are being pressed. The keyboard is scanned at 1/50 sec.  Syntax : INKEY(<integer expression>)

Example : IF INKEY(55)=32 GOTO 30

Associated keywords : INPUT, INKEY$

INKEY$

Function : Reads a key from the keyboard to provide operator interaction without hitting [ENTER] after every answer.

Syntax : INKEY$

Example : IF INKEY$=”Y” GOTO 50

Associated keywords : INPUT, INKEY

INP

Function : Returns the input value from the I/O port specified in the adress Syntax : INP(<port number>)

Associated keywords : OUT, WAIT

INPUT

Function : Reads data from the stated stream. A semicolon after INPUT suppresses the carriage return typed at the end of the line being entered.  A semicolon after the <<quoted string> causes a question mark to be displayed. A comma suppresses the question mark. If an entry is made that is of the wrong type (eg a letter O was type instead of a 0 in a <numeric expression>, the the BASIC will prompt with : Redo from start and the original prompt text that you entered.  All responses must be terminated with an [ENTER]. The semicolon immediately after the <stream expression> has the effects of suppressing the carriage returned typed at the end of the line being entered, leaving the cursor at the end of the text just entered. Where a tape stream is indicated, no prompt is generated. If one is specified, it will be ignored by the tape software, so the same program may read from either stream.  One item will be read from the stream for each variable in the list given.

It must be compatible with the type specified in the INPUT command.

Unquoted string items are terminated as the case of numeric values.

Syntax : INPUT [#<stream expression>,][;][<quoted string>;]<variable>

or

INPUT [#<stream expression>,][;][<quoted string>,]<variable>

Associated keywords : LINE INPUT, READ, INKEY$

INSTR

Function : Searches the first <string expression> for the first occurance of the second <string expression>, where the optional number at the start indicates where to start the search - otherwise the searche begins at the first character of the first <string expression>.

Syntax :

INSTR([<integer expression>,]<string expression>,<string expression>)

Example :

PRINT INSTR(2,”AMSTRAD”,”TR”)

Associated keywords : MID$, LEFT$, RIGHT$

INT

Function : Rounds the number to the nearest lower integer, removing any fractional part. The same as FIX for positive numbers, but returns one less than FIX for negative numbers not already integers.  Syntax : INT(<numeric expression>)

Example : PRINT INT(-1.995)

·        2

Associated keywords : CINT, FIX, ROUND

JOY

Function : Reads a bit-significant result from the joystick specified in the <integer expression> (either 0 or 1)

     Bit   Decimal

  0 : UP      1

  1 : DOWN    2

  2 : LEFT    4

  3 : RIGHT   8

4 : FIRE 2  16

5 : FIRE 1  32

Syntax : JOY(<integer expression>)

Associated keywords : INKEY

KEY

Function : Fixes a new function key definition. There are thirty two keyboard ‘expansion’ characters in the range 128..159  When one of these characters is read it is expanded into the string associated with it.  Although the total number of expansion characters cannot exceed 100. The KEY command associateds a string with a given expansion character.  Syntax : KEY <integer expression>,<string expression> Example : KEY 139,”MODE 2:LIST”+CHR$(13)

Associated keywords : KEY DEF

KEY DEF

Function : Associates a character value to a key.

Syntax : KEY DEF <key number>,<repeat>[,<normal>[,<shifted>[,<control>]]]

Example : KEY DEF 46,1,63  converts the N key as a ?

Associated keywords : KEY

LEFT$

Function : Extracrs characters to the left of, and including the position specified in the <integer expression> from the given <string expression>.  If the <String expression> is shorter than the required lenghth, the whole <string expression> is returned.

Syntax : LEFT$(<string expression>,<integer expression>)

Example :  PRINT LEFT$(“AMSTRAD”,3)

AMS

Associated keywords : MID$, RIGHT$

LEN

Function : Returns a number corresponding to the number of all types of characters, including spaces, in the <string expression>.  Syntax : LEN(<string expression>)

Example : A$=”AMSTRAD”:PRINT LEN(A$)

7

LET 

Function : A remnant from early BASICS where varable assignments had to be ‘seen coming’, like PASCAL. No use apart from providing compatibility with the programs supplied in early BASIC training manuals.

Syntax : LET <variable>=<expression>

Example : LET a=25

LINE INPUT

Function : Reads an entire line form the stream indicated. The first optional semicolon supresses the echo of carriage return / line feed. The default <stream expression> is, as always #0 (screen)

Syntax :

LINE INPUT [<#<stream expression>,][;][quoted string;]<string variable>

LINE INPUT [<#<stream expression>,][;][quoted string,]<string variable>

Example : LINE INPUT “Your name”;N$

Associated keywords : READ, INPUT, INKEY$, INPUT$

LIST

Function : List program lines to the given screen. (#0 screen  #8 printer)

LISTing may be suspended by [ESC] and restarted by pressing the space bar.  A double [EST] will return BASIC to the direct mode. Listing may be performed from the start of a program to a given point, or from a specified line number to the program end, by omitting the first or last number in the <line number range> Syntax : LIST [<line number range>][,#<stream expression>]

Example : LIST -250

LIST 50-150

LIST

LOAD

Function : Read a BASIC program from a tape into memory, replacing any existing program, or if using the optional address expression, to load a binary file into memory.

Syntax : LOAD <filename>[,<adress expression>]

Example : LOAD “MYPROG”

LOCATE

Function : Moves the text cursor at the stream indicated, to the position specified by the x and y coordinates, which are relative to the origin of the stream (WINDOWD). Stream 0 is the default stream.

Syntax : LOCATE [#<stream expression>,]<x coord>,<y coord>

Example : LOCATE 10,15:PRINT “OK”

Associated keywords : WINDOWS

LOG

Function : Calculates the natural logarithm of <numeric expression> Syntax : LOG(<numeric expression>)

Example : PRINT LOG(9999)

9.21024037

Associated keywords : EXP, LOG10

LOG10

Function : Calculates the base 10 logarithm of <numeric expression> Syntax : LOG10(<numeric expression>)

Example : PRINT LOG10(9999)

3.99995657

Associated keywords : EXP, LOG

LOWER$

Function : Returns a new string expression the same as the input <string expression> but in which all upper case characters are converted to lowers case.

Syntax : LOWER$(<string expresstion>)

Example : A$=”AMSTraD”:PRINT LOWER$(A$)

amstrad

Associated keywords : UPPER$

MAX

Function : Extracts the largest value from the list of <numeric expression>.

Syntax : MAX(list of<numeric expression)

Example : PRINT MAX (1,2,3,4,5)

5

Associated keywords : MIN

MEMORY

Function : Reset BASIC memory parameters to change the amount of memory avauble by setting the adress of the highest byte. See the description of the keyword HIMEM. To examine the amount of memory, yse the FRE command.

Syntax : MEMORY <adress expression>

Example MEMORY &20AA

Associated keywords : HIMEM, FRE

MERGE

Function : Merge a program from tape into the current program memory. It adds the contents of a file to the current program in memory. If no file name is specified, then BASIC will attempt to merge the first valid file encountered on tape. If the first character of the filename is a ! , then it is removed from the filename, and has the effect of suppressing the usual messages generated by the reading process.  If you wish to merge a program into memory without overwritting the current program, then the current program lines should be RENUMbered to a range different from those in the incomming program.  All variables, User Functions and opened files are discarded. ON ERROR GOTO is turned off, a RESTORE is implemented and the DEFINT, DEFREAL and DEFSTR settings are reset. Protected files will not merge.  Syntax : MERGE [<filename>]

Example : MERGE “suite”

Associated keywords : LOAD, CHAIN, CHAIN MERGE

MID$

Function : MID$ specifies part of a string (a sub string) which can be used either as the destination of an assignement (MID$ as a command) or as an argument in a string expression (MID$ as a FUNCTION). The first <integer expression> specifies the position of the first character of the sub-string.

The second <integer expression> specifies the length  of the sub string to be returned. If omitted, this extends to the end of the original string.

Syntax :

MID$(<string>,<integer expression>[,<integer expression>])

Example :

A$=”AMSTRAD”:PRINT MID$(A$,2,4)

MSTR

Associated keywords : LEFT$, RIGHT$

MIN

Function : Extracts the smallest value from the list of <numeric expression> Syntax : MIN(<list of numeric expression>)

Example PRINT MIN(1,2,3,4)

1

Associated keywords : MAX

MODE

Function : Changes the screen mode (0,1 or 2) and clear the screen to ink 0 which may not be the current PAPER INK. All text and graphics WINDOWS are reset to the whole screen, and the text and graphics cursors homed to their respective origins.

Syntax : MODE winteger expression>

Example : MODE 2

Associated keywords : WINDOWS, ORIGIN

MOVE

Function : Moves  the graphics cursor to a position specified by the

absolute coordinates. YPOS and XPOS are the corresponding functions to

Syntax : MOVE <x coord>,<y coor>

Example : MOVE 20,30

Associated keywords : MOVER, PLOT, PLOTR, DRAW, DRAWR, ORIGIN, TEST, TESTR,

XPOS, YPOS

MOVER

Function : Moves the graphics cursor to a postion relative to the current coordinates. YPOS and XPOS are the corresponding functions to establish the current graphics cursor positon.

Syntax : MOVER <x offste>,<y offset>

Example : MOVER 20,30

Associated keywords : MOVE, PLOT, PLOTR, DRAW, DRAWR, TEST, TESTR, XPOS,

YPOS, ORIGIN

NEW

Function : Delete current program and variables. KEY definition are not lost and the display is not cleared.

Syntax : NEW

NEXT

Function : Delimits the end of a FOR loop. The NEXT command may be anonymous, or may nefer to its matching FOR.

Syntax : NEXT [<list of variable>]

Example : NEXT n

NEXT a,b

NEXT

Associated keywords : FOR

ON GOSUB

ON GOTO

Function : GOSUB to the subroutine, or GOTO the statement as directed by the result of the <integer expression>. If the result is 1, then the first line number in the list is chosen, if 2 then the second etc.

Syntax : ON <integer expression> GOSUB <list of line number>

ON <integer expression> GOTO <list of line number>

Associated keywords : GOTO, GOSUB

ON BREAK GOSUB

Function : Calls a sybroutine on a breaking from program execution by pressing [ESC] twice.

Syntax : ON BREAK GOSUB <line number>

Associated keywords : ON BREAK STOP, RETURN

ON BREAK STOP

Function : When issued in an ON BREAK interrupt subroutine, ON BREAK STOP disables the trap, but has no other immediate effects.

Syntax : ON BREAK STOP

Associated keywords : ON BREAK GOSUB

ON ERROR GOTO

Function : Go to a specified line number in the program on detecting an error.

Syntax : ON ERROR GOTO <line number>

Associated keywords : ERR, ERL, RESUME

ON SQ GOSUB

Function : Enable an interrupt for when there is a free slot in the given sound queue. The <channel> is an integer expression yielding one of the values :

1 : for channel A

2 : for channel B

3 : for channel C

Syntax : ON SQ (<channel>) GOSUB <line number>

Example : ON SQ (1) GOSUB 550

Associated keywords : SOUND, SQ

OPENIN

Function ; Opens an input file from tape which contains informations for use in the current program int the computer’s memory.  If the first character in the <file name> is ! the the display processing messages are suppressed.

Syntax : OPENIN <filename>

Example : 50 OPENIN “!DATA”

Associated keywords : CLOSEIN, OPENOUT

OPENOUT

Function : Opens an output file onto tape for use with the current program

in the computer’s memory. If the first character in the <fliename> is a !

the the displayed processing messages are suppressed. The program creates

the first block of data, in the file with the given name. Each block

consists of up to 2048 bytes of DATA

Syntax : OPENOUT <file name>

Example : OPENOUT “!DATA”

Warning : a NEW command will abandin any open file buffered, and data will be lost.

Associated keywords : CLOSEOUT, OPENIN

ORIGIN

Function ; determines the start point for the graphics cursor. The optional part of the command contains the instructions to set a new graphics windows, which will be operational in all screen modes due the pixel adressing technique employed. The ORIGIN is the point with coordinate 0,0 (grow up and right). If any of the windows edges are specified to a position that is off the screen, they are assumed to represent the furthest ‘visible’ postion in the given direction.

Syntax : ORIGIN <x>,<y>[,<left>,<right>,<top>,<bottom>]

Associated keywords : WINDOW

OUT

Function : Sends the value in the <integer expression> (which must lie in the range 0..255) to the prot specified in the <port number> by its address.

Associated keywords : INP, WAIT

PAPER

Function : Sets the background ink for characters. when characters are written to the text screen, the character cell is filled with the paper ink before the character is written - unless the transparent mode has been selected.

Syntax : PAPER [#<stream expression>,]<masked ink>

Example : PAPER 5

Associated keywords : INK, WINDOWS, PEN

PEEK

Function : Examine the contents of a memory location.

Syntax : PEEK(<adress expression>)

Associated keywords : POKE

PEN

Function : sets the ink to be used when drawing at the given screen stream,

defaulting to screen #0

Syntax : PEN [#<stream expression>,]<masked ink>

Example : PEN 1,3

Associated keywords : INK, PAPER

PI

Funtion : The value of the ratio between the circumference and the diameter of a circle.

Syntax : PI

Example : PRINT PI

3.14159265

Associated keywords : DEG, RAD

PLOT

Function : PLOT is the same as MOVE except that the pixel at the destination is written.

Syntax : PLOT <x coord>,<y coord>[,<masked ink>]

Associated keywords : DRAW, DRAWR, PLOTR, MOVE, MOVER, ORIGIN, TEST, TESTR,

XPOS, YPOS

PLOTR

Function : PLOTR is the same as DRAWR, except that only the pixel at the destination is written.

Syntax : PLOTR <x coord>,<y coord>[,<masked ink>]

Associated keywords : DRAW, DRAWR, PLOT, MOVE, MOVER, ORIGIN, TEST, TESTR,

XPOS, YPOS

POKE

Function : Provides direct acces to the machine memory, and loads the <integer expression> in the range 0..255 directly at the adress specified.  Not to be used by the unwary.

Syntax : POKE <adress expression>,<integer expression>

Example : POKE &00FF,10

Associated keywords : PEEK

POS

Function : Establishes the current position for a given stream. In this instance there is no default <stream expression>.  Screen : return the current X coordinare of the text cursor, relative to the current window origin. The top left corner is represent as 1,1 Printer : Returns the carriage position, where 1 is the left margin. All characters with ASCII reference numbers greater than &1F(31) are included.  Tape output stream : As for the printer.

Syntax : POS(#<stream exprression>)

Example : PRINT POS(#0)

1

Associated keywords : VPOS

PRINT

Function : Print data at <stream expression> using the format specified.  Where no format are specified, BASIC prints in ‘free format’, where a comma followinf the <print item> will send the printed item to start at the next print >ONE (default to 13). A semicolon simply separates the expressions.  SPC(<integer expression>) prints the given number of spaces, defaulting to zero if the <numeric expression> is less than 1. SPC does not required to be terminated by a comma or a semicolon - a semicolon is assumed at all times.

TAB(<integer expression>) prints spacces to move to the given print position if less than 1, 1 is assumed.

If the required position is equal to or exceeds the current position, spaces are printed to reach the required postion - if less, then the carriage return is sent, followed by spaces to reach the required postion. TAB does not required termination by a comma or a semicolon.

Syntax :

PRINT [#<stream expression>,][<print list>][<USING clause>][<separator>]

or

SPC(<integer expression>)

TAB(<ineger expression>)

stream expression : #0  screen

#8  printer

#9  file

Example : PRINT “AMS”+”TRAD”

AMSTRAD

PRINT #8,”Amstrad”

[printer]

Amstrad

Associated keywirds : USING, TAB, SPC

RAD

Function : Set radians mode.

Syntax : RAD

Associated keywords : DEG

RANDOMIZE

Function : BASIC’s random number generator produces a pseudo random sequence in which each number depends on the previous number - starting from a given number, the sequence is always the same. RANDOMIZE sets a new initial value for the random number generator, either to a given value, or to a value entered by the operator. RANDOMIZE TIME will produce a sequence that will be difficult to repeat.

Syntax : RANDOMIZE [<numeric expression>]

Example : RANDOMIZE 20

RANDOMIZE TIME

Associated keywords : RND

READ

Function : READ fetches data from the list of constants supplied in the corresponding DATA statements and assigns it to variables, automatically stepping to the next item int the data statement. RESTORE will return the pointer to the begining of the DATA statement. (see DATA keyword)

Syntax : READ <list of variable>

Associated keywords : DATA, RESTORE

RELEASE

Function : When a sound is placed on a sound queue it may include a ‘hold’ state. If any of the channel specified in this channel are in ‘hold’ state, then they are released. The expression to identify the sound channel is ‘bit signifiant’ :

A=bit 0

B=bit 1

C=bit2

Thus 4 releases Queue C.

Syntax : RELEASE <sound channels>

Example : RELEASE 4

Associated keywords : SOUND

REM

Function : Use to plade REMarks in programs without affecting it in any way. The : is ignored. REM must be in the end of a line.

Syntax : REM <comments>

Example : 10 SOUND 1,100,100,2 : REM this is a sound

REMAIN

Function : Disables the specified delay timer (in the rang 0..3) Reads the remaining count from the delay timer. Zero is returned if the delay timer was not enabled.

Syntax : REMAIN(<integer expression>)

Associated keywords : AFTER, EVERY

RENUM

Function : Renumber program lines from the line specified, using the increment specified. The <new line number> gives the first number for the new sequence, defaulting to 10. The <old line number> identifies where RENUM is to commence , and assumes the first program line if omitted.  The <increment> sets the increment to use between the line number, again defaulting to 10. RENUM takes care of all GOTO, GOSUB and other line calls.  Line numbers are valid in the range 1...65535 Syntax :

RENUM [<new line number>][,[<old line number>][,<increment>]]

Example :  RENUM

RENUM 50,100

RESTORE

Function : Restores the postion of the reading pointer back of the beginning of the DATA statements specified in the optional <line number>.  Omitting <line number> restores the postion to the beginning of the first DATA statement.

Syntax : RESTORE [<line number>]

Associated keywords : READ, DATA

RESUME

RESUME NEXT 

Function : When an error has been trapped by an ON ERROR GOTO command, and has been processed, RESUME allows normal program execution to continue, the resuming line number being optionally specifiable. If not specified, the line in which the error has occured is returned to. RESUME NEXT returns to the line immediatly following the statements in which the error was detected Syntax : RESUME [<line number>]

or RESUME NEXT

Associated keywords : ON ERROR GOTO

RETURN

Function : Signals the end of a subroutine called by a GOSUB command.  Returns to continue processing at the point ather the GOSUB which invoked it.

Syntax : RETURN

Associated keywords : GOSUB, ON x GOSUB, ON SQ GOSUB, AFTER n GOSUB,

EVERY n GOSUB, ON BREAK GOSUB

RIGHT$

Function : Extracts the number of characters specified by the <integer expression> from the right of the <string expression>. If it is shorter than the required length, the whole <string expression> is returned.

Syntax : RIGHT$(<string expression>,<integer expression>)

Example : a$=”AMSTRAD”:PRINT RIGHT$(a$,3”

RAD

Associated keywords : MID$, LEFT$

RND

Function : Fetches a random number, which may be the next in sequence, a repeat of the last one, or the first in a new sequence. RND(0) returns a copy of the last random number generated.

Syntax : RND[(numeric expression)]

Associated keywords : RANDOMIZE

ROUND

Function : Rounds <numeric expression> to a number of decimals places or power of ten specified in <integer expression>. If the <integer expression> is less than zero, then value is rounded to give an absolute integer followed by a number of zeros determined by the <integer expression> before the decimal point.

Syntax : ROUND(<numeric expression>[,<integer expression>])

Associated keywords : INT, FIX, CINT, ABS

RUN

Function :RUN <name> loads a program from a cassette and start executing it.  if RUN “  loads the first valid program of the tape. If the first character of the expression is a ! then the displayed processing messages are suppressed.

RUN starts executing the current program at the specified line.

Syntax :

RUN <string expression>

RUN [<line number>]

Example : RUN

RUN 250

RUN”WELCOME”

Associated keywords : LOAD

SAVE

Function : Save the program in memory with name <file name>.

Binary parameters comprise <start adress>,<file length>[,<entry pint>]

,A saves program in ASCII

,P protects file

,B saves an aread of memory as a binary fie.

Syntax : SAVE <filename>[,<file type>][,<binary parameters>]

Example : SAVE “PROG”,P

SAVE “BINARY”,b,10000,16000,10003

Associated keywords : LOAD, RUN, MERGE, CHAIN, CHAIN MERGE

SGN

Function : Determines the sign of the <numeric expression>. Returns:

·        1 if <0 0 if =0 1 if >0 Syntax : SGN(<numeric expression>) Associated keywords : ABS

SIN

Function : Calculates the real value for the Sine of <numeric expression>.

Defaulting to the radian mesure.

Syntax : SIN(<numeric expression>)

Example : PRINT SIN(PI/2)

1

Associated keywords : COS, TAN, ATN, DEG, RAD

SOUND

Form of the command : SOUND G,H,I,J,K,L,M

Where : G: Channel status

H: Tone period

I: Duration

J: Volume

K: Volume envelope

M: Noise period

G : Channel status

value reange 1..255

In the CPC it is possible to play up to three different SOUNDs at once. This is achieved by having three SOUND channels (or queues), referred to as A,B,C The input integer range is given in decimal form, but when converted to an 8 bit value (thus yielding a bit signifiant result), the active bits specify the following commands:

DECIMAL BIT    COMMAND

1        0 LSB  send SOUND to channel A

   2       1      send SOUND to channel B

   4       2      send SOUND to channel C

   8       3      rendezvous with channel A

   16      4      rendezvous with channel B

   32      5      rendezvous with channel C

   64      6      hold

   128     7 MSB  flush

MSB : Most Signifiant Bit

LSB : Least Signifiant Bit

integer entry examples :

2        = send the following sound to output channel B

98 = 64+32+2

=send the following sound to output channel B, rendezvous with channel C

and hold.

H : Tone period

Value range 0..4095

Enters a period that sets the frequency of the sound to be palyed (pitch the

note). The frequency can be evaluated form the formula :

frequency=12500/period

I : Duration

Any integer value in the permissable range -32768..+32767 default if omitted : 20 For values greater than zero the value entered represents the duration in 1/100ths second. When equal to zero, the duration is governed by the length of the volume envelope specified.

Where the duration is less than zero, the positive value of this number gives the number of times the volume envelope specified should be repeated.

J: Volume

An ineger value in the range 0..15 (0..7 if no volume envelope is specified) default if omitted : 12 (4 where no volume envelope is specified)

K: Volume Envelope

An ineger value in the range 0..15

default : 0 (if omitted)

The value used specifies a pre-defined envelope. To define an envelope use the ENV commad. A permanent definition is volume <envelope number> 0, this cannot be changed by the ENV command and is set to 2 second consantly at the ‘volume level’.

L : Tone envelope

An integer value in the range ..15

default if omitted : 0

The value used specifies a pre-defined envelope.

M : Noise Period

An integer value in the range 0..15

default if omitted : 0

Specifies a noise to add to the SOUND. Only one noise at the same time.

Example : SOUND 1,200,1000,7,0,0,1

Associated keywords : ENV, ENT

SPACE$

Function : Creates a string of spaces of the given length.

Syntax : SPACE$(<integer expression>)

Example : PRINT SPACE$(5);+”I”

I

Associated keywords : PRINT, SPC, TAB

SPEED INK

Function : The INK and BORDER commands allow two colors to be associated with each Ink, in which case the INK alternates between the two colours. The first <integer expression> specifies the time for the first INK specified to be used, an the 2nd set the 2nd ink. Times between colour changes are mesured in 1/50 second. (50 Hz mains version)

Syntax : SPEED INK <integer expression>,<integer expression>

Example : BORDER 12,9:SPEED INK 50,20

Associated keywords : INK, BORDER

SPEED KEY

Function : Sets the delays of autorepeat keys. The default rate is set to 30,2. Not all keys repeat.

Syntax : SPEED KEY <start delay>,<repeat period>

Example : SPEED KEY 20,3

Associated keywords : KEY DEF

SPEED WRITE

Function : The xassette can be written at either 2000 baud (where <integer expression> is 1), or the default of 1000 baud ( <integer expression> is 0).  1000 baud rate is recommended for maximum reliability.

Syntax : SPEED WRITE <integer expression>

Example : SPEED WRITE 1 : SAVE”PROG”

Associated keywords : SAVE

SQ

Function : Check the number of free entries in the queue for a given channel where channel A is 1, B is 2 and C is 3. The function determines whether the channel is active or not. The result is bit signifiant :

0,1,2 indicate the number of free entries in the queue

3,4,5 indicate the redezvous state

6 is set if the head of the queue is held

7 is set if  the channel is currently active

Syntax : SQ(<channel>)

Associated keywords : SOUND, ON SQ GOSUB

SQR

Function : Returns the square root of <numeric expression> Syntax : SQR(<numeric expression>)

Example : PRINT SQR(9)

3

STOP

Function : Stops execution of a program, but it can be restarted by the CONT command.

Syntax : STOP

Associated keywords : CONT, END

STR$

Function : Converts the <numeric expression> to a decimal string representation in the same form as used in the PRINT command.  Syntax : STR$(<numeric expression>)

Example : PRINT STR$(&766)

1894

Associated keywords : VAL, BIN$, HEX$

STRING$

Function : Delivers a <string expression> consisting of the specified character repeated a number of times.

Syntax : STRING$(<integer expression>,<character specifier>)

Example : PRINT STRING$(&5,”#”)

Associated keywords : SPACE$

SYMBOL

Function : Redefines the representation of a given character that has first been specified in the SYMBOL AFTER command. Character are on 8x8 matrix.

Syntax : SYMBOL <character number>,<list of row>

Example : SYMBOL AFTER 80:SYMBOL 82,&80,&40,&20,&10,&8,&4,&2,&1

Associated keywords : SYMBOL AFTER

SYMBOL AFTER

Function : Defines the number of user definable charaters.

Syntax : SYMBOL AFTER <integer expression>

Example : SYMBOL AFTER 32

Associated keywords : SYMBOL

TAG

Function : Text send to a given stream may be redirected to be written at the graphics cursor posqition. This allows text and symbol to be mixed with graphics.

Syntax : TAG [#<stream expression>] default is #0 (screen)

Associated keywords : TAGOFF

TAGOFF

Function : Cancels the TAG for a given stream.

Syntax : TAGOOFF [#<stream expression>]

Associated keywords : TAG

TAN

Function : Calculates the tangent for the angles given in <numeric expression> which must be in the range -200,000...+20,000.

Default in RAD

Syntax : TAN(<numeric expression>)

Associated keywords : COS, SIN, ATN, DEG, RAD

TEST

Function : Reports the value of the ink currently at the specified graphics screen location.

Syntax : TEST (<x coord>,<y coord>)

Example : PRINT TEST(300,250)

5

Associated keywords : TESTR, MOVE, MOVER, PLOT, PLOTR, DRAW, DRAWR

TESTR

Function : Moves the graphics cursor to the specified location and reports the value of the ink there.

Syntax : TESTR(<x offset>,<y offset>)

Associated keywords : TEST, MOVE, MOVER, PLOT, PLOTR, DRAW, DRAWR

TIME

Function : Reports the elaplsed time since switch on, excluding periods when reading or writing the tape. The units of time are 1/300th of second.

Syntax : TIME

TRON

TROFF

Function : BASIC includes the facility to trace the execution of a program, by reporting the number of each line in square brackets [].

Syntax :  TRON

TROFF

UNT

Function : Converts an unsigned 16 bit integer in the range 0..65535.  Returns an integer value in the range -32768..+32767 Syntax : UNT(<adress expression>)

Example : PRINT UNT(65535)

·        1

Associated keywords : INT, FIX, CINT, ROUND

UPPER$

Function : Returns a new string expression the same as input but in which all lower case characters are converted to upper case.  Syntax : UPPER$(<string expression>)

Example : PRINT UPPER$(“Amstrad”)

AMSTRAD

Associated keywords : LOWER$

VAL

Function : extracts a <numeric expression> from the beginning of the <string expression>. The opposite of STR$.

Syntax : VAL(<string expression>)

Associated keywords : STR$

VPOS

Function : Returns the vertical position of the text cursor of the

<stream expression>

Syntax : VPOS(#<stream expression>)

Associated keywords : POS

WAIT

Function : Suspends operation until a given I/O port returns a particular value in the range 0..255.

Syntax : WAIT <port number>,<mask>[,<inversion>]

Example : WAIT &FF34,20,25

Associated keywords : INP, OUT

WEND

Syntax :The WHILE/WEND loop repeatedly executes a boby of program until a given condition is true.

Syntax : WEND

Associated keywords : WHILE

WHILE

Function : A WHILE loop repeatedly executes a body of program until a given condition is true. The WHILE command defines the head of the loop, and gives the condition. The WEND command terminates the WHILE loop.

Syntax : WHILE <logical expression>

Example : WHILE a=0

Associated keywords : WEND

WIDTH

Function : Tells to BASIC how wide the printer is in characters, this information allows BASIC to insert carriage returns as required when printing.

Syntax : WIDTH <integer expression>

Example : WIDTH 86

Associated keywords : PRINT, POS

WINDOWS

Function : Sets a text window for a given screen stream.

Syntax : WINDOW [#<stream expression>,]<left>,<right>,<top>,<bottom>

Example : WINDOW 10,30,7,18:PAPER 2:PEN0:CLS

Associated keywords : ORIGIN

WINDOWS SWAP

Function : Exchanges the text windows.

Syntax : WINDOWS SWAP <stream expression>,<stream expression>

Example : WINDOWS SWAP 0,2

Associated keywords : WINDOWS, PEN, PAPER, TAG

WRITE

Function : Prints the values of a number of expressions to the given stream, separating them by commas and enclosing strings in double quotes. Used mainly for outputting data to cassette files.  Syntax : WRITE [#<stream expression>,][<write list>]

XPOS

Function : Establishes the horizontal position of the graphics cursor.

Syntax : XPOS

Associated keywords : YPOS, MOVE, MOVER, ORIGIN

YPOS

Function : Establish the vertical postion of the graphics cursor.

Syntax : YPOS

Associated keywords : XPOS, MOVE, MOVER, ORIGIN

ZONE

Function : Changes the width of the print zone used in PRINT, from the default value of 13 to a new value in the range 1..255. Reset by NEW, LOAD CHAIN and RUN” commands.

Syntax : ZONE <intager expression>

Example : ZONE 19

Associated keywords : PRINT, WIDTH

Ú¿

ÚÙ DISPLAY SPECIFICATION

ÀÙ

  MODE    Number of inks    Vert dots   Horiz dots   Horiz chars

1 Normal         4             200         320           40

2 High Res       2             200         640           80

0 Multi Colour  16             200         160           20

 GREY LEVEL    COLOUR

 0              Black

1   Blue

2   Bright blue

3   Red

4   Magenta

5   Mauve

6   Bright red

7   Purple

8   Bright magenta

9   Green

10 Cyan

11 Sky blue

12 Yellow

13 White

14 Pastel blue

15 Orange

16 Pink

17 Pastel magenta

18 Bright green

19 sea green

20 Bright cyan

21 Lime green

22 Pastel green

23 Pastel cyan

24 Bright yellow

25 Pastel yellow

26 Bright white

Ä¿

Ä´ Error codes

ÄÙ

1 Unexepected NEXT

A NEXT command has been encountered while not in a FOR loop, or the control variable in the NEXT command does not match in the FOR.

2 Syntax Error

BASIC cannot understand the given line because a construct within is not legal

3 Unexpected RETURN

A RETURN command has been encoutered when not in a subroutine.

4 DATA exhausted

A READ command has attempted to read beyond the end of the last DATA.

5 Improper argument

This is a general purpose error. The value of a function’s argument, or a command parameter is invalid in some way.

6 Overflow

The result of an arithmetic operation has overflowed. This may be a floating point overflow, in which case some operation has yielded a value greater than 1.7E-38 Alternatively, this may be result of a failed attempt to change a floating point number to a 16 bit signed integer.

7 Memory full

The current program or its variables may be simply too big, or the control structure is too deeply nested (FOR, GOSUB, WHILE)

8 Line does not exist

The line refered cannot be found

9 Subscript out of range

One of the subscripts in an aray reference is too big or too small.

10 Array albready dimensioned

One of the arrays in a DIM statement has already been declared.

11 Division by zero

12 Invalid direct command

The last command attempted is not valid in Direct Mode.

13 Type mismatch

A numeric value has been presented where a string value is required, and vice versa, or an invalidly formed number has been found in READ or INPUT.

14 String space full

So many strings have been created that there is not further room avaible, even after ‘garbage collection’.

15 String too long

String exceeds 255 characters in length.

16 String expression too complex

String expressions may generate a number of intermediate string values. When the number of these values exceeds a reasonable limit, BASIC gives up, and this error results.

17 Canno CONTinue

For one reason or another the current program cannot be restarted using CONT.  Not that CONT is intended for restarting after a STOP command, [ESC][ESC], or error, and that any alteration of the program in the meantime makes a restart impossible.

18 Unknown user function

No DEF FN has been executed for the FN just invoked

19 RESUME missing

The end of the program has been encountered while in Error Processing Mode.

(ie in an ON ERROR GOTO routine)

20 Unexpected RESUME

RESUME is only valid while in Error Processing MODE.

21 Direct command found

When loading a program from cassette a line without a line number has been

found.

22 Operand missing

BASIC has encountered an imcomplete expression.

23 Line too long

24 EOF met

An attempt has been made to read past end of file pn the cassette input stream

25 File type error

The cassette file being read is not of suitable type. OPENIN is only prepared to open ASCII text files. LOAD, RUN” etc, are only prepared to deal with the file types produced by SAVE.

26 NEXT missing

Cannot find a NEXT to match a FOR command.

27 File already open

An OPENIN or OPENOUT command has been executed before the previously opened

file has been closed.

28 Unknown command

BASIC cannot find a taker for an external command.

29 WEND missing

Cannot find a WEND to match a CHILE command.

30 Unexpected WEND

Encoutered a WEND when not in a WHILE loop, or a WEND that does not match the current WHILE loop.