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 19 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
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802
  1. README file for
  2. Bywater BASIC Interpreter, version 3.10
  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. DESCRIPTION:
  27. The Bywater BASIC Interpreter (bwBASIC) implements a large
  28. superset of the ANSI Standard for Minimal BASIC (X3.60-1978)
  29. and a significant subset of the ANSI Standard for Full BASIC
  30. (X3.113-1987) in C. It also offers shell programming facilities
  31. as an extension of BASIC. bwBASIC seeks to be as portable
  32. as possible.
  33. This version of Bywater BASIC is released under the terms of the
  34. GNU General Public License (GPL), which is distributed with this
  35. software in the file "COPYING". The GPL specifies the terms
  36. under which users may copy and use the software in this distribution.
  37. A separate license is available for commercial distribution,
  38. for information on which you should contact the author.
  39. OBTAINING THE SOURCE CODE:
  40. The source code for bwBASIC is available from
  41. http://bwbasic.sourceforge.net
  42. COMMUNICATIONS:
  43. email: tcamp@delphi.com (for Ted Campbell)
  44. eidetics@cerf.net (for Jon Volkoff)
  45. mutazilah@gmail.com (for Paul Edwards)
  46. A LIST OF BASIC COMMANDS AND FUNCTIONS IMPLEMENTED in bwBASIC:
  47. Be aware that many of these commands and functions will not be
  48. available unless you have enabled a particular dialect using
  49. the OPTION VERSION command.
  50. # X
  51. + X
  52. - X
  53. ? expressions...
  54. A$ LIKE B$
  55. APPEND filename$ | APPEND # filenumber
  56. AS string-variable$ [, ...]
  57. AUTO [start [, increment]]
  58. BACKSPACE # X
  59. BREAK line [, ...]]
  60. BYE
  61. CALL subroutine-name( [parameter [, ...] ] )
  62. CASE ELSE
  63. CASE constant [TO constant] | CASE IF partial-expression | CASE IS partial-expression
  64. CHAIN filename$ [, linenumber]
  65. CHANGE A$ TO X | CHANGE X TO A$
  66. CLEAR
  67. CLOAD [file-name$]
  68. CLOAD* ArrayName
  69. CLOSE filename$ [, ...]
  70. CLR
  71. CMDS
  72. COMMON variable [, ...]
  73. CONSOLE [WIDTH width]
  74. CONT
  75. CREATE filename$ [ RECL reclen ] AS filenum [ BUFF number ] [ RECS size ]
  76. CSAVE [file-name$]
  77. CSAVE* ArrayName
  78. DATA constant [, ...]
  79. DEF FNname[(arg...)] [= expression]
  80. DEF SUB
  81. DEFBYT letter[-letter] [, ...]
  82. DEFCUR letter[-letter] [, ...]
  83. DEFDBL letter[-letter] [, ...]
  84. DEFINT letter[-letter] [, ...]
  85. DEFLNG letter[-letter] [, ...]
  86. DEFSNG letter[-letter] [, ...]
  87. DEFSTR letter[-letter] [, ...]
  88. DELETE line [- line]
  89. DELIMIT # X, A$
  90. DIM variable( elements [, ...]) [, ...]
  91. DO [UNTIL|WHILE expression]
  92. DSP variable [, ...]]
  93. EDIT
  94. ELSE
  95. ELSEIF
  96. END
  97. END FUNCTION
  98. END IF
  99. END SELECT
  100. END SUB
  101. ERASE variable [, ...]
  102. EXCHANGE variable, variable
  103. EXIT
  104. EXIT DO
  105. EXIT FOR
  106. EXIT FUNCTION
  107. EXIT SUB
  108. EXIT UNTIL
  109. EXIT WHILE
  110. FEND
  111. FIELD [#] device-number, number AS string-variable$ [, ...]
  112. FILE # X, A$
  113. FILES A$[, ...]
  114. FNCS
  115. FNEND
  116. FOR variable = start TO finish [STEP increment]
  117. FUNCTION [ ( parameter [, ... ] ) ]
  118. GET filename$ , scalar [, ...]
  119. GO
  120. GO SUB line
  121. GO TO line
  122. GOODBYE
  123. GOSUB line
  124. GOTO line
  125. HELP name
  126. IF END # filenum THEN line1 [ELSE line2]
  127. IF MORE # filenum THEN line1 [ELSE line2]
  128. IF expression THEN
  129. IF expression THEN line1 [ELSE line2]
  130. IMAGE "format string"
  131. INPUT [# device-number]|[;]["prompt string";] variable [, ...]s
  132. LINE INPUT [[#] device-number,]["prompt string";] string-variable$
  133. LIST line1 [- line2]
  134. LLIST line1 [- line2]
  135. LOAD [file-name$]
  136. LOOP [UNTIL|WHILE expression]
  137. LPRINT [USING format-string$;] expressions...
  138. LPRINTER [WIDTH width]
  139. LSET string-variable$ = expression
  140. MAINTAINER
  141. MARGIN # filenumber, width
  142. MAT GET filename$, arrayname
  143. MAT INPUT arrayname
  144. MAT PRINT arrayname
  145. MAT PUT filename$, arrayname
  146. MAT READ arrayname
  147. MAT WRITE arrayname
  148. MAT arrayname = expression
  149. MERGE file-name
  150. MID$( variable$, start [, count ] ) = expression
  151. N = ABS( X )
  152. N = ACOS( X )
  153. N = ACS( X )
  154. N = ACSD( X )
  155. N = ACSG( X )
  156. N = ANGLE( X, Y )
  157. N = ARCSIN( X )
  158. N = ARCTAN( X )
  159. N = ARGC
  160. N = ARGV( X )
  161. N = ASC( A$ )
  162. N = ASC( A$, X )
  163. N = ASCII( A$ )
  164. N = ASIN( X )
  165. N = ASN( X )
  166. N = ASND( X )
  167. N = ASNG( X )
  168. N = ATAN( X )
  169. N = ATN( X )
  170. N = ATND( X )
  171. N = ATNG( X )
  172. N = BASE
  173. N = CATALOG
  174. N = CATALOG( A$ )
  175. N = CCUR( X )
  176. N = CDBL( X )
  177. N = CEIL( X )
  178. N = CHDIR( A$ )
  179. N = CINT( X )
  180. N = CLG( X )
  181. N = CLK( X )
  182. N = CLNG( X )
  183. N = CLOG( X )
  184. N = CLOSE
  185. N = CLOSE( X )
  186. N = CLS
  187. N = CODE( A$ )
  188. N = COLOR( X, Y )
  189. N = COS( X )
  190. N = COSD( X )
  191. N = COSG( X )
  192. N = COSH( X )
  193. N = COT( X )
  194. N = COUNT
  195. N = CSC( X )
  196. N = CSH( X )
  197. N = CSNG( X )
  198. N = CVC( A$ )
  199. N = CVD( A$ )
  200. N = CVI( A$ )
  201. N = CVL( A$ )
  202. N = CVS( A$ )
  203. N = DATE
  204. N = DEF FN
  205. N = DEG
  206. N = DEG( X )
  207. N = DEGREE
  208. N = DEGREE( X )
  209. N = DET
  210. N = DIM( ... )
  211. N = ENVIRON( A$ )
  212. N = EOF( X )
  213. N = EPS( X )
  214. N = ERL
  215. N = ERR
  216. N = ERRL
  217. N = ERRN
  218. N = ERROR( X )
  219. N = ERROR( X, A$ )
  220. N = EXAM( X )
  221. N = EXP( X )
  222. N = FETCH( X )
  223. N = FILEATTR( X, Y )
  224. N = FILES
  225. N = FILES( A$ )
  226. N = FILL( X, Y )
  227. N = FIX( X )
  228. N = FLOAT( X )
  229. N = FLOW
  230. N = FP( X )
  231. N = FRAC( X )
  232. N = FRE
  233. N = FRE( A$ )
  234. N = FRE( X )
  235. N = FREE
  236. N = FREE( A$ )
  237. N = FREE( X )
  238. N = FREEFILE
  239. N = GET( X )
  240. N = GET( X, Y )
  241. N = GRAD
  242. N = GRADIAN
  243. N = HCS( X )
  244. N = HOME
  245. N = HSN( X )
  246. N = HTN( X )
  247. N = INDEX( A$, B$ )
  248. N = INITIALIZE
  249. N = INP( X )
  250. N = INSTR( A$, B$ )
  251. N = INSTR( X, A$, B$ )
  252. N = INT%( X )
  253. N = INT( X )
  254. N = IP( X )
  255. N = KILL( A$ )
  256. N = LBOUND( ... )
  257. N = LEN( A$ )
  258. N = LGT( X )
  259. N = LN( X )
  260. N = LOC( X )
  261. N = LOCATE( X, Y )
  262. N = LOF( X )
  263. N = LOG( X )
  264. N = LOG10( X )
  265. N = LOG2( X )
  266. N = LOGE( X )
  267. N = LPOS
  268. N = LTW( X )
  269. N = LWIDTH( X )
  270. N = MATCH( A$, B$, X )
  271. N = MAX( X, Y )
  272. N = MAXBYT
  273. N = MAXCUR
  274. N = MAXDBL
  275. N = MAXDEV
  276. N = MAXINT
  277. N = MAXLEN( A$ )
  278. N = MAXLNG
  279. N = MAXLVL
  280. N = MAXNUM
  281. N = MAXSNG
  282. N = MEM
  283. N = MIN( X, Y )
  284. N = MINBYT
  285. N = MINCUR
  286. N = MINDBL
  287. N = MINDEV
  288. N = MININT
  289. N = MINLNG
  290. N = MINNUM
  291. N = MINSNG
  292. N = MKDIR( A$ )
  293. N = MOD( X, Y )
  294. N = NAME( A$, B$ )
  295. N = NOFLOW
  296. N = NOTRACE
  297. N = NULL( X )
  298. N = NUM
  299. N = NUM( A$ )
  300. N = OPEN( A$, X, B$ )
  301. N = OPEN( A$, X, B$, Y )
  302. N = ORD( A$ )
  303. N = OUT( X, Y )
  304. N = PAUSE( X )
  305. N = PDL( X )
  306. N = PEEK( X )
  307. N = PI
  308. N = PI( X )
  309. N = PIN( X )
  310. N = POKE( X, Y )
  311. N = POS
  312. N = POS( A$, B$ )
  313. N = POS( A$, B$, X )
  314. N = POS( X )
  315. N = PUT( X )
  316. N = PUT( X, Y )
  317. N = RAD
  318. N = RAD( X )
  319. N = RADIAN
  320. N = RAN
  321. N = RAN( X )
  322. N = RANDOM
  323. N = RANDOM( X )
  324. N = RANDOMIZE
  325. N = RANDOMIZE( X )
  326. N = REMAINDER( X, Y )
  327. N = RENAME( A$, B$ )
  328. N = RESET
  329. N = RMDIR( A$ )
  330. N = RND
  331. N = RND( X )
  332. N = ROUND( X, Y )
  333. N = SEC( X )
  334. N = SEEK( X )
  335. N = SEEK( X, Y )
  336. N = SGN( X )
  337. N = SHELL( A$ )
  338. N = SIN( X )
  339. N = SIND( X )
  340. N = SING( X )
  341. N = SINH( X )
  342. N = SIZE( ... )
  343. N = SIZE( A$ )
  344. N = SLEEP( X )
  345. N = SNH( X )
  346. N = SQR( X )
  347. N = SQRT( X )
  348. N = STUFF( X, Y )
  349. N = TAN( X )
  350. N = TAND( X )
  351. N = TANG( X )
  352. N = TANH( X )
  353. N = TI
  354. N = TIM
  355. N = TIM( X )
  356. N = TIME
  357. N = TIME( X )
  358. N = TIMER
  359. N = TOP
  360. N = TRACE
  361. N = TROFF
  362. N = TRON
  363. N = TRUNCATE( X, Y )
  364. N = UBOUND( ... )
  365. N = UNSAVE( A$ )
  366. N = VAL( A$ )
  367. N = VTAB( X )
  368. N = WAIT( X )
  369. N = WAIT( X, Y )
  370. N = WAIT( X, Y, Z )
  371. N = WIDTH( X )
  372. N = WIDTH( X, Y )
  373. NAME old-file-name AS new-file-name
  374. NEW
  375. NEXT [variable]
  376. NOT X
  377. OF line, ...
  378. OLD [file-name$]
  379. ON ERROR ...
  380. ON ERROR GOSUB errline
  381. ON ERROR GOTO errline
  382. ON ERROR RESUME ...
  383. ON ERROR RESUME NEXT
  384. ON ERROR RETURN ...
  385. ON ERROR RETURN NEXT
  386. ON TIMER count GOSUB line
  387. ON expression GOTO | GOSUB line [, ...]
  388. OPEN file-name [FOR INPUT|OUTPUT|APPEND|BINARY|RANDOM] AS [#]device-number [LEN = record-length]
  389. OPTION ...
  390. OPTION ANGLE ...
  391. OPTION ANGLE DEGREES
  392. OPTION ANGLE GRADIANS
  393. OPTION ANGLE RADIANS
  394. OPTION ARITHMETIC
  395. OPTION ARITHMETIC DECIMAL
  396. OPTION ARITHMETIC FIXED
  397. OPTION ARITHMETIC NATIVE
  398. OPTION BASE X
  399. OPTION BUGS
  400. OPTION BUGS OFF
  401. OPTION BUGS ON
  402. OPTION COMMENT char
  403. OPTION COMPARE
  404. OPTION COMPARE BINARY
  405. OPTION COMPARE DATABASE
  406. OPTION COMPARE TEXT
  407. OPTION COVERAGE
  408. OPTION COVERAGE OFF
  409. OPTION COVERAGE ON
  410. OPTION DATE format
  411. OPTION DISABLE
  412. OPTION DISABLE COMMAND name
  413. OPTION DISABLE FUNCTION name
  414. OPTION DISABLE OPERATOR name
  415. OPTION ENABLE
  416. OPTION ENABLE COMMAND name
  417. OPTION ENABLE FUNCTION name
  418. OPTION ENABLE OPERATOR name
  419. OPTION ERROR
  420. OPTION ERROR GOSUB
  421. OPTION ERROR GOTO
  422. OPTION EXPLICIT
  423. OPTION IMAGE char
  424. OPTION IMPLICIT
  425. OPTION INDENT number
  426. OPTION LABELS
  427. OPTION LABELS OFF
  428. OPTION LABELS ON
  429. OPTION PRINT char
  430. OPTION ROUND
  431. OPTION ROUND BANK
  432. OPTION ROUND MATH
  433. OPTION ROUND TRUNCATE
  434. OPTION SLEEP number
  435. OPTION STATEMENT char
  436. OPTION STDERR filename$
  437. OPTION STDIN filename$
  438. OPTION STDOUT filename$
  439. OPTION STRICT
  440. OPTION STRICT OFF
  441. OPTION STRICT ON
  442. OPTION TERMINAL
  443. OPTION TERMINAL ADM
  444. OPTION TERMINAL ANSI
  445. OPTION TERMINAL NONE
  446. OPTION TIME format
  447. OPTION TRACE
  448. OPTION TRACE OFF
  449. OPTION TRACE ON
  450. OPTION USING string$
  451. OPTION VERSION [version]
  452. PAUSE [comment]
  453. POP
  454. PRINT [# device-number,][USING format$;] expressions ...
  455. PUT filename$ , value [, ...]
  456. QUIT
  457. READ variable [, ...]
  458. RECALL ArrayName
  459. REM ...
  460. RENAME [file-name$]
  461. RENUM
  462. RENUMBER
  463. RESET filename$ [, ...]
  464. RESTORE [line]
  465. RESUME [ 0 | line | NEXT ]
  466. RETURN
  467. RSET string-variable$ = expression
  468. RUN [line | file-name$]
  469. S$ = ARGT$( X )
  470. S$ = ARGV$( X )
  471. S$ = CHAR$( X )
  472. S$ = CHAR( X, Y )
  473. S$ = CHR$( X )
  474. S$ = CHR( X )
  475. S$ = CLK$
  476. S$ = CLK( X )
  477. S$ = COMMAND$( X )
  478. S$ = CUR( X, Y )
  479. S$ = DAT$
  480. S$ = DATE$
  481. S$ = DATE$( X )
  482. S$ = ENVIRON$( A$ )
  483. S$ = ERR$
  484. S$ = ERROR$
  485. S$ = HEX$( X )
  486. S$ = INKEY$
  487. S$ = INPUT$( X )
  488. S$ = INPUT$( X, Y )
  489. S$ = KEY
  490. S$ = KEY$
  491. S$ = LCASE$( A$ )
  492. S$ = LEFT$( A$, X )
  493. S$ = LEFT( A$, X )
  494. S$ = LIN( X )
  495. S$ = LTRIM$( A$ )
  496. S$ = MAX( A$, B$ )
  497. S$ = MID$( A$, X )
  498. S$ = MID$( A$, X, Y )
  499. S$ = MID( A$, X )
  500. S$ = MID( A$, X, Y )
  501. S$ = MIN( A$, B$ )
  502. S$ = MKC$( X )
  503. S$ = MKD$( X )
  504. S$ = MKI$( X )
  505. S$ = MKL$( X )
  506. S$ = MKS$( X )
  507. S$ = NUM$( X )
  508. S$ = OCT$( X )
  509. S$ = REPEAT$( X, A$ )
  510. S$ = REPEAT$( X, Y )
  511. S$ = RIGHT$( A$, X )
  512. S$ = RIGHT( A$, X )
  513. S$ = RTRIM$( A$ )
  514. S$ = SEG$( A$, X, Y )
  515. S$ = SEG( A$, X, Y )
  516. S$ = SPA( X )
  517. S$ = SPACE$( X )
  518. S$ = SPACE( X )
  519. S$ = SPC( X )
  520. S$ = STR$( X )
  521. S$ = STR( X, Y )
  522. S$ = STRING$( X, A$ )
  523. S$ = STRING$( X, Y )
  524. S$ = STRING( X, Y )
  525. S$ = TAB( X )
  526. S$ = TI$
  527. S$ = TIME$
  528. S$ = TIME$( X )
  529. S$ = TRIM$( A$ )
  530. S$ = UCASE$( A$ )
  531. SAVE [file-name$]
  532. SCRATCH # X
  533. SELECT
  534. SELECT CASE expression
  535. STEP
  536. STOP
  537. STORE ArrayName
  538. SUB name [ ( parameter [,...] ) ]
  539. SUBEND
  540. SWAP variable, variable
  541. SYSTEM
  542. TEXT letter[-letter] [, ...]
  543. THEN line1
  544. TIMER
  545. TIMER OFF
  546. TIMER ON
  547. TIMER STOP
  548. TLOAD [file-name$]
  549. TO
  550. TRACE OFF
  551. TRACE ON
  552. TRACE ON | OFF
  553. TSAVE [file-name$]
  554. UEND
  555. UNTIL expression
  556. USE parameter$
  557. USER LBL
  558. VARS
  559. WEND
  560. WHILE
  561. WRITE [# device-number,] element [, .... ]
  562. X # Y
  563. X & Y
  564. X * Y
  565. X ** Y
  566. X + Y
  567. X - Y
  568. X / Y
  569. X < Y
  570. X <= Y
  571. X <> Y
  572. X = Y
  573. X =< Y
  574. X => Y
  575. X > Y
  576. X >< Y
  577. X >= Y
  578. X AND Y
  579. X EQ Y
  580. X EQV Y
  581. X GE Y
  582. X GT Y
  583. X IMP Y
  584. X LE Y
  585. X LT Y
  586. X MAX Y
  587. X MIN Y
  588. X MOD Y
  589. X NE Y
  590. X OR Y
  591. X XOR Y
  592. X XRA Y
  593. X [ Y
  594. X \ Y
  595. X ^ Y
  596. [LET] variable = expression
  597. CHANGE HISTORY
  598. CHANGES FROM 3.00 to 3.10
  599. * Implements most of the following BASIC dialects:
  600. OPTION VERSION DARTMOUTH ' Dartmouth DTSS BASIC
  601. OPTION VERSION MARK-I ' GE 265 Mainframe BASIC
  602. OPTION VERSION MARK-II ' GE 435 Mainframe BASIC
  603. OPTION VERSION SYSTEM-360 ' IBM System/360 BASIC
  604. OPTION VERSION SYSTEM-370 ' IBM System/370 BASIC
  605. OPTION VERSION CBASIC-II ' CBASIC-II for CP/M
  606. OPTION VERSION ECMA-55 ' ANSI Minimal BASIC
  607. OPTION VERSION HANDBOOK1 ' The BASIC Handbook, 1st Edition
  608. OPTION VERSION HANDBOOK2 ' The BASIC Handbook, 2nd Edition
  609. OPTION VERSION TRS-80 ' TRS-80 Model I/III/4 LBASIC
  610. OPTION VERSION BASIC-80 ' Microsoft BASIC-80 for Xenix
  611. OPTION VERSION ECMA-116 ' ANSI Full BASIC
  612. * from Howard Wulf, AF5NE
  613. CHANGES FROM 2.61 to 3.00
  614. * Code redesign from Howard Wulf, AF5NE
  615. CHANGES FROM 2.60 to 2.61
  616. * Bug fix from Matthias Rustler
  617. CHANGES FROM 2.50 to 2.60
  618. * New maths functions and append mode support from Edmond Orignac
  619. * Bug fixes
  620. CHANGES FROM 2.40 to 2.50
  621. * Bug fixes
  622. * New compilation procedure for MVS and CMS
  623. CHANGES FROM 2.30 to 2.40
  624. * Bug fixes from Bill Chatfield
  625. * Updated documentation
  626. * Added support for compiling on CMS (another IBM mainframe OS)
  627. CHANGES FROM 2.20pl2 to 2.30
  628. * Minor bug fixes, cosmetic improvements and portability improvements
  629. * Added support for compiling on MVS (IBM mainframe)
  630. CHANGES FROM 2.20pl1 to 2.20pl2
  631. bwb_cmd.c
  632. Fixed calling stack level logic in RETURN statement to prevent erroneous
  633. "RETURN without GOSUB" messages.
  634. bwb_cnd.c
  635. bwb_stc.c
  636. Changed continuation condition for WHILE, ELSEIF, and LOOP UNTIL
  637. to be != FALSE, not == TRUE. More in line with common commercial
  638. BASIC implementations.
  639. bwb_mth.c
  640. Fixed initialization in VAL function so that old results are not later
  641. returned as values.
  642. bwb_var.c
  643. Added parenthesis level checking to dim_getparams. Using multi-level
  644. expressions as array subscripts was causing the program to bomb.
  645. bwx_iqc.c
  646. bwx_tty.c
  647. bwb_mes.h
  648. Added second copyright notice.
  649. bwb_dio.c
  650. bwb_str.c
  651. Added support for strings longer than 255 characters.
  652. bwb_prn.c
  653. Disabled tab expansion and print width checks when not printing to a file.
  654. bwb_inp.c
  655. Fixed LINE INPUT file reads to accommodate strings of length MAXSTRINGSIZE.
  656. bwx_ncu.h
  657. bwx_ncu.c
  658. New files. Code for UNIX ncurses interface, compliments of L.C. Benschop,
  659. Eindhoven, The Netherlands.
  660. Makefile.ncu
  661. New files. Sample makefile for ncurses implementation.
  662. bwbasic.h
  663. Revised defines for MININTSIZE and MAXINTSIZE from 16-bit to 32-bit limits.
  664. Revised define for MAXSTRINGSIZE from 255 to 5000 characters.
  665. Changed string length from unsigned char to unsigned int to support strings
  666. longer than 255 characters.
  667. Added support for new ncurses package.
  668. Revised VERSION define to reflect above changes.
  669. CHANGES FROM 2.20 to 2.20pl1
  670. bwb_cnd.c
  671. Moved init routine for bwb_while so that it would be initialized regardless
  672. of expression value, not just if TRUE. This was causing some segmentation
  673. faults in WHILE-WEND loops.
  674. bwb_elx.c
  675. Plugged gaping memory leak. Temp variable space for expression evaluation
  676. was being allocated but not freed when done (oops!).
  677. bwb_fnc.c
  678. Added check for NULL return from getenv to prevent segmentation faults.
  679. bwbasic.h
  680. Revised VERSION define to reflect above changes.
  681. CHANGES FROM 2.10 to 2.20:
  682. * Plugged numerous memory leaks, resolved memory overruns and allocation
  683. difficulties.
  684. * General cleanup and bug fixes, too many to list in detail here.
  685. The major problem areas addressed were:
  686. - RUN command with file name argument
  687. - nested and cascaded FOR-NEXT loops
  688. - PRINT USING
  689. - EOF, LOF functions
  690. - string concatenation
  691. - operator hierarchy
  692. - multi-level expression evaluation
  693. - hex constant interpretation
  694. - hex and octal constants in INPUT and DATA statements
  695. * Added a CLOSE all files feature (when no argument supplied).
  696. * Added a unary minus sign operator.
  697. * Added a MID$ command to complement the MID$ function.
  698. * Added a RENUM facility in a standalone program.
  699. * Added checking in configure for unistd.h (important on Sun systems).