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.

README 8.9 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. README file for
  2. Bywater BASIC Interpreter/Shell, version 2.61
  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. DESCRIPTION:
  23. The Bywater BASIC Interpreter (bwBASIC) implements a large
  24. superset of the ANSI Standard for Minimal BASIC (X3.60-1978)
  25. and a significant subset of the ANSI Standard for Full BASIC
  26. (X3.113-1987) in C. It also offers shell programming facilities
  27. as an extension of BASIC. bwBASIC seeks to be as portable
  28. as possible.
  29. This version of Bywater BASIC is released under the terms of the
  30. GNU General Public License (GPL), which is distributed with this
  31. software in the file "COPYING". The GPL specifies the terms
  32. under which users may copy and use the software in this distribution.
  33. A separate license is available for commercial distribution,
  34. for information on which you should contact the author.
  35. OBTAINING THE SOURCE CODE:
  36. The source code for bwBASIC is available from
  37. http://bwbasic.sourceforge.net
  38. COMMUNICATIONS:
  39. email: tcamp@delphi.com (for Ted Campbell)
  40. eidetics@cerf.net (for Jon Volkoff)
  41. fight.subjugation@gmail.com (for Paul Edwards)
  42. A LIST OF BASIC COMMANDS AND FUNCTIONS IMPLEMENTED in bwBASIC:
  43. Be aware that many of these commands and functions will not be
  44. available unless you have set certain flags in the header files.
  45. ABS( number )
  46. ASC( string$ )
  47. ATN( number )
  48. CALL subroutine-name
  49. CASE constant | IF partial-expression | ELSE
  50. CHAIN file-name
  51. CHDIR pathname
  52. CHR$( number )
  53. CINT( number )
  54. CLEAR
  55. CLOSE [[#]file-number]...
  56. CLS
  57. COMMON variable [, variable...]
  58. COS( number )
  59. CSNG( number )
  60. CVD( string$ )
  61. CVI( string$ )
  62. CVS( string$ )
  63. DATA constant[,constant]...
  64. DATE$
  65. DEF FNname(arg...)] = expression
  66. DEFDBL letter[-letter](, letter[-letter])...
  67. DEFINT letter[-letter](, letter[-letter])...
  68. DEFSNG letter[-letter](, letter[-letter])...
  69. DEFSTR letter[-letter](, letter[-letter])...
  70. DELETE line[-line]
  71. DIM variable(elements...)[variable(elements...)]...
  72. DO NUM|UNNUM
  73. DO [WHILE expression]
  74. EDIT (* depends on variable BWB.EDITOR$)
  75. ELSE
  76. ELSEIF
  77. END FUNCTION | IF | SELECT | SUB
  78. ENVIRON variable-string$ = string$
  79. ENVIRON$( variable-string )
  80. EOF( device-number )
  81. ERASE variable[, variable]...
  82. ERL
  83. ERR
  84. ERROR number
  85. EXIT FOR|DO
  86. EXP( number )
  87. FIELD [#] device-number, number AS string-variable [, number AS string-variable...]
  88. FILES filespec$ (* depends on variable BWB.FILES$)
  89. FOR counter = start TO finish [STEP increment]
  90. FUNCTION function-definition
  91. GET [#] device-number [, record-number]
  92. GOSUB line | label
  93. GOTO line | label
  94. HEX$( number )
  95. IF expression THEN [statement [ELSE statement]]
  96. INKEY$
  97. INPUT [# device-number]|[;]["prompt string";]list of variables
  98. INSTR( [start-position,] string-searched$, string-pattern$ )
  99. INT( number )
  100. KILL file-name
  101. LEFT$( string$, number-of-spaces )
  102. LEN( string$ )
  103. LET variable = expression
  104. LINE INPUT [[#] device-number,]["prompt string";] string-variable$
  105. LIST line[-line]
  106. LOAD file-name
  107. LOC( device-number )
  108. LOCATE
  109. LOF( device-number )
  110. LOG( number )
  111. LOOP [UNTIL expression]
  112. LSET string-variable$ = expression
  113. MERGE file-name
  114. MID$( string$, start-position-in-string[, number-of-spaces ] )
  115. MKD$( number )
  116. MKDIR pathname
  117. MKI$( number )
  118. MKS$( number )
  119. NAME old-file-name AS new-file-name
  120. NEW
  121. NEXT counter
  122. OCT$( number )
  123. ON variable GOTO|GOSUB line[,line,line,...]
  124. ON ERROR GOSUB line | label
  125. OPEN O|I|R, [#]device-number, file-name [,record length]
  126. file-name FOR INPUT|OUTPUT|APPEND AS [#]device-number [LEN = record-length]
  127. OPTION BASE number
  128. POS
  129. PRINT [# device-number,][USING format-string$;] expressions...
  130. PUT [#] device-number [, record-number]
  131. RANDOMIZE number
  132. READ variable[, variable]...
  133. REM string
  134. RENUM
  135. RESTORE line
  136. RETURN
  137. RIGHT$( string$, number-of-spaces )
  138. RMDIR pathname
  139. RND( number )
  140. RSET string-variable$ = expression
  141. RUN [line]|[file-name]
  142. SAVE file-name
  143. SELECT CASE expression
  144. SGN( number )
  145. SIN( number )
  146. SPACE$( number )
  147. SPC( number )
  148. SQR( number )
  149. STOP
  150. STR$( number )
  151. STRING$( number, ascii-value|string$ )
  152. SUB subroutine-name
  153. SWAP variable, variable
  154. SYSTEM
  155. TAB( number )
  156. TAN( number )
  157. TIME$
  158. TIMER
  159. TROFF
  160. TRON
  161. VAL( string$ )
  162. WEND
  163. WHILE expression
  164. WIDTH [# device-number,] number
  165. WRITE [# device-number,] element [, element ]....
  166. CHANGE HISTORY
  167. CHANGES FROM 2.60 to 2.61
  168. * Bug fix from Matthias Rustler
  169. CHANGES FROM 2.50 to 2.60
  170. * New maths functions and append mode support from Edmond Orignac
  171. * Bug fixes
  172. CHANGES FROM 2.40 to 2.50
  173. * Bug fixes
  174. * New compilation procedure for MVS and CMS
  175. CHANGES FROM 2.30 to 2.40
  176. * Bug fixes from Bill Chatfield
  177. * Updated documentation
  178. * Added support for compiling on CMS (another IBM mainframe OS)
  179. CHANGES FROM 2.20pl2 to 2.30
  180. * Minor bug fixes, cosmetic improvements and portability improvements
  181. * Added support for compiling on MVS (IBM mainframe)
  182. CHANGES FROM 2.20pl1 to 2.20pl2
  183. bwb_cmd.c
  184. Fixed calling stack level logic in RETURN statement to prevent erroneous
  185. "RETURN without GOSUB" messages.
  186. bwb_cnd.c
  187. bwb_stc.c
  188. Changed continuation condition for WHILE, ELSEIF, and LOOP UNTIL
  189. to be != FALSE, not == TRUE. More in line with common commercial
  190. BASIC implementations.
  191. bwb_mth.c
  192. Fixed initialization in VAL function so that old results are not later
  193. returned as values.
  194. bwb_var.c
  195. Added parenthesis level checking to dim_getparams. Using multi-level
  196. expressions as array subscripts was causing the program to bomb.
  197. bwx_iqc.c
  198. bwx_tty.c
  199. bwb_mes.h
  200. Added second copyright notice.
  201. bwb_dio.c
  202. bwb_str.c
  203. Added support for strings longer than 255 characters.
  204. bwb_prn.c
  205. Disabled tab expansion and print width checks when not printing to a file.
  206. bwb_inp.c
  207. Fixed LINE INPUT file reads to accommodate strings of length MAXSTRINGSIZE.
  208. bwx_ncu.h
  209. bwx_ncu.c
  210. New files. Code for UNIX ncurses interface, compliments of L.C. Benschop,
  211. Eindhoven, The Netherlands.
  212. Makefile.ncu
  213. New files. Sample makefile for ncurses implementation.
  214. bwbasic.h
  215. Revised defines for MININTSIZE and MAXINTSIZE from 16-bit to 32-bit limits.
  216. Revised define for MAXSTRINGSIZE from 255 to 5000 characters.
  217. Changed string length from unsigned char to unsigned int to support strings
  218. longer than 255 characters.
  219. Added support for new ncurses package.
  220. Revised VERSION define to reflect above changes.
  221. CHANGES FROM 2.20 to 2.20pl1
  222. bwb_cnd.c
  223. Moved init routine for bwb_while so that it would be initialized regardless
  224. of expression value, not just if TRUE. This was causing some segmentation
  225. faults in WHILE-WEND loops.
  226. bwb_elx.c
  227. Plugged gaping memory leak. Temp variable space for expression evaluation
  228. was being allocated but not freed when done (oops!).
  229. bwb_fnc.c
  230. Added check for NULL return from getenv to prevent segmentation faults.
  231. bwbasic.h
  232. Revised VERSION define to reflect above changes.
  233. CHANGES FROM 2.10 to 2.20:
  234. * Plugged numerous memory leaks, resolved memory overruns and allocation
  235. difficulties.
  236. * General cleanup and bug fixes, too many to list in detail here.
  237. The major problem areas addressed were:
  238. - RUN command with file name argument
  239. - nested and cascaded FOR-NEXT loops
  240. - PRINT USING
  241. - EOF, LOF functions
  242. - string concatenation
  243. - operator hierarchy
  244. - multi-level expression evaluation
  245. - hex constant interpretation
  246. - hex and octal constants in INPUT and DATA statements
  247. * Added a CLOSE all files feature (when no argument supplied).
  248. * Added a unary minus sign operator.
  249. * Added a MID$ command to complement the MID$ function.
  250. * Added a RENUM facility in a standalone program.
  251. * Added checking in configure for unistd.h (important on Sun systems).