Component Pascal Collection

Helmut Zinn


By Dmitry V. Dagaev

Automata-Based Programming Engine.

ABPE is a pilot implementation of automata-based programming engine. AbpeObx examples demonstrate the following files:

The Abpe engine performs AbpeExamples execution. AbpeRunner implements Services-based runtime.

The 'Data' file consists of 2 sets of numbers defined in the type names, the 'HelloStates_0_1' RECORD (A.OnlyStates) prescribes the 'Code' file to have two state-connected routines for Hello type:
PROCEDURE sss0* (VAR t: D.Hello; IN e: A.Event; VAR y: A.State);
PROCEDURE sss1* (VAR t: D.Hello; IN e: A.Event; VAR y: A.State);

The 'HelloOutputs_1_2' RECORD (A.OnlyOutputs) prescribes the 'Code' file to have two output-generating routines for Hello type:
PROCEDURE zzz1* (VAR t: D.Hello; y: A.State);
PROCEDURE zzz2* (VAR t: D.Hello; y: A.State);

Abpe doesn't use any other CPC services.

StdCoded File <=> PacCoded File (112 / 48 kByte - Release 2-May-2021)


By Fyodor Tkachov

Algorithms and Data Structures.

The subsystem contains the program examples from N.Wirth's "Algorithms and Data Structures. Oberon version". This version incorporates corrections and modifications introduced in the Russian translation and approved by Niklaus Wirth in April, 2009. The book can be download from website or here AD2017.pdf.

To read the sources and run the programs, you need the BlackBox Component Builder (an Oberon derivative) freely available from BlackBox runs under MS Windows and Linux+Wine. All modules must be open and run from the BlackBox Component Builder.

After installing BlackBox, unpack this package into the BlackBox folder (so that ADen and i21sys subfolders appear along with Com, Comm, Ctl ... BlackBox.exe ...). The modules require one external module to run called i21sys/Mod/In.odc . It is included in this package.

Run BlackBox.exe, open the file ADen/Docu/Quick-Start.odc and read the instructions. The document ADen/Docu/Sys-Map.odc contains hyperlinks to all program examples. To run program examples in a module, click on the so-called commanders (the buttons like this one (!)); they are usually located after the end of the module text. Make sure nothing is selected when you click. The commanders should be clicked in the order of their appearance.

ADen doesn't use any other CPC services.

StdCoded File <=> PacCoded File (148 / 546 kByte - Release 9-May-2012)


By Helmut Zinn

3D computer graphic á la carte.

Space...the Final Frontier. These are the voyages to the 3-D computer graphic. Your mission is to explore the strange 3D graphic world and to gain experience. To seek out:

Alacarte uses the services provided by TboxTimer, Ctls and Xy.

StdCoded File <=> PacCoded File (119 / 54 kByte - Release 6-Aug-2007)


By Robert D. Campbell

Computational Algebra library.

Algebra is a 'Computational' algebra system, and can numerically evaluate elements from many mathematical structures. It is not a 'Computer Algebra System' that can handle these elements symbolically.

The modules fall into four classes:

AlgebraDemo gives an extensive demonstration of using the Algebra facilities.

Algebra uses the services provided by CpcChill, CpcCompressor, Ctls, Lib and Multi.

StdCoded File <=> PacCoded File (1.486 / 554 kByte - Release 2-Jun-2017 - Chill 12)


By Aubrey McIntosh

Source Code Collection and Topological Sort (Gather.Order).

Gather is a program that reads a list of 1 or more module names. It produces a topologically sorted list of all the modules that have source online and are necessary to support the listed modules. It has been in use for more than 10 years in the Oberon V4 environment, and was recently ported to BlackBox. Gather is written in Component Pascal. This version is for use with Oberon Microsystems BlackBox Component Builder v1.5 (BB) or v1.6-rc5.

What it does:

What it does not do:

Gather is complimentary to DevDependencies. It was inspired by the Builder tool in ETH Oberon, but is written from scratch with different internal structure.

AlmGather doesn't use any other CPC services.

StdCoded File <=> PacCoded File (27 / 13 kByte - Release 15-Mar-2008)


By Aubrey McIntosh

A BusyBox (Lab) Panel to interconvert Module names and ancillary file names.

This version works with the Linux BBCB version, Denisov et al.

What it does:

AlmPathLib, the module that AlmPathLab wraps, is redundant to Files.dir.GetFileName and StdLibrarian.  It does, however, support regularity in the generation of file names.

AlmPathLab doesn't use any other CPC services.

StdCoded File <=> PacCoded File (83 / 39 kByte - Release 7-Feb-2023)


By Anton Dmitriev

Organize Desktop, Taskbar and Toolbar.

Amisc organized your desktop like the original Oberon systems. It divides the desktop into two tracks: the user track and the system track. Furthermore it adds a taskbar at the bottom of the BlackBox windows. The taskbar has a button for every opened (document) window. Clicking on the button brings up the window to the top. At the top of the BlackBox windows it provides a toolbar. You can manipulate the current selection's attributes with that toolbar.

Amisc doesn't use any other CPC services.

StdCoded File <=> PacCoded File (65 / 30 kByte - Release 15-Aug-2008)


By Gérard Meunier

Babel Compiler Compiler.

Babel is a meta compiler. From a language definition document, it builds the tables of a compiler (lexical, syntactic and semantic) and store them in a binary file. A special module, included in the final program, reads this file and then can compile texts of the language.

You find examples of using Babel here:

  1. CpcIndex - Cross reference builder and pretty printer.
  2. CpcRegul - Regular Lexical Analyser.
  3. CpcStats - Statistic of accessing the CPC website.
  4. CpcWhere - Where, Indexer of Source & Symbol files.
  5. Hermes - Data Acquisition & Scientific Spreadsheet
  6. Kine - Simulation Tools.
  7. Plot - 2D plotting tools including data fit.
  8. Prolog - Prolog Language Interpreter
  9. Tp2cp - Convert Turbo Pascal to Component Pascal.
  10. UtilFunc - Inline Functions
  11. UtilMathsl - Mathematical Editor
  12. UtilJson - Encoding and decoding of JSON
  13. UtilGraphQL - GraphQL compiler and support

Babel doesn't use any other CPC services.

StdCoded File <=> PacCoded File (666 / 270 kByte - Release 12-Dec-2019)


By Helmut Zinn

Getting started with Component Pascal.

Here are elementary programs for beginners to learn Component Pascal (Oberon 2). This small and easy modules are written in German. If someone would like to translate them to English please contact me.

Einführung in Component Pascal.

Hier sind kurze und einfache Programme für Anfänger zum Lernen von Component Pascal (Oberon-2). Es sind Aufgaben und Lösungen die in einen Anfängerkurs verwendet werden.

Basic uses the services provided by Ctls, Xy, Mk and optional TboxTimer, Kurzweil and Alacarte.

StdCoded File <=> PacCoded File (1805 / 208 kByte - Release 7-Aug-2023)


By Rainer Neubauer

Program library for Bit-Manipulations, Dynamic-Strings, File-I/Os, Time Strings and Run-Parameters.

BasicsAssert The services of the module BasicsAssert are applied to implement design-by-contract. In case of trap the StdLog window will show name and value of the variable causing the trap and the appropriate limits.

BasicsBits offers low level access to bits and bytes using the concept of SETs and avoiding the import of SYSTEM.

BasicsDynStrings provides a class for dynamic strings. It includes useful procedures for string manipulations without limitations of the string lenght. Converters between basic data types and dynamic strings are available too.

BasicsStrings offers the functionality of module Strings plus some additional services for dealing with Hex-Strings. In contrast to module Strings all output strings are delivered as POINTER TO ARRAY OF CHAR.

BasicsFiles deals with ASCII files and binary files as well. It sits on top of module Files and offers traditional file I/O.

BasicsParameters implements a scanner for analyzing parameters usually passed to programs via a command line. The parameter string ist passed to the module by calling ScanParameterString. Subsequently names and values of the parameters will be available by calling the according procedures.

BasicsTime implements procedures for getting date / time strings, time stamps and pausing program execution by busy waiting.

BasicsUtils offers some helpful utilities.

Basics uses the services provided by Xy.

StdCoded File <=> PacCoded File (364 / 139 kByte - Release 21-March-2021)


By Ivan N. Goryachev

BlackBox tools: Unicode module converter tools & Compiler helper tools.

You can convert modules from code page to Unicode with the Unicode module converter tools. This tool is very useful for the migration from BlackBox 1.5 Russian version to BlackBox 1.7 CPC edition.

With a new subsystem you may have the following questions: "Which modules must I compile?" and "Which other subsystems I need for using this new subsystem?" Now you get the answer very easily. You can create compile list and import list with the compiler helper tools. Looking thru the import list you can checking your system of consistency and found missing or misspelling modules even the source is not available.

Bbt doesn't use any other CPC services.

StdCoded File <=> PacCoded File (137 / 59 kByte - Release 3-Dec-2014)


By Helmut Zinn

A Benchmark Suite to Measure Computer Performance.

Benchmarks provide a method of comparing the performance of various computer systems. All my old benchmark programs doesn't run on a computer today. So I downloaded some sources from internet and changed them to my need accordently. You find here in this subsystem some well-known benchmark programs: Counter, Sieve, Dhrystone, Whetstone, Livermore Loops and Hennessy.

Benchmark uses the services provided by Dos.

StdCoded File <=> PacCoded File (643 / 227 kByte - Release 11-Apr-2021)


By Carl Glassberg

(Bnf7)Ebnf.atg: Ebnf Pretty-Printer. A sample use of Coco.

This example grammar is similar to the Ebnf3.atg file provided with BB Coco. The main difference between Ebnf3.atg and this grammar is the addition of semantics to create a translator and pretty-printer.

An unattributed ATG grammar supplied as input to Coco will create a syntax-analyzer, assuming no errors have occurred. The output of Coco will be a scanner, parser and a main driver that will need to be compiled by BlackBox.

Such a syntax analyzer only accepts or rejects the input that the ATG grammar itself defines. The main driver will output (to the StdLog) the message "Parsed correctly" if there are no syntax errors in the input the ATG grammar expects. Otherwise the number of detected errors is output to the StdLog.

The input for sample runs are an EBNF definition for EBNF itself and an EBNF definition for Oberon. Errors are marked in the input focus view. All the previously discussed syntax-checking actions still occur. In addition, a pretty-printed version of the input grammar is output to a separate window.

Bnf7 uses the services provided by Coco.

StdCoded File <=> PacCoded File (69 / 33 kByte - Release 24-Jul-2010)


By Helmut Zinn

C to Component Pascal Translator.

This software converts C source program to Component Pascal (Oberon-2). All identifier collected into one symbol table. The symbol table is used for name translation. The original translator was written a very long time ago in Turbo Pascal. It has no syntax analysis. The translator recognize patterns only. If it doesn't find a matching pattern the output is equal the input.

C2cp doesn't use any other CPC services.

StdCoded File <=> PacCoded File (201 / 85 kByte - Release 20-Feb-2016)


By Mathieu Westerweele

Multiple Undo/Redo, light up / hot buttons, list readers and procedure navigator.

Subsystem Cam comprises of a few handy "low-level" modules, which I use extensively. Most of them where build before I discovered the CPC website. The modules consist of:

Cam doesn't use any other CPC services.

StdCoded File <=> PacCoded File (91 / 37 kByte - Release 9-Feb-2004)


By Robert D. Campbell

Writing mathematical expressions in BlackBox documents.

Casket provides a flexible Bitmap type (e.g. Views as *.png) and various utilities (e.g. RTF Import/Export to Word) that use it:

CasketRtfConv provides RTF (Rich Text Format) import and export by file or cut-&-paste. It has more accurate paragraph formatting than HostTextConv, and significantly it supports Links, Tables, and Pictures as Bitmaps.

CasketLatex creates high quality typeset bitmaps of mathematical expressions described using plain Ascii. It provides the facilities of LaTeX inside BlackBox '.odc' documents. You can easily write odc documents containing sophisticated mathematics.

LaTeX is used by many major software systems and authors - for example all mathematics in Wikipedia is typeset with LaTeX.

CasketKeeper uses FreeImage to convieniently support writing arbitrary BlackBox Views to file in a variety of formats (*.bmp, *.gif, *.jpg, *.png, & *.tiff).

CasketBitmaps provides interfaces to other BlackBox Bitmap types and facilities (HostBitmaps, CpcBitmaps, FreeImage, Windows Bitmaps). It supports writing compressed BlackBox Bitmap Views (using Pac, or another Compressor), interfacing to FreeImage, and is designed to support other applications.

CasketReferences is not required by CasketLatex, but could compliment it by providing equation numbering in a large document. It may also have uses unconnected with CasketLatex.

Casket uses the services provided by CpcCompressor, Ctls, Free, Lib and Pac (but if you only need CasketRtfConv Free, Lib, and Pac are not essential).

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


By Robert D. Campbell

Chill 12 Documentation.

The Chill group is a collection of subsystems and individual modules published by Robert Campbell. The current version control number of these is called Chill 12, and 'Chill' is sometimes used as a generic name for these subsystems. Chill 12 is compatible with BlackBox 1.7.x.

This ChillDocu is a set of 'overview' (e.g. 'Map's etc) documentation files that is recommended should you choose to install several, or all, of these subsystems. It provides convenient access to several subsystems and Tools from the Help Menu. It also gives guidance on installing all Chill subsystems, as there are some dependencies between them.

The following subsystems are member of the Chill group:

  1. Algebra - Computational Algebra library.
  2. Casket - Writing mathematical expressions in BlackBox documents.
  3. CpcChill - Bitmaps, ControlTips, FormTidy, Markers, Search and Stylists.
  4. Ctls - Buttons, Arrows, Sets, Sliders, RealField and UnitField.
  5. Demo - Sample programs of using the Chill group.
  6. Filter - Digital and other filter design and analysis.
  7. Frame - An abstract hierarchical Specification framework.
  8. Lib - Engineering & Scientific library.
  9. Multi - Arbitrary ultra high precision arithmetic & Tools.
  10. Nav - Navigation & Coordinate transform library modules and tools.
  11. OglChill - An extension to the 'Base' or 'Original' Ogl subsystem adding higher level functionality.
  12. Wands - A collection of general purpose and eclectic tools (Wand: tool used by a magician).

A full Chill installation makes use of the following non-Chill modules & subsystems available from CPC:

  1. CpcBookmarks - Bookmarks for text documents.
  2. CpcCompressors - Data compression utility interface.
  3. CpcMenus - Switching Menus.
  4. CpcSpell - A minimalistic Spelling checker.
  5. Escher - Escher constraint-drawing editor.
  6. FreeImage - Loading, displaying and saving popular graphic image formats.
  7. Ogl - An interface to OpenGL.
  8. Pac - Data compression utility (Burrows / Wheeler or LZ77 + adaptative Huffman coding).
  9. StdBackgrounder - Set Background Colour in Views (Modified from the original Oms version).
  10. Xmlcore - Using Document Object Model and Extensible Markup Language.

Grateful thanks to the authors of the above for publishing their work for the benefit of other users.

The ChillDocu save set installs its files into //BlackBox/Docu/ChillDocu/. Open there the file Chill-Map.odc to getting started.

StdCoded File <=> PacCoded File (591 / 256 kByte 2-Jun-2017 - Chill 12)


By Dmitry V. Dagaev

Coroutines, Tasks and Schedulers.

Co_Routines module is suitable for suspending and resuming execution on certain locations. A list of tasks can be built upon: cooperative multitasking, state machines, infinite lists, pipes, etc. Task represent the simplest form for periodic execution. Scheduler is for runtime control of both.

Co_ doesn't use any other CPC services.

StdCoded File <=> PacCoded File (115 / 54 kByte - Release 20-September-2017)


By Helmut Zinn

A BlackBox port of Hanspeter Mössenböck's Coco/R Compiler Compiler.

Coco/R is a language for generating compilers from attributed EBNF grammars. You find more information about this topic at Prof. Pat Terry's Coco/R page. The original port of Coco is from the Stewart Greenhill's website BlackBox Resources. I adapt Coco to the BlackBox subsystem and use BlackBox IO directly.

You find examples of using Coco here:

Coco doesn't use any other CPC services.

StdCoded File <=> PacCoded File (413 / 169 kByte - Release 15-Dec-2016)


By Stewart Greenhill

Non-blocking TCP Streams Module.

This module implements true non-blocking TCP streams using the CommStreams framework. The reference implementation (CommTCP) is only non-blocking AFTER a connection has been established, and can block the framework for a significant time during the establishment of a TCP connection. In some situations (eg. web proxy servers) this is unacceptable.

The solution to this problem is to use the asynchronous functions provided by Winsock. Module CommTCPAsync allows TCP host-name resolution and connection establishment to be performed as background tasks. This is done in a way that is compatible with the CommStreams framework.

CommTCPAsync doesn't use any other CPC services.

StdCoded File <=> PacCoded File (35 / 14 kByte - Release 14-Feb-2023)


By Dejan Milicic

Cow is a subsystem aimed at compiler writers.

Cow is subsystem aimed at compiler writers. When finished, it will contain generators of lexical and syntax analysers. As completed, various modules will be added to this subsystem.

This is alpha release of Cow, framework intended for compiler writers. At the moment, only scanner generator exists, but as time passes more elements will be added. Whole project is intended to be my graduation thesis, and I would be very grateful to anyone that could point me to existing errors, omits and possible improvements.

Cow doesn't use any other CPC services.

StdCoded File <=> PacCoded File (120 / 51 kByte - Release 5-May-2002)


By Fyodor Tkachov

Capitalisation of Keywords.

The two procedures solve the problem of typing all-capitals keywords. The idea is that one types a keyword in small characters, then presses a key, and the keyword is converted to capitals.

Additionally, there is a 'Capitalize and Expand' function included, that knows about the common compound CP statements. It does the same sort of thing regarding keyboard macros.

CpcAllCaps doesn't use any other CPC services.

StdCoded File <=> PacCoded File (19 / 8 kByte - Release 8-Oct-2006)


By Helmut Zinn

Decode Eth Oberon V4 Cod files.

The module CpcAsciiCoder can decodes and expand ETH Oberon V4 Cod files. I recommend to format the result with the CpcBeautifier.

CpcAsciiCoder doesn't use any other CPC services.

StdCoded File <=> PacCoded File (37 / 17 kByte - Release 17-Nov-2002)


By Gérard Meunier and Helmut Zinn

Component Pascal Source Code Beautifier.

The Beautifier is a program that reformats Component Pascal (Oberon-2) Source-Code.

It features:

The Beautifier follows the style guidelines of the BlackBox Programming Conventions.

CpcBeautifier doesn't use any other CPC services.

StdCoded File <=> PacCoded File (63 / 26 kByte - Release 27-May-2017)


By Robert D. Campbell


This module allows an arbitrary View to be converted to a Bitmap.

These Views are intended to be embedded in BlackBox Documents. The particular advantage of these Views is that when they are saved to disc they are compressed (using CpcCompressors), so typically take much less disc space than uncompressed Bitmaps.

CpcBitmaps uses the services provided by CpcCompressor and Pac.

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


By Alexander Iljin

Bookmarks for text documents.

When you edit a source code file it is often necessary to jump back and forth between two or three different areas making changes simultaneously. A valid solution would be to open the appropriate number of windows with the same document and to switch between them. BlackBox supports this with the command "Window - New Window (F2)". For example, you may open one window with TYPE declaration in view to add properties to an object, and the second window with a method implementation. Now you may add new properties while writing code that uses them. Unfortunately, in BlackBox all these windows will share the same text cursor position, so if you start typing right after you switch to another window, you will immediately be brought back to the place where you were typing in the previous view, effectively losing all the advantages of having two windows. To place the text cursor at a new position you have to use the mouse, and switch from keyboard to mouse and back again which slows you down and distracts you.

Another problem with the approach of using multiple windows, is that you end up having a) many windows open to same file, b) very small amount of text in each window without its context, and c) very limited navigation capabilities using the "Window" menu, so you cannot quickly find the window you need.

That is why you may find bookmarks useful. A bookmark is a small visible object (of type CpcBookmarks.View) which can be pasted into any text document. It looks like a little grey square with a digit in it. Bookmarks are numbered from 1 to 9, so you may have up to nine bookmarks per document. After you have placed a bookmark, you may quickly jump to that exact cursor position from anywhere in the document (the document's window must be active). Bookmarks are saved within the document, so the state is preserved between editing sessions.

Like any other View object bookmarks are ignored by the compiler, so you don't have to put them in comments. They may be anywhere in your source code. Right where you need them.

The disadvantage of bookmarks is that you have to remember the number location correspondence. You'll have to think up your own scheme for using those numbers. You won't be using more than three most of the time, so it won't be very hard to simply poke through numbers from 1 to 3 to find the place you need.

CpcBookmarks doesn't use any other CPC services.

StdCoded File <=> PacCoded File (35 / 15 kByte - Release 16-Dec-2007)


By Robert D. Campbell

Bitmaps, ControlTips, FormTidy, Markers, Search and Stylists.

The Cpc 'Chill' modules provide a few utilites that may be of general use:

The modules CpcMarkers & CpcStylists require (parts of) the subsystem Lib .

StdCoded File <=> PacCoded File (365 / 149 kByte - Release 2-Jun-2017 - Chill 12)


By Gérard Meunier and Robert D. Campbell

Data compression utility interface.

Compressor Readers & Writers are objects that are similar to Stores Readers and Writers, but they also losslessly compress the data on disc.

To make use of CpcCompressors some must be made available. Currently two are available in Pac, but in principle, others could be made available from other sources.

CpcCompressors uses the services provided by Pac.

StdCoded File <=> PacCoded File (55 / 24 kByte - Release 1-Jul-2004)


By Robert D. Campbell

Pop-up Tips when the mouse pointer goes over a Control.

The Module ControlsTips is a documentation aid that allows for small text boxes (Tool-Tips) to 'pop-up' when the mouse pointer goes over a Control.

This functionality is implemented by simply 'dropping' a 'Wrapper' on each Control. The text, colours, and user proficiency level can be individually set for each Control.

The pop-up timing parameters can be set globally, as can tip filters. For example all tips can be enabled, or disabled, or only tips aimed at 'Experts' can be enabled.

CpcControlTips doesn't use any other CPC services.

StdCoded File <=> PacCoded File (38 / 16 kByte - Release 2-Jun-2017 - Chill 12)


By Koen Desaeger

A converter for loading Oberon System3 and Linz V4 file formats.

The module CpcETHConv is an improved version of StdETHConv

What's new in this version:

CpcETHConv doesn't use any other CPC services.

StdCoded File <=> PacCoded File (78 / 39 kByte - Release 3-Mar-2007)


By Gérard Meunier

Documentation Tool.

CpcEverywhere is able to search regular expressions in the files of Blackbox, by using the search engine of CpcRegul. It's a powerful tool for complex documentation search.

CpcEverywhere uses the services provided by Babel, Util and CpcRegul.

StdCoded File <=> PacCoded File (38 / 18 kByte - Release 29-Sep-2015)


By Marco Ciot

File Browser with subsystem, folder and document windows.

The CpcFileBrowser is a subsystem file manager that provides a user interface to open documents. It is very useful for speeding up navigation between subsystems, directories and files.

CpcFileBrowser doesn't use any other CPC services.

StdCoded File <=> PacCoded File (13 / 7 kByte - Release 6-Mar-2007)


By Gérard Meunier

Diagnosing floating point calculations precision.

Do you have numeric problems with real numbers? This is not a specific problem of Component Pascal. All programming languages have the same kind of problem. Here is a little module to determine the precision of floating point calculations. The result depends on the floating point implementation on your machine and not of the programming language definition.

Testing REAL numbers for equality should be done with the statement:
   IF (ABS (real1 - real2) < epsilon) THEN ... END;

The problem above is what value of epsilon should I use. After running this test you know which epsilon you can use on your machine. Remark: Math.Eps() gives the same value, but with less information.

CpcFloat doesn't use any other CPC services.

StdCoded File <=> PacCoded File (14 / 7 kByte - Release 26-Aug-2004)


By Robert D. Campbell

Control layout tools for use in constructing Forms.

FormTidy provides an additional set of commands that complement those provided in the Layout menu. They are used to help arrange the size and positioning of Controls in a graphical user interface Form. These commands are virtually essential for Forms with more than a few Controls.

CpcFormTidy doesn't use any other CPC services.

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


By Gérard Meunier

Cross reference builder and pretty printer.

CpcIndex parses a text according to a grammar, with the help of Babel. It uses this analyze to pretty print the text and extract an index. The result is ready to print or can be used on screen for quick searching. Grammars for Oberon2, Modula2, Component Pascal and Babel are included.

CpcIndex uses the services provided by Babel and Util.

StdCoded File <=> PacCoded File (117 / 51 kByte - Release 29-Sep-2015)


By Werner Bossert

Language Mapper from / to Excel tables.

Very often programmers and language translators are not the same person. This is easier for doing the translation outside the BlackBox in an Excel table. CpcLangMapper allows you to transform rows of alias/language pairs from Excel tables into a BlackBox (Subfolder)Strings.odc document or vice-versa. CpcLangMapper enhances the possibilities of CpcLanguage by introducing transformation of languages between MS Excel and BlackBox.

CpcLangMapper uses the services provided by Ctls, Dos and Pac.

StdCoded File <=> PacCoded File (67 / 32 kByte - Release 29-July-2023)


By Gérard Meunier

Language for Component Pascal.

BlackBox has many facilities. One of them is changing the language during the BlackBox session. Here is the module for accomplish this task. You can switch to any language which you like. But before you can use your favourite language you have to translate all the resource files. It would be nice to share your translations here.

CpcLanguage uses the services provided by Ctls.

StdCoded File <=> PacCoded File ( 36 / 18 kByte - Release 19-Sep-2017)

The following language are available here:

FR Français translated by Gérard Meunier
StdCoded File <=> PacCoded File (45 / 21 kByte - Release 31-Jul-2017)

DE Deutsch translated by Helmut Zinn
StdCoded File <=> PacCoded File (53 / 24 kByte - Release 31-Jul-2017)

ES Español translated by Juan Antonio Ortega
StdCoded File <=> PacCoded File (45 / 20 kByte - Release 31-Jul-2017)

IT Italiano translated by Luca Roberti
StdCoded File <=> PacCoded File (35 / 16 kByte - Release 31-Jul-2017)

NL Dutch translated by Hans Klaver
StdCoded File <=> PacCoded File (103 / 44 kByte - Release 31-Jul-2017)

PL Polski translated by Katarzyna Regent Nguyen
StdCoded File <=> PacCoded File (58 / 26 kByte - Release 31-Jul-2017)

RU Russian translated by Ivan Denisov & Fyodor Tkachov
StdCoded File <=> PacCoded File (58 / 26 kByte - Release 31-Jul-2017)


By Helmut Zinn

Switching Menus.

Certainly you have installed some or all modules from the Component Pascal Collection. Now you get a very long menu bar at the top of the BlackBox's window. I'm sure that you needn't the complete menu all the time. Would you like to switch the menu item off and on again? Here is a program which can do it.

CpcMenus uses the services provided by Ctls.

StdCoded File <=> PacCoded File (22 / 10 kByte - Release 15-Apr-2016)


By Stan Warford and Helmut Zinn

Named Integers in Component Pascal.

Here you found an implementation of named integers for Component Pascal without changing the original compiler. The benefit of named integers is self-documentation. Named integers are eliminating the need to explicitly assign constants to symbols. It makes the declarations simpler and more clear. It also reduces the likelihood of the programmer accidentally assigning the same constant to two symbols.

In general

  TYPE Color* = (red, blue, green);

is defined to be _exactly_ equivalent to

  TYPE Color* = INTEGER; CONST red* = 0; blue* = 1; green* = 2;

Named integers have none of the implementation problems of enumerated types. They are simply a syntactic sugar that provide an immense benefit of self-documentation for a very small price. They do not introduce a new type. Named integers are integers.

CpcPreprocessor doesn't use any other CPC services.

StdCoded File <=> PacCoded File (18 / 8 kByte - Release 7-Jun-2005)


By Gérard Meunier

Regular Lexical Analyzer.

CpcRegul is a lexical analyzer that can find and/or replace regular expressions in a text. It provides an application programming interface as well as a user interface. It is an advanced example of the Babel metacompiler.

Here, Babel is used three times at each request: firstly to analyze the regular expression, check possible syntax errors and generate a Babel definition document for this expression; secondly to compile the previous definition document and produce a compiler (in fact, one or two compilers, according to the expression); thirdly to parse the user text with this compiler and find occurrences of the regular expression. All this process is accomplished in a flash behind the screen.

CpcRegul uses the services provided by Babel and Util.

StdCoded File <=> PacCoded File (109 / 48 kByte - Release 15-Dec-2019)


By Robert D. Campbell

Search & Replace with wildcards and text attributes.

Module (Cpc)Search is a simple to use Text Search & Replace tool. It augments the supplied Find/Replace tool in two main ways: it keeps a record of the last few Search and Replace strings used, and it supports a rich set of wildcard search & replace options.

With this module you can find red 'cats' and replace them with italic 'dogs'.

CpcSearch uses the services provided by CpcControlTips.

StdCoded File <=> PacCoded File (93 / 37 kByte - Release 2-Jun-2017 - Chill 12)


By Robert D. Campbell

A minimalistic Spelling checker.

Spell checks the spelling of Texts.

Spell requires that Microsoft Excel is installed.

Spell is a minor modification of a module originally written by Oms (ToolSpell). It is published here by kind permission of Oms.

As well as actually checking spelling, Spell has the following set of features: {} .

It is already useful (I do use it), but I also publish it in the hope that someone will find the time to add some more features to it. I would like it to display a list of suggested corrections (which requires some knowledge of Excel and OLE automation, which I do not have), and to offer to make a selected correction (which requires some knowledge of TextModels and TextControllers; this I can possibly manage).

CpcSpell doesn't use any other CPC services.

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


By Koen Desaeger

Split a window and scroll the two panes independently.

The module CpcSplitter splits a window horizontally, and provides independent scrolling of the two panes. Programmers may find this useful: you can view the declaration section of a module in one pane while editing a procedure of that same module in the other pane.

CpcSplitter doesn't use any other CPC services.

StdCoded File <=> PacCoded File (23 / 10 kByte - Release 19-Mar-2007)


By Gérard Meunier & Helmut Zinn

Statistic of accessing the CPC website.

Would you like to know how many users visit this website? How many downloads they have done? Which subsystems belong to the top 10? Here you are. Here you find the access statistic of August 2003.

CpcStats uses the services provided by Pac, Babel and Util.

StdCoded File <=> PacCoded File (192 / 80 kByte - Release 3-Sep-2003)


By Robert D. Campbell

A Stylist is an object used to organise Rulers (TextRulers.Ruler) in a Document.

A Stylist is essentially a list of Rulers Styles and associated StdProps. A Stylist object offers three main facilities:

  1. It allows several Rulers to belong to a Style Set. Rulers are said to belong to the same Set if they are the SAME (which means that they have the same Style, and, optionally, equal StdProps). When Rulers share their Style not only do they have their tabs etc in the same place, but moving one Rulers tabs immediately moves the tabs of all the other Rulers in the Set.

  2. It allows each Set to be 'named' . It can be helpful to give each Set a meaningful name, such as 'Tabs @ 2 & 5 cm', or 'Main heading Ruler'.

  3. It can manage a Text's StdProps. These are associated with each Ruler and with each Style in the Stylist. They can then be automatically applied to the text immediately after each Ruler in a flexible variety of ways.

CpcStylists uses the services provided by Ctls.

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


By Ivan Denisov

Tiled interface with tabs for open windows.

Organize BlackBox aux windows in one or several flexible areas. All aux windows are presented in the tabs toolbar allowing to switch between them and close any window by click on a cross button.

CpcTabs doesn't use any other CPC services.

StdCoded File <=> PacCoded File (66 / 30 kByte - Release 3-Jan-2015)


By Kai Kietzke

Icon in System Tray.

I have worked out a little module that provides an icon in the system tray associated with any blackbox menu. The system tray is on the right side of the windows task bar.

You may also visit my website

CpcTray doesn't use any other CPC services.

StdCoded File <=> PacCoded File (11 / 6 kByte - Release 2-Jul-2008)


By Gérard Meunier

Where, Indexer of Source, Documentation & Symbol files.

CpcWhere creates on disk a database from which one can find very quickly any identifier defined or used in any source , documentation or symbol file, from its name or any part of its name. This version has a fast update process available and reads Unicode characters when scanning files.

CpcWhere uses the services provided by Ctls, Babel, Util and UnicodeMappings.

StdCoded File <=> PacCoded File (169 / 69 kByte - Release 29-Sep-2015)


By Juan Antonio Ortega, Robert D. Campbell and Helmut Zinn

Buttons, Arrows, Sets, Sliders, RealField and UnitField.

Subsystem Ctls implements a range of Controls, and some related functions for using them:

The last is supported by the module Units which supports a wide range of SI and non-SI units, and can be accessed by other applications.

Buttons are controls that use other singleton views to display the current state. They have primarily been implemented to create picture buttons but they are not limited to displaying pictures only. In fact any singleton view can be used as a button state. This implements Command Button Controls whose appearance is an arbitrary BlackBox View. It features an easy-to-use graphical interface for configuring the Buttons.

A set of sample Arrows has been included. It provides 9 preconfigured versions of view buttons. The arrow forms included are top, up, down, bottom, start, left, right, end, and circle (well, we know a circle is not exactly an arrow, but it's still useful).

Sets implements a control for SET-Variables.

Sliders contains a simple Slider Control, a TwinSlider for specifying INTEGER ranges, and a simple CHARacter Edit Field.

There are also controls for to display and handle simple Progress Bars as seen in many applications for long running commands. And last but not least there is a Trackbar & Mixer control.

Figures can be thought of as simplified inert Controls. Their main use to go onto Forms, but there is no reason why they shouldn't be used in any Container or Document. Their function is decoration.

Colour is a simple 'Property Editor' for updating the Color Property (part of Properties.StdProp) of items.

RealField and UnitField are modules that implements a Field, or 'Edit Field', Control similar to the standard BlackBox Field Control. This Control is limited in that it can only be linked to variables of type REAL, however it allows more options for formatting the REAL number.

The first download is the Chill part without obsolete files. The second download includes the obsolete files for backwards compatibility.

Ctls doesn't use any other CPC services.

StdCoded File <=> PacCoded File (597 / 218 kByte - Release 27-Feb-2018 - Chill 12)


By Gerhard Marent

Tables and other Controls Extensions.

Subsystem Ctlsx contains a collection of controls e.g. Buttons, Captions, Fields, Tables.

Ctlsx uses the services provided by Misc and CtlsxTables needs Excel 9.0.

StdCoded File <=> PacCoded File (258 / 108 kByte - Release 20-Jul-2020)


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

Last Updated 18th September 2023