Liberty BASIC - limited version Release 0.9d Copyright 1992, 1993 Shoptalk Systems All rights reserved Portions copyright 1991, Digitalk Inc. Liberty BASIC is a personal BASIC programming system for MS Windows 3.x requiring a 286 (4 Meg RAM recommended for 286/Standard Mode operation), or a 386, 486 or better (586/Pentium?) and 3 Megabytes of RAM or more. When Microsoft introduced Windows 3.0, it didn't come with any programming facility, so we created Liberty BASIC to be for Windows what GWBASIC and QBASIC are for MS-DOS, an easy way for the end users to design their own software. PLEASE call or write if you have any suggestions for features you would like to see in Liberty BASIC! We really need lots of feedback if Liberty BASIC is to become the product that _you_ want it to be. Distribution Policy: Liberty BASIC 0.9d is Shareware, and it may be copied and freely distributed providing the following list of files is distributed together and unmodified. Shoptalk Systems forbids the redistribution of the these files for profit. A small fee may be levied for distribution costs, but not for the software itself. Liberty BASIC Release 0.9d is a subset of the commercial product. Our hope is that you will like this limited release enough to register. If you find it useful we ask you to please register your copy. $35 will get you the most recent version (the commercial version, in other words), with technical support, and upgrades will be made available for only a few dollars. An illustrated, bound manual is available for an additional $15 (only $10 if purchased when you register). Inexpensive site licenses are available (educators take note). Here's what you get for your $35: Liberty BASIC 1.x (you will always get the most recent version) with: A free copy of BASIC Training from Cascoly Software. This shareware BASIC tutorial starts you on your way learning to program in BASIC ; Technical Support ; New! A runtime distribution mechanism lets you share your Liberty BASIC programs with others. No runtime charges apply ; Graphics commands for filled polygons, circles, ellipses, pie slices ; Define your own Windows dialog boxes with the full suite of dialog box objects (buttons, checkboxes, comboboxes, etc...) ; Segmented graphics, which let you treat each drawn item as an object which can be individually manipulated ; The ability to add pull-down menus with accelerator keys to your programs ; The ability to trap the window close event and assign a routine to handle it ; A more powerful spreadsheet widget ; Random access file capability (0.9d is limited to sequential); More string, math, and other functions and commands ; Slick sample programs that exploit Windows' special features. For example: a drawing app, a graphing app, the tower of Hanoi game, a calculator, and more ; More... See the file LBAS10.TXT for more details on version 1.0a! To see this file, pull down Help and select Version 1.0 Details. ----------------------------------------------------------------------- About this version: Version 0.9d adds READ, DATA, and RESTORE. These three commands add an important GWBASIC compatible feature to Liberty BASIC, making it more useful in school courses. See the file diffrncs.txt for more info. A nice branch label feature added to the Source menu makes it easier to get around inside of large programs. Now you can keep an eye on the compiler as each line compiles. Simply pull down the Setup menu and pick Compiler. Then click on the pop up that appears to toggle the compiler status box on or off. It slows the compile down a little bit to display its activity, but some of you requested this feature, so it was added. And several bugs were squashed in this release including: Discovered a bug that created unpredictable results using certain BASIC functions where parameters derived using rnd(), time$(), date$(), and any other function where the result is not always the same. Problem fixed. When a floating point value was passed to a single dimensioned array as an index, a system primitive notice was produced, and the program was halted. This problem is now fixed. Now if a non-integer is used to index a MID$() function, it is truncated and execution continues instead of crashing. This is a list of files distributed with this release of Liberty BASIC: readme.txt - Installation instructions (also in this file) liberty.exe liberty.txt - This file install.exe - The installation program inst.bat lbas10.txt - A description of Liberty BASIC 1.0a summary.txt - Summary of commands & functions, hints, etc register.txt - Order form diffrncs.txt - A GWBASIC survival guide v09d.txt c.grp d.grp libertyb.grp - The Liberty BASIC Program Manager group file install.err lbasic.ini - Setup file vwabort.dll vwbas11.dll vwdlgs.dll vwfloat.dll vwfont.dll vwsignon.dll vwvm.dll ascii.bas blank.bas brnchtst.bas buttons.bas circles.bas customer.bas exponent.bas factoril.bas for_next.bas getchar.bas grapher.bas graphics.bas hanoi.bas hilo.bas invoice.bas mandala.bas open.bas power.bas profile.bas read.bas sieve.bas strtest.bas test.bas tictacto.bas turtle.bas turtle2.bas exp.bas readdata.bas grapher.abc trio.abc +-------------------------------------------------------------------------+ | Known bugs: Windows tries to match fonts more or less with size being | | more important than the name of the font. When Liberty BASIC loads, it | | tries to get a font of a certain size. On some systems, this ends up | | being the Symbol font, which is unusable. If your system does this, | | then pull down the System menu and select "Fonts...", then find a font | | that suits your taste best. | +-------------------------------------------------------------------------+ Version 0.9c took a deliberate step towards making Liberty BASIC more familiar to GWBASIC programmers. The PRINT, INPUT, WHILE...WEND, and boolean operations are more compatible with their GWBASIC counterparts. A GWBASIC to Liberty BASIC help file has been added. More will follow. In 0.9c, the user interface was simplified. The default drive and directory are automatically selected when Liberty BASIC is loaded. The two file menus of previous versions have been integrated and redundant items have been eliminated. A Zoom Text item has been added to the source menu. Here is a list of enhancements for version 0.9d: ------------------------------------------------------------------------ BONUS!!! BONUS!!! Registered users also receive a copy of BASIC Training, a shareware BASIC tutorial from Cascoly Software! 1) READ, DATA, and RESTORE added. 2) Now a list of branch labels can be displayed from which you may select one to jump to in the source editor. This is very useful when jumping around a lot in medium to large programs. 3) Some bugs fixed. 4) More sample programs included. 5) Now Liberty BASIC may be registered with a credit card using the PsL Credit Card registration service. 0.9c Notes: ------------------------------------------------------------------------ 1) The browser/editor now automatically selects the current default drive and directory when Liberty BASIC loads. 2) The File and Files menus are now integrated into one File menu, and duplicate items are eliminated. 3) PRINT and INPUT are more GWBASIC compatible. The compatibility can be turned off by pulling down the Setup menu and selecting the compatibility item. 4) Variable names can now start with reserved words. 5) Boolean AND & OR are more GWBASIC compatible, but bitwise operations are still not supported. 6) The INPUT$() function can now return a single keystroke. Before it was only good for file input. 7) The NEXT command is more GWBASIC compatible. You don't need to specify the variable name. For example: for x = 1 to 10 print x next is now acceptable. 8) The PgUp and PgDn keys now work when viewing Help files. Previously it was necessary to operate the scroll bars using the mouse. 9) A GWBASIC to Liberty BASIC help file is provided. The file is named DIFFRNCS.TXT, and can be viewed by pulling down the Help menu and selecting GWBASIC vs. Liberty BASIC. 10) The WHILE...WEND commands are now GWBASIC compatible. 11) The trim$() function now works. It didn't before. 12) A zoom text option has been added to the Source menu. 0.9b Notes: ------------------------------------------------------------------------ 1) The following arithmetic functions have been added: atn( ) - arc-tangent asn( ) - arc-sine acs( ) - arc-cosine exp( ) - exponent log( ) - natural log abs( ) - absolute value 2) The FILEDIALOG command has been added: FILEDIALOG opens a dialog box that permits browsing of drives, directories,and files. When the desired file is found and selected, FILEDIALOG then returns the full pathname (drive:\directory\filename.ext) of the selected file. For example: FILEDIALOG "Select a file", "*.TXT", result$ Causes a dialog box to be opened with the title "Select a file". Only "*.TXT" files will be displayed, and when the user makes the final selection, the resulting path will be placed into the string variable result$. 3) The lof( ) function has been added. This lets you find the length of an open file. For example: open "c:\autoexec.bat" for input as #1 autoexecLength = lof(#1) Would set the value of variable autoexecLength to be whatever the length of your autoexec.bat file is. 4) The using( ) function now works a lot better. 5) The NOTICE command has been added: NOTICE pops up a small dialog box containing a message of your choice. For example: notice "Illegal Entry" Would pop up a small notice saying "Illegal Entry". This notice has an OK button which lets the user close the notice. Program execution would then continue. In the above form, the title of the dialog box always reads "Notice". You can change this using the following form: notice "User Error" + chr$(13) + "Limit Exceeded!" In this case, the title would be "User Error", and the notice would be "Limit Exceeded!". 0.9a notes: -------------------------------------------------------------------- A bug causing numeric constants between 0 and -1 to be accidentally translated as positive has been corrected ; Compile error messages are more helpful now, and the compiler will highlight the errant line in the source editor ; An on-line reference facility has been added as selections under the Help pull down menu of the file browser. If instruction is needed for a particular command, simply select that command in the source (double clicking on the word does the trick), then pull down Help and select Command Reference ; Graphics operations are more efficient (faster). Additionally a circle command has been added for drawing circles (see circles.bas) ; Faster compilation ; NOTE: In the file LIBERTY.TXT (this file) in the 0.9 release, the text for the TRACE command inaccurately stated that the three levels of TRACE worked thus: 0 - run full speed, 1 - animated trace, 2 - single step In actuality, the reverse is true. 0 single steps, 1 animates, and 2 runs full speed. Here is a list of the supported commands for the 0.9b release: ABS() ACS() ASC() ASN() ATN() BEEP BUTTON CHR$() CLOSE CLS CONFIRM COS() DATE$() DIM EOF() EXP() FILEDIALOG FOR...NEXT GOSUB...RETURN GOTO IF...THEN...ELSE INPUT$() INPUT INPUT # INSTR() INT() LEFT$() LEN() LET LOF() LOG() MID$() OPEN PRINT PRINT # PROMPT LPRINT REM RETURN RIGHT$() RND() STOP END SIN() STR$() TAN() TIME$() TRACE TRIM$() USING() VAL() WHILE...WEND Here is a list of the supported graphics commands: COLOR GOTO PLACE UP DOWN GO LINE FILL FLUSH SIZE CLS FONT NORTH TURN POSXY PRINT CIRCLE HOME Here is a list of the spreadsheet commands: INDIRECT MANUAL CELL FORMAT RESULT? FORMULA? SELECT USER FLUSH Here is a list of the text window commands: CLS FONT LINES LINE Release 0.9 Notes: ------------------------------------------------------------------------ Some bugs in the parser have been fixed ; Multiple windows are supported, buttons can be added where desired. A button can cause execution to be transferred to a unique branch label (event driven style) or it can return a string like an INPUT statement (procedural style). Any window can be opened as: a graphics window with line and turtle color graphics ; a text window (for output or input) with font control ; a spreadsheet (controllable via BASIC statements) ; Confirmation and prompter style dialog boxes are supported ; The debugger has been improved with a variable watch window ; BASIC code can now be compiled and run from the start-up browser without first opening a BASIC source editor window ; Many more statements and functions are included (see summary.txt) ; More sample programs are included ; Release 0.2 Notes: -------------------------------------------------------------------------- IF/THEN/ELSE now supported. For example, the following is valid: if mid$(a$,index,1) = "." then print "." else print mid$(a$,index,1); The compiler is not case sensitive any longer. Reserved words may be in either upper or lower case. It is case sensitive in the sense that variable names that are the same but with different capitalization are considered unique. NOTE: VARIABLE NAMES MAY NOT START WITH STATEMENT OR FUNCTION NAMES. The simple continuous trace debugger in version 0.1 has been replaced by a 3 stage pushbutton debugger permitting single step, continuous trace, and no trace (run full speed). You can move from one mode to the other at will. A variable watch window is not available yet. In version 0.1 you needed to recompile every time you wanted to run a program. Now all that is needed is to bring up the pane menu for the window the program is running in and select the Restart option. This can be done at any time (not just at the end of a program run) and will work in Run or Debug mode. The ^ arithmetic operator is now supported. The remaining operators are: + - * / AND OR NOTE: AND & OR ARE ONLY USEFUL IN IF/THEN/ELSE STATEMENTS FOR THE PURPOSE OF DETERMINING LOGICAL CONDITIONS. FOR EXAMPLE: if a > b and matchFlag = 1 then gosub [match] is acceptable let result = -1 and latch is not acceptable Version 0.1 was only able to represent negative numbers with an expression (0-n). Version 0.2 now supports negative numbers in expressions. For example: In version 0.1 - print rate * (term + (0 - 5)) In version 0.2 - print rate * (term + -5) STOP and END commands are now supported. RND(1) is now supported. RND(0) is not. The random sequence generator is crude, but it works for now. Subsequent releases of Liberty BASIC will have improved 'randomness'. For now, let's just say that RND(1) provides 'arbitrary' number generation. STR() was changed to STR$(), which is the proper MBASIC name for this function. TRACE 0, 1, or 2 is now supported. This allows control of the debugger trace mode to be controlled inside of the program being debugged. TRACE 0 no trace, run at full speed TRACE 1 trace continously TRACE 2 single step (^^ this is incorrect, see more recent mention, above ^^) --------------------------------------------------------------------------- INSTALLATION: To install Liberty BASIC, first make sure that you are not running Windows. The program INSTALL.EXE is included with Liberty BASIC to install it for you. Run this program, and you will be asked where Windows resides. The default is C:\WINDOWS. If Windows resides anywhere else, you must specify it here. Now you will be asked where to install Liberty BASIC. The default is C:\LIBERTY. If you want it to be installed elsewhere, then you must specify it here. You will then be given an opportunity to abort the installation. If you choose not to abort, then installation will begin then. Once installation is complete, you may load Windows. If you specified any directory to install Liberty BASIC into other than \LIBERTY, then you will need to alter the properties for the Liberty BASIC icon to indicate where it is installed. Otherwise you can just go ahead and double-click on its icon to start Liberty BASIC. Liberty BASIC starts with a file browser window. It is arranged as four panes, three across the top, and one on the bottom like so: +--------------------------------------------------------------+ | - Liberty BASIC c:\liberty v ^ | +--------------------------------------------------------------+ | a [1] | [..] [2] | demo.bas [3] | | b | liberty | read.bas | | c | msdos | test.bas | | | | | | select drive here | select directory | select file here | | | here | | +--------------------------------------------------------------+ | [4] | | | | | | | | see BASIC source code here | | | | | | | | | +--------------------------------------------------------------+ Select the drive to browse in pane [1], then select the directory (usually liberty) to browse in pane [2], then finally the file to browse in pane [3]. When the .BAS file is selected, its source will be displayed in pane [4]. To run the program, position the cursor inside of pane [3] and press the right hand mouse button and a menu will appear. Then select the item BASIC source editor, and a new window will open which will contain a copy of the source for the selected file. Then position the cursor inside of that pane and again press the right hand mouse button for another menu. There are two options available, Run and Debug. Run compiles and runs the program, and Debug provides the additional benefit of a 3 level source level debugger with optional watch window (v 0.9 let's you do this in pane 4 without opening a seperate BASIC source editor). If you want help, you can get this on-line by pulling down the Help menu and selecting either Liberty BASIC Notes, or Command Reference. If you select a word in the source editor and then select help, the system will try to find that word or command in the text. HINT for 286 users with only 3 megabytes of RAM: --------------------------------------------------- 3 megabytes RAM is very tight for Liberty BASIC when running in Standard Mode. If low memory errors make Liberty BASIC unusable, try to free up as much extended memory as possible. If all else fails, try this: Run Windows ; Run Liberty BASIC ; Exit Liberty BASIC ; Run Liberty BASIC again As strange a ritual as this may seem, it does something to the way Liberty BASIC manages its memory, making those low memory errors much less trouble. We cannot guarantee that this trick will work on your system. Here's what you get with your registration fee of $35: Liberty BASIC 1.x (you will always get the most recent version) with: A free copy of BASIC Training from Cascoly Software. This shareware BASIC tutorial starts you on your way learning to program in BASIC ; Technical Support ; New! A runtime distribution mechanism lets you share your Liberty BASIC programs with others. No runtime charges apply ; Graphics commands for filled polygons, circles, ellipses, pie slices ; Define your own Windows dialog boxes with the full suite of dialog box objects (buttons, checkboxes, comboboxes, etc...) ; Segmented graphics, which let you treat each drawn item as an object which can be individually manipulated ; The ability to add pull down menus with accelerator keys to your programs ; The ability to trap the window close event and assign a routine to handle it ; A more powerful spreadsheet widget ; Random access file capability (0.9d is limited to sequential); More string, math, and other functions and commands ; Configure Liberty BASIC to use the system-wide font you specify. Set it and forget it ; More... See the file LBAS10.TXT for more details on version 1.0a! To see this file, pull down Help and select Version 1.0 Details. If you decide to register, send $35 and you will receive the most recent version and tech support. Upgrades will be made available for only a few dollars. You also get an evaluation copy of BASIC Training, a shareware BASIC tutor from Cascoly Software. An illustrated, bound manual is available for an additional $15 (only $10 if ordered when you register). You can order directly from Shoptalk Systems (cash or check) or from Public (software) Library with your MC, Visa, AmEx, or Discover Card by calling 800-242-4PsL (from overseas: 713-524-6394) or by FAX to 713-524-6398. THESE NUMBERS ARE FOR ORDERING ONLY. Shoptalk Systems can NOT be reached at those numbers. To contact Shoptalk Systems for information about dealer pricing, volume discounts, site licensing, the status of shipment of the product, the latest version number or for technical information, or to discuss returns, call or write Shoptalk Systems (see address and phone # below). Here is some other stuff in the works: Incremental compilation ; Program chaining ; Graphics Bitblitting ; Powerful animation capabilities ; Debugger enhancements ; Access to Dynamic-Link-Libraries ; DDE capability ; The ability to use externally defined resources ; More ...!!! PLEASE call or write if you have any suggestions for features you would like to see in Liberty BASIC! We really need lots of feedback if Liberty BASIC is to become the product that _you_ want it to be. To find out more write or call: Shoptalk Systems P.O. Box 1062 Framingham, MA 01701 508-872-5315 Or contact Carl Gundel on Compuserve at 71231, 1532