Liberty BASIC v1.2 for Windows will be released in Feb 1995! Look for the file LB12W.ZIP on bulletin boards everywhere! Here are some new v1.2 features and fixes of Liberty BASIC that been added since Liberty BASIC v1.1! 1) A new editor is used, offering one editing window pane instead of the four in the previous versions. This was changed mostly because of customer feedback that they didn't like the old editor. 2) A visual design tool called FreeForm is included which lets you design your windows and controls graphically, and it will write the Liberty BASIC code for you! The program is written in Liberty BASIC and the code is included, so you can see how the author writes full sized apps in Liberty BASIC, and also so that you can modify it to suit your needs. 3) Now you can run *.TKN files straight from the Run menu (formerly call the Source menu)! 4) Programs will run up to 30% faster in processing intensive tasks. 5) Programs are more memory efficient. This also improves speed, especially on tight memory systems. 6) LINE INPUT has been added for sequential file input. 7) A bug was fixed that prevented the use of the name File as a pull down menu name. Files was often used as a substitute. 8) When opening a window with textbox controls, the focus is now automatically given to the first textbox. Before it was necessary to Tab to the first item. 9) To give any control inside a window the focus, just print setfocus to the control, like so: print #main.name, "setfocus" Note: some controls expect !setfocus instead of setfocus 10) Buttons can now be sized as desired just by tacking on a width and height onto the old button command syntax. For example. button #1, "Red", [colorRed], UL, 5, 5, 30, 20 This produces a button labeled Red, 30 pixels wide and 20 high. Previous Liberty BASICs only permitted autosizing of buttons. 11) Window sizing and placement have been improved. The default size is different (and using values between 0 and 1 for WindowWidth and WindowHeight doesn't work anymore). Windows will position themselves depending on mouse position when they open unless UpperLeftX and UpperLeftY are deliberately modified. 12) The Go To Branch Label window is now much bigger and displays more items, making program navigation easier. 13) Kill Basic Programs now kills ALL types, those started from Run, from Debug, and also *.TKN files. 14) The Platform$ system variable permits a running program to know which version of Liberty BASIC is running. It will either be "Windows" or "OS/2". The Version$ system variable now reads "1.2" 15) A Drives$ system variable has been added, which returns a string contain all available drive letters like so: print Drives$ might produce: "a: b: c: " Hint: Use the word$() function to get each drive letter out. 16) A bug was fixed that would occur sometimes when trying to close an application that uses windows with controls. The error would read like this: Handle #handle.xxxx not available Where #handle.xxxx would be any valid handle pointing to a window control 17) Improved printing support in graphics windows. Now the print command actually sends a much more accurately scaled image to the Print Manager instead of a 1:1 pixel to pixel copy (which resulted in itty-bitty printouts). For example: print #graphicsWindow, "flush ; print" Note: It is important to send flush, and then print 18) Some debug code was accidentally left in. This code would cause something like an invoice or packing slip to appear in front of anything you LPRINTed. This code has been removed. 19) The cleaning up of bitmaps (when loading bmp files with LOADBMP or when using the BMPBUTTON command) has been greatly improved, helping so solve a diminishing resources problem. 20) The spreadsheet window style now uses a fixed width font to remedy the broken looking text produced when labels stretch across cells. 21) A compiler design flaw was ELIMINATED. The compiler would try to bounds check array references at compile-time. This was ill conceived. If you had code similar to the examples below, you would get an out of bounds error during compile. print stuff(index - 1) or a$(r - 1) = a$(r) Because the variable index was not defined (was zero) at compile time, subtracting 1 would result in -1. Since the compiler would check the validity of this result at compile time, and error would be reported. The second example is similar. 22) The spreadsheet now supports cell selection via the mouse (as opposed to moving the cell selector soley with the arrow keys).