It adds modularity with namespace control, including the parallel tasking monitor concept, dynamic arrays, overloads and overrides, objects, and a host of other minor extensions to the language.
Because the module system directly implements multitasking/multithreading using the Monitor concept, it solves the majority of multithreading access problems.
This makes it easier to declare a forward by cut-and-paste, and keeps the parameters of the procedure or function in the actual header where they can be seen.
Semaphores implement task event queuing directly in the language, using the classical methods outlined by Per Brinch Hansen.
Overload "groups" allow a series of procedures and/or functions to be placed under the same name and accessed by their formal parameter or usage "signature".
Unlike other languages that implement the concept, Pascaline will not accept overloads as belonging to the same group unless they are not ambiguous with each other.
Try statements allow the program to bail out of any nested block, and serve as a better replacement for intra-procedure gotos (which are still supported under Pascaline).
IP Pascal has a series of modules (or "libraries") that form a "porting platform" called Petit-Ami (French for "little friend").
The whole collection forms the basis for an implementation on each operating system and machine that IP Pascal appears on.
Thus, paslib implements standard Pascal statements such as read, write, and other support services.
This means that you cannot "bring forward" programs implemented with the serial I/O paradigm to graphical systems.
Another important difference with IP Pascal is that it uses procedural language methods to access the Windowed graphics library.
IP Pascal's ability to use procedural methods to access all graphics functions means that there is no "cliff effect" for older programs.
The compiler started out in 1980 on Micropolis Disk Operating System, but was moved rapidly to CP/M running on the Z80.
After this, the compiler was retooled to output to the linker format, and the support library moved into a separate file and linked in.
Unfortunately, at 46kb, it also was difficult to use, being able to compile only a few pages of source code before overflowing its tables (this was a common problem with most Pascal implementations on small address processors).
Each source file was a unit, and consisted of some combination of a 'program' module, types, constants, variables, procedures or functions.
The front end of the compiler was created and tested without intermediate code generation capabilities (parse only).
By 1993, ISO 7185 compatible compilers that delivered high quality 32 bit code were dying off.
In 1994, the simulator was used to extend the ISO 7185 IP Pascal "core" language to include features such as dynamic arrays.
In 1997, a version of the terminal library from the original 1980 IP Pascal was ported to windows, and a final encoder started for the 80386.
This was meant to replace the manual method of creating operating system interfaces for IP Pascal.
In 2003, a fully graphical, operating system independent module was created for IP Pascal.
Petit-Ami is now present for Windows, Linux, and a partial implementation on Mac OS and BSD Unix.
There was no real reason for it; the author's preceding (Basic) compiler was multiple pass with intermediate storage.
Further, the single pass aspect slowed or prevented getting the compiler bootstrapped out of Z80 assembly language and onto Pascal itself.
Since the compiler was monolithic, the conversion to Pascal could not be done one section at a time, but had to proceed as a wholesale replacement.
Another lesson from the Z80 days, which was corrected on the 80386 compiler, was to write as much of the code as possible into Pascal itself, even the support library.
Although the enhancement of the output code was considerable, the resulting increase in complexity of the compiler caused problems with the limited address space.
In retrospect, the remaining assembly written sections WERE the problem, and needed to be eliminated, the sooner the better.