IP Pascal FAQ

Q. What is IP Pascal ?

A. IP is an interplatform Pascal. It supports the following platforms in its current configuration:

1. Windows/95/98/ME/NT/2000/XP.
2. Linux/86.

A port for Mac OS X is under way, and a port for Sun Solaris/Sparc is planned.

IP both provides, and itself is run, on a set of porting modules that allow IP, and its client programs, to run on any of the supported platforms without source change. To move within operating systems on the same machine type, only a relink is required. To move within different CPU based systems, a recompile and link is required.

Q. Is IP compiled ?

A. Yes. IP features a high quality optimizing compiler.

Q. Is IP customized per platform ?

A. As with other types of porting kits, IP and its client programs get a substantial amount of "look and feel" from the porting platform on each OS/machine combination.

Q. Can IP be used to access the native APIs for a particular machine ?

A. Yes. IP is based on a wrapper concept that differs from most other Pascal implementations. Because most operating systems today are strongly oriented towards the C and C++ languages, there has been a trend to import C/C++ concepts into Pascal just to allow direct calling of operating system APIs. Instead, IP uses efficient wrappers written in assembly language that translate C parameter formats to and from Pascal type parameters.
The result is an alternative set of Pascal format APIs for each system that are both more logical for Pascal use, and also enjoy the traditional type safety of Pascal.

Users can also directly access specific APIs to augment the porting platform of IP Pascal. This can be done to customise certain features for a particular platform, or to implement features not included in the porting platform.

Q. Can IP Pascal compile my Turbo/think/MWP Program ?

A. A few Turbo Pascal "units" that aid program porting have been created, and these have shown to dramatically simplify porting from that language. Similar procedures will be used for other Pascals. However, these are just rapid porting aids, and these Pascals do not enjoy full language compatibility. There will always be a minimum amount of work required to change programs to work under IP. Further, porting using these units won't give you a program that takes advantage of the features of IP, and I consider it to be only a step in the process of fully porting a program to IP.

IPs main focus is to be a language that is not tied to any operating system or hardware, and IP will, therefore, always be unable to fully emulate the machine dependent features of many Pascal implementations. The failure of many Pascals that are single machine based has shown that the future lies in very portable Pascal languages and compilers.

Q. Why isn't IP Pascal compatible with Turbo/BorlandŽ/DephiŽ/Kylix Pascal ?

A. IP Pascal was designed to follow the original Pascal standard since 1980, following Niklaus Wirth's "The Pascal User Manual and report" [Jensen and Wirth] from 1974. In 1983, the ISO 7185 standard was released, and the minor changes to J&W Pascal were implemented in IP Pascal.

Unfortunately, none of the Borland products followed either the "User Manual and Report" nor the ISO 7185 Pascal standard, even though it preceeded BorlandŽ implementations by a decade. BorlandŽ products have a large user base, and we respect that, and hope to provide tools to convert user's BorlandŽ compatible products to IP Pascal for interoperation.

For IP Pascal to have been compatible with BorlandŽ products, considerable changes away from standard Pascal would have been required. Also, since there is no official published BorlandŽ language standard, there would be no way to guarantee perfect compatibility with BorlandŽ products. Finally, IP Pascal is directed at a long term standard implementation. BorlandŽ products have traditionally been machine and operating system dependent. The different BorlandŽ products, Turbo Pascal, BorlandŽ Pascal, BorlandŽ Windows Pascal, DelphiŽ and Kylix, are not completely compatible with each other, and would have been a moving target during the many years IP Pascal has been in operation.

BorlandŽ is one company. ISO 7185 is an international standard for the world, and we believe it will last longer than any one proprietary Pascal implementation.

Note: BorlandŽ and DelphiŽ are registered trademarks of BorlandŽ Software Corporation.

Q. What features are given by the porting platform ?

A. IP uses a unique porting system that divides programs into line oriented, terminal oriented, and graphical oriented types, with and without windowed based management. All programs in IP are fully upwards compatible. A line oriented program (a standard ISO based program) will become a terminal or graphical program by simply relinking it. A terminal program can become a graphical program, etc.

Many windowed graphical systems have been criticised for having the programmer assume a huge amount of the burden for the windowed interface even on simple programs. So for example, the basic "hello world" program commonly becomes a few pages of source just to become a minimum windowed program. IPs porting system takes care of all the details of windowing for you, but still allows you to access all the features of a windowed system. The result is simpler and cleaner programs, and a dramatic decrease in the difficulty to create small programs.

Q. Can I ignore the porting platform ?

A. Yes. There is nothing to prevent you from implementing your program entirely in terms of system APIs using IPs wrapper system. Further, all of IPs system support is implemented in terms of modules which are clearly documented, and are standard IP modules themselves.
You can replace any or all of the system support modules for IP. You can even port IP to a proprietary operating system or platform.

Q. What is the efficiency of the porting platform ?

A. Typically a %10 to %20 drop in efficiency by use of a porting platform vs. using the native APIs on a given system.  Typically, the low amount of improvement that is gained by writing direct to system APIs is lost when eventually the program needs to be moved to a higher performing platform.

The amount of extra code included in the porting platform is typically 20k-40k bytes of code for graphical windowed applications on a typical CPU. The amount of excess code is minimized because of the link phases' ability to eliminate unused routines from the final code.

Q. What is the efficiency of the API calling wrapper ?

A. In systems such as Windows, Mac OS X Carbon, and X Windows, the wrapper typically adds 10 assembly language instructions per call, and the time required to move strings to and from stack buffers because of the need to change to and from C format. In comparison between programs that use the wrapper and programs constructed to not use the wrapper (in assembly language), the overhead is observed to be less than 1%

Q. Will there be a discount for having multiple platforms of IP ?

A. Again breaking with other products in this area, IP will ALWAYS be provided for ALL platforms that are implemented under IP. You may use the same IP CDROM on any of the supported platforms, and you may develop programs for that platform, another platform, or all platforms IP supports at the same time. There will be no charge for extra platforms that are used consistent with the single user licence (multiple user licences are available).

Q. Is there an IP "IDE" ?

A. IP provides full development programs that support command line compilation, including what is sometimes called "automake", and provides a unified editor/manger in both terminal and graphical windowed and non-windowed modes. In the terminal or graphical modes, all of the modules comprising a program are automatically accessible, and each procedure and function in the program are indexed for instant access. An advanced macro editor is provided, including syntax coloring, in-editor compilation, error source markup and indexing, and in-editor color markup profiling.

Q. Is IP "rapid program development" capable ?

A. The IP IDE features window, dialog and widget layout and automatic generation.

Q. Will IP support older platforms such as DOS or MAC OS 9, or 68000 ?

A. Although IP is ideally suited for porting to any platform, the key component to any decision to port IP to a platform is if that platform is being presently sold and improved. Computer hardware and software development is rapid, and platforms that have been placed in "obsolete" status rapidly fall behind the state of the art. The principle purpose of the extensive porting features in IP is to allow IP to move to any new platform that is created with minimal effort.

Q. What does IP stand for ?

A. IP was never coined to be a particular acronym. Present definitions are Internet Pascal, Intellectual Property Pascal, InterPlatform Pascal. The name IP Pascal was chosen to represent the flavor of today's machine and process independent design processes.

As some of you may know, I am heavily involved in the networking industry. Internet Protocol was originally envisioned as a way to "bridge" different networks together. The principle was that one carefully constructed standard would be able to bridge any number of different networks together, and the overhead of a second level protocol would only be incurred once. This is much like saying that designing one standard plug, then designing a series of adapters to that plug from other plug types, can unify incompatible systems.

IP Pascal is definitely designed to do just that.

Q. What standards does IP Pascal obey ?

A. IP Pascal is based on ISO 7185 standard Pascal, and we certify compliance with that. Please note that many compilers CLAIM to be compatible with that or other standards but are in fact, not compliant. This may cause problems when porting from another, supposedly compliant processor to IP Pascal. Further, note that both IP Pascal and other compilers provide extensive extensions to the base Pascal language that are not compatible with each other.

Q. Is IP Pascal compatible with Extended Pascal ?

A. It was a hard decision not to follow along with extended Pascal. IP Pascal and extended Pascal are simply not oriented towards the same goal. With IP, I wanted maximum code efficiency and maximum programmer control over generated code. The features in extended Pascal, notably "schemas" were designed to have the processor work harder in exchange for programmer convienence. That's certainly one methodology, but schemas have overall effects on generated code efficiency, and I felt that IP Pascal could not meet my goal of being more efficient than most existing C compilers and still implement schemas.

Introducing variable length arrays into Pascal is a difficult proposition. Because any such scheme must interchange data types with the fixed length arrays of unextended Pascal, it is hard not to end up with a system that adds extra fields and handling to all arrays even if they are not variable length. After a careful analysis of schemas, I came to the conclusion that the system indeed had such general impact on the language.

IP Pascal implements a variable length array system that is less general than schemas. However, it allows full interchangeability between the fixed arrays of unextended Pascal and variable arrays. It also adds code size and complexity only in the new sections that use variable array handling. Lastly, it is possible to do any operation that schemas allow, though perhaps with more programmer effort.

Note that IP Pascal and Extended Pascal still share a common subset in ISO 7185 Pascal, and that IP Pascal provides equivalent methods for virtually all of the extensions in Extended Pascal.

Q. What documentation is provided with IP Pascal ?

A. IP Pascal has extensive documentation in bound format. There is a trend of providing no printed documentation. This simply transfers the problem of
printing the documentation to the user, who usually cannot properly bind the documents and might find printing the entire documentation a problem.

In addition, please appreciate that we don't have as many resources to prevent unauthorized copying of the software as many major software companies. The printed nature of the documentation makes it more difficult to pass such copies, without incovienencing the legitimate users of the product.

Q. Is IP Pascal new ?

A. No. IP Pascal originated in 1980. IP Pascal is used here in electronic integrated circuit CAD programs. IP Pascal was written as a core in assembly language, but the majority of the system rewritten in Pascal by 1985. In 1987, like many other developers, I moved to the IBM-PC and began using off the shelf standard ISO/ANSI compilers. By 1990, I started to have extensive problems with Pascal vendors not keeping up with changing technologies, and foresaw the fallout of many existing vendors from the market.

At that time, I made a decision whether I would stay with my extensive code base in Pascal, or move to a more generally accepted language, most likely C. I decided that I would stay with Pascal, and take back control of our compiler as it was abandoned in 1987. That work was completed in 1995, in time for the advent of Windows 95. Since that year, the platform for IP has been extensively expanded.

Approximately %70 of my work is done in C/C++, because customers request it. My own tooling is all done in Pascal. It has been my experience that programs written in Pascal have shorter development cycles, shorter debug cycles, and are more reliable as a finished product. This stems from the fact that Pascal (and other languages beyond C) provide containment for their array and pointer references. This is why IP Pascal, unlike many other Pascals, does not import this feature from C. There are no conversions to and from pointers, and there is no "type cast" feature in IP Pascal.

Q. What is the lifetime of IP Pascal ?

A. Unlike many commercial products, IP Pascal is not designed according to the "hit software" mentality. I use IP Pascal here, I am its first customer. Because of this, I won't be creating phone support for the product. IP Pascal will be supported by email, web site, and usenet forum without charges or restrictions. Emails will be typically answered within 48 hours.

Because this support model does not require hiring large support staffs (and then firing them later as demand decreases), there is no plans to limit or charge for support.

For more information contact: Scott A. Moore samiam@moorecad.com