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.
 
 
 
 
 
 
Jon Foster 5bc9a8aee5 Update address & white-space in COPYING 7 months ago
BAS-EXAMPLES Fix LSET & RSET so they fill the field 3 years ago
DOCS v3.20a - From KenUNIX 3 years ago
GUI Merge KenUNIX's changes from 'master' into dev 3 years ago
INFO INFO directory clean up 2 years ago
.gitattributes v3.20b General cleanup and bug fixes. 3 years ago
.gitignore Project cleanup 3 years ago
BCCDOS16.BAT v3.20 3 years ago
BCCDOS16.TXT v3.20 3 years ago
COPYING Update address & white-space in COPYING 7 months ago
DMCDOS32.TXT v3.20 3 years ago
DMCWIN32.TXT v3.20 3 years ago
INSTALL v3.20 3 years ago
Makefile Version bump and compile improvements 2 years ago
Makefile.in v3.20a - From KenUNIX 3 years ago
Makefile.ncu v3.20a - From KenUNIX 3 years ago
OW19.BAT v3.20 3 years ago
README Update changelog in README 2 years ago
READMEFIRST READMEFIRST updates from KenUNIX 2 years ago
allcms.bat v2.50 3 years ago
allcms.exec v3.20a - From KenUNIX 3 years ago
allmvs.bat v2.50 3 years ago
bwb_cmd.c v3.20b General cleanup and bug fixes. 3 years ago
bwb_cnd.c v3.20 3 years ago
bwb_dio.c v3.20 3 years ago
bwb_exp.c Firm up memory leak changes 2 years ago
bwb_fnc.c v3.20 3 years ago
bwb_inp.c ChipMater minor fix pack: 3 years ago
bwb_int.c v3.20 3 years ago
bwb_prn.c Prevent random seeks with BINARY mode files 3 years ago
bwb_stc.c v3.20 3 years ago
bwb_str.c v3.20 3 years ago
bwb_tbl.c v3.20 3 years ago
bwb_var.c Firm up memory leak changes 2 years ago
bwbasic.c Firm up memory leak changes 2 years ago
bwbasic.h ChipMater minor fix pack: 3 years ago
bwbasic.mak v3.20a - From KenUNIX 3 years ago
bwbasic1.jcl v3.20a - From KenUNIX 3 years ago
bwbasic2.jcl v3.20a - From KenUNIX 3 years ago
bwbasic3.jcl v3.20a - From KenUNIX 3 years ago
bwbasic4.jcl v3.20a - From KenUNIX 3 years ago
bwbasic5.jcl v3.20a - From KenUNIX 3 years ago
bwbasic6.jcl v3.20a - From KenUNIX 3 years ago
bwbasic7.jcl v3.20a - From KenUNIX 3 years ago
bwd_cmd.c ChipMater minor fix pack: 3 years ago
bwd_fun.c v3.20 3 years ago
bwd_six.h v3.20 3 years ago
bwx_tty.c ChipMater minor fix pack: 3 years ago
compile.bat Remove renum2 references - KenUNIX 2 years ago
compileA.exec v3.20a - From KenUNIX 3 years ago
makefile.qcl v3.20a - From KenUNIX 3 years ago
makefile.wcl386 v3.20a - From KenUNIX 3 years ago
renum.c Updated for Windows and changed greeting 3 years ago
res v3.20b General cleanup and bug fixes. 3 years ago
rmvspcs v3.20b General cleanup and bug fixes. 3 years ago
stdbwb.parm v3.20a - From KenUNIX 3 years ago
stdcomp.bat Version bump and compile improvements 2 years ago
subjobs.bat v2.50 3 years ago
unixio.c v3.20 3 years ago
unixio.h v2.30 3 years ago
zipcms.bat v2.60 3 years ago
zipmvs.bat v2.60 3 years ago

README



README file for


Bywater BASIC Interpreter, version 3.20
---------------------------------------------

Copyright (c) 1993, Ted A. Campbell
for bwBASIC version 2.10, 11 October 1993

Version 2.20 modifications by Jon B. Volkoff,
25 November 1995

Patch level 1 release by Jon B. Volkoff,
15 March 1996

Patch level 2 release by Jon B. Volkoff,
11 October 1997

Version 2.30 modifications by Paul Edwards,
5 March 2008

Version 2.40 modifications by Paul Edwards,
26 Jan 2009

Version 2.50 modifications by Paul Edwards,
4 June 2009

Version 2.60 modifications by Paul Edwards,
6 November 2012

Version 2.61 modifications by Paul Edwards,
4 August 2014

Version 3.00 modifications by Howard Wulf, AF5NE
12 May 2015

Version 3.10 modifications by Howard Wulf, AF5NE
27 July 2016

Version 3.20 modifications by Howard Wulf, AF5NE
4 June 2017

Version 3.20c modifications by Ken Martin
Nov. 2019 Aug. 2020




DESCRIPTION:

The Bywater BASIC Interpreter (bwBASIC) implements a large
superset of the ANSI Standard for Minimal BASIC (X3.60-1978),
a significant subset of the ANSI Standard for Full BASIC
(X3.113-1987), and many classic BASIC dialects in C. bwBASIC
seeks to be as portable as possible.

This version of Bywater BASIC is released under the terms of the
GNU General Public License (GPL), which is distributed with this
software in the file "COPYING". The GPL specifies the terms
under which users may copy and use the software in this distribution.

A separate license is available for commercial distribution,
for information on which you should contact the author.



OBTAINING THE CODE:

The executable code for bwbasic-3.20c is available from
https://github.com/kenmartin-unix/Bwbasic

The source code for older versions bwBASIC is available from
http://bwbasic.sourceforge.net


COMMUNICATIONS:

email: tcamp@delphi.com (for Ted Campbell)
eidetics@cerf.net (for Jon Volkoff)
mutazilah@gmail.com (for Paul Edwards)
ken.at.github@gmail.com (for Ken Martin)


A LIST OF BASIC COMMANDS AND FUNCTIONS IMPLEMENTED in bwBASIC:

The complete list of over 500 commands, functions and operators is
in the file "ALL.txt" in the DOCS directory. Documentation for each
dialect is also in the DOCS directory. Be aware that the commands,
functions and operators available depend upon the particular BASIC
dialect selected using the OPTION VERSION command.


CHANGE HISTORY

CHANGES FROM 3.20c to 3.20g
Functional updates:

* Fix memory leaks in function handling
* Make HELP & EDIT available in **ALL** VERSIONs.
* All files are closed when variables are cleared: NEW & RUN
* Fix LSET & RSET so they fill the complete field length
* LINE INPUT now reads whitespace correctly
* Greeting changed to reflect new contributions
* Renum was much improved but still fails in some situations.
* Prevent random seeks with BINARY mode files. This makes it
compatible with devices, like I2C, SPI, UARTs,...
* ANSI and TTY handling improvements
- color codes now work correctly and are limited to the proper range.
UNIX / Linux "profile.bas" search locations added:
- ~/profile.bas
- ~/.profile.bas
Packaging updates:
* INFO directory clean up:
- duplicte files removed
- files renamed for consistency
* READMEFIRST updates from KenUNIX
* windoze compile.bat updated for 32/64 bit XP,7,10,11
* UNIX compile fixes
* make targets added:
- addgui
- delgui
- install
* Updated bwbasic.sh and bwbasic.desktop
* Change bwbasic.png
* General Makefile clean up

CHANGES FROM 3.20 to 3.20c

* General cleanup and bug fixes.
Added a search for profile.bas in Windows
C:\Bwbasic
And Linux
/usr/share/bwbasic

CHANGES FROM 3.10 to 3.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


CHANGES FROM 3.00 to 3.10

* Implements most of the following BASIC dialects:
OPTION VERSION DARTMOUTH ' Dartmouth DTSS BASIC
OPTION VERSION MARK-I ' GE 265 Mainframe BASIC
OPTION VERSION MARK-II ' GE 435 Mainframe BASIC
OPTION VERSION SYSTEM-360 ' IBM System/360 BASIC
OPTION VERSION SYSTEM-370 ' IBM System/370 BASIC
OPTION VERSION CBASIC-II ' CBASIC-II for CP/M
OPTION VERSION ECMA-55 ' ANSI Minimal BASIC
OPTION VERSION HANDBOOK1 ' The BASIC Handbook, 1st Edition
OPTION VERSION HANDBOOK2 ' The BASIC Handbook, 2nd Edition
OPTION VERSION TRS-80 ' TRS-80 Model I/III/4 LBASIC
OPTION VERSION BASIC-80 ' Microsoft BASIC-80 for Xenix
OPTION VERSION ECMA-116 ' ANSI Full BASIC

* from Howard Wulf, AF5NE


CHANGES FROM 2.61 to 3.00

* Code redesign from Howard Wulf, AF5NE


CHANGES FROM 2.60 to 2.61

* Bug fix from Matthias Rustler


CHANGES FROM 2.50 to 2.60

* New maths functions and append mode support from Edmond Orignac

* Bug fixes


CHANGES FROM 2.40 to 2.50

* Bug fixes

* New compilation procedure for MVS and CMS


CHANGES FROM 2.30 to 2.40

* Bug fixes from Bill Chatfield

* Updated documentation

* Added support for compiling on CMS (another IBM mainframe OS)


CHANGES FROM 2.20pl2 to 2.30

* Minor bug fixes, cosmetic improvements and portability improvements

* Added support for compiling on MVS (IBM mainframe)


CHANGES FROM 2.20pl1 to 2.20pl2

bwb_cmd.c
Fixed calling stack level logic in RETURN statement to prevent erroneous
"RETURN without GOSUB" messages.

bwb_cnd.c
bwb_stc.c

Changed continuation condition for WHILE, ELSEIF, and LOOP UNTIL
to be != FALSE, not == TRUE. More in line with common commercial
BASIC implementations.

bwb_mth.c
Fixed initialization in VAL function so that old results are not later
returned as values.

bwb_var.c
Added parenthesis level checking to dim_getparams. Using multi-level
expressions as array subscripts was causing the program to bomb.

bwx_iqc.c
bwx_tty.c
bwb_mes.h
Added second copyright notice.

bwb_dio.c
bwb_str.c
Added support for strings longer than 255 characters.

bwb_prn.c
Disabled tab expansion and print width checks when not printing to a file.

bwb_inp.c
Fixed LINE INPUT file reads to accommodate strings of length MAXSTRINGSIZE.

bwx_ncu.h
bwx_ncu.c
New files. Code for UNIX ncurses interface, compliments of L.C. Benschop,
Eindhoven, The Netherlands.

Makefile.ncu
New files. Sample makefile for ncurses implementation.

bwbasic.h
Revised defines for MININTSIZE and MAXINTSIZE from 16-bit to 32-bit limits.
Revised define for MAXSTRINGSIZE from 255 to 5000 characters.
Changed string length from unsigned char to unsigned int to support strings
longer than 255 characters.
Added support for new ncurses package.
Revised VERSION define to reflect above changes.


CHANGES FROM 2.20 to 2.20pl1

bwb_cnd.c

Moved init routine for bwb_while so that it would be initialized regardless
of expression value, not just if TRUE. This was causing some segmentation
faults in WHILE-WEND loops.

bwb_elx.c

Plugged gaping memory leak. Temp variable space for expression evaluation
was being allocated but not freed when done (oops!).

bwb_fnc.c

Added check for NULL return from getenv to prevent segmentation faults.

bwbasic.h
Revised VERSION define to reflect above changes.



CHANGES FROM 2.10 to 2.20:

* Plugged numerous memory leaks, resolved memory overruns and allocation
difficulties.

* General cleanup and bug fixes, too many to list in detail here.
The major problem areas addressed were:

- RUN command with file name argument
- nested and cascaded FOR-NEXT loops
- PRINT USING
- EOF, LOF functions
- string concatenation
- operator hierarchy
- multi-level expression evaluation
- hex constant interpretation
- hex and octal constants in INPUT and DATA statements

* Added a CLOSE all files feature (when no argument supplied).

* Added a unary minus sign operator.

* Added a MID$ command to complement the MID$ function.

* Added a RENUM facility in a standalone program.

* Added checking in configure for unistd.h (important on Sun systems).