Component Pascal Collection

Helmut Zinn


By Eugenius Pokora

An interface to OpenGL.

OpenGL is an environment for developing interactive 2D and 3D graphics applications. OpenGL gives software developers access to geometric and image primitives, display lists, modeling transformations, lighting and texturing, anti-aliasing, blending, and many other features.

OpenGL(R) is a registered trademark of Silicon Graphics, Inc. A lot of Information about OpenGL, tutorials, source codes, etc. is available from

The distribution consists of:

Ogl doesn't use any other CPC services.

StdCoded File <=> PacCoded File (443 / 200 kByte - Release 7-Mar-2014)


By Robert D. Campbell

An extension to the 'Base' or 'Original' Ogl subsystem adding higher level functionality.

The Ogl 'Chill' modules are a software layer above the original Ogl modules which they use as an interface to the Open GL (Graphic Language) dynamic link libraries (DLLs) opengl32.dll, glu32.dll. It gives (relatively) easy access to some graphic capabilities implemented in OpenGL in a ready-to-use form. Explicitly it implements an extension of the Plotter object defined in the Lib Subsystem.

Examples are provided, as are complete Menu items that will convert simple two-dimensional Map plots into full three-dimensional models supporting arbitrary rotations, complex lighting effects, and hidden surface removal.

OglChill uses the services of Ctls, Lib and Ogl.

StdCoded File <=> PacCoded File (275 / 121 kByte - Release 24-Apr-2017 - Chill 12)


By Eugene Temirgaleev

GLUT interface as an addition to the Ogl subsystem.

GLUT is the OpenGL Utility Toolkit, a window system independent toolkit for writing OpenGL programs. It implements a simple windowing application programming interface (API) for OpenGL. See

GLUT is not open source. Mark Kilgard maintains the copyright.

The distribution consists of:

OglGlut uses the services of Ogl.

StdCoded File <=> PacCoded File (414 / 175 kByte - Release 14-Apr-2013)


By Dominik Gruntz

Change the subsystem name in forms.

Is there any way to do a search & replace (e.g. for a changed subsystem name) in forms/tool dialogs? Yes, that is possible. You simply have to iterate over the content of a container and ask each view for the control properties and change those accordingly.

Below you find a simple module which performs this task. A source string is replaced by a new string in the link, label, guard and notifier fields.

Subsystem Omi is useful for BlackBox 1.3.x. At BlackBox 1.4 this feature exist already in menu [Layout].

Omi doesn't use any other CPC services.

StdCoded File <=> PacCoded File (19 / 10 kByte - Release 31-Oct-2001)


By Günther Sawitzki

Diagnostic Plots for One-Dimensional Data.

This is a loose leaf collection of work sheets on common (or not so common) diagnostic plots, built up to help in every day consulting. The collection is presented in as an active document, allowing to use your own data or your simulations.

You found some links about statistics servers at

Onedim doesn't use any other CPC services.

StdCoded File <=> PacCoded File (533 / 270 kByte - Release 3-Nov-2004)


By Helmut Zinn

OOP Examples for Beginners.

How to getting started with Object Oriented programming and runtime polymorphism? Here are two examples written in Component Pascal.

OO Shape Example.

Shapes provides an abstract interface for supporting graphical IO methods. You found examples written in other languages at Chris Rathman's website Also have a look at Jim Weirich's page for this topic.

OO Collection Example.

Collections shows how to write data to files and read them back from files. Attila Truszek ported the implementation of Collections from Borland Pascal 7.0 to Oberon/F and I translated them from Oberon/F to Component Pascal (BlackBox 1.5).

Oop doesn't use any other CPC services.

StdCoded File <=> PacCoded File (26 / 13 kByte - Release 29-Apr-2006)


By Helmut Zinn and Juan Antonio Ortega

Oberon Portable Applications Library.

The Opal Library is a part of Pow. Pow is an free Oberon-2 compiler with integrated programming environment. You can download Pow including source code from

I translated the Opal Library to Component Pascal for BlackBox and Juan Antonio Ortega gets the whole subsystem running. The modules String, Float and Utils runs inside the Blackbox environment. All other modules runs as stand alone applications only. We recommend to link the programs into a separate exe file to execute them.

Opal doesn't use any other CPC services.

StdCoded File <=> PacCoded File (472 / 183 kByte - Release 23-Feb-2005)


By Koen Desaeger

Oberon-0 Compiler for BlackBox.

Port to BlackBox of the Oberon-0 compiler from the book 'Compiler Construction' by N. Wirth.

Oss doesn't use any other CPC services.

StdCoded File <=> PacCoded File (52 / 23 kByte - Release 28-Mar-2006)


By Martin Fisher

A second log window.

Output is a simple set of commands for controlling a window called Output, along with a few other miscellaneous commands that I find useful for programme output. Output acts like a second log window, and can be written to using the exported variable outputFmtr-, which is of type LibFmtrs.Fmtr from Robert Campbell's Lib Subsystem. The Output window can be set to open automatically when BlackBox starts.

There is a set of exported parameters (variable prms) that can be altered using the dialog box. Some of these parameters alter things that happen in the Output window (e.g. if the BOOLEAN prms.cmntBold is enabled, then text written with OutputCmds.OWrtCmnt will be in bold), others provide useful facilities that may or may not involve the Output windows (e.g. if the BOOLEAN prms.beep is enabled then the line OutputCmds.Beep will cause the system beep to sound, and if prms.beep is disabled then obviously nothing happens), and others provide facilities that involve the Log window (e.g. if prms.timer is enabled then OutputCmds.StartTimer will initialize the timer with LibTimer.Reset and OutputCmds.EndTimer will finish it and write the elapsed time to the log).

I use two types of text when writing to the Output window: 'text' for the majority of the output, and 'comment' text for headings. Use of prms.comment enables one to determine whether headings are used or not (try using OutputDemo.Demo1 with and without prms.comment enabled).

Output uses the services of Ctls and Lib .

StdCoded File <=> PacCoded File (46 / 21 kByte - Release 24-Jul-2002)


By Chris F. Burrows

Pascal to Oberon Translator (P2o).

P2o is a program that converts Pascal Source Code into Oberon Source Code. P2o is written in Component Pascal. This version is for use with Oberon Microsystems BlackBox Component Builder v1.5 (BB).

What it does:

What it does not do:

There is also a version for use with Queensland University of Technology's (QUT) Gardens Point Component Pascal v1.3.4 (GPCP). The GPCP version runs as a command-line (console) program on Microsoft Windows with the .NET 2.0 Framework runtime installed. For further details go to

P2o doesn't use any other CPC services.

StdCoded File <=> PacCoded File (51 / 21 kByte - Release 2-Dec-2006)


By Gérard Meunier

Data compression utility (Burrows / Wheeler or LZ77 + adaptative Huffman coding).

This program implements a new algorithm for data compression (Burrows / Wheeler + adaptative Huffman coding). With this new algorithm, and the ability of grouping small files before compressing them, this new release achieves one of the best compression ratio available today. The old algorithm (LZ77 + adaptative Huffman coding) is still provided.

Pac ranks now among the 100 best compressors. You see more about it at

Pac doesn't use any other CPC services.

StdCoded File <=> PacCoded File (366 / 159 kByte - Release 25-Feb-2017)


By Stan Warford

Introduction into Computer Science.

These files are the source code for the programs of the chapters of the book "Computing Fundamentals: The Theory and Practice of Software Design with BlackBox Component Builder", published by Vieweg Verlag, 2002. They can be decoded and used with the Oberon microsystems BlackBox Component Builder.

The software is encoded in standard BlackBox ascii format. You will need to install BlackBox on your system to decode the software. See the first few chapters of "Computing Fundamentals" for a guide to using the source code.

Addendum 2014: The book Computing Fundamentals has been out of print for some time. As the rights have reverted to me, I decided to place the complete text in the public domain with the hope that the BlackBox community will find it of some value. I welcome you comments.

Pbox doesn't use any other CPC services.

StdCoded File <=> PacCoded File (453 / 197 kByte - Release 10-Jun-2004)


By Stan Warford

Pep/6 simulator.

An educational project for teaching principles of computer organization to university students. It has an assembler and a machine simulator with trace facilities.

This release of the Pep/6 system is intended to be used in conjunction with the textbook Computer Systems, J.Stanley Warford, Jones & Bartlett Publishers, 2nd edition.

The book describes the Pep/6 computer, which was designed to teach principles of computer organization. This program simulates the execution of Pep/6 by allowing the user to write assembly language programs, translate them to machine language, and execute them. It includes a trace mode for visualizing the registers in the CPU and user selected locations in main memory.

Pep6 doesn't use any other CPC services.

StdCoded File <=> PacCoded File (199 / 87 kByte - Release 23-Dec-2002)


By Helmut Zinn

A small extensible Vector Graphic Editor.

The starting point was a BlackBox Workshop by Oberon Microsystems. I extend the result. Now I can create, load and save the graphic view. There I can insert points, lines, squares, rectangles, circles, ellipses and strings. Selected figures can be moved, copied and set their properties. Cut, Paste and Delete are not implemented yet. All operations are undoable.

Pic doesn't use any other CPC services.

StdCoded File <=> PacCoded File (99 / 44 kByte - Release 20-Jun-2001)


By Gérard Meunier

Curve plotter.

This program is a starting point for a collection of 2D plotting tools. By now, it implements plotting of individual points (e.g. experimental results) and of functions of one variable in Cartesian coordinates, but the aim is to develop this collection.

Plot uses the services of Ctls, Babel and Util.

Traceur de courbes.

Ce programme est un point de départ pour une collection d'outils de tracés 2D. Pour l'instant, on y trouve la possibilité de tracer un ensemble discret de points (résultats expérimentaux par exemple) et des fonctions d'une variable en coordonnées cartésiennes, le but étant de développer ces possibilités.

Ce logiciel nécessite l'installation préalable des sous-systèmes Ctls, Babel et Util.

StdCoded File <=> PacCoded File (386 / 175 kByte - Release 23-Oct-2004)


By Wojtek Skulski

Persistent Object Manager.

A tool to organize several objects such as histograms into a tree structure similar to the Windows Explorer. The user can open graphical views of collected data by double-clicking on the object icons. The entire tree can be saved to disk as a binary file with an extension ".pom". The data file can be read back into the Pom at a later time. Pom has been used to manage tens of thousands histograms acquired in an experiment. I use Pom in my laboratory practice. You find slides and further information at

Pom uses the services of Gr.

StdCoded File <=> PacCoded File (321 / 141 kByte - Release 29-Jul-2005)


By Dan Popa

Pascal of the 3d milenium (Computer programming with Oberon-2).

The course was used during the previous 4 years in Bacau University by Lect. drd. Dan Popa. The software support was provided by University of Linz. It consists of POW-IDE and the Oberon Compiler.

Despite the existence of best programming environments used by engineers all over the world like BlackBox - which is also based on Oberon, this course was replaced by a Visual C course. That is why this e-book becomes available as Open Doc.

If you want to use Pow! for programming you can download it from: Pow may also be used with C++ and Java.

Pow doesn't use any other CPC services.

Pow Tutorial (1223 kByte - Release 26-Sep-2005 - Romanian language)


By Carl Glassberg

Coco pretty-printer grammars for Component Pascal.

Prettify provides 3 pretty printer (PP) tools for formatting correct Component Pascal programs:

  1. Formatting with comment output (ComponentPascalC.atg)
  2. Remove End Comments (RemoveEndComments.atg)
  3. Remove All Comments (ComponentPascalNC.atg).

The Prettify commands accept a pre-comment, which precedes the start of a module. Post text, which follows a Component Pascal module, is also accepted. Post text is converted into a comment by enclosing it with open and close comment delimiters.

When formatting, Prettify commands unfortunately remove hyperlinks, commander tool buttons, etc. present in the input.

Colorization is deliberately exaggerated to show program structure: reserved words and punctuation, etc. The main function of the pretty-printers are to insert line breaks and perform indentation of program structures. It is recommended, as a final step, to run Cpc -> "Beautify" on the output of Prettify commands.

The tools use modified Coco scanners. Extended Latin-1 characters are allowed in identifiers. Additionally, Unicode is allowed in strings and comments. Comments can contain horizontal tab (9X), cr (0DX) and para (0EX) characters. Strings can contain horizontal tab characters.

The behavior of the pretty-printers are controlled by the embedded semantic actions in the respective Coco (ATG) grammars. If changes to formatting are desired, this is the only portion of a grammar that should be modified.

Prettify uses the services of Coco.

StdCoded File <=> PacCoded File (448 / 138 kByte - Release 4-Apr-2015)


By Mary Kynn

Visualising probability.

Tools for visualizing probabilities are based on a betting scenario where the assessor should determine whether they would prefer to bet on the event in question or on the shaded section of the wheel, bar or sample. The shaded section should be adjusted until the assessor is indifferent to the two bets (that is, the event has the same probability of occuring as the shaded section).

The wheel, bar and sample can be manipulated via the mouse and the keyboard. Clicking and dragging the mouse across the tools will increase or decrease the shaded section, as will the arrows on the keyboard. To display the probabilities double click the tool.

Probability doesn't use any other CPC services. I recomment to use Probability together with Elicitor and Logit.

StdCoded File <=> PacCoded File (188 / 36 kByte - Release 7-Feb-2010)


By Gérard Meunier

Prolog Interpreter.

This program provides a Prolog machine, able to run Prolog programs. It's a simplification of Prolog II, one of the first Prolog interpreter available with a slightly different syntax.

Prolog uses the services of Babel.

StdCoded File <=> PacCoded File (485 / 204 kByte - Release 4-Dec-2013)


By Gérard Meunier


Race is a game of race on circuit by turns, which can be played alone or not. You found an exe file ready for running at for the French version, and for the English one.

Race uses the services of Util.

StdCoded File <=> PacCoded File (112 / 50 kByte - Release 26-Apr-2006)


By Werner Bossert

Reading windows registry with BlackBox.

This program reads and edits registry entries. It uses new BlackBox 1.4 facilities TreeControls and StdTables.

Reg doesn't use any other CPC services.

StdCoded File <=> PacCoded File (32 / 16 kByte - Release 8-Nov-2001)


By Helmut Zinn

Random Number Generator.

The subsystem Rng provides 28 different random number generators and some programs for analysing them.

Further this subsystem contains some tests for analysing this random number generators:

You can proof all random number generators with this tests and find the two really bad ones.

Rng uses the services of Ctls, Util and Xy.

StdCoded File <=> PacCoded File (823 / 147 kByte - Release 12-Jun-2013)


By Dmitry V. Dagaev

Standard Container Library.

Standard Container Library package implements vectors, lists, queues, stacks, maps without any generics. It uses BlackBox Kernel metadata structs to safely resize dynamically allocated contents. The main principle is that the same tasks use the same software. For example, the Scl lists work with list of records, no matter whether those records contain strings or integers.

Scl Library doesn't use any other CPC services. SclObxBenchmarks uses the services of Ta_.

StdCoded File <=> PacCoded File (145 / 63 kByte - Release 10-March-2018)


By Oleg N. Cher

Simple DirectMedia Layer bindings for Oberon.

Simple DirectMedia Layer ( bindings for Oberon family languages: Modula-2 and Oberon-2 (XDS), Active Oberon (OPCL, ETH Oberon) and Component Pascal (BlackBox Component Builder). Supported SDL version 1.2.15 (stable).

This project is similar to the subsystem Free. You find the bindings for Component Pascal at the official web-site:

Sdl doesn't use any other CPC services.


By Stan Warford

Renders primitive shapes.

I have always wanted a graphics editor with BlackBox and never had the time to work on one. I developed a module named ShapesDraw, however, that could serve to render primitive shapes for the editor.

It exports the following procedures:

I think the arrow routines are particularly nice, as you can specify the exact shape of the arrowheads. You can even put them on either or both ends of a Bezier curve. Integer arithmetic is used for efficiency, and angles are specified to a precision of 1/64 of one degree. The module is well-documented. It has a suite of test programs including some with animation. The BlackBox system is particularly nice, as you get resolution-independent rendering for hardcopy output. Anyone is welcome to use the module as one of the building blocks of a BlackBox editor.

Shapes doesn't use any other CPC services.

StdCoded File <=> PacCoded File (55 / 24 kByte - Release 7-Jun-2004)


By Gérard Meunier

Positions of charged particles on a sphere.

This program computes and displays graphically the positions of identical electrically charged particles able to slide on a sphere and at rest.

Sphere uses the services of Util.

StdCoded File <=> PacCoded File (70 / 30 kByte - Release 8-Aug-2013)


By Peter Cushnir, Ivan A. Kuzmitskiy, Manuel Martín Sánchez and Josef Templ

Using SQLite with BlackBox.

SQLite is a software library that implements a self-contained, serverless, transactional SQL database engine. Unlike most other databases, SQLite does not have a separate server process. SQLite reads and writes directly to ordinary disk files.

SQLite is an embedded relational database engine. SQLite understands most of the standard SQL-92 language. But it does omit some features while at the same time adding a few features of its own.

This SQLite driver based on example by PGR:

SQLite doesn't use any other CPC services.

StdCoded File <=> PacCoded File (792 / 378 kByte - Release 8-Oct-2018)


By Gerhard Marent

Browser for SQLite.

SQLiteBrowser adds a browser tool with inbuild query archive to the SQLite system.

SQLiteBrowser uses the services of SQLite and TboxTimer.

StdCoded File <=> PacCoded File (787 / 376 kByte - Release 8-May-2017)


By Guy Laden and Josef Templ

Component Pascal Source Code Navigator.

This Navigator tool was conceived as a simple tool for easing the editing of large module texts by providing a fast way to locate procedure definitions. On activation of the Navigator from the BlackBox text editor, a dialog box appears listing the procedures defined in the module. Once a procedure is selected from the list, the text scrolls to the selected procedure and the signature is selected. For large modules this process is usually significantly faster than using the usual caret movement or search facilities provided by the editor.

Even though the list of procedures presented by the Navigator is much shorter than the module text, it can be quite long too. It is useful to be able to shorten the list by filtering from it procedures that aren't of interest. The Navigator supports several predefined types of filters and a search box that supports * as a wild-card.

Srcnav doesn't use any other CPC services.

StdCoded File <=> PacCoded File (38 /18 kByte - Release 22-Feb-2018)


By René A. Krywult

3D Programming for Windows.

Welcome to 3D Programming using the 3DSTATE Engine in Component Pascal. Whether you are an experienced game designer or looking to produce your first 3D game, this subsystem is for you. In a very short time, you will be using the 3DSTATE Engine to create rich and exciting 3D games with beautiful graphics and state-of-the-art performance. While mastering a 3D graphics API can take years, the 3DSTATE Engine will have you writing games within weeks. Combined with the power of Component Pascal and the Blackbox, programming high-end 3D applications and games becomes easy.

Please note also, that the subsystem State is a substitute for the Morfit subsystem, which gives access to the Morfit engine version 3.0. The Morfit engine was renamed in Version 4 to 3DState, and the current State subsystem gives access to the 3DState engine version 6.0.

Since these are only the interface modules, nothing will work without first downloading and installing the 3DState engine. For further information see Quick-Start of State and look at'.

State doesn't use any other CPC services.

StdCoded File <=> PacCoded File (1.783 / 603 kByte - Release 27-Jul-2004)


By Robert D. Campbell

Set Background Colour in Views.

StdBackgrounder is a simple example of implementing a 'Wrapper'. It is used to add a background colour to arbitrary Views embedded into a Text Document.

StdBackgrounder doesn't use any other CPC services.

StdCoded File <=> PacCoded File (15 / 7 kByte - Release 24-Apr-2017 - Chill 12)


By Gérard Meunier

Sudoku Builder & Solver.

Sudoku can build easy and hard Sudoku puzzles. It can also solve any Sudoku puzzle at once or step by step. The engine of Sudoku is a Knuth's algorithm, Dancing Links, that may be used to solve many problems besides Sudoku. So, I've inserted it in the Util subsystem. You found an exe file ready for running at for the French version, and for the English one.

Sudoku uses the services of Util.

StdCoded File <=> PacCoded File (72 / 34 kByte - Release 18-Jul-2006)

Introduction | Subsystems | Topics | Authors | Date | Links | FAQ | Downloads
A..C | D..H | I..N | O..S | T..Z

Last Updated  8th October 2018