Liberty BASIC 1.1 Beta release Please support shareware! -------------------------------------------------------------------------- New with version 1.1! The most exciting feature is the addition of a redesigned *.TKN format file, giving Liberty BASIC 'Compile on Demand' capability. When you run a *.TKN program, it starts right up, even if it is very large. More importantly, when you register Liberty BASIC, you will receive a copy of the runtime engine, letting you distribute your programs royalty-free! New OS/2 beta version available! Look for LB05.ZIP on your local BBS. This OS/2 port of Liberty BASIC is designed to provide portability from the Windows version! Or send us $5, and we'll send you a copy! To our knowledge, Liberty BASIC is now the only shareware cross-platform programming tool for Windows and OS/2!!! --------------------------------------------------------------------- NOTES: The first twenty-four items listed here represent the difference between release 1.0 and 1.0a of Liberty BASIC: 12/30/92 ** item 1) has been removed because it caused incompatibility with other BASICs *** 1) Random file PUTs are forced to disk (later a more intelligent and efficient scheme will be added ; 2) Variable names can now start with reserved words. For example, the variable name 'tools' would not have been permitted before because it starts with 'to', which is a reserved word ; (for x = 1 TO 10) ^--- reserved word 3) Trapclose is now effective for the window and dialog window types ; 4) Now individual texteditor panes can be added to windows of type graphics, window, and dialog. These panes can accept the same commands as windows of type text, and any number can be added to a single window. For examples, see the included programs. 01/06/92 5) Added the LOF(#handle) function, which returns the length of the file referenced by #handle. 6) Fixed a bug in the !origin row column command for windows of type text, and for the texteditor panes. Unfortunately use of !origin would sometimes cause a stack overflow, causing the entire Windows session to abruptly terminate, requiring a reboot to proceed safely. 01/14/92 7) Corrected a problem that caused the last line of text printed to text panes to not be displayed. This is for windows opened as type text (the various types), and for text panes added to windows using the texteditor command. 8) Added the checkbox command, which lets one add checkboxes to Liberty BASIC windows of type: window, graphics, dialog. The syntax is like this: checkbox #handle.ext, "label", [branchOn], [branchOff], xOrigin, yOrigin, width, height [branchOn] is executed if the box is checked on [branchOff] is executed if the box is checked off Currently there is no way to set or reset the checkbox from program control. 1-22-93 9) The TextBox object has been modified so that it can contain more than one line of text. Simply specifying a vertical size large enough to accomodate the desired number of lines is all that is required to do so. 10) Sometimes if a program terminates with a runtime error, there is no way to close the window(s) for that program. A new system menu option has been added to force the termination of all open BASIC programs, even if they stubbornly refuse to close using the normal means. Simply pull down the system menu and select 'Kill BASIC Apps...'. This will usually take 10 or so seconds (16 MHz 386sx). 2-3-93 11) Modified the select command for Listbox so that it will be able to select items that have spaces in them, either leading spaces, internally embedded spaces, or trailing spaces. The same was done for Combobox. 12) Added the selectionindex? command for Listbox and Combobox so that the numerical index of the current selection can be determined. Format is: print #handle.ext, "selectionindex?" input #handle.ext, i where the index (0 if no selection) is placed in i. 2-4-93 13) Font selection is now cached. When a font/size is first selected, it will take time to sift through and find a good match. The second time that font/size is selected, the font will be returned almost instantly. 14) Now the font command works with listboxes, not just texteditors. 15) Now when the font command is used with the texteditor/textbox/listbox objects, fonts with spaces in their names can be selected. Previously only those fonts with only one word in their name were selectable. 2-5-93 16) The TRIM$() function did not work at all. Now it does. 17) The SORT command has been added. This command sorts both double and single dimensioned arrays. Arrays can be sorted in part or in whole, and with double dimensioned arrays, the specific column to sort by can be declared. When this option is used, all the rows are sorted against each other according to the items in the specified column. Here is the syntax for the sort command: sort arrayName(, i, j {,n} This sorts the array named arrayName( starting with element i, and ending with element j. If it is a double dimensioned array then the column parameter tells which nth element to use as a sort key. Each WHOLE row moves with its corresponding key as it moves during the sort. So let's say you have a double dimensioned array holding sales rep activity: repActivity(x, y) So you're holding data, one record per x position, and your record keys are in y. So for example: repActivity(1,1) = "Tom Maloney" : repActivity(1,2) = "01-09-93" repActivity(2,1) = "Mary Burns" : repActivity(2,2) = "01-10-93" . . . repActivity(100,1) = "Tom Maloney" : repActivity(100,2) = "01-08-93" So you want to sort the whole 100 items by the date field. This is how the command would look: sort repActivity(, 1, 100, 2 If you wanted to sort by name instead, then change the 2 to a 1, like this: sort repActivity(, 1, 100, 1 18) The 'Watch Variables?' messageBox no longer appears when running the debugger. It is now assumed that you want to watch variables. This saves time. 19) The NOMAINWIN command is now effective when debugging programs. This saves you from needing to close the main program window every time when debugging. 20) Now there are three commands that can be sent to checkboxes: print #handle.ext, "set" This sets the checkbox. print #handle.ext, "reset" This clears the checkbox. print #handle.ext, "value?" input #handle.ext, r$ This returns either "SET" or "RESET" into r$, depending on the state of the checkbox. 2-12-93 21) The 1) item has been removed. Random file record PUTs are now NOT forced every time to disk. 2-24-93 22) Bug fix - When there was no THEN or GOTO in an IF...THEN statement, the compiler crashed. Problem corrected. 2-28-93 23) WHILE and WEND are now more GWBASIC compatible. They will not execute a loop even once if the condition of the WHILE expression evaluates to false. 24) The File and Files menus have been merged, and redundant items have been removed. Changes constituting release 1.1 beta -------------------------------------------------------------- 25) A Setup menu has been added. Font selection is part of the setup, and now there is an option to save the selected font as the default font. 26) The LPRINT command now works, but still needs some work. 27) The DUMP command has been added. This completes the LPRINT fix by permitting a Liberty BASIC program to force dump everything to the printer at will. 28) Added the LOADBMP and DRAWBMP commands so that any *.bmp file can be loaded and drawn in a graphics window either at x,y or centered on x,y. Look at the included TTT.BAS and related *.BMP files. 29) Eliminated the dreaded "Sharing Violation" bug that appeared when trying to run *.TKN files. Now you can load SHARE.EXE and still use Liberty BASIC. 30) Corrected a limitation in the input$() function that prevented the use of anything but a numeric literal as the second parameter. When an arithmetic expression was used before, it would not produce an error, but it would just act unpredictably. 31) Added the command singleClickSelect to the listbox control. Example: print #window.listbox, "singleclickselect" This tells the listbox to branch on a single-click, instead of a double-click, if so desired. 32) Added the option to use an extension with the statictext command. When this option is chosen, a BASIC program can print to the control to change its text contents. It can also perform an input to get its contents. Example: 'paste this code into Liberty BASIC and try it! statictext #win.status, "help on", 10, 10, 100, 20 button #win, "Put", [put], UL, 10, 40 button #win, "Get", [get], UL, 10, 40 open "Application" for dialog as #win [inputLoop] input r$ [put] prompt "Please type something"; text$ print #win.status, text$ goto [inputLoop] [get] input #win.status, text$ notice text$ goto [inputLoop] 33) The browser/editor now automatically selects the current default drive and directory when Liberty BASIC loads. 34) The File and Files menus are now integrated into one File menu, and duplicate items are eliminated. 35) Variable names can now start with reserved words. 36) Boolean AND & OR are more GWBASIC compatible, but bitwise operations are still not supported. 37) The PgUp and PgDn keys now work when viewing Help files. Previously it was necessary to operate the scroll bars using the mouse. 38) The WHILE...WEND commands are now GWBASIC compatible. 39) The trim$() function now works. It didn't before. 40) A zoom text option has been added to the Source menu. 41) Improved the font selection capability to include TrueType fonts. When naming a font with more than one word in its name replace the spaces with the underscore character. For example: print #main.text, "font Ms_Sans_Serif 5 13" 42) Because we now have an OS/2 native version of Liberty BASIC, the variables Platform$ and Version$ have been added. They contain the name of the platform (either "OS/2" or "Windows") and the version # so that when differences between the versions become a problem, you can test to see which platform and version you're running, and write case specific code, letting you write one source for both platforms. 43) Radiobutton support has been added. Syntax is identical to checkbox support. Grouppanes are not supported yet, so all radio- buttons in a window are linked. 44) RULE XOR | OVER is added to graphics windows. This lets you draw, and simply redraw to erase (using xor). RULE OVER is the default, and it simply draws over whatever is there already. See the DRAW.BAS program included. 45) A fix was added concerning a bug in Cursor management, which often caused GPFs when loading on some systems. That's all for now! Shoptalk Systems PO BOX 1062 Framingham, MA 01701 508-872-5315 Carl Gundel CIS 71231,1532