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 61d5f954b2 v2.60 2 years ago
bwbtest v2.20 2 years ago
.gitattributes v2.10 2 years ago
.gitignore v2.10 2 years ago
COPYING v2.20 2 years ago
INSTALL v2.10 2 years ago
Makefile.in v2.50 2 years ago
Makefile.ncu v2.40 2 years ago
README v2.60 2 years ago
allcms.bat v2.50 2 years ago
allcms.exec v2.50 2 years ago
allmvs.bat v2.50 2 years ago
bwb_cmd.c v2.20pl2 2 years ago
bwb_cnd.c v2.20pl2 2 years ago
bwb_dio.c v2.60 2 years ago
bwb_elx.c v2.50 2 years ago
bwb_exp.c v2.20 2 years ago
bwb_fnc.c v2.30 2 years ago
bwb_inp.c v2.20pl2 2 years ago
bwb_int.c v2.20 2 years ago
bwb_mes.h v2.20pl2 2 years ago
bwb_mth.c v2.60 2 years ago
bwb_ops.c v2.20 2 years ago
bwb_par.c v2.20 2 years ago
bwb_prn.c v2.60 2 years ago
bwb_stc.c v2.20pl2 2 years ago
bwb_str.c v2.40 2 years ago
bwb_tbl.c v2.60 2 years ago
bwb_tcc.c v2.20 2 years ago
bwb_var.c v2.40 2 years ago
bwbasic.c v2.30 2 years ago
bwbasic.doc v2.60 2 years ago
bwbasic.h v2.60 2 years ago
bwbasic.mak v2.10 2 years ago
bwbasic1.jcl v2.30 2 years ago
bwbasic2.jcl v2.60 2 years ago
bwbasic3.jcl v2.50 2 years ago
bwbasic4.jcl v2.60 2 years ago
bwbasic5.jcl v2.60 2 years ago
bwbasic6.jcl v2.50 2 years ago
bwbasic7.jcl v2.60 2 years ago
bwbmvs.txt v2.50 2 years ago
bwx_iqc.c v2.30 2 years ago
bwx_iqc.h v2.20 2 years ago
bwx_ncu.c v2.30 2 years ago
bwx_ncu.h v2.20pl2 2 years ago
bwx_tty.c v2.50 2 years ago
bwx_tty.h v2.20 2 years ago
compile.bat v2.60 2 years ago
compile.exec v2.50 2 years ago
configure v2.20 2 years ago
configure.in v2.20 2 years ago
example.bas v2.40 2 years ago
makefile.qcl v2.10 2 years ago
makefile.wcl386 v2.40 2 years ago
profile.bas v2.40 2 years ago
renum.c v2.30 2 years ago
stdbwb.parm v2.50 2 years ago
stdcomp.bat v2.60 2 years ago
subjobs.bat v2.50 2 years ago
unixio.c v2.30 2 years ago
unixio.h v2.30 2 years ago
zipcms.bat v2.60 2 years ago
zipmvs.bat v2.60 2 years ago

README



README file for


Bywater BASIC Interpreter/Shell, version 2.60
---------------------------------------------

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






DESCRIPTION:

The Bywater BASIC Interpreter (bwBASIC) implements a large
superset of the ANSI Standard for Minimal BASIC (X3.60-1978)
and a significant subset of the ANSI Standard for Full BASIC
(X3.113-1987) in C. It also offers shell programming facilities
as an extension of BASIC. 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 SOURCE CODE:

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



COMMUNICATIONS:

email: tcamp@delphi.com (for Ted Campbell)
eidetics@cerf.net (for Jon Volkoff)
fight.subjugation@gmail.com (for Paul Edwards)


A LIST OF BASIC COMMANDS AND FUNCTIONS IMPLEMENTED in bwBASIC:

Be aware that many of these commands and functions will not be
available unless you have set certain flags in the header files.

ABS( number )
ASC( string$ )
ATN( number )
CALL subroutine-name
CASE constant | IF partial-expression | ELSE
CHAIN file-name
CHDIR pathname
CHR$( number )
CINT( number )
CLEAR
CLOSE [[#]file-number]...
CLS
COMMON variable [, variable...]
COS( number )
CSNG( number )
CVD( string$ )
CVI( string$ )
CVS( string$ )
DATA constant[,constant]...
DATE$
DEF FNname(arg...)] = expression
DEFDBL letter[-letter](, letter[-letter])...
DEFINT letter[-letter](, letter[-letter])...
DEFSNG letter[-letter](, letter[-letter])...
DEFSTR letter[-letter](, letter[-letter])...
DELETE line[-line]
DIM variable(elements...)[variable(elements...)]...
DO NUM|UNNUM
DO [WHILE expression]
EDIT (* depends on variable BWB.EDITOR$)
ELSE
ELSEIF
END FUNCTION | IF | SELECT | SUB
ENVIRON variable-string$ = string$
ENVIRON$( variable-string )
EOF( device-number )
ERASE variable[, variable]...
ERL
ERR
ERROR number
EXIT FOR|DO
EXP( number )
FIELD [#] device-number, number AS string-variable [, number AS string-variable...]
FILES filespec$ (* depends on variable BWB.FILES$)
FOR counter = start TO finish [STEP increment]
FUNCTION function-definition
GET [#] device-number [, record-number]
GOSUB line | label
GOTO line | label
HEX$( number )
IF expression THEN [statement [ELSE statement]]
INKEY$
INPUT [# device-number]|[;]["prompt string";]list of variables
INSTR( [start-position,] string-searched$, string-pattern$ )
INT( number )
KILL file-name
LEFT$( string$, number-of-spaces )
LEN( string$ )
LET variable = expression
LINE INPUT [[#] device-number,]["prompt string";] string-variable$
LIST line[-line]
LOAD file-name
LOC( device-number )
LOCATE
LOF( device-number )
LOG( number )
LOOP [UNTIL expression]
LSET string-variable$ = expression
MERGE file-name
MID$( string$, start-position-in-string[, number-of-spaces ] )
MKD$( number )
MKDIR pathname
MKI$( number )
MKS$( number )
NAME old-file-name AS new-file-name
NEW
NEXT counter
OCT$( number )
ON variable GOTO|GOSUB line[,line,line,...]
ON ERROR GOSUB line | label
OPEN O|I|R, [#]device-number, file-name [,record length]
file-name FOR INPUT|OUTPUT|APPEND AS [#]device-number [LEN = record-length]
OPTION BASE number
POS
PRINT [# device-number,][USING format-string$;] expressions...
PUT [#] device-number [, record-number]
RANDOMIZE number
READ variable[, variable]...
REM string
RENUM
RESTORE line
RETURN
RIGHT$( string$, number-of-spaces )
RMDIR pathname
RND( number )
RSET string-variable$ = expression
RUN [line]|[file-name]
SAVE file-name
SELECT CASE expression
SGN( number )
SIN( number )
SPACE$( number )
SPC( number )
SQR( number )
STOP
STR$( number )
STRING$( number, ascii-value|string$ )
SUB subroutine-name
SWAP variable, variable
SYSTEM
TAB( number )
TAN( number )
TIME$
TIMER
TROFF
TRON
VAL( string$ )
WEND
WHILE expression
WIDTH [# device-number,] number
WRITE [# device-number,] element [, element ]....




CHANGE HISTORY




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).