|
Classic PowerBASIC
is a proven product with value pricing. It's a
true professional compiler... Not too long ago, it was known as
PowerBASIC 8.0 for Windows. Competitively priced at $199. But you
can buy it today for just $49! What a great way to learn about
PowerBASIC... it's a wonderful gift, an entry-level compiler,
perfect for anyone who wants real value pricing.
Classic PowerBASIC is a native code compiler for Windows. It
creates applications with a Graphical User Interface (GUI), to provide
the typical "Look and Feel" of Windows. It creates highly efficient
executables and industry-standard DLLs for optimum flexibility. The
machine code generated by PowerBASIC is among the most efficient in the
industry, both in terms of size and speed. It compares most favorably
with leading compilers of any dialect, Pascal, C++, Fortran, and others.
With PowerBASIC, you'll end BloatWare forever!
Classic PowerBASIC sports a number of exciting features. A complete
graphics engine, a printer package for Windows-Only printers, dynamic
pointers, and thread local storage, to name just a few. But more about
them later.
Dynamic Dialog Tools™ (DDT™) allow you to create a complete graphical
user interface with ease, using just built-in statements and functions.
DDT is perfect for many applications, as it gives you complete access
to all of the standard controls like menus, buttons, listboxes, text
boxes, labels, bitmaps, and much more. You can specify custom colors,
custom fonts, and custom styles, for the Windows "Look and Feel", and
best of all, your dialogs are truly dynamic! Controls can be modified,
resized, moved, disabled, all under program control. Perhaps even more
important, they're fast, fast, fast... like most everything in
PowerBASIC. Try our complete SMTP email client, a 30k executable with
a graphical user interface, that allows you to send an email message
to anyone on the internet. Some other compilers can't display "Hello"
in a program 40 times that size! Of course, for more complex user interfaces, you should probably consider Classic PowerBASIC Forms, our state-of-the-art Visual Dialog Designer.
PowerBASIC
has long been associated with performance. Our motto has
always been smaller-faster, smaller-faster, smaller-faster. In fact,
it's been said more than once that PowerBASIC is the "Consultant's
Secret Weapon".
Why is that? A number of reasons... Attention to detail.
| |
It Writes your GUI Code For You!
Classic PowerBASIC Forms is specifically designed for Classic PowerBASIC. You'll visually create your GUI in just minutes. You'll "Drag 'n' Drop" dialogs and controls, quickly create menus, and get clean, structured, DDT source code ready to compile for your application. Is it Bloatware? No way!
| |
|
Attention to results. A philosophy that requires us to provide the very
best possible code generation. We simply don't believe that sloppy coding
can always be overcome by ever faster hardware. At some point, every
programmer (ours included!) must take on the obligation to write quality
code... and we take that obligation very seriously. That's why our entire
compiler, including all the library code to be linked, occupies less than
400K! Compare that to multi-megabyte compilers that seem more like
dinosaurs! That's a simple example of the attention we pay to careful
programming.
|
Of course, performance is a factor of technical design issues, too. Like
Register Variables. Normally, every time a variable is altered, assigned,
or retrieved, memory must be accessed. That's a relatively slow process,
as compared to accessing CPU and FPU registers. So PowerBASIC stores 4
float variables and 2 integer variables from each Sub/Function in a
register instead of memory. Simple concept, but very effective. If those
variables are referenced frequently, the improvement can be dramatic.
Moreover, we let the programmer decide which variables should be
register variables... that way, you can decide which will be most
helpful.
So, how about graphics? Create a graphic control, open a graphic window,
and you're ready to go! You'll use GRAPHIC PRINT to draw plain text or
fancy text... Any font. Any size. Any color. Bold. Underline. Italic and
strikeout. Mix any combination of fonts on any window. Print just about
anything, just about anywhere, even on private bitmaps that aren't yet
visible. You'll copy or stretch bitmaps. Shrink them or change them.
Circles, ovals, lines and boxes. Fat lines, skinny lines, stylized lines.
Arcs, circles, rounded rectangles. Ellipses, pie sections, polygons,
polylines. Even get or set pixels -- one by one. Filled forms or empty.
Colors or not. The choices are endless. You can mix new colors with those
which exist, and measure proportional text size before you print it. Then
create a custom scaling system, even with fractional floating point
coordinates! Of course, once you've built that work of art, you need to
load and save it: you'll load from a resource, load and save a BMP on disk!
And then there's printing. Access to printers has always been something of
an issue, but not any more. First, we added the complete family of LPRINT
functions, to give you direct text access to line printers. Then, we took
it a step further with extended printing (XPRINT), even for "Windows-Only"
printers! Just like GRAPHIC for the screen, XPRINT offers it all on the
printer. Print plain text or fancy text -- any font, any size, any color.
Bitmaps and images, lines and boxes, circles and polygons, virtually all
the features of the GRAPHIC screen are there for printers, too! You can
retrieve the size of the printer page, the printable area, the margins,
even the number of points per inch. Select landscape or portrait mode,
even the print quality setting. The PRINTER$() function returns the name
and port of every available printer. You can attach a printer by its name,
by default, or just display a printer dialog to let the user decide. It's
all in there.
Another interesting point is that graphics are extensible. Using the DC
(Device Context) from PowerBASIC, you can call the Windows API, your own
custom code, even third-party code for special graphic functions. With
GRAPHIC GET/SET BITS, as each pixel is stored in succession as a long integer color value.
|
A complete Macro facility is an exciting addition to the latest version,
and that's something seldom seen in a high level language. Essentially,
a Macro invokes a text substitution engine which allows you to extend
the PowerBASIC language in ways not seen before. PowerBASIC supports
single line macros, multi-line macros, even function macros which return
a result. And they don't occupy one byte of code space unless
actually used. Each macro may take up to 240 arguments, so configurability
shouldn't be an issue. MACROTEMP may even be
|
|
Need Even More Power?
| |
|
used to specify identifiers
which are made unique to each macro expansion, thus avoiding name
conflicts.
With PowerBASIC macros, you can design your own unique,
personal language!
PowerBASIC is entirely thread-safe, so multi-threaded applications are
a breeze. Isn't it good to know your program can handle 2, 3, or 5000
tasks, all at the same time? You can print a report, while still
allowing data entry. Watch for a hardware signal, while calculating data
services. All the power you need is packed right into the PowerBASIC
Thread Statement, along with its simple extensions. PowerBASIC even
offers THREADED variables for "Thread Local Storage" -- each THREAD
gets its own unique copy of the variable -- automatically.
Client COM services
, and support for the Automation Interface lets you
tap the power of components. Invoke libraries and applications with ease,
all controlled from your PowerBASIC client program. Invoke an instance
of Microsoft Word, load and edit documents, all under the control of
PowerBASIC? It's all there now, waiting for your command...
| |
Total Cost Of Ownership
"I have been a fan of PowerBASIC for years. I cannot imagine why anybody would use VB or .NET but I suppose it is all about marketing. Talk about the Total Cost Of Ownership!!!! One programmer and PowerBASIC can do what takes a room full of .NET folks to write and maintain." - Mark Strickland, Chief Engineer SimplyBASICsecurity.com
|
|
|
Classic PowerBASIC includes a full-featured IDE. The editor has block
indent/outdent and block comment/uncomment! There's undo , bookmarks,
and source file templates, too. File save offers tab compression for
even smaller files. The debugger and editor are unified, so you can set
breakpoints in advance, even in include files. How many times have you
wondered "Is there an array bounds error somewhere?" or "Where's that
pointer error?" Well, here's how you find it! Just set the debugger to
"Break on error". Your program runs normally, in the debugger, but halts
as soon as any error is generated -- even if you have no error handlers
installed. Help files for add-ons are supported, and there's a direct
link to Windows API help file, too. There's color syntax highlighting with
selectable colors, fonts, and keyword case. Printed listings in color.
The "Code Finder" listview shows every sub, function and macro name,
aliases, types, and line numbers. You can sort on any column, in either
direction, and change the column order in a flash.
|
 |
Extra debugging tools? PowerBASIC shines with an array of built-in
functions.
PROFILE gives an overview. A list of every sub and function,
how many times each was called, and the total time spent executing each
of them. CALLSTK captures all stack frames above you. It answers,
"How did I get here?". TRACE generates an execution log of each sub,
function, label, and TRACE PRINT, as they're executed in sequence. It
gives you parameter values, return values, even error codes. TRACE
answers "Where have I been?", and "How did I get here?". With these
tools, debugging might now be fun!
You know, a quality compiler must offer data types to suit the needs.
And PowerBASIC handles that with ease. Signed and unsigned integers to
64-bit. Single, double, and extended precision float. Two forms of
currency. Dynamic strings, fixed strings, ASCIIZ strings. User-defined
Types and Unions. Guids. Variants, pointers, and more. Even BIT and
SIGNED BIT variables in TYPES and UNIONS. Each may be from 1 to 31 bits
wide, packed one after another. Perfect for bit coding, or translation
from C code. And FIELD variables? They work with FIELD statement, just
like DOS versions of BASIC. A FIELD is a string, mapped to a specific
section of a file buffer, or even another string. They're allocated at
run-time, so they can be changed as needed. Much like a TYPE that can
be altered under program control. Best of all, a new internal design
makes them fast, fast, fast!
Pointers are great, but sometimes the syntax is daunting, particularly
for very simple tasks. So we implemented Dynamic Pointers, using the
original PEEK/POKE as a model: xx# = PEEK(DOUBLE,addr&) This retrieves
the double precision value stored at addr&, assigning it to xx#. Very
straightforward and it works for all data types. And unlike the old
PEEK and POKE, it's just as fast as a pointer variable! Speaking of
simplification, LOCAL, STATIC, GLOBAL, and RESET can now use a list of
variables, like: STATIC abc, bcd, xyz AS STRING And, ARRAY ASSIGN lets
you assign values to every element of an array in a single statement!
The Inline Assembler supports opcodes through Pentium class, including
MMX and floating point. Built-in TCP and UDP functions allow you to
download files from a web server, access an FTP site, send email over
the internet, and even more. And Regular Expression Search and Replace
offer amazing scan capabilities.
So simply put, one of our favorite slogans
has been "We put the POWER in Basic..."
We've said it before, but it's never been more
true than it is today. With PowerBASIC version
8, there's a renewed War On Bloatware! You know,
using PowerBASIC for Windows, it's not unusual
to deliver a substantial GUI application
on a single floppy diskette. Don't let the Power
of PowerBASIC pass you by...
Special features of Classic PowerBASIC for Windows
- Classic PowerBASIC is compatible with all versions of Windows from Win95 through WinVista and Win7.
- #COMPILER defines the compiler for this program
- #STACK sets the program stack size
- ACCEL ATTACH defines accelerators (shortcut hot-keys)
- ACODE$() translates unicode strings to ansi
- ARRAY ASSIGN assigns values to multiple elements of an array
- ARRAY SORT, SCAN, INSERT, DELETE
- ARRAYATTR() returns status, data type, subscripts, etc.
- ASCIIZ strings supported for Windows compatibility
- Assembler is built-in for opcodes through Pentium class
- BIN$() allows optional leading zeros to a fixed field size
- BIT CALC set/reset a bit based upon a dynamic calculation
- BIT SHIFT, ROTATE, TEST, SET, RESET and TOGGLE
- BITS() function for bit pattern conversion between signed/unsigned
- CALLSTK captures the entire stack frame
- CHOOSE(index&, choice1, choice2...) chooses one of several values
- CHR$() function may take multiple or a range of parameters
- CLSID$(program_id$) returns the associated CLSID
- CONTROL ADD GRAPHIC creates a graphic control on a dialog
- CONTROL SET CLIENT resizes a control to a specific client size
- CSET centers data within a string with optional padding character
- Client COM/Automation Support - Access and manipulate COM Objects
- Client/Server Network communications using TCP and UDP
- CLSID$(program_id$) returns the associated CLSID
- Code pointer variables particularly suitable for callbacks
- Compile to true machine code for maximum performance
- Conditional compilation (#If/#ElseIf/#Else/#EndIf)
- Currency variables with choice of two or four decimal digits
- Data pointer variables with multiple levels of indirection
- DDT (Dynamic Dialog Tools) builds complete GUI's
- DECR statement for optimized execution
- DESKTOP GET CLIENT retrieves the client size of the desktop
- DESKTOP GET LOC retrieves the location of the client area of the desktop
- DESKTOP GET SIZE retrieves the total size of the desktop
- DIALOG NEW PIXELS... sizes in pixels rather than dialog units
- DIALOG SET CLIENT resizes a dialog to a specific client size
- DISKFREE function returns the free space
- DISKSIZE function returns the disk size
- Data pointer variables with multiple levels of indirection
- ENVIRON modifies environment variables
- ERL retrieves the last line number executed before an error occurred
- EXTRACT$() returns characters up to a delimiter
- Extended-precision (80-bit) floating point variables
- FIELD defines the variables of a file buffer or a FIELD string
- FILEATTR enumerates file numbers in use
- FILECOPY Statement supports overwrite of a previous version
- FILENAME$() function returns the name of an open file
- FILESCAN obtains the number of strings in a file
- FLUSH statement ensures file data buffers are written to disk
- FUNCNAME$ returns the name of the current Sub/Function
- GLOBAL may declare a list of variables of one type
- GRAPHIC ARC draws an arc
- GRAPHIC ATTACH selects a window or bitmap for drawing
- GRAPHIC BITMAP END closes a graphic bitmap
- GRAPHIC BITMAP LOAD loads a bitmap from a resource or disk
- GRAPHIC BITMAP NEW creates an empty memory bitmap
- GRAPHIC BOX draws a box with square or rounded corners
- GRAPHIC CHR SIZE retrieves the character size of the selected font
- GRAPHIC CLEAR erases a window or bitmap
- GRAPHIC COLOR sets the default colors
- GRAPHIC COPY copies a bitmap to a window or another bitmap
- GRAPHIC ELLIPSE draws an ellipse or circle
- GRAPHIC FONT selects a font and style for GRAPHIC PRINT
- GRAPHIC GET BITS retrieves a device independent bitmap
- GRAPHIC GET CLIENT retieves the client size of a graphic window or bitmap
- GRAPHIC GET DC retrieves the Device Context handle
- GRAPHIC GET LOC retrieves the screen location of a graphic window
- GRAPHIC GET MIX retrieves the color mix mode
- GRAPHIC GET PIXEL retrieves the color of a specific pixel
- GRAPHIC GET POS retrieves the last graphic point referenced
- GRAPHIC GET PPI retrieves the resolution of the display device
- GRAPHIC LINE draws a line
- GRAPHIC PAINT fills an area with a color or pattern
- GRAPHIC PIE draws a pie section
- GRAPHIC POLYGON draws a polygon
- GRAPHIC POLYLINE draws a polyline
- GRAPHIC PRINT draws text on a graphic window or bitmap
- GRAPHIC REDRAW updates buffered graphics to a window or bitmap
- GRAPHIC RENDER draws an image on a graphic window or bitmap
- GRAPHIC SAVE stores an image to a bitmap (.BMP) file
- GRAPHIC SCALE defines a custom coordinate system for a window or bitmap
- GRAPHIC SET BITS redraws a device independent bitmap
- GRAPHIC SET FOCUS directs focus to a graphic window
- GRAPHIC SET LOC moves a graphic window
- GRAPHIC SET MIX changes the color mix mode
- GRAPHIC SET PIXEL changes the color of a specific pixel
- GRAPHIC SET POS changes the last graphic point referenced
- GRAPHIC STRETCH copies and stretches a bitmap image
- GRAPHIC STYLE changes the drawing line style
- GRAPHIC TEXT SIZE calculates the size of text to be printed
- GRAPHIC WIDTH changes the drawing line style
- GRAPHIC WINDOW END closes a graphic window
- GRAPHIC WINDOW creates a new graphic window
- GUID variables are supported for COM Objects.
- HEX$() allows optional leading zeros to a fixed field size
- HI returns the high part of many data types
- Huge file sizes greater than 2 Gigabytes are supported
- IIF(expr, truepart, falsepart) returns one of two values
- INCR statement for optimized execution
- ISFALSE and ISTRUE operators
- ITERATE statement restarts loop structures
- JOIN$ adds a binary option for enhanced data packing
- JOIN$() packs a string array into a dynamic string
- LEFT$ may take a negative length value
- LINE INPUT #1, x$() reads an entire sequential file
- LO returns the low part of many data types
- LOCAL may declare a list of variables of one type
- LPRINT ATTACH selects a line printer to be used for LPRINT
- LPRINT CLOSE disconnects the line printer
- LPRINT FLUSH sends any buffered text to the line printer
- LPRINT FORMFEED starts a new printer page
- LPRINT outputs text to a line printer
- LPRINT$ retrieves the name of the attached line printer
- MACRO defines a single-line, multi-line, or function Macro
- MACROTEMP defines Temporary identifiers
- MAK creates values of many data types
- MAT statement provides optimized Matrix operations
- MAX() and MAX$() functions take an unlimited number of arguments
- MID$ may take a negative length value
- MIN() and MIN$() functions take an unlimited number of arguments
- MOUSEPTR changes the mouse pointer to a new shape
- NUL$ creates a string of nul characters
- OCT$() allows optional leading zeros to a fixed field size
- PARSE adds a binary option for enhanced data packing
- PARSE assigns each delimited string to an array element
- PARSE$ adds a binary option for enhanced data packing
- PARSE$() function extracts a delimited field from a string
- PARSECOUNT adds a binary option for enhanced data packing
- PARSECOUNT returns the count of delimited fields in a string
- PEEK acts as a dynamic pointer for any data type
- PEEK acts as a dynamic pointer for any data type
- PEEK$ acts as a dynamic pointer for strings
- PEEK/POKE, PEEK$/POKE$ for memory access
- POKE acts as a dynamic pointer for any data type
- POKE$ acts as a dynamic pointer for strings
- PRINT #1, x$() writes an entire array to a sequential file
- PRINTER$ retrieves printer names and printer port names
- PRINTERCOUNT retrieves the number of installed printers
- PROFILE creates a complete profile of program execution
- PUT #1,, x$() writes an entire array to a binary file
- Quad-word 64-bit integer variables
- READ$(n) function returns a specific DATA item
- REMAIN$() returns the remainder of a string after extraction
- REMOVE$() returns a string with certain characters removed
- REPEAT$() repeats an entire string expression
- REPLACE statement replaces characters or expressions
- RESET may accept multiple parameters
- RESET var sets a variable or array to zero or null
- RESUME NEXT jumps after a statement which caused an error
- RESUME retries a statement which caused an error
- RIGHT$ may take a negative length value
- RND(x,y) returns a random integer between x and y
- ROUND() function rounds a number to n decimal digits
- Register variables for both integer and floating point optimization
- Regular Expression search and replace
- SETEOF statement sets the end-file position
- SHELL offers a HANDLES option
- STATIC may declare a list of variables of one type
- STRDELETE$() deletes a portion of a string
- STRINSERT$() inserts a string into another string
- STRREVERSE$() reverses the character sequence in a string
- SUB/FUNCTION may take up to 32 parameters
- SWITCH(expr1, value1, expr2, value2...) returns one of a series
- Serial port communication is directly supported at all speeds
- Short-Circuit expression evaluation optimizes execution speed
- String functions support ANY operator to operate on character basis
- String functions support negative position to count from string end
- TAB$() expands tab characters to a specified tabstop
- TALLY() counts the occurrences of a sub-string expression
- THREADCOUNT returns the number of active threads
- THREADED declares Thread Local Storage variables
- THREADID function returns the thread identifier
- TRACE creates a trace log of complete program execution
- TRY, CATCH, FINALLY, END TRY offers structured error handling
- TYPE offers BIT and SIGNED BIT member variables
- Threads are supported as an intrinsic part of the language
- UCODE$() translates ansi strings to the unicode equivalent
- UNION offers BIT and SIGNED BIT member variables
- USING$() function formats one or more expressions
- Unsigned byte, word, and double word variables
- User-Defined Types and Unions with optional alignment
- VARIANTVT() returns the internal VT data type code
- VERIFY() validates that all characters in string1 occur in string2
- Variant variables are supported for COM Objects.
- Windows API may be easily accessed with no limitations
- XPRINT ARC draws an arc
- XPRINT ATTACH selects a host-based (GDI) printer for XPRINT
- XPRINT BOX draws a box with square or rounded corners
- XPRINT CANCEL aborts a print job
- XPRINT CHR SIZE retrieves the character size of the selected font
- XPRINT CLEAR erases a window or bitmap
- XPRINT CLOSE detaches a printer so printing can begin
- XPRINT COLOR sets the default colors
- XPRINT COPY copies a bitmap to the host printer
- XPRINT ELLIPSE draws an ellipse or circle
- XPRINT FONT selects a font and style for XPRINT
- XPRINT FORMFEED starts a new printer page
- XPRINT GET CLIENT retieves the client size of the host printer page
- XPRINT GET DC retrieves the Device Context handle
- XPRINT GET LINES retrieves the number of lines which can be printed
- XPRINT GET MARGIN retrieves the margin sizes
- XPRINT GET MIX retrieves the color mix mode
- XPRINT GET ORIENTATION retrieves the paper orientation
- XPRINT GET PIXEL retrieves the color of a specific pixel
- XPRINT GET POS retrieves the last point referenced
- XPRINT GET PPI retrieves the resolution of the host printer
- XPRINT GET QUALITY retrieves the print quality setting
- XPRINT GET SIZE retrieves the total page size
- XPRINT LINE draws a line
- XPRINT PIE draws a pie section
- XPRINT POLYGON draws a polygon
- XPRINT POLYLINE draws a polyline
- XPRINT RENDER draws an image on the host printer page
- XPRINT SCALE defines a custom coordinate system for a window or bitmap
- XPRINT SET MIX changes the color mix mode
- XPRINT SET ORIENTATION changes the paper orientation
- XPRINT SET PIXEL changes the color of a specific pixel
- XPRINT SET POS changes the last point referenced
- XPRINT SET QUALITY changes the print quality setting
- XPRINT STRETCH copies and stretches a bitmap image
- XPRINT STYLE changes the drawing line style
- XPRINT TEXT SIZE calculates the size of text to be printed
- XPRINT WIDTH changes the drawing line style
- XPRINT draws text on a "Windows-Only" (GDI) printer
- XPRINT$ retrieves the name of the attached host printer
Minimum System Requirements
- Personal computer with an 80386 or higher processor
- Any version of Windows from Windows 95 through Windows 7
- A hard disk with 14.0 Mb available space
- CD-ROM or DVD drive, or Internet connection, for installations
Order
Today Read about our
Satisfaction Guarantee
Classic PowerBASIC 8.05 is priced today at just $49 plus delivery.
Pricing will soon revert to the standard price of $99 plus delivery.
Documentation for this product is provided in electronic form.
|