═══ 1. The Product - VP/2 ═══ Virtual Pascal for OS/2 - or just VP/2 - is a professional 32-bit Pascal development environment for OS/2. Compatible with the de facto Pascal standard set by Borland Pascal and Borland Delphi, VP/2 offers an easy way of porting existing DOS and Windows applications to 32-bit OS/2. Compatibility with Borland Pascal and Borland Delphi is very high. Experience has shown, that even big libraries and programs originally written for Borland Pascal can be converted to OS/2 in a matter of a few days. To purchase Virtual Pascal, please fPrint UK Ltd on one of the following addresses: fPrint UK Ltd Cambridge House 100 Cambridge Grove Hammersmith London W6 0LE United Kingdom Phone +44 (0)181 563 2359 Fax +44 (0)181 563 2361 BBS +44 (0)181 563 8624 e-mail sales@fprint.co.uk CompuServe GO FPRINT Click on The Editor for information about the built-in editor. ═══ 2. The Editor ═══ The built-in editor features multiple edit windows, syntax highlighting, unlimited undo/redo operations, keystroke macros, full context-sensitive help, and everything else you should expect and demand of a professional programming environment. Closely mimicking the look and feel of Borland Pascal, it is very easy to use as well as very powerful. Click on The Compiler for information about the compiler. ═══ 3. The Compiler ═══ The sophisticated built-in compiler produces stable 32-bit code, optimised for both speed and code size. Smart Linking, which prevents never-used code, variables, etc from ending up in your executable also forms part of the compiler and the Presentation Manager Clock example that comes with VP/2 takes up less than 8kB on the hard disk! Programs written with VP/2 of course do not require separate run-time DLLs to run - all the end-user needs is the final executable file. VP/2 allows you to build DLLs. VP/2 DLLs can export anything declared in the interface section of a unit (even objects and classes) making it possible to create DLLs containing entire object hierarchies - such as Turbo Vision or the Delphi Visual Component Library. VP/2 is compatible with the languages of both Borland Pascal and Delphi. Both object models (object and class) are supported, as are advanced exception handling, multi- threading, Run-Time Type Information etc. Full source code for the fully re-entrant and multi-threading prepared Run-Time Library files Dos, Crt, Strings, WinDos and WinCrt units are available, as are the interface sections of the System, SysUtils, TypInfo and Classes units compatible with Borland Delphi. Advanced users will appreciate the powerful 32-bit Built-in assembler that supports all assembler instructions, including the 486- and Pentium-specific ones. The compiler generates standard 32-bit .obj or .lib files and can optionally output standard .asm files that can be compiled with a standard assembler like Turbo Assembler. Click on The Debugger for information about the debugger. ═══ 4. The Debugger ═══ The powerful Integrated Development Environment has the functionality of Borland Pascal v7 combined with Borland Turbo Debugger - and more. The IDE gives full control over program execution at both source and assembler code level and features a variety of integrated debugging aids. During execution, you can watch the value of any expression, browse your object hierarchy, follow the call stack, display the CPU registers and the state of the numeric co-processor - all while your application is running. Use the powerful Object Inspector to view complex structured variables, and follow the loading and unloading of OS/2 system DLLs in the Log window - it is all there. The extremely powerful CPU window can be used to view and modify the code at assembler-level and gives you total control over program flow while allowing you to carefully inspect the code generated by the compiler. In this window, VP/2 even supports debugging of any 16-or 32-bit OS/2 executable - just load and debug! Click on The Documentation for information about the documentation. ═══ 5. The Documentation ═══ VP/2 is delivered with extensive documentation covering everything needed to get going with serious OS/2 development. A hardcopy VP/2 Users Guide carefully describes the IDE and the usage of the different components of VP/2, and guides the new user through the difficulties involved in writing a program and debugging it. The extensive VP/2 Language Reference Manual, also delivered in hard copy, thoroughly describes the formal syntax of the VP/2 language as well as the inner workings of the compiler. Supplementing the printed manuals, VP/2 comes with an in-depth description of all OS/2 API calls for both text-mode and Presentation Manager. These online manuals are delivered both in the OS/2 INF file format and in the compact VP/2 help file format for use directly in the IDE. Additionally, owners of a version of Turbo Pascal can use the supplied Help Converter to convert Borland's help files to the VP/2 format. Click on The Toolkits for information about the toolkits. ═══ 6. The Toolkits ═══ VP/2 v1.0 comes with support for a number of popular toolkits and libraries, making it possible to migrate applications written using these to OS/2 as well. Borland's Turbo Vision and a clone of Borland's Object Windows Library graphical library are included with optional source code support. The full shareware TechnoJock Turbo Toolkit is included, as is the powerful MATHPAK87 Lite mathemathical library. For users of TurboPower's DOS toolkits Object Professional, Async Professional and B-Tree Filer, source code upgrade patches are included in the VP/2 package. If you do not already have the TurboPower toolkits, a voucher is included in the VP/2 box, giving you a 20% discount on all VP/2 compatible toolkits from TurboPower! Click on The Examples for information about the examples. ═══ 7. The Examples ═══ More than 150 examples are included, both as VP/2 source code and as executables ready to run. The examples demonstrate both the VP/2-compatible toolkits as well as a wide range of features and techniques that can be used to write OS/2 text- mode or Presentation Manager applications. The examples include a B-Tree Filer database program, a PM Clock, a program demonstrating how to extend the capabilities of REXX from VP/2, a full-screen graphics example, a PM racing game using the DIVE interface as well as examples of printing from Presentation Manager, multithreading applications and more. In addition, all examples from "The Art of OS/2 Warp Programming" have been converted from C to Pascal and are included in the product. Click on The Competition for information about the competition. ═══ 8. The Competition ═══ Virtual Pascal for OS/2 is not alone in claiming superior compatibility with Borland Pascal and Delphi. The following is a comparison between Virtual Pascal for OS/2, Speed- Pascal/2 and Borland Pascal for DOS and compares the compile time and the size of the executable file. Smaller numbers are desirable. The first three rows list the compile times and executable sizes for TVDEMO, a Turbo Vision demo program delivered with Borland Pascal v7 demonstrating a range of features of the Turbo Vision library. The example, including the TV library, consists of about 22000 lines of source code. The next two rows are the figures for HELLO, a 4 line program that just writes `Hello World' on the screen. ┌──────────────────────┬────────────────────┬────────────────────┬────────────────────┐ │Action │VP/2 v1.0 │SP/2 v1.5 │BP v7.0 │ ├──────────────────────┼────────────────────┼────────────────────┼────────────────────┤ │TVDEMO: Smallest │124kB, 13 sec │247kB, 48 sec │150kB, 4 sec │ │executable │ │ │ │ ├──────────────────────┼────────────────────┼────────────────────┼────────────────────┤ │TVDEMO: With debug │152kB, 12 sec │557kB, 54 sec │300kB, 4 sec │ │information │ │ │ │ ├──────────────────────┼────────────────────┼────────────────────┼────────────────────┤ │TVDEMO: With Turbo │24kB, 4 sec │n/a │n/a │ │Vision in a DLL │ │ │ │ ├──────────────────────┼────────────────────┼────────────────────┼────────────────────┤ │HELLO: Smallest │3900 bytes, 0.5 sec │28160 bytes, 4 sec │2096 bytes, 0 sec │ │executable │ │ │ │ ├──────────────────────┼────────────────────┼────────────────────┼────────────────────┤ │HELLO: With debug │4004 bytes, 0.5 sec │31303 bytes, 4 sec │4013 bytes, 0 sec │ │information │ │ │ │ └──────────────────────┴────────────────────┴────────────────────┴────────────────────┘ Still, speed is not everything. VP/2 offers superior compatibility with the Borland languages and the following table shows some of the differences in language support: ┌──────────────────────────────┬──────────┬──────────┬──────────┬──────────┬──────────┐ │Compiler feature │VP/2 v1.0 │SP/2 v1.5 │BP v7.0 │Delphi │Delphi │ │ │ │ │ │v1.0 │v2.0 │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Circular unit references in │yes │no │yes │yes │yes │ │the implementation part │ │ │ │ │ │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Mem and Port arrays │yes │no │yes │yes │no │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Thread local storage │yes │no │no │no │yes │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Open String parameters │yes │no │yes │yes │yes │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Comp type │yes │no │yes │yes │yes │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Currency type │yes │no │no │no │yes │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │SizeOf( Real ) = 6 │yes │no │yes │yes │yes │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Export variables, typed │yes │no │no │no │no │ │constants, objects and classes│ │ │ │ │ │ │from DLLs │ │ │ │ │ │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Outputs standard .OBJ files │yes │no │no │no │yes │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Can link external .OBJ files │yes │no │yes │yes │yes │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Call 16-bit APIs directly │yes │no1 │n/a │n/a │n/a │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Unit Initialization and │yes │no │no │no │yes │ │Finalization parts │ │ │ │ │ │ └──────────────────────────────┴──────────┴──────────┴──────────┴──────────┴──────────┘ Also of importance are the tools and help available. The following table shows a summary of features available in Virtual Pascal for OS/2 and Speed Pascal/2, compared with Borland's Pascal products: ┌──────────────────────────────┬──────────┬──────────┬──────────┬──────────┬──────────┐ │Debugger feature │VP/2 v1.0 │SP/2 v1.5 │BP v7.0 │Delphi │Delphi │ │ │ │ │ │v1.0 │v.10 │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Single-step execution │yes │yes │yes │yes │yes │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Expression Evalutor │yes │yes(2) │yes │yes │yes │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Watch window │yes │yes(2) │yes │yes │yes │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Symbol browser │no │no │yes │yes │yes │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Call stack window │yes │no │yes │yes │yes │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Breakpoints dialog │yes │no │yes │yes │yes │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Conditional Breakpoints │yes │no │yes │yes │yes │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Data-Breakpoints │yes │no │yes(3) │no │no │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Threads dialog │yes │no │n/a │n/a │yes │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │CPU window │yes │no │yes(3) │no │no │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Numeric processor window │yes │no │yes(3) │no │no │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Registers window │yes │yes │yes │no │no │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Dump window │yes │no │yes(3) │no │no │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Symbols window │yes │yes │yes │yes │yes │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Object hiearchy window │yes │no │yes │yes │yes │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Inspector window │yes │no │yes(3) │yes │yes │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Log window │yes │no │yes(3) │no │no │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Other features │ │ │ │ │ │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │English online help │yes │yes │yes │yes │yes │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │German online help │no │yes │yes │yes │yes │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Printed manual │yes │yes(4) │yes │yes │yes │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Resource Editor │no │yes │yes │yes │yes │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Help compiler │yes │no │yes │yes │yes │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Presentation Manager IDE │yes │yes │no │yes │yes │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Text mode only IDE │yes │no │yes │no │no │ ├──────────────────────────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ │Stand-alone compiler │yes │yes │yes │yes │yes │ └──────────────────────────────┴──────────┴──────────┴──────────┴──────────┴──────────┘ Note: The product versions reviewed are listed in the column headings. Specifications are subject to change without notice. _______________________________ 1. Calling the OS/2 keyboard, mouse and video 16-bit standard API functions requires the use of a 27kB pre-built thunk layer DLL. To use other 16-bit DLLs, a new thunk layer DLL must be written in another language, for example VP/2. 2. The Evaluator and Watch window allow simple variables without format specifiers only 3. Only available in Turbo Debugger, which is part of the Borland Pascal v7 product 4. The printed manual is available at additional cost