|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331 |
-
-
- README file for
-
-
- Bywater BASIC Interpreter/Shell, version 2.50
- ---------------------------------------------
-
- 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
-
-
-
-
-
-
- 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.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).
-
-
-
-
|