ChipMaster's bwBASIC This also includes history going back to v2.10. *WARN* some binary files might have been corrupted by CRLF.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3 years ago
3 years ago
3 years ago
v3.20 * Implements most of the following BASIC dialects: OPTION VERSION "BYWATER" ' Bywater BASIC 3 OPTION VERSION "BYWATER-2" ' Bywater BASIC 2 OPTION VERSION "CALL/360" ' SBC CALL/360 Mainframe BASIC OPTION VERSION "CBASIC-II" ' CBASIC-II for CP/M OPTION VERSION "DARTMOUTH" ' Dartmouth DTSS BASIC OPTION VERSION "ECMA-55" ' ANSI Minimal BASIC OPTION VERSION "ECMA-116" ' ANSI Full BASIC OPTION VERSION "GCOS" ' GE 600 Mainframe BASIC OPTION VERSION "HAARDT" ' bas 2.4 by Michael Haardt OPTION VERSION "HANDBOOK1" ' The BASIC Handbook, 1st Edition OPTION VERSION "HANDBOOK2" ' The BASIC Handbook, 2nd Edition OPTION VERSION "HEATH" ' Heath Benton Harbor BASIC OPTION VERSION "MARK-I" ' GE 265 Mainframe BASIC OPTION VERSION "MARK-II" ' GE 435 Mainframe BASIC OPTION VERSION "MBASIC" ' Microsoft BASIC-80 for Xenix OPTION VERSION "PDP-8" ' DEC PDP-8 BASIC OPTION VERSION "PDP-11" ' DEC PDP-11 BASIC OPTION VERSION "RBASIC" ' Micronics RBASIC for 6809 FLEX OPTION VERSION "RSTS-11" ' DEC RSTS-11 BASIC-PLUS OPTION VERSION "SYSTEM/360" ' IBM System/360 Mainframe BASIC OPTION VERSION "SYSTEM/370" ' IBM System/370 Mainframe BASIC OPTION VERSION "TRS-80" ' TRS-80 Model I/III/4 LBASIC OPTION VERSION "VINTAGE" ' Vintage BASIC 1.0.1 OPTION VERSION "XBASIC" ' TSC XBASIC for 6800 FLEX * CONST variable [, ...] = value Assigns the value to variable. Any later assignment to the variable causus a VARIABLE NOT DECLARED error. * DIM now supports lower and upper bounds. OPTION BASE 1 DIM X( 9 ) ' lower bound is 1 DIM Y( 5 TO 9 ) ' lower bound is 5 * DIM now supports virtual variables. OPTION BASE 1 OPEN "VIRTUAL.DAT" FOR VIRTUAL AS # 3 ' virtual data file DIM # 3, A( 1000 ) ' array is virtual LET A( 1000 ) = 0 ' value is written to the file LET X = A( 1000 ) ' value is read from the file CLOSE # 3 ' array is no longer valid * ERROR 27, "Bad DATA" Occurs when the READ command detects garbage in a DATA command. * INPUT LINE Same as LINE INPUT. * MAT now supports lower and upper bounds. OPTION BASE 1 MAT X( 9 ) = ZER ' lower bound is 1 MAT Y( 5 TO 9 ) = ZER ' lower bound is 5 MAT X = ZER( 9 ) ' lower bound is 1 MAT Y - ZER( 5 TO 9 ) ' lower bound is 5 * MAXLEN() Returns the maximum string length. * OPTION DIGITS integer Sets the number of significant digits for PRINT. Setting the value to zero restores the default. * OPTION EDIT string$ Sets the program name used by the EDIT command. Setting this to "" disables EDIT command. * OPTION FILES string$ Sets the program name used by the FILES command. Setting this to "" disables FILES command. * OPTION PROMPT string$ Sets the prompt. * OPTION PUNCT AT char$ Sets the PRINT AT character, commonly "@". Setting this to "" disables PRINT AT. Setting this to a non-punctuation character is not supported. * OPTION PUNCT BYTE char$ Sets the BYTE type suffix, commonly "~". Setting this to "" disables BYTE suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT COMMENT char$ Sets the trailing COMMENT character, commonly "'". Setting this to "" disables trailing comments. Setting this to a non-punctuation character is not supported. * OPTION PUNCT CURRENCY char$ Sets the CURRENCY type suffix, commonly "@". Setting this to "" disables CURRENCY suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT DOUBLE char$ Sets the DOUBLE type suffix, commonly "#". Setting this to "" disables DOUBLE suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT FILENUM char$ Sets the FILE NUMBER prefix, commonly "#". Setting this to "" disables the FILE NUMBER prefix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT IMAGE char$ Sets the shortcut IMAGE character, commonly ":". Setting this to "" disables the shortcut IMAGE character. Setting this to a non-punctuation character is not supported. * OPTION PUNCT INPUT char$ Sets the shortcut INPUT character, commonly "!". Setting this to "" disables the shortcut INPUT character. Setting this to a non-punctuation character is not supported. * OPTION PUNCT INTEGER char$ Sets the INTEGER type suffix, commonly "%". Setting this to "" disables INTEGER suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT LONG char$ Sets the LONG type suffix, commonly "&". Setting this to "" disables LONG suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT LPAREN char$ Sets the LEFT PARENTHESIS character, commonly "(". Setting this to a non-punctuation character is not supported. * OPTION PUNCT PRINT char$ Sets the shortcut PRINT character, commonly "?". Setting this to "" disables the shortcut PRINT character. Setting this to a non-punctuation character is not supported. * OPTION PUNCT QUOTE char$ Sets the QUOTE character, commonly """". Setting this to a non-punctuation character is not supported. * OPTION PUNCT RPAREN char$ Sets the RIGHT PARENTHESIS character, commonly ")". Setting this to a non-punctuation character is not supported. * OPTION PUNCT SINGLE char$ Sets the SINGLE type suffix, commonly "!". Setting this to "" disables SINGLE suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT STATEMENT char$ Sets the shortcut STATEMENT seperator character, commonly ":". Setting this to "" disables the STATEMENT seperator. Setting this to a non-punctuation character is not supported. * OPTION PUNCT STRING char$ Sets the STRING type suffix, commonly "$". Setting this to "" disables STRING suffix. Setting this to a non-punctuation character is not supported. * OPTION RECLEN integer Sets the default record length for RANDOM files, commonly 128. Setting thisto zero means there is no default RANDOM record length, so the record length must be specified in the OPEN statement. With OPTION RECLEN 128: OPEN "FILE.DAT" FOR RANDOM AS #3 is considered to be the same as OPEN "FILE.DAT" FOR RANDOM AS #3 LEN 128 With OPTION RECLEN 0: OPEN "FILE.DAT" FOR RANDOM AS #3 causes an error. * OPTION RENUM string$ Sets the program name used by the RENUM command. Setting this to "" disables RENUM command. * OPTION SCALE integer Sets the number of digits to round after the decimal point for PRINT. Setting the value to zero disables rounding. * OPTION USING DIGIT * OPTION USING COMMA * OPTION USING PERIOD * OPTION USING PLUS * OPTION USING MINUS * OPTION USING EXRAD * OPTION USING DOLLAR * OPTION USING FILLER * OPTION USING LITERAL * OPTION USING FIRST * OPTION USING ALL * OPTION USING LENGTH Sets the characters recognized by PRINT USING. Setting these to a non-punctuation character is not supported. * OPTION VERSION now requires a string instead of a literal. Some version names have changed. * OPTION VERSION "PDP-8" Added LPT, PTP, PTR, TTY, TTY IN and TTY OUT commands. Added GET() and PUT() functions. * OPTION VERSION "CALL/360" * OPTION VERSION "SYSTEM/360" * OPTION VERSION "SYSTEM/370" Added alphabet extenders. $ is a string variable. * OPTION ZONE integer Sets the PRINT zone width. Setting the value to zero restores the default. * REPEAT - UNTIL added REPEAT ... EXIT REPEAT ... UNTIL expression ' exits when expression != 0 * SPC( X ) and TAB( X ) No longer use control codes. * UNTIL - UEND removed (to add REPEAT - UNTIL) Here is a work-around for existin code using UNTIL-UEND: UNITL expression -->> WHILE NOT expression ... ... EXIT UNTIL -->> EXIT WHILE ... ... UEND -->> WEND * from Howard Wulf, AF5NE Editor's Note: In the official release *ALL* of the test and sample BASIC programs were removed and packaged in a separate "test" ZIP. I have extracted those in to the bwbtest folder where most of the tests were living in previous packages. I've also improved (I hope) the EOL handling. - ChipMaster
3 years ago
3 years ago
3 years ago
v3.20 * Implements most of the following BASIC dialects: OPTION VERSION "BYWATER" ' Bywater BASIC 3 OPTION VERSION "BYWATER-2" ' Bywater BASIC 2 OPTION VERSION "CALL/360" ' SBC CALL/360 Mainframe BASIC OPTION VERSION "CBASIC-II" ' CBASIC-II for CP/M OPTION VERSION "DARTMOUTH" ' Dartmouth DTSS BASIC OPTION VERSION "ECMA-55" ' ANSI Minimal BASIC OPTION VERSION "ECMA-116" ' ANSI Full BASIC OPTION VERSION "GCOS" ' GE 600 Mainframe BASIC OPTION VERSION "HAARDT" ' bas 2.4 by Michael Haardt OPTION VERSION "HANDBOOK1" ' The BASIC Handbook, 1st Edition OPTION VERSION "HANDBOOK2" ' The BASIC Handbook, 2nd Edition OPTION VERSION "HEATH" ' Heath Benton Harbor BASIC OPTION VERSION "MARK-I" ' GE 265 Mainframe BASIC OPTION VERSION "MARK-II" ' GE 435 Mainframe BASIC OPTION VERSION "MBASIC" ' Microsoft BASIC-80 for Xenix OPTION VERSION "PDP-8" ' DEC PDP-8 BASIC OPTION VERSION "PDP-11" ' DEC PDP-11 BASIC OPTION VERSION "RBASIC" ' Micronics RBASIC for 6809 FLEX OPTION VERSION "RSTS-11" ' DEC RSTS-11 BASIC-PLUS OPTION VERSION "SYSTEM/360" ' IBM System/360 Mainframe BASIC OPTION VERSION "SYSTEM/370" ' IBM System/370 Mainframe BASIC OPTION VERSION "TRS-80" ' TRS-80 Model I/III/4 LBASIC OPTION VERSION "VINTAGE" ' Vintage BASIC 1.0.1 OPTION VERSION "XBASIC" ' TSC XBASIC for 6800 FLEX * CONST variable [, ...] = value Assigns the value to variable. Any later assignment to the variable causus a VARIABLE NOT DECLARED error. * DIM now supports lower and upper bounds. OPTION BASE 1 DIM X( 9 ) ' lower bound is 1 DIM Y( 5 TO 9 ) ' lower bound is 5 * DIM now supports virtual variables. OPTION BASE 1 OPEN "VIRTUAL.DAT" FOR VIRTUAL AS # 3 ' virtual data file DIM # 3, A( 1000 ) ' array is virtual LET A( 1000 ) = 0 ' value is written to the file LET X = A( 1000 ) ' value is read from the file CLOSE # 3 ' array is no longer valid * ERROR 27, "Bad DATA" Occurs when the READ command detects garbage in a DATA command. * INPUT LINE Same as LINE INPUT. * MAT now supports lower and upper bounds. OPTION BASE 1 MAT X( 9 ) = ZER ' lower bound is 1 MAT Y( 5 TO 9 ) = ZER ' lower bound is 5 MAT X = ZER( 9 ) ' lower bound is 1 MAT Y - ZER( 5 TO 9 ) ' lower bound is 5 * MAXLEN() Returns the maximum string length. * OPTION DIGITS integer Sets the number of significant digits for PRINT. Setting the value to zero restores the default. * OPTION EDIT string$ Sets the program name used by the EDIT command. Setting this to "" disables EDIT command. * OPTION FILES string$ Sets the program name used by the FILES command. Setting this to "" disables FILES command. * OPTION PROMPT string$ Sets the prompt. * OPTION PUNCT AT char$ Sets the PRINT AT character, commonly "@". Setting this to "" disables PRINT AT. Setting this to a non-punctuation character is not supported. * OPTION PUNCT BYTE char$ Sets the BYTE type suffix, commonly "~". Setting this to "" disables BYTE suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT COMMENT char$ Sets the trailing COMMENT character, commonly "'". Setting this to "" disables trailing comments. Setting this to a non-punctuation character is not supported. * OPTION PUNCT CURRENCY char$ Sets the CURRENCY type suffix, commonly "@". Setting this to "" disables CURRENCY suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT DOUBLE char$ Sets the DOUBLE type suffix, commonly "#". Setting this to "" disables DOUBLE suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT FILENUM char$ Sets the FILE NUMBER prefix, commonly "#". Setting this to "" disables the FILE NUMBER prefix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT IMAGE char$ Sets the shortcut IMAGE character, commonly ":". Setting this to "" disables the shortcut IMAGE character. Setting this to a non-punctuation character is not supported. * OPTION PUNCT INPUT char$ Sets the shortcut INPUT character, commonly "!". Setting this to "" disables the shortcut INPUT character. Setting this to a non-punctuation character is not supported. * OPTION PUNCT INTEGER char$ Sets the INTEGER type suffix, commonly "%". Setting this to "" disables INTEGER suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT LONG char$ Sets the LONG type suffix, commonly "&". Setting this to "" disables LONG suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT LPAREN char$ Sets the LEFT PARENTHESIS character, commonly "(". Setting this to a non-punctuation character is not supported. * OPTION PUNCT PRINT char$ Sets the shortcut PRINT character, commonly "?". Setting this to "" disables the shortcut PRINT character. Setting this to a non-punctuation character is not supported. * OPTION PUNCT QUOTE char$ Sets the QUOTE character, commonly """". Setting this to a non-punctuation character is not supported. * OPTION PUNCT RPAREN char$ Sets the RIGHT PARENTHESIS character, commonly ")". Setting this to a non-punctuation character is not supported. * OPTION PUNCT SINGLE char$ Sets the SINGLE type suffix, commonly "!". Setting this to "" disables SINGLE suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT STATEMENT char$ Sets the shortcut STATEMENT seperator character, commonly ":". Setting this to "" disables the STATEMENT seperator. Setting this to a non-punctuation character is not supported. * OPTION PUNCT STRING char$ Sets the STRING type suffix, commonly "$". Setting this to "" disables STRING suffix. Setting this to a non-punctuation character is not supported. * OPTION RECLEN integer Sets the default record length for RANDOM files, commonly 128. Setting thisto zero means there is no default RANDOM record length, so the record length must be specified in the OPEN statement. With OPTION RECLEN 128: OPEN "FILE.DAT" FOR RANDOM AS #3 is considered to be the same as OPEN "FILE.DAT" FOR RANDOM AS #3 LEN 128 With OPTION RECLEN 0: OPEN "FILE.DAT" FOR RANDOM AS #3 causes an error. * OPTION RENUM string$ Sets the program name used by the RENUM command. Setting this to "" disables RENUM command. * OPTION SCALE integer Sets the number of digits to round after the decimal point for PRINT. Setting the value to zero disables rounding. * OPTION USING DIGIT * OPTION USING COMMA * OPTION USING PERIOD * OPTION USING PLUS * OPTION USING MINUS * OPTION USING EXRAD * OPTION USING DOLLAR * OPTION USING FILLER * OPTION USING LITERAL * OPTION USING FIRST * OPTION USING ALL * OPTION USING LENGTH Sets the characters recognized by PRINT USING. Setting these to a non-punctuation character is not supported. * OPTION VERSION now requires a string instead of a literal. Some version names have changed. * OPTION VERSION "PDP-8" Added LPT, PTP, PTR, TTY, TTY IN and TTY OUT commands. Added GET() and PUT() functions. * OPTION VERSION "CALL/360" * OPTION VERSION "SYSTEM/360" * OPTION VERSION "SYSTEM/370" Added alphabet extenders. $ is a string variable. * OPTION ZONE integer Sets the PRINT zone width. Setting the value to zero restores the default. * REPEAT - UNTIL added REPEAT ... EXIT REPEAT ... UNTIL expression ' exits when expression != 0 * SPC( X ) and TAB( X ) No longer use control codes. * UNTIL - UEND removed (to add REPEAT - UNTIL) Here is a work-around for existin code using UNTIL-UEND: UNITL expression -->> WHILE NOT expression ... ... EXIT UNTIL -->> EXIT WHILE ... ... UEND -->> WEND * from Howard Wulf, AF5NE Editor's Note: In the official release *ALL* of the test and sample BASIC programs were removed and packaged in a separate "test" ZIP. I have extracted those in to the bwbtest folder where most of the tests were living in previous packages. I've also improved (I hope) the EOL handling. - ChipMaster
3 years ago
3 years ago
v3.20 * Implements most of the following BASIC dialects: OPTION VERSION "BYWATER" ' Bywater BASIC 3 OPTION VERSION "BYWATER-2" ' Bywater BASIC 2 OPTION VERSION "CALL/360" ' SBC CALL/360 Mainframe BASIC OPTION VERSION "CBASIC-II" ' CBASIC-II for CP/M OPTION VERSION "DARTMOUTH" ' Dartmouth DTSS BASIC OPTION VERSION "ECMA-55" ' ANSI Minimal BASIC OPTION VERSION "ECMA-116" ' ANSI Full BASIC OPTION VERSION "GCOS" ' GE 600 Mainframe BASIC OPTION VERSION "HAARDT" ' bas 2.4 by Michael Haardt OPTION VERSION "HANDBOOK1" ' The BASIC Handbook, 1st Edition OPTION VERSION "HANDBOOK2" ' The BASIC Handbook, 2nd Edition OPTION VERSION "HEATH" ' Heath Benton Harbor BASIC OPTION VERSION "MARK-I" ' GE 265 Mainframe BASIC OPTION VERSION "MARK-II" ' GE 435 Mainframe BASIC OPTION VERSION "MBASIC" ' Microsoft BASIC-80 for Xenix OPTION VERSION "PDP-8" ' DEC PDP-8 BASIC OPTION VERSION "PDP-11" ' DEC PDP-11 BASIC OPTION VERSION "RBASIC" ' Micronics RBASIC for 6809 FLEX OPTION VERSION "RSTS-11" ' DEC RSTS-11 BASIC-PLUS OPTION VERSION "SYSTEM/360" ' IBM System/360 Mainframe BASIC OPTION VERSION "SYSTEM/370" ' IBM System/370 Mainframe BASIC OPTION VERSION "TRS-80" ' TRS-80 Model I/III/4 LBASIC OPTION VERSION "VINTAGE" ' Vintage BASIC 1.0.1 OPTION VERSION "XBASIC" ' TSC XBASIC for 6800 FLEX * CONST variable [, ...] = value Assigns the value to variable. Any later assignment to the variable causus a VARIABLE NOT DECLARED error. * DIM now supports lower and upper bounds. OPTION BASE 1 DIM X( 9 ) ' lower bound is 1 DIM Y( 5 TO 9 ) ' lower bound is 5 * DIM now supports virtual variables. OPTION BASE 1 OPEN "VIRTUAL.DAT" FOR VIRTUAL AS # 3 ' virtual data file DIM # 3, A( 1000 ) ' array is virtual LET A( 1000 ) = 0 ' value is written to the file LET X = A( 1000 ) ' value is read from the file CLOSE # 3 ' array is no longer valid * ERROR 27, "Bad DATA" Occurs when the READ command detects garbage in a DATA command. * INPUT LINE Same as LINE INPUT. * MAT now supports lower and upper bounds. OPTION BASE 1 MAT X( 9 ) = ZER ' lower bound is 1 MAT Y( 5 TO 9 ) = ZER ' lower bound is 5 MAT X = ZER( 9 ) ' lower bound is 1 MAT Y - ZER( 5 TO 9 ) ' lower bound is 5 * MAXLEN() Returns the maximum string length. * OPTION DIGITS integer Sets the number of significant digits for PRINT. Setting the value to zero restores the default. * OPTION EDIT string$ Sets the program name used by the EDIT command. Setting this to "" disables EDIT command. * OPTION FILES string$ Sets the program name used by the FILES command. Setting this to "" disables FILES command. * OPTION PROMPT string$ Sets the prompt. * OPTION PUNCT AT char$ Sets the PRINT AT character, commonly "@". Setting this to "" disables PRINT AT. Setting this to a non-punctuation character is not supported. * OPTION PUNCT BYTE char$ Sets the BYTE type suffix, commonly "~". Setting this to "" disables BYTE suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT COMMENT char$ Sets the trailing COMMENT character, commonly "'". Setting this to "" disables trailing comments. Setting this to a non-punctuation character is not supported. * OPTION PUNCT CURRENCY char$ Sets the CURRENCY type suffix, commonly "@". Setting this to "" disables CURRENCY suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT DOUBLE char$ Sets the DOUBLE type suffix, commonly "#". Setting this to "" disables DOUBLE suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT FILENUM char$ Sets the FILE NUMBER prefix, commonly "#". Setting this to "" disables the FILE NUMBER prefix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT IMAGE char$ Sets the shortcut IMAGE character, commonly ":". Setting this to "" disables the shortcut IMAGE character. Setting this to a non-punctuation character is not supported. * OPTION PUNCT INPUT char$ Sets the shortcut INPUT character, commonly "!". Setting this to "" disables the shortcut INPUT character. Setting this to a non-punctuation character is not supported. * OPTION PUNCT INTEGER char$ Sets the INTEGER type suffix, commonly "%". Setting this to "" disables INTEGER suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT LONG char$ Sets the LONG type suffix, commonly "&". Setting this to "" disables LONG suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT LPAREN char$ Sets the LEFT PARENTHESIS character, commonly "(". Setting this to a non-punctuation character is not supported. * OPTION PUNCT PRINT char$ Sets the shortcut PRINT character, commonly "?". Setting this to "" disables the shortcut PRINT character. Setting this to a non-punctuation character is not supported. * OPTION PUNCT QUOTE char$ Sets the QUOTE character, commonly """". Setting this to a non-punctuation character is not supported. * OPTION PUNCT RPAREN char$ Sets the RIGHT PARENTHESIS character, commonly ")". Setting this to a non-punctuation character is not supported. * OPTION PUNCT SINGLE char$ Sets the SINGLE type suffix, commonly "!". Setting this to "" disables SINGLE suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT STATEMENT char$ Sets the shortcut STATEMENT seperator character, commonly ":". Setting this to "" disables the STATEMENT seperator. Setting this to a non-punctuation character is not supported. * OPTION PUNCT STRING char$ Sets the STRING type suffix, commonly "$". Setting this to "" disables STRING suffix. Setting this to a non-punctuation character is not supported. * OPTION RECLEN integer Sets the default record length for RANDOM files, commonly 128. Setting thisto zero means there is no default RANDOM record length, so the record length must be specified in the OPEN statement. With OPTION RECLEN 128: OPEN "FILE.DAT" FOR RANDOM AS #3 is considered to be the same as OPEN "FILE.DAT" FOR RANDOM AS #3 LEN 128 With OPTION RECLEN 0: OPEN "FILE.DAT" FOR RANDOM AS #3 causes an error. * OPTION RENUM string$ Sets the program name used by the RENUM command. Setting this to "" disables RENUM command. * OPTION SCALE integer Sets the number of digits to round after the decimal point for PRINT. Setting the value to zero disables rounding. * OPTION USING DIGIT * OPTION USING COMMA * OPTION USING PERIOD * OPTION USING PLUS * OPTION USING MINUS * OPTION USING EXRAD * OPTION USING DOLLAR * OPTION USING FILLER * OPTION USING LITERAL * OPTION USING FIRST * OPTION USING ALL * OPTION USING LENGTH Sets the characters recognized by PRINT USING. Setting these to a non-punctuation character is not supported. * OPTION VERSION now requires a string instead of a literal. Some version names have changed. * OPTION VERSION "PDP-8" Added LPT, PTP, PTR, TTY, TTY IN and TTY OUT commands. Added GET() and PUT() functions. * OPTION VERSION "CALL/360" * OPTION VERSION "SYSTEM/360" * OPTION VERSION "SYSTEM/370" Added alphabet extenders. $ is a string variable. * OPTION ZONE integer Sets the PRINT zone width. Setting the value to zero restores the default. * REPEAT - UNTIL added REPEAT ... EXIT REPEAT ... UNTIL expression ' exits when expression != 0 * SPC( X ) and TAB( X ) No longer use control codes. * UNTIL - UEND removed (to add REPEAT - UNTIL) Here is a work-around for existin code using UNTIL-UEND: UNITL expression -->> WHILE NOT expression ... ... EXIT UNTIL -->> EXIT WHILE ... ... UEND -->> WEND * from Howard Wulf, AF5NE Editor's Note: In the official release *ALL* of the test and sample BASIC programs were removed and packaged in a separate "test" ZIP. I have extracted those in to the bwbtest folder where most of the tests were living in previous packages. I've also improved (I hope) the EOL handling. - ChipMaster
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
v3.20 * Implements most of the following BASIC dialects: OPTION VERSION "BYWATER" ' Bywater BASIC 3 OPTION VERSION "BYWATER-2" ' Bywater BASIC 2 OPTION VERSION "CALL/360" ' SBC CALL/360 Mainframe BASIC OPTION VERSION "CBASIC-II" ' CBASIC-II for CP/M OPTION VERSION "DARTMOUTH" ' Dartmouth DTSS BASIC OPTION VERSION "ECMA-55" ' ANSI Minimal BASIC OPTION VERSION "ECMA-116" ' ANSI Full BASIC OPTION VERSION "GCOS" ' GE 600 Mainframe BASIC OPTION VERSION "HAARDT" ' bas 2.4 by Michael Haardt OPTION VERSION "HANDBOOK1" ' The BASIC Handbook, 1st Edition OPTION VERSION "HANDBOOK2" ' The BASIC Handbook, 2nd Edition OPTION VERSION "HEATH" ' Heath Benton Harbor BASIC OPTION VERSION "MARK-I" ' GE 265 Mainframe BASIC OPTION VERSION "MARK-II" ' GE 435 Mainframe BASIC OPTION VERSION "MBASIC" ' Microsoft BASIC-80 for Xenix OPTION VERSION "PDP-8" ' DEC PDP-8 BASIC OPTION VERSION "PDP-11" ' DEC PDP-11 BASIC OPTION VERSION "RBASIC" ' Micronics RBASIC for 6809 FLEX OPTION VERSION "RSTS-11" ' DEC RSTS-11 BASIC-PLUS OPTION VERSION "SYSTEM/360" ' IBM System/360 Mainframe BASIC OPTION VERSION "SYSTEM/370" ' IBM System/370 Mainframe BASIC OPTION VERSION "TRS-80" ' TRS-80 Model I/III/4 LBASIC OPTION VERSION "VINTAGE" ' Vintage BASIC 1.0.1 OPTION VERSION "XBASIC" ' TSC XBASIC for 6800 FLEX * CONST variable [, ...] = value Assigns the value to variable. Any later assignment to the variable causus a VARIABLE NOT DECLARED error. * DIM now supports lower and upper bounds. OPTION BASE 1 DIM X( 9 ) ' lower bound is 1 DIM Y( 5 TO 9 ) ' lower bound is 5 * DIM now supports virtual variables. OPTION BASE 1 OPEN "VIRTUAL.DAT" FOR VIRTUAL AS # 3 ' virtual data file DIM # 3, A( 1000 ) ' array is virtual LET A( 1000 ) = 0 ' value is written to the file LET X = A( 1000 ) ' value is read from the file CLOSE # 3 ' array is no longer valid * ERROR 27, "Bad DATA" Occurs when the READ command detects garbage in a DATA command. * INPUT LINE Same as LINE INPUT. * MAT now supports lower and upper bounds. OPTION BASE 1 MAT X( 9 ) = ZER ' lower bound is 1 MAT Y( 5 TO 9 ) = ZER ' lower bound is 5 MAT X = ZER( 9 ) ' lower bound is 1 MAT Y - ZER( 5 TO 9 ) ' lower bound is 5 * MAXLEN() Returns the maximum string length. * OPTION DIGITS integer Sets the number of significant digits for PRINT. Setting the value to zero restores the default. * OPTION EDIT string$ Sets the program name used by the EDIT command. Setting this to "" disables EDIT command. * OPTION FILES string$ Sets the program name used by the FILES command. Setting this to "" disables FILES command. * OPTION PROMPT string$ Sets the prompt. * OPTION PUNCT AT char$ Sets the PRINT AT character, commonly "@". Setting this to "" disables PRINT AT. Setting this to a non-punctuation character is not supported. * OPTION PUNCT BYTE char$ Sets the BYTE type suffix, commonly "~". Setting this to "" disables BYTE suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT COMMENT char$ Sets the trailing COMMENT character, commonly "'". Setting this to "" disables trailing comments. Setting this to a non-punctuation character is not supported. * OPTION PUNCT CURRENCY char$ Sets the CURRENCY type suffix, commonly "@". Setting this to "" disables CURRENCY suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT DOUBLE char$ Sets the DOUBLE type suffix, commonly "#". Setting this to "" disables DOUBLE suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT FILENUM char$ Sets the FILE NUMBER prefix, commonly "#". Setting this to "" disables the FILE NUMBER prefix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT IMAGE char$ Sets the shortcut IMAGE character, commonly ":". Setting this to "" disables the shortcut IMAGE character. Setting this to a non-punctuation character is not supported. * OPTION PUNCT INPUT char$ Sets the shortcut INPUT character, commonly "!". Setting this to "" disables the shortcut INPUT character. Setting this to a non-punctuation character is not supported. * OPTION PUNCT INTEGER char$ Sets the INTEGER type suffix, commonly "%". Setting this to "" disables INTEGER suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT LONG char$ Sets the LONG type suffix, commonly "&". Setting this to "" disables LONG suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT LPAREN char$ Sets the LEFT PARENTHESIS character, commonly "(". Setting this to a non-punctuation character is not supported. * OPTION PUNCT PRINT char$ Sets the shortcut PRINT character, commonly "?". Setting this to "" disables the shortcut PRINT character. Setting this to a non-punctuation character is not supported. * OPTION PUNCT QUOTE char$ Sets the QUOTE character, commonly """". Setting this to a non-punctuation character is not supported. * OPTION PUNCT RPAREN char$ Sets the RIGHT PARENTHESIS character, commonly ")". Setting this to a non-punctuation character is not supported. * OPTION PUNCT SINGLE char$ Sets the SINGLE type suffix, commonly "!". Setting this to "" disables SINGLE suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT STATEMENT char$ Sets the shortcut STATEMENT seperator character, commonly ":". Setting this to "" disables the STATEMENT seperator. Setting this to a non-punctuation character is not supported. * OPTION PUNCT STRING char$ Sets the STRING type suffix, commonly "$". Setting this to "" disables STRING suffix. Setting this to a non-punctuation character is not supported. * OPTION RECLEN integer Sets the default record length for RANDOM files, commonly 128. Setting thisto zero means there is no default RANDOM record length, so the record length must be specified in the OPEN statement. With OPTION RECLEN 128: OPEN "FILE.DAT" FOR RANDOM AS #3 is considered to be the same as OPEN "FILE.DAT" FOR RANDOM AS #3 LEN 128 With OPTION RECLEN 0: OPEN "FILE.DAT" FOR RANDOM AS #3 causes an error. * OPTION RENUM string$ Sets the program name used by the RENUM command. Setting this to "" disables RENUM command. * OPTION SCALE integer Sets the number of digits to round after the decimal point for PRINT. Setting the value to zero disables rounding. * OPTION USING DIGIT * OPTION USING COMMA * OPTION USING PERIOD * OPTION USING PLUS * OPTION USING MINUS * OPTION USING EXRAD * OPTION USING DOLLAR * OPTION USING FILLER * OPTION USING LITERAL * OPTION USING FIRST * OPTION USING ALL * OPTION USING LENGTH Sets the characters recognized by PRINT USING. Setting these to a non-punctuation character is not supported. * OPTION VERSION now requires a string instead of a literal. Some version names have changed. * OPTION VERSION "PDP-8" Added LPT, PTP, PTR, TTY, TTY IN and TTY OUT commands. Added GET() and PUT() functions. * OPTION VERSION "CALL/360" * OPTION VERSION "SYSTEM/360" * OPTION VERSION "SYSTEM/370" Added alphabet extenders. $ is a string variable. * OPTION ZONE integer Sets the PRINT zone width. Setting the value to zero restores the default. * REPEAT - UNTIL added REPEAT ... EXIT REPEAT ... UNTIL expression ' exits when expression != 0 * SPC( X ) and TAB( X ) No longer use control codes. * UNTIL - UEND removed (to add REPEAT - UNTIL) Here is a work-around for existin code using UNTIL-UEND: UNITL expression -->> WHILE NOT expression ... ... EXIT UNTIL -->> EXIT WHILE ... ... UEND -->> WEND * from Howard Wulf, AF5NE Editor's Note: In the official release *ALL* of the test and sample BASIC programs were removed and packaged in a separate "test" ZIP. I have extracted those in to the bwbtest folder where most of the tests were living in previous packages. I've also improved (I hope) the EOL handling. - ChipMaster
3 years ago
v3.20 * Implements most of the following BASIC dialects: OPTION VERSION "BYWATER" ' Bywater BASIC 3 OPTION VERSION "BYWATER-2" ' Bywater BASIC 2 OPTION VERSION "CALL/360" ' SBC CALL/360 Mainframe BASIC OPTION VERSION "CBASIC-II" ' CBASIC-II for CP/M OPTION VERSION "DARTMOUTH" ' Dartmouth DTSS BASIC OPTION VERSION "ECMA-55" ' ANSI Minimal BASIC OPTION VERSION "ECMA-116" ' ANSI Full BASIC OPTION VERSION "GCOS" ' GE 600 Mainframe BASIC OPTION VERSION "HAARDT" ' bas 2.4 by Michael Haardt OPTION VERSION "HANDBOOK1" ' The BASIC Handbook, 1st Edition OPTION VERSION "HANDBOOK2" ' The BASIC Handbook, 2nd Edition OPTION VERSION "HEATH" ' Heath Benton Harbor BASIC OPTION VERSION "MARK-I" ' GE 265 Mainframe BASIC OPTION VERSION "MARK-II" ' GE 435 Mainframe BASIC OPTION VERSION "MBASIC" ' Microsoft BASIC-80 for Xenix OPTION VERSION "PDP-8" ' DEC PDP-8 BASIC OPTION VERSION "PDP-11" ' DEC PDP-11 BASIC OPTION VERSION "RBASIC" ' Micronics RBASIC for 6809 FLEX OPTION VERSION "RSTS-11" ' DEC RSTS-11 BASIC-PLUS OPTION VERSION "SYSTEM/360" ' IBM System/360 Mainframe BASIC OPTION VERSION "SYSTEM/370" ' IBM System/370 Mainframe BASIC OPTION VERSION "TRS-80" ' TRS-80 Model I/III/4 LBASIC OPTION VERSION "VINTAGE" ' Vintage BASIC 1.0.1 OPTION VERSION "XBASIC" ' TSC XBASIC for 6800 FLEX * CONST variable [, ...] = value Assigns the value to variable. Any later assignment to the variable causus a VARIABLE NOT DECLARED error. * DIM now supports lower and upper bounds. OPTION BASE 1 DIM X( 9 ) ' lower bound is 1 DIM Y( 5 TO 9 ) ' lower bound is 5 * DIM now supports virtual variables. OPTION BASE 1 OPEN "VIRTUAL.DAT" FOR VIRTUAL AS # 3 ' virtual data file DIM # 3, A( 1000 ) ' array is virtual LET A( 1000 ) = 0 ' value is written to the file LET X = A( 1000 ) ' value is read from the file CLOSE # 3 ' array is no longer valid * ERROR 27, "Bad DATA" Occurs when the READ command detects garbage in a DATA command. * INPUT LINE Same as LINE INPUT. * MAT now supports lower and upper bounds. OPTION BASE 1 MAT X( 9 ) = ZER ' lower bound is 1 MAT Y( 5 TO 9 ) = ZER ' lower bound is 5 MAT X = ZER( 9 ) ' lower bound is 1 MAT Y - ZER( 5 TO 9 ) ' lower bound is 5 * MAXLEN() Returns the maximum string length. * OPTION DIGITS integer Sets the number of significant digits for PRINT. Setting the value to zero restores the default. * OPTION EDIT string$ Sets the program name used by the EDIT command. Setting this to "" disables EDIT command. * OPTION FILES string$ Sets the program name used by the FILES command. Setting this to "" disables FILES command. * OPTION PROMPT string$ Sets the prompt. * OPTION PUNCT AT char$ Sets the PRINT AT character, commonly "@". Setting this to "" disables PRINT AT. Setting this to a non-punctuation character is not supported. * OPTION PUNCT BYTE char$ Sets the BYTE type suffix, commonly "~". Setting this to "" disables BYTE suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT COMMENT char$ Sets the trailing COMMENT character, commonly "'". Setting this to "" disables trailing comments. Setting this to a non-punctuation character is not supported. * OPTION PUNCT CURRENCY char$ Sets the CURRENCY type suffix, commonly "@". Setting this to "" disables CURRENCY suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT DOUBLE char$ Sets the DOUBLE type suffix, commonly "#". Setting this to "" disables DOUBLE suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT FILENUM char$ Sets the FILE NUMBER prefix, commonly "#". Setting this to "" disables the FILE NUMBER prefix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT IMAGE char$ Sets the shortcut IMAGE character, commonly ":". Setting this to "" disables the shortcut IMAGE character. Setting this to a non-punctuation character is not supported. * OPTION PUNCT INPUT char$ Sets the shortcut INPUT character, commonly "!". Setting this to "" disables the shortcut INPUT character. Setting this to a non-punctuation character is not supported. * OPTION PUNCT INTEGER char$ Sets the INTEGER type suffix, commonly "%". Setting this to "" disables INTEGER suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT LONG char$ Sets the LONG type suffix, commonly "&". Setting this to "" disables LONG suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT LPAREN char$ Sets the LEFT PARENTHESIS character, commonly "(". Setting this to a non-punctuation character is not supported. * OPTION PUNCT PRINT char$ Sets the shortcut PRINT character, commonly "?". Setting this to "" disables the shortcut PRINT character. Setting this to a non-punctuation character is not supported. * OPTION PUNCT QUOTE char$ Sets the QUOTE character, commonly """". Setting this to a non-punctuation character is not supported. * OPTION PUNCT RPAREN char$ Sets the RIGHT PARENTHESIS character, commonly ")". Setting this to a non-punctuation character is not supported. * OPTION PUNCT SINGLE char$ Sets the SINGLE type suffix, commonly "!". Setting this to "" disables SINGLE suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT STATEMENT char$ Sets the shortcut STATEMENT seperator character, commonly ":". Setting this to "" disables the STATEMENT seperator. Setting this to a non-punctuation character is not supported. * OPTION PUNCT STRING char$ Sets the STRING type suffix, commonly "$". Setting this to "" disables STRING suffix. Setting this to a non-punctuation character is not supported. * OPTION RECLEN integer Sets the default record length for RANDOM files, commonly 128. Setting thisto zero means there is no default RANDOM record length, so the record length must be specified in the OPEN statement. With OPTION RECLEN 128: OPEN "FILE.DAT" FOR RANDOM AS #3 is considered to be the same as OPEN "FILE.DAT" FOR RANDOM AS #3 LEN 128 With OPTION RECLEN 0: OPEN "FILE.DAT" FOR RANDOM AS #3 causes an error. * OPTION RENUM string$ Sets the program name used by the RENUM command. Setting this to "" disables RENUM command. * OPTION SCALE integer Sets the number of digits to round after the decimal point for PRINT. Setting the value to zero disables rounding. * OPTION USING DIGIT * OPTION USING COMMA * OPTION USING PERIOD * OPTION USING PLUS * OPTION USING MINUS * OPTION USING EXRAD * OPTION USING DOLLAR * OPTION USING FILLER * OPTION USING LITERAL * OPTION USING FIRST * OPTION USING ALL * OPTION USING LENGTH Sets the characters recognized by PRINT USING. Setting these to a non-punctuation character is not supported. * OPTION VERSION now requires a string instead of a literal. Some version names have changed. * OPTION VERSION "PDP-8" Added LPT, PTP, PTR, TTY, TTY IN and TTY OUT commands. Added GET() and PUT() functions. * OPTION VERSION "CALL/360" * OPTION VERSION "SYSTEM/360" * OPTION VERSION "SYSTEM/370" Added alphabet extenders. $ is a string variable. * OPTION ZONE integer Sets the PRINT zone width. Setting the value to zero restores the default. * REPEAT - UNTIL added REPEAT ... EXIT REPEAT ... UNTIL expression ' exits when expression != 0 * SPC( X ) and TAB( X ) No longer use control codes. * UNTIL - UEND removed (to add REPEAT - UNTIL) Here is a work-around for existin code using UNTIL-UEND: UNITL expression -->> WHILE NOT expression ... ... EXIT UNTIL -->> EXIT WHILE ... ... UEND -->> WEND * from Howard Wulf, AF5NE Editor's Note: In the official release *ALL* of the test and sample BASIC programs were removed and packaged in a separate "test" ZIP. I have extracted those in to the bwbtest folder where most of the tests were living in previous packages. I've also improved (I hope) the EOL handling. - ChipMaster
3 years ago
v3.20 * Implements most of the following BASIC dialects: OPTION VERSION "BYWATER" ' Bywater BASIC 3 OPTION VERSION "BYWATER-2" ' Bywater BASIC 2 OPTION VERSION "CALL/360" ' SBC CALL/360 Mainframe BASIC OPTION VERSION "CBASIC-II" ' CBASIC-II for CP/M OPTION VERSION "DARTMOUTH" ' Dartmouth DTSS BASIC OPTION VERSION "ECMA-55" ' ANSI Minimal BASIC OPTION VERSION "ECMA-116" ' ANSI Full BASIC OPTION VERSION "GCOS" ' GE 600 Mainframe BASIC OPTION VERSION "HAARDT" ' bas 2.4 by Michael Haardt OPTION VERSION "HANDBOOK1" ' The BASIC Handbook, 1st Edition OPTION VERSION "HANDBOOK2" ' The BASIC Handbook, 2nd Edition OPTION VERSION "HEATH" ' Heath Benton Harbor BASIC OPTION VERSION "MARK-I" ' GE 265 Mainframe BASIC OPTION VERSION "MARK-II" ' GE 435 Mainframe BASIC OPTION VERSION "MBASIC" ' Microsoft BASIC-80 for Xenix OPTION VERSION "PDP-8" ' DEC PDP-8 BASIC OPTION VERSION "PDP-11" ' DEC PDP-11 BASIC OPTION VERSION "RBASIC" ' Micronics RBASIC for 6809 FLEX OPTION VERSION "RSTS-11" ' DEC RSTS-11 BASIC-PLUS OPTION VERSION "SYSTEM/360" ' IBM System/360 Mainframe BASIC OPTION VERSION "SYSTEM/370" ' IBM System/370 Mainframe BASIC OPTION VERSION "TRS-80" ' TRS-80 Model I/III/4 LBASIC OPTION VERSION "VINTAGE" ' Vintage BASIC 1.0.1 OPTION VERSION "XBASIC" ' TSC XBASIC for 6800 FLEX * CONST variable [, ...] = value Assigns the value to variable. Any later assignment to the variable causus a VARIABLE NOT DECLARED error. * DIM now supports lower and upper bounds. OPTION BASE 1 DIM X( 9 ) ' lower bound is 1 DIM Y( 5 TO 9 ) ' lower bound is 5 * DIM now supports virtual variables. OPTION BASE 1 OPEN "VIRTUAL.DAT" FOR VIRTUAL AS # 3 ' virtual data file DIM # 3, A( 1000 ) ' array is virtual LET A( 1000 ) = 0 ' value is written to the file LET X = A( 1000 ) ' value is read from the file CLOSE # 3 ' array is no longer valid * ERROR 27, "Bad DATA" Occurs when the READ command detects garbage in a DATA command. * INPUT LINE Same as LINE INPUT. * MAT now supports lower and upper bounds. OPTION BASE 1 MAT X( 9 ) = ZER ' lower bound is 1 MAT Y( 5 TO 9 ) = ZER ' lower bound is 5 MAT X = ZER( 9 ) ' lower bound is 1 MAT Y - ZER( 5 TO 9 ) ' lower bound is 5 * MAXLEN() Returns the maximum string length. * OPTION DIGITS integer Sets the number of significant digits for PRINT. Setting the value to zero restores the default. * OPTION EDIT string$ Sets the program name used by the EDIT command. Setting this to "" disables EDIT command. * OPTION FILES string$ Sets the program name used by the FILES command. Setting this to "" disables FILES command. * OPTION PROMPT string$ Sets the prompt. * OPTION PUNCT AT char$ Sets the PRINT AT character, commonly "@". Setting this to "" disables PRINT AT. Setting this to a non-punctuation character is not supported. * OPTION PUNCT BYTE char$ Sets the BYTE type suffix, commonly "~". Setting this to "" disables BYTE suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT COMMENT char$ Sets the trailing COMMENT character, commonly "'". Setting this to "" disables trailing comments. Setting this to a non-punctuation character is not supported. * OPTION PUNCT CURRENCY char$ Sets the CURRENCY type suffix, commonly "@". Setting this to "" disables CURRENCY suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT DOUBLE char$ Sets the DOUBLE type suffix, commonly "#". Setting this to "" disables DOUBLE suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT FILENUM char$ Sets the FILE NUMBER prefix, commonly "#". Setting this to "" disables the FILE NUMBER prefix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT IMAGE char$ Sets the shortcut IMAGE character, commonly ":". Setting this to "" disables the shortcut IMAGE character. Setting this to a non-punctuation character is not supported. * OPTION PUNCT INPUT char$ Sets the shortcut INPUT character, commonly "!". Setting this to "" disables the shortcut INPUT character. Setting this to a non-punctuation character is not supported. * OPTION PUNCT INTEGER char$ Sets the INTEGER type suffix, commonly "%". Setting this to "" disables INTEGER suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT LONG char$ Sets the LONG type suffix, commonly "&". Setting this to "" disables LONG suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT LPAREN char$ Sets the LEFT PARENTHESIS character, commonly "(". Setting this to a non-punctuation character is not supported. * OPTION PUNCT PRINT char$ Sets the shortcut PRINT character, commonly "?". Setting this to "" disables the shortcut PRINT character. Setting this to a non-punctuation character is not supported. * OPTION PUNCT QUOTE char$ Sets the QUOTE character, commonly """". Setting this to a non-punctuation character is not supported. * OPTION PUNCT RPAREN char$ Sets the RIGHT PARENTHESIS character, commonly ")". Setting this to a non-punctuation character is not supported. * OPTION PUNCT SINGLE char$ Sets the SINGLE type suffix, commonly "!". Setting this to "" disables SINGLE suffix. Setting this to a non-punctuation character is not supported. * OPTION PUNCT STATEMENT char$ Sets the shortcut STATEMENT seperator character, commonly ":". Setting this to "" disables the STATEMENT seperator. Setting this to a non-punctuation character is not supported. * OPTION PUNCT STRING char$ Sets the STRING type suffix, commonly "$". Setting this to "" disables STRING suffix. Setting this to a non-punctuation character is not supported. * OPTION RECLEN integer Sets the default record length for RANDOM files, commonly 128. Setting thisto zero means there is no default RANDOM record length, so the record length must be specified in the OPEN statement. With OPTION RECLEN 128: OPEN "FILE.DAT" FOR RANDOM AS #3 is considered to be the same as OPEN "FILE.DAT" FOR RANDOM AS #3 LEN 128 With OPTION RECLEN 0: OPEN "FILE.DAT" FOR RANDOM AS #3 causes an error. * OPTION RENUM string$ Sets the program name used by the RENUM command. Setting this to "" disables RENUM command. * OPTION SCALE integer Sets the number of digits to round after the decimal point for PRINT. Setting the value to zero disables rounding. * OPTION USING DIGIT * OPTION USING COMMA * OPTION USING PERIOD * OPTION USING PLUS * OPTION USING MINUS * OPTION USING EXRAD * OPTION USING DOLLAR * OPTION USING FILLER * OPTION USING LITERAL * OPTION USING FIRST * OPTION USING ALL * OPTION USING LENGTH Sets the characters recognized by PRINT USING. Setting these to a non-punctuation character is not supported. * OPTION VERSION now requires a string instead of a literal. Some version names have changed. * OPTION VERSION "PDP-8" Added LPT, PTP, PTR, TTY, TTY IN and TTY OUT commands. Added GET() and PUT() functions. * OPTION VERSION "CALL/360" * OPTION VERSION "SYSTEM/360" * OPTION VERSION "SYSTEM/370" Added alphabet extenders. $ is a string variable. * OPTION ZONE integer Sets the PRINT zone width. Setting the value to zero restores the default. * REPEAT - UNTIL added REPEAT ... EXIT REPEAT ... UNTIL expression ' exits when expression != 0 * SPC( X ) and TAB( X ) No longer use control codes. * UNTIL - UEND removed (to add REPEAT - UNTIL) Here is a work-around for existin code using UNTIL-UEND: UNITL expression -->> WHILE NOT expression ... ... EXIT UNTIL -->> EXIT WHILE ... ... UEND -->> WEND * from Howard Wulf, AF5NE Editor's Note: In the official release *ALL* of the test and sample BASIC programs were removed and packaged in a separate "test" ZIP. I have extracted those in to the bwbtest folder where most of the tests were living in previous packages. I've also improved (I hope) the EOL handling. - ChipMaster
3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529
  1. README file for
  2. Bywater BASIC Interpreter, version 3.20
  3. ---------------------------------------------
  4. Copyright (c) 1993, Ted A. Campbell
  5. for bwBASIC version 2.10, 11 October 1993
  6. Version 2.20 modifications by Jon B. Volkoff,
  7. 25 November 1995
  8. Patch level 1 release by Jon B. Volkoff,
  9. 15 March 1996
  10. Patch level 2 release by Jon B. Volkoff,
  11. 11 October 1997
  12. Version 2.30 modifications by Paul Edwards,
  13. 5 March 2008
  14. Version 2.40 modifications by Paul Edwards,
  15. 26 Jan 2009
  16. Version 2.50 modifications by Paul Edwards,
  17. 4 June 2009
  18. Version 2.60 modifications by Paul Edwards,
  19. 6 November 2012
  20. Version 2.61 modifications by Paul Edwards,
  21. 4 August 2014
  22. Version 3.00 modifications by Howard Wulf, AF5NE
  23. 12 May 2015
  24. Version 3.10 modifications by Howard Wulf, AF5NE
  25. 27 July 2016
  26. Version 3.20 modifications by Howard Wulf, AF5NE
  27. 4 June 2017
  28. Version 3.20c modifications by Ken Martin
  29. Nov. 2019 Aug. 2020
  30. DESCRIPTION:
  31. The Bywater BASIC Interpreter (bwBASIC) implements a large
  32. superset of the ANSI Standard for Minimal BASIC (X3.60-1978),
  33. a significant subset of the ANSI Standard for Full BASIC
  34. (X3.113-1987), and many classic BASIC dialects in C. bwBASIC
  35. seeks to be as portable as possible.
  36. This version of Bywater BASIC is released under the terms of the
  37. GNU General Public License (GPL), which is distributed with this
  38. software in the file "COPYING". The GPL specifies the terms
  39. under which users may copy and use the software in this distribution.
  40. A separate license is available for commercial distribution,
  41. for information on which you should contact the author.
  42. OBTAINING THE CODE:
  43. The executable code for bwbasic-3.20c is available from
  44. https://github.com/kenmartin-unix/Bwbasic
  45. The source code for older versions bwBASIC is available from
  46. http://bwbasic.sourceforge.net
  47. COMMUNICATIONS:
  48. email: tcamp@delphi.com (for Ted Campbell)
  49. eidetics@cerf.net (for Jon Volkoff)
  50. mutazilah@gmail.com (for Paul Edwards)
  51. ken.at.github@gmail.com (for Ken Martin)
  52. A LIST OF BASIC COMMANDS AND FUNCTIONS IMPLEMENTED in bwBASIC:
  53. The complete list of over 500 commands, functions and operators is
  54. in the file "ALL.txt" in the DOCS directory. Documentation for each
  55. dialect is also in the DOCS directory. Be aware that the commands,
  56. functions and operators available depend upon the particular BASIC
  57. dialect selected using the OPTION VERSION command.
  58. CHANGE HISTORY
  59. CHANGES FROM 3.20c to 3.20g
  60. Functional updates:
  61. * Fix memory leaks in function handling
  62. * Make HELP & EDIT available in **ALL** VERSIONs.
  63. * All files are closed when variables are cleared: NEW & RUN
  64. * Fix LSET & RSET so they fill the complete field length
  65. * LINE INPUT now reads whitespace correctly
  66. * Greeting changed to reflect new contributions
  67. * Renum was much improved but still fails in some situations.
  68. * Prevent random seeks with BINARY mode files. This makes it
  69. compatible with devices, like I2C, SPI, UARTs,...
  70. * ANSI and TTY handling improvements
  71. - color codes now work correctly and are limited to the proper range.
  72. UNIX / Linux "profile.bas" search locations added:
  73. - ~/profile.bas
  74. - ~/.profile.bas
  75. Packaging updates:
  76. * INFO directory clean up:
  77. - duplicte files removed
  78. - files renamed for consistency
  79. * READMEFIRST updates from KenUNIX
  80. * windoze compile.bat updated for 32/64 bit XP,7,10,11
  81. * UNIX compile fixes
  82. * make targets added:
  83. - addgui
  84. - delgui
  85. - install
  86. * Updated bwbasic.sh and bwbasic.desktop
  87. * Change bwbasic.png
  88. * General Makefile clean up
  89. CHANGES FROM 3.20 to 3.20c
  90. * General cleanup and bug fixes.
  91. Added a search for profile.bas in Windows
  92. C:\Bwbasic
  93. And Linux
  94. /usr/share/bwbasic
  95. CHANGES FROM 3.10 to 3.20
  96. * Implements most of the following BASIC dialects:
  97. OPTION VERSION "BYWATER" ' Bywater BASIC 3
  98. OPTION VERSION "BYWATER-2" ' Bywater BASIC 2
  99. OPTION VERSION "CALL/360" ' SBC CALL/360 Mainframe BASIC
  100. OPTION VERSION "CBASIC-II" ' CBASIC-II for CP/M
  101. OPTION VERSION "DARTMOUTH" ' Dartmouth DTSS BASIC
  102. OPTION VERSION "ECMA-55" ' ANSI Minimal BASIC
  103. OPTION VERSION "ECMA-116" ' ANSI Full BASIC
  104. OPTION VERSION "GCOS" ' GE 600 Mainframe BASIC
  105. OPTION VERSION "HAARDT" ' bas 2.4 by Michael Haardt
  106. OPTION VERSION "HANDBOOK1" ' The BASIC Handbook, 1st Edition
  107. OPTION VERSION "HANDBOOK2" ' The BASIC Handbook, 2nd Edition
  108. OPTION VERSION "HEATH" ' Heath Benton Harbor BASIC
  109. OPTION VERSION "MARK-I" ' GE 265 Mainframe BASIC
  110. OPTION VERSION "MARK-II" ' GE 435 Mainframe BASIC
  111. OPTION VERSION "MBASIC" ' Microsoft BASIC-80 for Xenix
  112. OPTION VERSION "PDP-8" ' DEC PDP-8 BASIC
  113. OPTION VERSION "PDP-11" ' DEC PDP-11 BASIC
  114. OPTION VERSION "RBASIC" ' Micronics RBASIC for 6809 FLEX
  115. OPTION VERSION "RSTS-11" ' DEC RSTS-11 BASIC-PLUS
  116. OPTION VERSION "SYSTEM/360" ' IBM System/360 Mainframe BASIC
  117. OPTION VERSION "SYSTEM/370" ' IBM System/370 Mainframe BASIC
  118. OPTION VERSION "TRS-80" ' TRS-80 Model I/III/4 LBASIC
  119. OPTION VERSION "VINTAGE" ' Vintage BASIC 1.0.1
  120. OPTION VERSION "XBASIC" ' TSC XBASIC for 6800 FLEX
  121. * CONST variable [, ...] = value
  122. Assigns the value to variable.
  123. Any later assignment to the variable causus a VARIABLE NOT DECLARED error.
  124. * DIM now supports lower and upper bounds.
  125. OPTION BASE 1
  126. DIM X( 9 ) ' lower bound is 1
  127. DIM Y( 5 TO 9 ) ' lower bound is 5
  128. * DIM now supports virtual variables.
  129. OPTION BASE 1
  130. OPEN "VIRTUAL.DAT" FOR VIRTUAL AS # 3 ' virtual data file
  131. DIM # 3, A( 1000 ) ' array is virtual
  132. LET A( 1000 ) = 0 ' value is written to the file
  133. LET X = A( 1000 ) ' value is read from the file
  134. CLOSE # 3 ' array is no longer valid
  135. * ERROR 27, "Bad DATA"
  136. Occurs when the READ command detects garbage in a DATA command.
  137. * INPUT LINE
  138. Same as LINE INPUT.
  139. * MAT now supports lower and upper bounds.
  140. OPTION BASE 1
  141. MAT X( 9 ) = ZER ' lower bound is 1
  142. MAT Y( 5 TO 9 ) = ZER ' lower bound is 5
  143. MAT X = ZER( 9 ) ' lower bound is 1
  144. MAT Y - ZER( 5 TO 9 ) ' lower bound is 5
  145. * MAXLEN()
  146. Returns the maximum string length.
  147. * OPTION DIGITS integer
  148. Sets the number of significant digits for PRINT.
  149. Setting the value to zero restores the default.
  150. * OPTION EDIT string$
  151. Sets the program name used by the EDIT command.
  152. Setting this to "" disables EDIT command.
  153. * OPTION FILES string$
  154. Sets the program name used by the FILES command.
  155. Setting this to "" disables FILES command.
  156. * OPTION PROMPT string$
  157. Sets the prompt.
  158. * OPTION PUNCT AT char$
  159. Sets the PRINT AT character, commonly "@".
  160. Setting this to "" disables PRINT AT.
  161. Setting this to a non-punctuation character is not supported.
  162. * OPTION PUNCT BYTE char$
  163. Sets the BYTE type suffix, commonly "~".
  164. Setting this to "" disables BYTE suffix.
  165. Setting this to a non-punctuation character is not supported.
  166. * OPTION PUNCT COMMENT char$
  167. Sets the trailing COMMENT character, commonly "'".
  168. Setting this to "" disables trailing comments.
  169. Setting this to a non-punctuation character is not supported.
  170. * OPTION PUNCT CURRENCY char$
  171. Sets the CURRENCY type suffix, commonly "@".
  172. Setting this to "" disables CURRENCY suffix.
  173. Setting this to a non-punctuation character is not supported.
  174. * OPTION PUNCT DOUBLE char$
  175. Sets the DOUBLE type suffix, commonly "#".
  176. Setting this to "" disables DOUBLE suffix.
  177. Setting this to a non-punctuation character is not supported.
  178. * OPTION PUNCT FILENUM char$
  179. Sets the FILE NUMBER prefix, commonly "#".
  180. Setting this to "" disables the FILE NUMBER prefix.
  181. Setting this to a non-punctuation character is not supported.
  182. * OPTION PUNCT IMAGE char$
  183. Sets the shortcut IMAGE character, commonly ":".
  184. Setting this to "" disables the shortcut IMAGE character.
  185. Setting this to a non-punctuation character is not supported.
  186. * OPTION PUNCT INPUT char$
  187. Sets the shortcut INPUT character, commonly "!".
  188. Setting this to "" disables the shortcut INPUT character.
  189. Setting this to a non-punctuation character is not supported.
  190. * OPTION PUNCT INTEGER char$
  191. Sets the INTEGER type suffix, commonly "%".
  192. Setting this to "" disables INTEGER suffix.
  193. Setting this to a non-punctuation character is not supported.
  194. * OPTION PUNCT LONG char$
  195. Sets the LONG type suffix, commonly "&".
  196. Setting this to "" disables LONG suffix.
  197. Setting this to a non-punctuation character is not supported.
  198. * OPTION PUNCT LPAREN char$
  199. Sets the LEFT PARENTHESIS character, commonly "(".
  200. Setting this to a non-punctuation character is not supported.
  201. * OPTION PUNCT PRINT char$
  202. Sets the shortcut PRINT character, commonly "?".
  203. Setting this to "" disables the shortcut PRINT character.
  204. Setting this to a non-punctuation character is not supported.
  205. * OPTION PUNCT QUOTE char$
  206. Sets the QUOTE character, commonly """".
  207. Setting this to a non-punctuation character is not supported.
  208. * OPTION PUNCT RPAREN char$
  209. Sets the RIGHT PARENTHESIS character, commonly ")".
  210. Setting this to a non-punctuation character is not supported.
  211. * OPTION PUNCT SINGLE char$
  212. Sets the SINGLE type suffix, commonly "!".
  213. Setting this to "" disables SINGLE suffix.
  214. Setting this to a non-punctuation character is not supported.
  215. * OPTION PUNCT STATEMENT char$
  216. Sets the shortcut STATEMENT seperator character, commonly ":".
  217. Setting this to "" disables the STATEMENT seperator.
  218. Setting this to a non-punctuation character is not supported.
  219. * OPTION PUNCT STRING char$
  220. Sets the STRING type suffix, commonly "$".
  221. Setting this to "" disables STRING suffix.
  222. Setting this to a non-punctuation character is not supported.
  223. * OPTION RECLEN integer
  224. Sets the default record length for RANDOM files, commonly 128.
  225. Setting thisto zero means there is no default RANDOM record
  226. length, so the record length must be specified in the OPEN
  227. statement.
  228. With OPTION RECLEN 128:
  229. OPEN "FILE.DAT" FOR RANDOM AS #3
  230. is considered to be the same as
  231. OPEN "FILE.DAT" FOR RANDOM AS #3 LEN 128
  232. With OPTION RECLEN 0:
  233. OPEN "FILE.DAT" FOR RANDOM AS #3
  234. causes an error.
  235. * OPTION RENUM string$
  236. Sets the program name used by the RENUM command.
  237. Setting this to "" disables RENUM command.
  238. * OPTION SCALE integer
  239. Sets the number of digits to round after the decimal point for PRINT.
  240. Setting the value to zero disables rounding.
  241. * OPTION USING DIGIT
  242. * OPTION USING COMMA
  243. * OPTION USING PERIOD
  244. * OPTION USING PLUS
  245. * OPTION USING MINUS
  246. * OPTION USING EXRAD
  247. * OPTION USING DOLLAR
  248. * OPTION USING FILLER
  249. * OPTION USING LITERAL
  250. * OPTION USING FIRST
  251. * OPTION USING ALL
  252. * OPTION USING LENGTH
  253. Sets the characters recognized by PRINT USING.
  254. Setting these to a non-punctuation character is not supported.
  255. * OPTION VERSION now requires a string instead of a literal.
  256. Some version names have changed.
  257. * OPTION VERSION "PDP-8"
  258. Added LPT, PTP, PTR, TTY, TTY IN and TTY OUT commands.
  259. Added GET() and PUT() functions.
  260. * OPTION VERSION "CALL/360"
  261. * OPTION VERSION "SYSTEM/360"
  262. * OPTION VERSION "SYSTEM/370"
  263. Added alphabet extenders. $ is a string variable.
  264. * OPTION ZONE integer
  265. Sets the PRINT zone width.
  266. Setting the value to zero restores the default.
  267. * REPEAT - UNTIL added
  268. REPEAT
  269. ...
  270. EXIT REPEAT
  271. ...
  272. UNTIL expression ' exits when expression != 0
  273. * SPC( X ) and TAB( X )
  274. No longer use control codes.
  275. * UNTIL - UEND removed (to add REPEAT - UNTIL)
  276. Here is a work-around for existin code using UNTIL-UEND:
  277. UNITL expression -->> WHILE NOT expression
  278. ... ...
  279. EXIT UNTIL -->> EXIT WHILE
  280. ... ...
  281. UEND -->> WEND
  282. * from Howard Wulf, AF5NE
  283. CHANGES FROM 3.00 to 3.10
  284. * Implements most of the following BASIC dialects:
  285. OPTION VERSION DARTMOUTH ' Dartmouth DTSS BASIC
  286. OPTION VERSION MARK-I ' GE 265 Mainframe BASIC
  287. OPTION VERSION MARK-II ' GE 435 Mainframe BASIC
  288. OPTION VERSION SYSTEM-360 ' IBM System/360 BASIC
  289. OPTION VERSION SYSTEM-370 ' IBM System/370 BASIC
  290. OPTION VERSION CBASIC-II ' CBASIC-II for CP/M
  291. OPTION VERSION ECMA-55 ' ANSI Minimal BASIC
  292. OPTION VERSION HANDBOOK1 ' The BASIC Handbook, 1st Edition
  293. OPTION VERSION HANDBOOK2 ' The BASIC Handbook, 2nd Edition
  294. OPTION VERSION TRS-80 ' TRS-80 Model I/III/4 LBASIC
  295. OPTION VERSION BASIC-80 ' Microsoft BASIC-80 for Xenix
  296. OPTION VERSION ECMA-116 ' ANSI Full BASIC
  297. * from Howard Wulf, AF5NE
  298. CHANGES FROM 2.61 to 3.00
  299. * Code redesign from Howard Wulf, AF5NE
  300. CHANGES FROM 2.60 to 2.61
  301. * Bug fix from Matthias Rustler
  302. CHANGES FROM 2.50 to 2.60
  303. * New maths functions and append mode support from Edmond Orignac
  304. * Bug fixes
  305. CHANGES FROM 2.40 to 2.50
  306. * Bug fixes
  307. * New compilation procedure for MVS and CMS
  308. CHANGES FROM 2.30 to 2.40
  309. * Bug fixes from Bill Chatfield
  310. * Updated documentation
  311. * Added support for compiling on CMS (another IBM mainframe OS)
  312. CHANGES FROM 2.20pl2 to 2.30
  313. * Minor bug fixes, cosmetic improvements and portability improvements
  314. * Added support for compiling on MVS (IBM mainframe)
  315. CHANGES FROM 2.20pl1 to 2.20pl2
  316. bwb_cmd.c
  317. Fixed calling stack level logic in RETURN statement to prevent erroneous
  318. "RETURN without GOSUB" messages.
  319. bwb_cnd.c
  320. bwb_stc.c
  321. Changed continuation condition for WHILE, ELSEIF, and LOOP UNTIL
  322. to be != FALSE, not == TRUE. More in line with common commercial
  323. BASIC implementations.
  324. bwb_mth.c
  325. Fixed initialization in VAL function so that old results are not later
  326. returned as values.
  327. bwb_var.c
  328. Added parenthesis level checking to dim_getparams. Using multi-level
  329. expressions as array subscripts was causing the program to bomb.
  330. bwx_iqc.c
  331. bwx_tty.c
  332. bwb_mes.h
  333. Added second copyright notice.
  334. bwb_dio.c
  335. bwb_str.c
  336. Added support for strings longer than 255 characters.
  337. bwb_prn.c
  338. Disabled tab expansion and print width checks when not printing to a file.
  339. bwb_inp.c
  340. Fixed LINE INPUT file reads to accommodate strings of length MAXSTRINGSIZE.
  341. bwx_ncu.h
  342. bwx_ncu.c
  343. New files. Code for UNIX ncurses interface, compliments of L.C. Benschop,
  344. Eindhoven, The Netherlands.
  345. Makefile.ncu
  346. New files. Sample makefile for ncurses implementation.
  347. bwbasic.h
  348. Revised defines for MININTSIZE and MAXINTSIZE from 16-bit to 32-bit limits.
  349. Revised define for MAXSTRINGSIZE from 255 to 5000 characters.
  350. Changed string length from unsigned char to unsigned int to support strings
  351. longer than 255 characters.
  352. Added support for new ncurses package.
  353. Revised VERSION define to reflect above changes.
  354. CHANGES FROM 2.20 to 2.20pl1
  355. bwb_cnd.c
  356. Moved init routine for bwb_while so that it would be initialized regardless
  357. of expression value, not just if TRUE. This was causing some segmentation
  358. faults in WHILE-WEND loops.
  359. bwb_elx.c
  360. Plugged gaping memory leak. Temp variable space for expression evaluation
  361. was being allocated but not freed when done (oops!).
  362. bwb_fnc.c
  363. Added check for NULL return from getenv to prevent segmentation faults.
  364. bwbasic.h
  365. Revised VERSION define to reflect above changes.
  366. CHANGES FROM 2.10 to 2.20:
  367. * Plugged numerous memory leaks, resolved memory overruns and allocation
  368. difficulties.
  369. * General cleanup and bug fixes, too many to list in detail here.
  370. The major problem areas addressed were:
  371. - RUN command with file name argument
  372. - nested and cascaded FOR-NEXT loops
  373. - PRINT USING
  374. - EOF, LOF functions
  375. - string concatenation
  376. - operator hierarchy
  377. - multi-level expression evaluation
  378. - hex constant interpretation
  379. - hex and octal constants in INPUT and DATA statements
  380. * Added a CLOSE all files feature (when no argument supplied).
  381. * Added a unary minus sign operator.
  382. * Added a MID$ command to complement the MID$ function.
  383. * Added a RENUM facility in a standalone program.
  384. * Added checking in configure for unistd.h (important on Sun systems).