[GEM Development] A guide to Basic2

Shane M. Coughlan shane at shaneland.co.uk
Thu Aug 3 17:13:04 PDT 2006


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Hi guys

A gent called Chris Booth has been working on a little guide to Basic2
plus.  Comments welcome.

==

Basic 2 Plus		Key Words and Syntax Summary   	A Quick Guide

ABS
Function which returns the absolute value of its argument.  Converts a
positive or negative number to a positive number of the same magnitude.
Syntax:  n = ABS (value) - where valueis a numeric-expression.

ACOS
Function which converts a cosine back to an angle.
Syntax: angle = ACOS (cosine)

ADDKEY
Adds a new key for the current record.
Syntax:  ADDKEY  #stream KEY key [INDEX index] - key is an expression
yielding the key which must be of a type suited to the index..  index is
an integer expression, giving the index to add the key to.
.
ADDREC
Write a new record to a keyed file together with a single key for it to
the index file.
Syntax: ADDREC #stream, string KEY key [INDEX index] - where stream is
the stream used to open the file; string is a string-expression to be
written to the file set up using RECORD fields;  key is an expression
giving the key to add for this record, which should be compatible with
the index type;  index specifies which to add the key to. If omitted the
index last used will be used.

ALERT
Produces an alert box on the screen.
Syntax: ALERT icon TEXT text [,string-expression]... BUTTON button-spec
[, button-spec].... where icon is an integer-expression giving a value
in the range 0.3, specifying which icon is to be used.  Each text is a
string-expression, giving one line of text for the body of the alert
box. Each button-spec is [RETURN] string-expression, giving the legend
for one buttun.

ASC
Returns the ASCII code of the first character in the string argument.
Syntax: n = ASC (argument)
EG:  n=ASC("ABCD")   -  n will be 64, the ASCII code for A

ASIN
Function which returns the angle whose sine takes the given value.
Syntax: ASIN(argument).

ATAN and ATN
These functions return the angle whose tangent takes the given value.
Syntax:  theta=ATN (opposite/adjacent)



ATAN2
Function which returns the angle between the axis and the line from the
origin to the given point.
Syntax:  ATAN2(x,y) where x and y are numeric expressions.

BIN$
Function which converts an integer value to a string of binary digits.
Syntax: BIN$ (argument(, min-digits))  where asgument and min-digits are
integer-expressions; min-digits must be in the range 0...32.

BOX
Draws a box on a graphics device.
Syntax:  BOX [#stream,] x;y, width, height  [attributes]...  where
attributes may be
[STYLE line-style] [COLOUR colour] [MODE write mode] [FILL [ONLY] [WITH
fill-style]] [ROUNDED]

BUTTON
Function which returns the state of the mouse button.
Syntax: result = BUTTON [(button)] where button is an
integer-expression, giving a value in the range 1...15 that specifies
which button to read - 1 is the left and 2 the right. If omitted then
the default is the left button.

CALL
Used to invoke a sub-program. (See SUB)
Syntax CALL sub-identifier [(parameter,...)] - where sub-identifier
corresponds to the label of a SUB and parameter is an expression or
variable or array, or string-variable record-name - vector-field-name.

CALL MODULE
Invokes the body of a module.
Syntax CALL MODULE module-identifier [(parameter1[, parameter2])...]. -
 where parameter is an expression or variable or array or
string-variable,  record-name  or vector-field-name.

CEILING & CElL
These functions return the value of their argument rounded to an integer.
Rounding is upwards, that is, towards plus infinity.
Syntax: n = CEI LING(argument)

CHDIR & CD
These statements change the current directory.
Syntax:  CHDIR string expression
CD rest-of-Line where rest-of-Line is everything up to the end of the line

CHDIR$
Function which returns the current directory.
Syntax: result$=CHDIR$ (drive) where drive is a string-expression,
giving a single character string.

CHR$
Function which converts a character code to a single character string.
Syntax:  n$ = CHR$(argument) where argument is an integer-expression in
the range 0...255.

CINT 						
Function which returns the value of its argument rounded to an
integer. 			Rounding is towards the nearest integer, with halves being
rounded away from zero. The result must be in the range -2147483648 to
+2147403647.
Syntax: ClNT  argumentl where argument is a numeric-expression. 						
CIRCLE				
Draws part or all of a circle on a graphics device. 				
Syntax: CIRCLE [#stream-number,] x;y, radius [attribute]...
attribute  is: PART start-angle, end-angle 	
	   or: FILL [ONLY) (WITH fill-style) 	
	   or: WIDTH One-width 	
	   or: STYLE line-style or: START One-start-style
	   or: END line-end-style
	   or: COLOUR colour-number
	   or: COLOR colour-number
	   or: MODE write-mode
radius is an integer-expression, giving a positive, non~zero value.
start angle and end-angle are numeric-expressions, giving positive, or
zero, values.

CLOSE
Closes streams.
Syntax CLOSE or CLOSE [#stream [,[stream-number]]...

CLOSE WINDOW						
Closes the specified window. 			
Syntax: CLOSE WINDOW number where number is an integer in the range
1...4. 			
CLEAR
Discards all variables.
Syntax:  CLEAR

CLEAR RESET				
Sets all windows to their initial state, and, in Direct Mode, discards 		
all variables.
Syntax: CLEAR RESET 				

CLS	
Clears a virtual screen. 	
Syntax:CLS [RESET]  or  CLS #stream  [RESET]

CONSOLIDATE        Syntax CONSOLIDATE [#stream]
As soon as a keyed file is changed it is marked “inconsistent”.
CONSOLIDATE 			
causes all outstanding information to be written to the file, and clears
the inconsistent marker.
CONST
Declares and sets named constants.
Syntax:  CONST variable = expression [variable = expression]...

CONT
Resumes program execution (if possible).
Syntax: CONT 		
	
COS	
Function which returns the cosine of its argument. 	
Syntax: COS (argument)  where argument is a numeric-expression. 	

CURRENCY$
Function which returns the current currency string.
Syntax:  OPTION CURRENCY$

DATA
Used to store numeric or string constants as lists, in the code of the
program itself, rather than inputting it at run time.  Each item in the
list is separated by a comma.
Syntax: DATA constant[, constant]....etc

DATE						
Converts a date in the form of a string to a date as a number of days
since 31st December 1099.  Syntax:  DATE [argument] where argument is a
string-expression.

DATE$
With an argument gives the date for the number of days since 31st
December 1099 or used alone gives the current date.
Syntax: d$ = DATE$ [(number of days)]  number of days is a positive,
non-zero integer.

DECLARE
Declares simple variables and arrays.
Syntax: DECLARE declared-object [, declared—object ...] 	where
declared-object is simple-variable or formal-array.

DECLARE CONST	
Declares named constants. 			
Syntax: DECLARE CONST simple-variable [, simple-variable )...

DEC$
Function which converts a numeric value to a formatted decimal string.
Syntax: DEC$(argument, template) where argumentis a numeric-expression,
and template is a string-expression.

DEF FN
Defines a function. Syntax: DEF FNname [(parameter[, parameter)...] =
expression - where  expression is an expression of the same type as
name. Each parameter must be a simple-variable. If paramater is a string
name must be a string.
DEG
Function to convert angles in radians to degrees.
Syntax:  theta = DEG(theta2)

DEL
Deletes files. (See also ERASE and KILL)
Syntax DEL file-filter where file-filter is a string-expression using
wild cards or a single file name. EG: DEL "*.TMP"

DELKEY
Deletes a key for the current record.
Syntax: DELKEY #stream [KEY key INDEX index LOCK lock-type]]
where key where key-value is an expression, giving a value compatible
with the index’s keytype - index is an integer-expression, giving a
value in the range 1...20.
DELKEY #stream AT position will delete a specific key. If the key is the
only one for the record then the record will also be deleted.

DIM
Used to specify the size and number of elements in one or more arrays.
Syntax: DIM variable(dimensions1[,dimension2[,dimension3]]....)
[storage-class] -
Several arrays may be defined in a single statement thus: DIM
a$(100),num(50)....
The first dimension in an array is always 0 unlesss the bounds are
otherwise defined .
EG: DIM cats (1 TO 10), dogs(5 TO 20). Negative dimensions are allowed
within the range: -32760...+32767.

To reduce memory usage you can specify a storage-class  from one of the
folowing:

Class		Value Range			Bytes per element
BYTE 		-128 to +127				1
UBYTE	      0 to +255				1
WORD 	-32768 to +32767			2
UWORD	          0 to +65535			2
INTEGER	-2147483648 to +2147483647	4

For string arrays memory can be saved by using FIXED followed by the
maximum length of the sring thus:-  DIM name$(dimensions) FIXED length
EG: DIM firstname$(50) FIXED 16

DIMENSIONS
Function used to determine the number of dimensions of an array. 		
Syntax: result = DIMENSIONS (array-name)

DIR	
Produces directory listings. (See also FILES.) 				
Syntax:DIR  	



DISPLAY
Lists the contents of a text file. (See also TYPE.) 						
Syntax: DISPLAY [#stream,] file-name

DISTANCE (Turtle graphics - CURSOR 3)
Function which returns the distance from the cursor to a given point, in
usercoordinates. 		
Syntax: result = DISTANCE ([#stream,] x;y)

DO, LOOP
The DO statement is used for repeating a sequence of statements when the
repetition is governed by some condition which maybe tested before or
after the execution of the loop.
Syntax: DO [terminafing-condifion]
		loopbody
	LOOP [terminating-condition]
 where terminafing-condifions are either WHILE truth-value or UNTIL
truth-value. loopbody is a sequence of BASIC 2 Plus statements,
separated in the usual way with colons or new lines. EG: (1)   DO WHILE
x<10   (2) LOOP until x = 10

DRIVE
Sets the current drive.
Syntax:  DRIVE drive  where  drive is a string-expression, giving a
single character string.

EDIT
takes you into the edit window.
Syntax EDIT

ELLIPSE
Draws part or all of a circle on a graphics device.
Syntax: ELLIPSE [#stream,] Ix;y, x-radius, aspect [, attribute]... where
attribute may be any of the following:- [PART start-angle, end-angle]
[WIDTH line-width]  [STYLE line-style]  [START start-style]  [END
line-end-style]  [COLOUR colour-number]  [MODE write-mode]
[FILL [ONLY] [WITH fill-style]] xradius is an integer-expression, giving
a positive, non-zero value. aspect is a numeric-expression, giving a
positive, nonzero value. start-angle and end-angle are
numeric-expressions, giving positive, or zero, values.

ELLIPTICAL PIE
Draws an elliptical “pie” section on a graphics device.
Syntax: ELLIPTICAL PIE [#stream,] x;y,radius, aspect, start-angle,
end-angle, [attributes]
Attributes are as for ELLIPSE using WIDTH, STYLE, COLOUR, MODE, FILL

END
Is used to terminate execution of the program when it has completed its
alotted tasks, as opposed to STOP, which is used in debugging.
Syntax END

ENVIRON$
Function which gets information from the “environment” in the form of a
string
Syntax: e$ =  ENVI RONS (num) where num is an integer. This only
retrieves one environment setting for each num used.


EOF
A function, which returns TRUE if there is nothing more to be input fnom
the given stream.
Syntax: result = EOF (#stream).  result =  true (-1 ) if the last record
in the file has been passed, otherwise it is false (0).

EPS
Used to give a measure of the significance of a number.
Syntax:  EPSl (argument) -  where argument is a numeric-expression.

ERASE
Deletes files. (See also KILL and DEL)
Syntax:  ERASE rest-of-line  where rest-of-line is everything upto the
end of the line

ERR
Function which returns the numberof the latest error.
Syntax ERR

ERROR
Simulates an error.
Syntax ERROR integer-expression giving the error code.

ERROR$
Function which returns the message associated with an error number.
Syntax ERROR$ (error number)

EXIT DO
EXIT FOR		
Used to get out of a loop from the middle without waiting for the loop
to complete. EXIT DO and EXIT FOR are usedto leave DX and FOR loops
respectively
Syntax: EXIT DO
	 EXIT FOR

EXIT MODULE	
Used to leave a module before the final END MODULE statement.
Syntax:  EXIT MODULE

EXIT FUNCTION
EXIT SUB
Used to terminate a subprogram or routine function before the
terminating END SUB or END FUNCTION is reached.
Syntax: EXIT SUB

EXP
 EXP is the exponentiation function, the inverse of the natural logarithm.
Syntax:  EXP argument - where argumentis a numeric-expression.



EXPORT
Makes a program’s global variables available to any modules it calls.
Syntax:  EXPORT exported-object[, exported-object...  ] where
exported-object is simple-variable or formal-array  formal-array is
array-identifier) [, )...

EXTENT
The EXTENT function returns the length a string will be when printed.
Syntax:  result=EXTENT ( [#stream-number,] [print functions,]
string-expression)

FALSE
FALSE is a function which always returns 0, the value which BASIC 2 Plus
deems
to represent the Booleam value ‘false’. (See also OFF.)
Syntax: FALSE

FD  (In turtle graphics - i.e. GRAPHICS #stream CURSOR 3)
FD moves the cursor foward a given distance. (See also FORWARD)
Syntax [MOVE] FD [#stream,] distance, attribute - where  attribute  is:
      WIDTH line-width
  or: STYLE line-style
  or: START line-start-style
  or: END line-end-style
  or: COLOUR colour-number
  or: COLOR colour-number
  or: MODE write-mode
distance is an integer-expression, giving a positive, non-zero value.

FILES
Produces directory listings. (See also DIR.)
Syntax:  FILES [#stream,] [file-filter]  where file-filter is a
string-expression.

FIND$ and FINDDIR$
These functions are provided for finding files and directories.
Syntax: result=FIND$ file-filter [,n] - n is the nth file to search
result=FINDDIR$ (dirname [,num])  where dirmame is a string-expression
num is an integer-expression, giving a value in the range 1...32767

FIX
Function which returns the value of its argument rounded to an integer.
Rounding is towards zero. (See also TRUNC.)
Syntax: FIX (argument) where argument is a numeric-expression.

FLOOD
Fills an area bounded by a given colour.
Syntax:  FLOOD [#stream,] x;y[,limit] [COLOUR colour], [MODE writemode]
FILL WITH fillstyle.
NB: 	FLOOD may have no effect, depending on the device driver.


FLOOR
Function which returns the value of its argument rounded to an integer.
Rounding is downwards, that is, towards minus infinity. (See also INT.)
Syntax: FLOOR (argument) where argument is a numeric-expression.

FONT$
FONT$ is a function which returns the name of a font.
Syntax: result$=FONT$  ([#stream,]  font)  where font is an
integer-expression, giving a positive, non-zero value.

FOR
The FOR statement is used to repeat a group of statements where the
number of
repetitions is known or can be calculated at the time the loop is entered.
Syntax: FOR ounter= start TO end [STEP stepsize) : loopbody : NEXT counter
where counter is a simple-variable, not a VAR or ref formal parameter.
start, end, and stepsize are numeric expressions.  loopbody is a
sequence of BASIC 2 Plus statements, separated in the usual way with
colons or new lines.

FORWARD (see FD)

FRAC
Function which returns the fraction part of the value of its argument.
Syntax: FRAC (argument)  where argument is a numeric-expression.

FRE
Function which returns the amount of unused memory.
Syntax:  FRE

FREEFILE
Function which returns an unused stream number.
Syntax  FREEFILE

FUNCTION : END FUNCTION
Used to define a routine function.
Syntax:
FUNCTION function-identiter (formal-list)) [EXPORT]
    function-body:
END FUNCTION
where  function-identifier   formal-list   forma)-funcfionlist
simple.var-list
forma)-var-list
formal-var
formal array is
 function-body is a sequence of BASIC 2 Plus statements.

GET
Gets data from Random or Keyed Files.
Syntax: GET #stream, string-variablef,[position] if,) LOCK lock-type
where positton is as described in POSITION.
Or result=GET #stream,rec$ KEY name$
IF result=0 THEN process(rec$) ELSE PRINT "Not found"
GOSUB
Used to call a subroutine elsewhere imthe program.
Syntax  GOSUB label
GOSUB can be spelt as two words thus: GO SUB.

GOTO
GOTO is used to jump uncondfionally to another part of the program.
Syntax  GOTO label
May be spelt as two words thus: GO TO

GRAPHICS
GRAPHICS sets graphics output attributes.
Syntax GRAPHICS [#stream,] attribute... where attribute is:
COLOUR number
MARKER style
MARKER size
[LINE] WIDTH width
[LINE] STYLE style
[LINE] START style
[LINE] END style
FILL [WITH [STYLE] fill-style]
MODE write-mode
CURSOR cursor-type where cursor-type is an integer value in the range 1...3.

GRAPHICS...RESTORE
GRAPHICS...RESTORE turns on oroff window contents restore.
Syntax GRAPHICS [#stream-number[, .11 RESTORE truthvalue

GRAPHICS...UPDATE
GRAPHICS...UPDATE forces graphics output (to printer) to be acted on.
Syntax GRAPHICS [#stream,] UPDATE [NEW]

HEADING (Turtle graphics)
Function which returns the current turtle heading (angle). 				
Syntax: result=HEADING [#stream]
 		
HEX$		
Function which converts an integer value to a string of hexadecimal
digits. 		
Syntax: HEX$ integer-expression [, mm-digits] where mn-digits must give
a value in the range 		
0.32. 	

IF (single line version)
This version of the IF statement is used to choose between two courses
of  action. It is retained only forcompatibility with earlier versions
of BASIC.
Syntax: IF condition THEN  instructions [:] ELSE instructions
         or IF testvalue GOTO location [:] ELSE instructions)
where testvalue is a truth-value and instructions  are either (a) a line
number, or b) a sequence of BASIC statements, each separated by colons -
colons is a sequence of one or more colons, but not new lines.

IF  : END IF
IF...END IF is used to choose between various courses of action
depending on
the values of various expressions.

Syntax:  IF testvaluel THEN
                   statements
                 ELSE IF testvalue2 THEN  statements2
	        ELSE IF testvalue3 THEN statements3
	     ELSE elsestatements
	  END IF

where the testvalues are truth-values, and statementst, statements2,...
and elsestatements are
sequences of BASIC 2 Plus statements, separated with colons or new lines
in the usual way.

IMPORT
IMPORT is used to specify the routines, constants and variables which
are  imported into a program unit from a module.
Syntax:  IMPORT [MODULE module-idenfifier] [formal-list]
[import-declaration]...
              END IMPORT
module-idenfifier is a numeric-identifier, import-declaration is SUB
subidentifier [formallist]
 or FUNCTION funcfion-identifier[ I formal-list I)
 or DECLARE CONST simple-var-list
 or DECLARE formal-var-list
 subidentifier is numeric-identifier
 function-identifier is identifier
formal-list  is formal-sublist[separatorformalsublist)...
formalsublist 	is VAL simple-varlist
or CONST simple-varlist
or [VAR)fomal-var-list
simple-var-list is idenfifler[, identifier)
formalvar-list 	is ormal-var[, formal-var).,.
formal-var is idenfifieror formal-array
formal-array is array-identifier) [,]

INKEY
INKEY is a function which returns a numeric value corresponding to a key
press.
Syntax INKEY

INKEY$
INKEYS is afunction which returns a string value corresponding to a key
press.
Syntax:  k$= INKEY$



INPUT
Inputs numeric or string values from sequential input devices. 		
Syntax: INPUT
[#stream-number[,))[ATIcoIumn:linel)[;)[prompt)general—variable[, 	
general—variable)... [;)

INPUT$
Function which returns a string containing a given number of
characters read from a given stream.
Syntax INPUT$  [#stream,] count
or INPUT$ count, [#stream]
where count is an integer-expression, giving a value in the range 1...4096.

INSTR
INSTR is a function which is used to find out one string is a substring
of another.
Syntax: INSTR ([start], search-string , target-string) where 	start is
an integer-expression in the range 1...4096, and search-string and
target-string are string-expressions. 	
EG: 	lookfor$="Hello"
	sentence$="This is Hello not goodbye."
	start=1
	found=INSTR(start, sentence$, lookfor$)
	IF found=0 THEN PRINT "Not found"

INT
Function - returns the value of its argument rounded to an integer.
Rounding is downwards, that is, towards minus infinity. (See also FLOOR.)
Syntax INT argument  where argumentis a numeric-expression.

KEY
Function which returns the current key value for a Keyed File.
Syntax:  num=KEY (#stream-number)

KEY$
Function which returns the current key value for a Keyed File.
Syntax:  string= KEY$ (#stream-number)

KEYSPEC
Creates a new index in a Keyed File, and declares the type of key for
the index.
Syntax:  KEYSPEC #stream INDEX number [keyspec]  [UNIQUE switch]
where number specifies the index number being defined  in the range 1...20.
 keyspec  is: BYTE, UBYTE, WORD, UWORD or INTEGER  or: FIXED string-length
 where string-length is an integer-expression, giving a value in the
range 1...30.
 unique  is: UNIQUE truthvalue. switch can be OFF (zero) allowing
duplicate keys in the index or ON (non-zero) making keys within the
index unique.

KILL	 Deletes files, (See also DEL and ERASE.)
Syntax  KILL file-filter  where  filefilteris a string-expression

LABEL
Used to define a named loaction for use by GOTO and GOSUB
Syntax  LABEL label-name

LBOUND
Function used to determine the lower bound of one of the dimensions of
an array. (See also LOWER.)
Syntax:  LOWER (actual-array [, index-number])
where index-number must be an integer-expression.in the range  1 to 7.

LCASE$
Function to convert characters to lower case. (See also LOWER$.)
Syntax: newword$ =LCASE$ (oldword$)

LEFT  (Turtle cursor CURSOR 3)
Changes the current heading. (See also LT, RIGHT and RT.)
Syntax:  LEFT [#stream,]  angle  where angle is a numeric-expression.

LEFT$
Function to truncate a string by selecting only its leftmost characters.
Syntax: newstring$= LEFT$ (oldstring$, length)
where oldstring$ is a string-expression and length is an
integer-expression returning a value in the range 0...4096.

LEN
Function to find the length of a string.
Syntax:  length= LEN (stringvar$) where stringvar$ is a string
orstring-variable.
EG:	length=LEN("XYzxyZ")
	a$="XYzxyZ"
	length=LEN(a$)

LET
Assigns the value of an expression to a variable.
Syntax [LET] variable = expression

LINE
Draws a line between two points, possibly via a number of intermediate
points. 		
Syntax:  LINE [#stream,]  x;y, x;y [etc. etc.]  [WIDTH line-width]
[STYLE line-style] [COLOUR colour] [MODE write-mode] [START line-start]
[END line-end]
line-start and line-end sets the style for each end of the line.  0 is
squared. 1 is arrowed and 2 is rounded. line-style can be dotted,
dashed, continuous etc. using numbers 1 to 6.

LINE INPUT	
Inputs a complete line from sequential input devices. 			
Syntax LI NE INPUT [#stream] [AT column;line];prompt string-variable [;)
 where the [,) following the stream-number is required H none of AT,
PROMPT orthe first[;) 		are present. column and line are
integer-expressions giving the screen position at which to start the
prompt etc prompt is prompt-string prompt-separator, where prompt-string
is PROMPT string-expression or string-literal and prompt-separator is a
, or a ;



LOAD MODULE
is used to load a module into memory.
Syntax:  LOAD MODULE module-identifier, filename wheremodule-identifier
is numeric-identiter filename is string-expression.

LOC
Function which returns the current record number. 					
Syntax LOC (#stream)
 					
LOCATE	
Moves to a given character and line position. 				
Syntax: LOCATE [#stream] column;line

LOCK
Sets a new record lock.
Syntax LOCK [#streamr, lock-type,] position
LOCK [#stream] position) [,) LOCK lock-type where position is as
described in POSITION.

LOF
Returns the length of a file in bytes.
Syntax: result=LOF (#stream)

LOG
Function which returns the logarithm to base ext its argument—the
natural logarithm.
Syntax LOG(argument) where argumentis a numeric-expression, giving a
positive, non-zero, value.
LOG2
Function which returns the logarithm to base 2 of its argument.
Syntax LOG2(argument) where argumentis a numeric-expression, giving a
positive, non-zero, value.
LOG1O
Function which returns the logarithm to base lO of its argument.
Syntax: LOG10(argument) where argumentis a number or numeric-expression,
giving a positive, non-zero, value.

LOWER	
Function used to determine the lower bound of one of the dimensions of
an array.
(See also LBOUND.)
Syntax:  LBOUND(actual-array[, index-number]) where index-number must
bean integer-expression.in the range 1 to 7.

LOWER$
Function - converts characters to lowercase. (See also LCASE$.)
Syntax: a$= LOWER$(b$) where a$ is a string variable and b$ a
stringexpression or string variable. 	


LPRINT
Is just like PRINT, except that the output is always to stream 0.
Syntax LPRI NT [print-item)...

LSET	
Used to assign to a string variable without changing the length of the
string it holds.  This left justifies the string assigned to the current
length of the variable
Syntax LSET string variable = string-expression

LT	(Turtle graphics)
Changes the current heading. (See also LEFT, RIGHT and RT.)
Syntax: LT [#stream,] angle - where angle is a numeric-expression. 	

LTRIM$
Function to remove leading spaces from strings.
Syntax:  a$ = LTRlM$(argument) where argumentis a string-expression.

MAX		
Function which returns the value of its largest argument. 		
Syntax:  MAX(argument, argument[, argument)...) 	where argument is a
numeric-eopression. 		
MAXNUM
Function which returns the largest representable number. Syntax MAXNUM

MD
Makes a new directory. (See also MKDIR.)
Syntax:  MD rest-of-line where rest-of-line is everything up to the end
of the lime

MID$
Function to select a substring from a given string.
Syntax MID$(argument, start[, length]) where argument is a
string-expression
start and length are integer-expressions, start must give a value
greater than zero; length must give a value greater than or equal to
zero. Neither may be greater than 4096.

MID$
Assigns a string to a substning.
Syntax MID$(string-variable, start[, length]) = string-expression -
where 	start and length are integer-expressions. start must give a value
greater than zero; length must give a value greater than or equal to
zero. Neither may be greater than 4096.

MIN
Function which returns the value of its smallest argument.
Syntax MIN (argument, argument[, argument]...) - where argumentis
numeric-expression.

MKDIR
These statements make a new directory. (See also MD.)
Syntax MD "name of directory"

MOD
Gives the remainder of a division.  EG: 7.1 MOD 3.3 is evaluated as 7
MOD 3 (=1)

MODULE
Define a module - a program unit which may be accessed and executed by a
BASIC 2 Plus program.  Syntax MODULE (module-identifier[ formal-list])
			module-body
		     END MODULE

MOVE
Moves the graphics cursor using turtle cursor.
Syntax MOVE [#stream,] points

NAME	
Changes the name of a file. (See also REN.)
Syntax:  NAME old-file-name AS new-file-name - where old-file-name and
new-file-name are file-names (i.e. strings or string variables)

NEXT (see ChapterS) 		
Use Terminates the sequence of statements which make up the body of a
FOR loop.

OFF	
Function which always retums 0, the value which BASIC 2 Plus deems to
represent the Boolean value ‘false’. (See also FALSE.)
Syntax:  OFF

ON
Function which always retums —1. (See also TRUE.)
Syntax: ON

ON ERROR
Specifies what action is to be taken in the event of an error.
Syntax:    ON ERROR STOP
	or ON ERROR GOTO location
	or ON ERROR EXIT place
where place is MODULE, SUB or FUNCTION, as appropriate.

ON...GOSUB	
Like ON. . - GOSUB, this statement is a relic from older BASICs,
included to make 	
BASIC 2 plus compatible.
Syntax: ON condition GOSUB [locaUont) [, [location2)) [, [locafion3))
where condition is an integer-expression locationt, locafion2,
Iocatton3, .., etc are labels.

ON...GOTO	
A relic from older BASICs, included to make BASIC 2 plus compatible.
Syntax ON condition GOTO [locationt)[, [locafion2))[, [location3))
where condition is an integer-expression locationt, location2,location3,
... etc are locations.

OPEN
Use OPEN associates a given stream with a device orfile.
Syntax OPEN [I/)stream-number [,) WINDOW window-number
or OPEN [I/)stream-number [,) INPUT filename if,) LOCK lock-type)
or OPEN [I/)stream-number [,) [exist) OUTPUT filename if,) LOCK lock-type)
or OPEN [I/)stream-number [,) [exist) APPEND filename if,) LOCK lock-type)
or OPEN [I/)stream-number [,) [exist) RANDOM random-spec if,) LOCK
lock-type)
or OPEN [I/)stream-numbor [,) [exist) GRAPHICS filename graphics-spec
or OPEN [I/)stream-number [,) PRINT [printer-number)
or OPEN [I/)stream-number [,) DEVICE desice-number

OPEN...APPEND
OPEN file for output.
Syntax OPEN [#stream,] [exist) APPEND filename if,) LOCK lock-type)
where existis NEW or OLD

OPEN...DEVICE & OPENGRAPHICS	
These forms of OPEN associate a given stream with a GEM graphics device
or a
Metafile.
Syntax OPEN [#stream,] DEVICE device-number
OPEN [#stream,] [exist) GRAPHICS filename graphicsspec where exist is
NEW or OLD
desrice-numberis an integer-expression, giving a value in the range
0...32767. graphics-spec is  SIZE (m-width,m-height) SPACE
p-width[,p-heighl)) m-width and m-height are numeric-expressions, giving
positive, non-zero, values. p-width and p-height are
integer-expressions, giving values inthe range 1...32768. 	

OPEN...INPUT
OPEN file for input.
Syntax OPEN [#stream,]  INPUT filename LOCK lock-type

OPEN...OUTPUT
OPEN file for output.
Syntax:  OPEN [#stream] exist OUTPUT fliename  LOCK lock-type -  where
exist is NEW or OLD

OPEN...PRINT
Associates a given stream with a simple printer device.
Syntax OPEN [#stream]
	PRINT [printer-number] - where print-number is an integer-expression,
giving a value in the range 0...5.   0  = PRN 	
			  1.3  = LPT1 to LPT3 		
			  4.5 = COM1 to COM2 			

OPEN..RANDOM
Associates a given stream with a random or keyed file.
Syntax: OPEN #stream [qualifier] RANDOM filename LOCK lock-type) where
random-spec is filename if,) INDEX filename) if,) LENGTH record-length)
record-length is an integer-expression, giving a value in the range 1.4096.
OPEN...WINDOW
Associates a given stream with a given screen window.
Syntax:  OPEN [#stream,] WI NDOW window-number where window-numberis an
integer-expression, giving a value in the range 1...4.

OPTION CURRENCY$ string-expression
Sets the currency symbol for use with $ in PRINT USING
OPTION DATE form [, separator-string]
Sets the form of a date string.
OPTION  DECIMAL string expression, string expression
Sets the decimal point and thousands separator for use in PRINT USING
OPTION DEGREES
Sets trigonometric values to work in degrees
OPTION INKEY$ string expression
Sets translations for special keys for INKEY$
OPTION RADIANS
Sets trigonometric values to work in radians
OPTION RUN
Prevents a program from being stopped.
OPTION STOP
Reverses the effect of OPTION RUN
OPTION TRAP logical-expression
Turns on or off trapping of undefined values.

OSERR	
Function which gives more information about the latest “operating
system dependent” error.
Syntax OSERR 	

PI
Function which returns the representable value closest to the
mathematical 			
constant. 	
Syntax  num=PI 	

PIE
Draws a circular “pie” section on a graphics device.
Syntax PIE [#stream,] point, radius, start-angle, end-angle  attribute)..
where attribute is: FILL [ONLY) (WITH fill-style)
or: WIDTH line-width or: STYLE line-style
or: COLOUR colour-number or: COLOR colour-number or: MODE write-mode
radius is an integer-expression, giving a positive, non-zero value.
start-angle and end-angle are numeric-expressions, giving positive, or
zero, values. 				
PLOT	
Plots “markers” at the points given. 			
Syntax: PLOT [#stream,] point [, point...,] attribute... 				
where attribute is: MARKER marker-number or: SIZE marker-size or: COLOUR
colour-number or MODE write-mode 		

POINT (Turtle graphics CURSOR 3)  Sets a new current heading. Syntax:
POINT [#streamr,]  angle -  where angle is a numeric-expression. 	
POINTSIZE
Function which returns an available size of a font.
Syntax result=POINTSIZE ([#stream,]  font, point-size)
where font and point-size are integer expression, giving positive,
non-zero values. 		

POS
Returns the current cursor position in characters and lines. (See also
VPOS) 	
Syntax: column = POS [(#stream)]
	 line = VPOS [(#stream)]

POSITION	
Moves to a new position in a Random or Keyed file. 				
Syntax:  POSITION [#stream,] position  LOCK lock-type - position is:
	is: NEXT
	or: AT record-number
	or: AT position-string
	or: KEY key-value
	or: INDEX index-number
where key-value is an expression, giving a value compatible with the
index’s key type. index-number is an integer-expression, giving a value
in the range 1..20. position-string is a string-expression, giving a
value once returned by POSITION$.
To set the current position directly use POSITION #stream position -
where position indicates the position required as above.

POSITION$
Function which returns a string which unambiguously specifies the
current position. 		
Syntax: result = POSITION$ (#stream)
result is an integer giving the current position's record number.

PRINT	
Outputs numbers and strings. 			
Syntax PRINT [#stream,] [print-item].... where the comma following the
stream number is required if the first print-item is an expression. Each
print-item may be: expression or separator or print-command— see Print
Commands or print-function— see Print Functions box or USING
string-expression; provided that no expression immediately follows another.

PRINT COMMANDS
These may be used in PRINT or LPRINT statements.
Syntax: PRINT [#stream] [print-list] [USING clause] [separator] - where
print-list is a list of print-item separated by ; or , and print-item
can be any of the following:-
	 AT (column ; line)
	 ZONE (integer-expression)
	 MARGIN (integer-expression)
	 EFFECTS (effect-bits[,effect-bits])
	 TAB (tab-position)
	 MODE (write -mode)
	 COLOUR (colour-number)
	 FONT (font -ordinal)
	 POINTS (point-size)
	 ANGLE (degrees)
	 ADJUST (point-size)

PROGPATH$ & PROGFILE$
These functions return the current file name of the main program.
Syntax:  PROGPATH$
  	  PROGFI LE$
	
PUT
Puts data to Random or Keyed Files. Can be used to rewrite a record.
Syntax: PUT #stream,  string-expression [position] [LOCK lock-type]
where 	position is as described in POSITION.


RAD
Function to convert angles in degrees to radians.
Syntax:  theta2 = RAD (theta1) - where  theta is a numeric-expression.

RANDOMIZE
Used to set the seed for BASIC 2 Plus’s pseudx-random number
generator.
Syntax:  RANDOMIZE [seed-value) - where seed-value is a numeric-expression.

RD
These statements delete (remove) a directory. (See also RMDIR.)
Syntax:  RD rest-of-line -  where  rest-of-line is everything up to the
end of the line

READ
Used to read data from a DATA statement into variables.
Syntax READ variable[,variable,]...

RECORD
Used to specify a record structure which can be imposed on strings.
Syntax:  RECORD record-name; field-definifion [, field-definition]
where  field-definition  is: numeric-field-name (vector-field)
(storage-class)
or: string-fleld-name (vector-field) FIXED length - numeric-field-name
is a numeric-identifier, giving the name of a numeric field
string-field-name isa string-identifier, giving the name of string field
- - vector-field is (dimension-bounds) or [dimension-bounds] where
dimension-bounds is as in DIM.  storage-class is integer-class (KEY) or
IEEE4orIEEE8
where integer-class is one of BYTE, UBYTE, WORD, UWORD, INTEGER
length is an integer-evpression giving a value in the range 1...4096.

REN	
Changes the name of a file. (See also NAME.)
Syntax  REN rest-of-line where rest-of-line is everything up to the end
of the line




REPEAT : UNTIL
The REPEAT statement is used for repeating a sequence of statements when
the 	
repetition is governed by some condition which is tested after the
execution of the loop.
Syntax REPEAT
 	    loopbody
	UNTIL condition
where condition is a truth-value loopbody is a sequence of statements,
separated in the usual way with colons or new lines.

REPOSITION
Moves to a new position in a Keyed file, without changing the record.
Syntax REPOSITION [#stream,] key , LOCK lock-type INDEX index-number
where key is: KEY key-value where key-value is an expression, giving a
value compatible with the index’s keytype - index-number is an
integer-evpression, giving a value in the range 1...20.

RESET
Reset file system to allow disks to be changed.

RESTORE	
Used to explicitly move the pointer which indicates the next DATA item
to be read in.
Syntax RESTORE [label]

RESUME
Signals the end of “error state”.
Syntax 	RESUME
	       or  RESUME NEXT
	       or  RESUME EXIT place
	       or  RESUME label
	       or  RESUME STOP
where place is MODULE, SUB on FUNCTION, as appropriate. 	

RETURN
Used to terminate a subroutine.
Syntax RETURN

RIGHT (In Turtle Graphics - CURSOR 3)
Change the current heading.
Syntax RIGHT [#stream,] angle
where angle-changeis a numeric-expression indicating how many degrees.

RIGHT$	
Function to truncate a string by selecting only its right most characters.
Syntax:  RIGHT$ (argument, length) - where argument is a
string-expression and length is an integer-expression returning a value
in the range 0...4096. 				

RMDIR
Deletes (removes) a directory. (See also RD.) Syntax: RD string-expression
RND	
Function which returns a pseudo-random number. 	
Syntax  RND [largument] where argumentis an integer-expression, giving a
value in the range 1...65535. 	

ROUND	
Function which retums the value of its argument rounded to a specific
number of decimal places.
Syntax:  ROUND (number,  places)
EG:  ROUND (3.335, 2) produces 3.34

RSET	
Used to right justify to a string-variable padding it with leading
spaces or truncating if needed. 		Syntax RSET string-variable =
string-expression 			

RT  (Turtle Graphics - CURSOR 3)
Changes the current heading. (See also RIGHT, LEFT and LT.)
Syntax RT [#stream,] angle-change - where angle-change is number of
degrees.

RTRIM$
Function to remove trailing spaces from end of strings. 						
Syntax:  RTRlM$  argument	- where argumentis a string-expression or variable

SCREEN
Sets the type and size of a Virtual Screen 						
Syntax SCREEN [#stream] GRAPHICS [size],  window-attribute...
	SCREEN [#stream] TEXT [size] ) window-attribute...
	SCREEN [#stream] TEXT FLEXIBLE  window-attribute...
where size is width [FIXED], height [FIXED] 			
window-attribute is: MAXIMUM width, height 		
		    or: MINIMUM width, height
		    or: UNIT width, height
		    or: INFORMATION truth-value
width and height are integer-expressions, giving positive, non-zero
values. 			

SELECT CASE
Used to choose one course of action from several, the choice being
determined by the value of a given expression.
Syntax	 SELECT CASE selector-expression
	CASE testvalues [, testvaluela ,] [testvalue1b] ... : statements1
	CASE testvalue2[, testvalue2a] [, testvalue2b] ... : statements2
	CASE ELSE : elsestatements
	END SELECT 				
where 	statementst, statemenls2, statemenls3 and else statements are
sequences of BASIC 	
statements separated by colons or new lines in the usual way testvalues
may be either of the form expression [TO end-expression) or IS relation
limit-expression where all the expressions must be of the same type as
seleclor-expression.			

SELECTOR	
Runs an “item” selector dialogue. 		
Syntax:	SELECTOR directory-string [, selection-string]
or 		SELECTOR , selection-string

SELPATH$  -  SELFILE$ -  SELWILD$	
These functions return parts of the values stored for the SELECTOR
dialogue. 			
Syntax:SELPATH$ 	
	SELFI LE$		
	SELWILD$ 		

SET
Changes the text output attributes for a given stream. 			
Syntax  SET [#stream,] text-attribute, [text-attribute]... - where each
text-attribute may be one of ZONE zone-size MARGIN margin-position
EFFECTS effects-on, effects-off 		
MODE write-mode COLOUR colour-number [COLOR colour-number] FONT
font-ordinal
POINTS point-size ANGLE text-angle WRAP truth-vafue

SGN
Function which returns the sign of the value of its argument. 			
Syntax:  SGN (argument)  - where argument is a numeric-expression.

SHAPE	
Draws a polygon shape. 		
Syntax SHAPE [#stream,]  point, point, point [, point)..,(attribute)... 		
attribute is: FILL [ONLY) (WITH fill-style) 	
	  or: WIDTH line-width 	
	  or: STYLE line-style 	
	  or: COLOUR colour-number
	  or: COLOR colour-number
	  or: MODE write-mode

SHARED
Makes global variables directly available to routines.
Syntax: SHARED shared-object[, shared-object]...
where formal-var is simple-variable or array-identifier)... 		

SIN	
Function which returns the sine of its argument. 	
Syntax:n = SIN (argument) - where argument is a numeric-expression. 	

SQR
Functixn which returns the (positive) square root of its argument.
Syntax: n = SQR (argument) where argument is a numeric-expression.
returning a positive, or zero value.
 				


STOP	
Used to halt the execution of the program in a condition where the
variables can be inspected or altered.  Syntax STOP

STR$
Function to convert a numeric value to string form.
Syntax: a$ =  STR$ (argument) -  where argument is a numeric-expression.

STREAM	
Changes the default stream. The STREAM function returns the current stream.
Statement Syntax STREAM #stream-number
FunctIon Syntax:  s = STREAM

STRING$
Function to generate a string of repeated characters.
Syntax: STRING$ (length, argument) - where length is an
integer-expression in the range 0...4096 and argument is a non-null
string- expression or an integer-expression giving a value in the range
0.255. i.e. ASCII value. 		

SUB
Used to define a subprogram. (i.e. subroutine)
Syntax: SUB sub-identifier [formal-list]  [EXPORT]
	       sub-code
	  END SUB
where sub-idenlifier is a name  sub-body is a sequence of statements,
separated with colons or new lines in the usual way.

SWAP
Exchanges the values of two general variables.
Syntax SWAP general—variable, general—variable

SYSTEM
Takes you out of BASIC 2 Plus.
Syntax SYSTEM

TAN
Function which returns the tangent of its argument.
Syntax: n =  TAN (argument) - where argument is a numeric-expression.

TEST
Function which returns the colour of a point on a Graphics Screen.
Syntax result = TEST ([#stream,] x;y) 	
NB: TEST may have no effect, depending on the device driver.





TEXT
Pertains to various operations available on text screens.
Syntax
    TEXT [#stream,] CLEAR clear-area
or TEXT [#stream,] DELETE - Delete character at cursor
or TEXT [#stream,] DELETE LINE - Delete line containing cursor
or TEXT [#stream,] INSERT LINE  - Insert line at cursor
or TEXT [#stream,] FEED count
where clear-area is one of EOL, DOL, LINE, EOS, BOS, SCREEN and
count is an integer-expression. 	

TIME
Function which returns the numberof hundredths of a second which  have
elapsed since midnight, to the nearest hundredth.
Syntax: num =  TIME

TIME$
Function which retums the numberof hundredths of a second which
have elapsed since midnight, to the nearest hundredth, in the form of a
string.
Syntax num$ = TIME$

TIMER
Functixn which givesthe number of seconds which have elapsed since midnight.
Syntax: num =  TIMER

TOWARD  (Turtle Graphics - CURSOR 3)
Function which returns the heading from the cursor to a given point.
Syntax: TOWARD ([#stream,] point) point is x;y

TRUE
Functios which always returns  -1. (See also ON.)
Syntax TRUE

TRUNC
Function which returns the value of their argument rounded to an
integer. Rounding is towards zero. (See also FIX.)
Syntax:  TRUNC (argument) - where argument is a numeric-expression.

TYPE
List the contents of a text file. (See DISPLAY.) Syntax TYPE name of file

UBOUND
Used to determine the upper bound of one of the dimensions of an array.
Syntax: UBOUND (actual-array[, index-number]) -  where index-number must
be an integer-expression.in the range 1 to 7.

UCASE$
Converts characters to upper case. (See also UPPER$.) Syntax: newstring$
=  UCASES (argument) - where argument is a string-expression

UNIQUE
Function which returns the next “unique” number for a Keyed File.
Syntax:  result = UNIQUE [#stream]

UNLOAD
UNLOAD MODULE is used to unload a module.
Syntax UNLOAD MODULE module-identifier

UPPER
Used to determine the upper bound of one of the dimensions of an array.
(See alsx UBOUND.)
Syntax:: result =  UPPER (acIuaI-array[, index-number])

UPPER$
Converts characters to upper case. (See also UCASE$.)
Syntax:  a$ = UPPER$ (b$) - where b$ a string-expression or variable.

USER..ORIGIN
Changes where the origin of user coordinate space appears on the device.
Syntax:  USER [#stream,] ORIGIN x ; y
x and y specify new origin relative to bottom left corner of the
graphics screen in user coordinates.  Will shift any subsequent output.

USER...SPACE
Sets the extent of the user coordinate space.
Syntax:  USER [#stream,] SPACE width [, height]
where width and height are integer-expressions, giving positive,
non-zero values.
By stating only one dimension display proportions are maintained.

VAL
Converts the string representation of a number to its numeric value.
Syntax: num =  VAL (argument) - where argument is a string-expression. 	

VERSION
Function which returns vesion information.
Syntax: VERSION (query) - query is an integer-expression, giving a value
in the range 0...4.

VPOS
Returns the current cursor position in characters and lines. (See also P0S)
Syntax: line = VPOS [(#stream)]  column = POS [(#stream)]

WHILE : WEND
Statement used for repeating a sequence of statements when the
repetition is governed by some condition which may be tested before the
execution of the loop.
Syntax:    WHILE condition
		loopbody:
	    WEND
where condition is a truth-value loopbody is a sequence of statements,
separated in the usual way with colons or new lines.



WHOLE$
Function which returns the whole of a fixed-length string.
Syntax:  w$ = WHOLES (argument) - where argument is a string-expression 	

WINDOW
Statements to change the size, position etc. of Screen Windows.
Syntax
WINDOW [#stream] CLOSE
WINDOW [#stream] FULL truth-vafue
WINDOW [#stream] OPEN
WINDOW [#stream] SIZE width, height
WINDOW [#stream] PLACE point
WINDOW [#stream] TITLE string-expression
WINDOW [#stream] INFORMATION string-expression
WINDOW [#stream] MOUSE mouse-form
WINDOW [#stream] CURSOR truth-vafue
WINDOW [#stream] SCROLL point
where mouse-term is an integer-expression, giving a value in the range
0...7
width and heightare integer-expressions, giving a value 1...5000

XACTUAL & YACTUAL
Functions which retum the actual size of a window, in screen device pixels.
Syntax: 	result = XACTUAL [(#stream)]
		result = YACTUAL [(#stream)]

XBAR & YBAR
functions which retum the actual size of the scroll barsof a window, in
screen device pixels.
Syntax XBAR[#stream]   YBAR [(#stream)]

XCELL & YCELL
Functions which retum the size of a character cell, in user coordinates.
Syntax  result = XCELL [(#stream)]
	 result = YCELL [(#stream)]
 XDEVICE & YDEVICE
Functions which retum the size of a graphics device,  in pixels.
Syntax: width =  XDEVICE [(#stream)]
 	height  = YDEXICE [(#stream)]

XMETRES & YMETRES
Functions which retum the size of a graphics device,  in metres.
Syntax:  width =  XMETRES [(#stream)]
 	height = YMETRES [(#stream)]

XMOUSE & YMOUSE
These functions return the current position of the mouse pointer, in
screen device pixels.
Syntax:  x =  XMOUSE
	  y = YMOUSE





XPIXEL & YPIXEL
Functions which retum the size of a device pixel, in user coordinates.
Relationship between user coordinates and pixels can be determined as
follows:
Syntax::  result =  XPIXEL [(#stream)]
 	   result = YPI XEL [(#stream)]

XPLACE & YPLACE
Functions which retum the position of the bottom left hand corner of a
window, in pixels.
Syntax:  result =  XPLACE [(#stream)]
	  result = YPLACE [(#stream)]

XPOS & YPOS
Functions which retum the current cursor position, in user coordinates.
Syntax: x =  XPOS [(#stream)] :  y = YPOS [(#stream)]

XSCROLL & YSCROLL
Functions which return the position of the window on the virtual screen,
in user coordinates.
Syntax:  result =  XSCROLL [#stream]
	  result = YSCROLL [#stream]

XUSABLE & YUSABLE
Functions which return the usabte size of a graphics device, in pixels.
Syntax: width = XUSABLE [#stream]
	 height = YUSABLE [#stream]
width & height give the overall size in pixels

XVIRTUAL & YVIRTUAL
Functions which return the size of a graphics virtual screen, or other
graphics device, in user coordinates..
Syntax:  width = XVI RTUAL [#stream]
	  height = YVI RTUAL [#stream]

XWINDOW & YWINDOW
Functions which return the overall size of a window, in pixels.
Syntax:  result = XWINDOW [#stream] : result = YWINDOW [#stream]

YASPECT
Function which gives the aspect ratio of a user coordinate pixel.
Syntax:  result=YASPECT [#stream]
result gives the size of the usable portion of the window.

ZONE
Sets the print zone size for the Dialogue Screen.  Items in a PRINT
instruction when preceded with a comma are printed in the next print zone
Syntax:  SET ZONE cells.  ZONE (zone-size) changes the print zone
temporarily
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.2 (GNU/Linux)

iQCVAwUBRNISf9wG3M95JPpzAQhbzQP/Z2W2jAs0jVzKqjkZ7pci/6r1t7CnmG2J
3AczSg0X/BtBbsJsbKHNK11tm1G1HwaKiuuneCSkwBwK+f++/s1sXX3obfoae3UX
hu5s0HU6UgBRyr7y1FJnLHLwkAIbWiuOOqfQYgq+GJ04SDn4WSFD5kmILK7dPfE8
rVKJU4WRgrU=
=qC4d
-----END PGP SIGNATURE-----



More information about the gem-dev mailing list