PowerBASIC
![]() Screenshot of PowerBASIC for Windows 9.0 IDE and an example compiled Windows GUI. | |
Developer | Robert "Bob" Zale (b. 1945, d. 2012) |
---|---|
First appeared | 1989 |
Stable release | 10.0 (4 May 2011[1]
) |
OS | Windows(32-bit only),MS-DOS |
Website | www |
Influenced by | |
Turbo Basic |
PowerBASIC,formerlyTurbo Basic,is the brand of several commercialcompilersby PowerBASIC Inc. that compile a dialect of theBASICprogramming language.There are bothMS-DOSandWindowsversions, and two kinds of the latter: Console and Windows. The MS-DOS version has a syntax similar to that ofQBasicandQuickBASIC.The Windows versions use a BASIC syntax expanded to include many Windows functions, and the statements can be combined with calls to theWindows API.
History
[edit]The first version of the DOS compiler was published as BASIC/Z, the very first interactive compiler forCP/Mand MDOS. Later it was extended to MS-DOS/PC DOSand in 1987Borlanddistributed it asTurbo Basic.
Turbo Basicwas originally created by Robert "Bob" Zale (1945–2012) and bought from him byBorland.When Borland decided to stop publishing it (1989), Zale bought it back from them, renamed itPowerBASICand set up PowerBASIC Inc. to continue support and development of it; it was later called PBDOS.[2][3][4]
PowerBASIC went on to develop BASIC compilers for Windows, first PBWIN — their flagship product — and then PBCC, described below.
On November 6, 2012, Robert Zale, the creator of PowerBASIC, died. For a time, it was assumed that the company might cease operations. His wife, Vivian Zale, posted on 8 March 2014 to the PowerBASIC forums a statement that the company would continue in operation.[5]On May 10, 2015, Vivian Zale announced that work was continuing on new versions of PowerBASIC compilers.[6]
On November 2, 2016, Vivian Zale announced her intention to seek a buyer for the company.
On January 31, 2017, Adam Drake announced Drake Software had acquired the PowerBASICsource codefrom PowerBASIC, Inc., with the intention of updating and improving the functionality of the product.[7]This was later confirmed by Vivian Zale with a forum post thanking the members for their support.[8]
When Bob Zale died, PBWin11 and PBCC7 were inbeta testing,and64-bitcompilers and PB/Pro (PBWin and CC in one compiler) were in thealpha stages.However, development of PowerBASIC products has stopped. No new version has been released since v10.03 (11 years ago as of May 2022). No 64-bit version or beta release has been announced. No development activity has been reported. No corrections (such as adding the correct DPI settings for the IDE) have been released. PowerBASIC Tools LLC still sells new licenses for the 32-bit Windows compilers.
Compilers
[edit]PowerBASIC programs are self-contained and use no runtime file to execute. In all versions of the compiler, the applications compile without external libraries, though it can use such libraries if needed. PBDOS creates16-bitDOS MZ executablefiles, while PBWIN and PBCC create32-bitPortable Executable(PE) files.
Turbo Basic
[edit]Borland's Turbo Basic contains extensions to classic BASIC (without breaking compatibility), such as a drawing API and mouse access.
Unlike most BASIC implementations of its time, Turbo Basic was a fullcompilerwhich generated native code for MS-DOS. Other implementations were eitherinterpreters,or relied heavily on aruntime library.The integrated development environment could run a BASIC program internally for traditional BASIC debugging (see sample below), or generate an MS-DOS stand-aloneexecutable filethat could be run on other systems without the Turbo Basic product or runtime libraries.
Code example
[edit]The following program is an example of theALGOL-like BASIC dialect that Turbo Basic supported. Unlike traditional BASIC,[citation needed]which used line numbers and had limited control structures and no support for ALGOL-like subroutines, modern BASIC dialects starting at this period were extended to make the language compatible with modernstructured programmingstyle by making line numbers optional and adding the control structures and subroutine definitions needed for structured programming.
INPUT"What is your name?:",n$
PRINT"Hello";n$
DO
s$=""
INPUT"How many stars do you want to print";s
FORi=1TOs
s$=s$+"*"
NEXTi
PRINTs$
DO
INPUT"Do you want to print more stars";q$
LOOPWHILELEN(q$)=0
q$=LCASE$(LEFT$(q$,1))
LOOPWHILEq$="y"
PRINT"Goodbye";n$
(s$
is astringands
is asingle-precision floating-point(number). They are separate variables.)
Like the other Borland products of this era, the code executes within the integrated development environment.
PowerBASIC for DOS (PBDos)
[edit]PBDOS includes anintegrated development environment(IDE) and supportsDOS3.30 and all later versions.[9]
PowerBASIC Console Compiler (PBCC)
[edit]PBCC is a 32-bit compiler for theWindows 9xseries andWindows NTseries ofoperating systems,includingWindows XP,Windows Server 2008,Windows Vista,andWindows 7.PBCC applications can usedynamic-link libraries(DLLs). The compiler comes with anIDEincluding an editor and steppingdebugger.
No knowledge of Windows programming is required to create character mode or graphical applications with this compiler. PBCC-compiled executables can also be used asCommon Gateway Interfaceexecutables (for web servers).
PBCC creates only executables, not DLLs. (PBWin — see below — can create both.)
PowerBASIC Compiler for Windows (PBWin)
[edit]PBWin is a 32-bit compiler compatible with theWindows 9xseries and theWindows NTseries of operating systems, includingWindows XP,Windows Server 2008,Windows Vista,Windows 7,Windows 8(8.1), andWindows 10.[10]PBWin can createdynamic-link libraries.PBWin applications can read dynamic-link libraries]. PBWin comes with a compiler,IDEwith editor, and steppingdebugger.
Dynamic Dialog Tools (DDT)
[edit]You can create an application'sgraphical user interfaceusing theWindows API,or by using the built-in DDT language extensions. The group of BASIC statements which wrapWindows APIfunctions, particularly in the creation and handling ofdialog boxesand child controls, is collectively known as Dynamic Dialog Tools. Using DDT requires less coding than to create a similar program using theWindows API.Using the DDT and the Windows API (known as SDK style as inMicrosoft Windows SDK) are not mutually exclusive.
Trial versions of compilers
[edit]PowerBASIC renamed PBWin v9.07 and PB/CC v5.07 as "Classic PBWin" and "Classic PB/CC", respectively, and on November 1, 2016, offered them for a short time through their online store as free, no-nag, trial versions along with PBForms v1.0 (PowerBASIC Forms).[11]
Tools
[edit]PB Forms
[edit]PowerBASIC Forms, available for purchase separately, is agraphical user interfacedesign tool add-on for PBWin. It automatically produces source code using the DDT language extension that creates forms using the Windows graphical user interface.
COM Browser
[edit]The PowerBASIC COM Browser, which comes with PBWin, is an application that exposes the interfaces, methods, and properties of COM objects, as described by type-library files. The PowerBASIC COM Browser exports an interface structure of a COM object for early-binding purposes in PowerBASIC code, and gives syntax reference and context-help on the interface members exposed by a COM object.[12]
Programming language
[edit]Characteristics
[edit]PowerBASIC is a native-code BASIC compiler whose reported merits are simplicity of use and speed compared to other languages.[13][14] Although the compiled code is fast enough for most purposes, the compilers also support inlineassemblerwhich can be used for hand optimization of critical routines. The Windows compilers (PBWin & PBCC) support almost all of thex86 instruction set,includingFPU,SIMD,andMMX,the main exceptions being a few which are useful mostly to systems programmers. One can insert any unsupported instructions by inserting theiropcodeswith the "db", "dw", and "dd" statements. Lines of assembler code can be freely interspersed with lines of BASIC code, although one must always consider the potential interactions between the two types of code.
Hello world
[edit]Hello worldis used to give a very small example of thesyntaxused by a programming language and is often the smallest possible program for any given programming language.
Here is an example of a PBCC hello world program. By default PBCC creates a console window at runtime for displaying output. The use of Waitkey$ in this example prevents the console window from automatically closing until the operator sees the displayed text.
FunctionPBMain
Print"Hello, World!"
Waitkey$
EndFunction
Here is the PBWin version, which displays a Windows "dialog" message box.
FunctionPBMain
MsgBox"Hello, World!"
EndFunction
Object-oriented programming
[edit]PBWin and PBCC supportobject-oriented programmingin the form ofCOMclasses, however the compilers do not force you to use OOP, it is merely an option. In-process and out-of-process COM Servers can also be built using these compilers.
Graphics
[edit]Both the Console Compiler and Windows Compiler can create graphic windows. The GRAPHICs statements are higher-level than Windows'Graphics Device Interface(GDI) library functions.[15][16]
Elements of the GRAPHIC statements
[edit]GRAPHIC WINDOWS are dedicated dialogs each containing a single control which fills the dialog's client area. GRAPHIC controls arechild windowswhich support the same GRAPHIC drawing functionality as GRAPHIC windows. GRAPHIC BITMAPS are also defined, again supporting the GRAPHIC drawing functionality, but as purely memory objects, likeWindows bitmapsorDIB sections.Keyboard and mouse handling statements are included among the GRAPHIC statements. Character output to a GRAPHIC target uses fonts specified via the FONT NEW statement.
Creating a GRAPHIC WINDOW application
[edit]A GRAPHIC WINDOW is the equivalent of a Windowsdialog boxcontaining a static control on which drawing operations can be done. A single BASIC statement will create a GRAPHIC WINDOW and specify its size, position and title. It is not essential to specify aWNDPROCfor the GRAPHIC WINDOW. A short source code example for a complete GRAPHIC WINDOW application follows:
#CompileExe' using either PBCC6 or PBWIN10 compiler
#DimAll
FunctionPBMain
LocalGWAsDword
' start a GRAPHIC WINDOW
GraphicWindowNew"graphic window",100,100,200,200toGW
' show a coloured disc
GraphicEllipse(10,10)-(190,190),%rgb_Red,%rgb_SeaGreen,0
' wait for a keypress
GraphicWaitkey$
EndFunction
Comparison of PB GRAPHIC statements with the GDI API
[edit]Using PB GRAPHIC statements, a GRAPHIC (WINDOW, BITMAP, or control) is first selected as the current GRAPHIC target, then operations are done on it without requiring it to be identified again. Contrast this with the GDI API approach, where theDevice Contexthandle is required for every drawing operation.
It is not necessary when using the PB GRAPHIC statements to define a brush or pen as a separate entity, nor is it necessary to redraw the GRAPHIC target (when in view) in response toWindows messagessuch as WM_PAINT and WM_ERASEBKGND. GRAPHIC targets are persistent.
When GRAPHIC targets are attached, a REDRAW option can be specified which buffers the results of drawing operations until they are specifically requested. Using this technique reduces flicker in a similar way to the technique of drawing on memoryDCs[17]when using the GDI API.
Pixel operations are possible using the GRAPHIC GET|SET PIXEL statements, in a manner similar to GetPixel/SetPixel of the GDI API. GRAPHIC GET BITS allows the entire bitmap to be loaded into a dynamic string. This can be manipulated either as a string or by mapping an array onto it. It can be placed back into the GRAPHIC target by GRAPHIC SET BITS.
Complementarity of GRAPHIC statements and the Windows GDI API
[edit]The GRAPHIC statements contain all the commonly used GDI API functions, but if you need one that is not included it is possible to obtain thehDCof any GRAPHIC target and thereby use GDI API functions on it.
User community
[edit]PowerBASIC provides an online forum for users to ask questions and share knowledge.[18]On 8 July 2012 the forum had 5,623 members (only a fraction of them still active) and contained 50,093 threads comprising 408,642 posts since August 26, 1998. The Source Code section alone contained 3,768 threads.[19]
In early 2024 the PowerBASIC website has been switched to maintenance mode. This was heavily discussed in PB forums. The rights owner wrote that the website will not come back.[1]
References
[edit]- ^Release of PowerBASIC 10.0 Compiler for Windows
- ^"PowerBASIC makes smooth move; Tech company finds region's affordability attractive".Sarasota Herald Tribune. 2000-10-10.Retrieved2008-03-12.
- ^Tooley, Michael H. (2005).PC Based Instrumentation and Control.Elsevier. p.214.ISBN0-7506-4716-7.
- ^"An Introduction to PowerBASIC".Archived fromthe originalon 2011-05-27.Retrieved2010-12-07.
- ^Zale, Vivian."PowerBASIC Update".PowerBASIC Forums.PowerBASIC.Retrieved5 July2015.
- ^Eccles, John."PowerBASIC Plans".PowerBASIC Forums.PowerBASIC, Inc. Archived fromthe originalon 24 September 2015.Retrieved5 July2015.
- ^Drake, Adam (January 31, 2017)."PowerBASIC Has a New Home".PowerBASIC Support Forums.Archived fromthe originalon 2017-02-19.
- ^Zale, Vivian (February 12, 2017)."Thank You".PowerBASIC Support Forums.Archived fromthe originalon 2017-02-19.
- ^"PowerBASIC 3.5 for DOS".Archived fromthe originalon 2016-01-17.
- ^"PowerBASIC Compiler for Windows".Archived fromthe originalon 2008-03-08.
- ^PowerBASIC 9 for Windows and PowerBASIC Console Compiler 5:$99 and $89 on 2016-10-05;$0 and $0 on 2016-11-06;$0 and $0 on 2016-12-18;not offered on 2017-02-28.
- ^"Com Browser on PowerBASIC's website".
- ^New geometries for new materials,Eric A. Lord, Alan Lindsay Mackay, Srinivasa Ranganathan, Cambridge University Press, 2006,ISBN0-521-86104-7( "a very simple user interface... speed and power of the underlying C++... runs extremely fast" )Google Books
- ^Chaos and Time-series Analysis,Julien C. Sprott, Oxford University Press, 2003,ISBN0-19-850840-9( "easy to learn, powerful, and as fast as any C compiler I have encountered" )Google Books
- ^"PowerBASIC".
- ^"PowerBASIC".
- ^Petzold, Charles (1998). Programming Windows Fifth Edition, Microsoft Press,ISBN978-1-57231-995-0
- ^"PowerBASIC".
- ^PowerBASIC's vBulletin forum software statistics
External links
[edit]- Official websitePowerBASIC company website
- PowerBASIC Peer Support Community
- Börje Hagsten's Files
- Don Dickinson's PowerBASIC code
- Gary Beene's gbSnippets
- FreeBase's Page on PowerBASIC(archived 2014)
- TheirCorp's PowerBASIC projects on SourceForge
- PowerBASIC for Beginners YouTube channel
- Borland Turbo Basic 1.x - Stats, Downloads and Screenshots:: WinWorld - Abandonware and Pre-Release Software
- Books onInternet Archive:
- Using Turbo BasicFrederick E. Mosher & David I. Schneider.
- Borland Turbo BASIC Owners Handbook1987. Borland.