Recommended Links

Libraries and Sources

The Sources Store for Modula-2 and Oberon-2 Programming Languages: description from homepage: "The purpose of this site is free propagation of any source code and documents related to Modula-2 and Oberon-2." They have quite interesting material available in the download-section, I think especially the work of Victor V. Sergeyev is interesting if you are using the XDS-compiler: have a look at a complete winsock- and ODBC-interface!Modula2.org offers some very interesting packages (especially for Windows-users of XDS or StonyBrook Modula-2) in the projects area.PMOS by Peter Moylan: description from homepage: "PMOS is a large library of Modula-2 modules, distributed in source form. Its primary purpose is to make it easy to write multitasking programs for real-time and/or embedded applications. However it also contains a number of modules of interest even if you don't want to write multitasking code: screen windows and screen graphics modules, various device drivers, and a variety of utility modules. PMOS is free for non-profit use."
Also from Peter Moylan: Modula-2 Numerical Analysis Software. Some good functionality if you need basic routines for doing e.g. statistics. The directory contains other sources like fragments written for the NetM2 project, modules for playing music via the PC-speaker (who remembers what that is?) and so on. The modules were mostly written for DOS compilers.ftp://ftp.psg.com/pub/modula-2/: A real modula-2 treasury! A FTP-Server kindly hosted by Mr. Bush. There are source code modules for Sets and Lists, compilers, example code and lots of packages and useful things. Have a look.
There are quite a lot of interesting Sources available from Jan Verhoeven's Modula-2 Pages. There are a lot of projects for Dos (FST) and Linux (Mocka) compilers there, so just have a look. I think especially the examples for low-level interaction of Modula-2 programs with some piece of hardware teach an interesting lesson. Most of the projects are distributed under the GPL. For example VGA lib 3: description from homepage: "VGALIB3 is a library for the FST (Fitted Software Tools) Modula-2 compiler, to work with VGA mode 12h (640 x 480 x 16). The library has routines for plotting, drawing lines, making boxes, writing to screen of text and CARDINALs and more. It consists of a DEF file, an M2O file, and a MOD file with FULL SOURCES. All critical routines are in inline ASM. VGALIB is FREE SOFTWARE as defined in the GNU General Public License."Schwarzer Kaffee, a SDL wrapper for the GNU Modula-2 compiler.xds-gtk2, a Modula-2 GTK+ binding for XDS Modula-2/Oberon-2.M2Collections, Modula-2 collections library. The library provides an API for collection ADTs, in particular: stacks, queues, double ended queues, priority queues, balanced binary search trees, patricia tries, dynamic arrays and hash tables to store arbitrary data.M2Regex, Regular expression library for Modula-2.M2Curses, Modula-2 bindings for the curses screen management library.RAMSES (Research Aids for Modeling and Simulation of Environment Systems) "is a generic programing, modeling, and simulation environment that allows you to solve a wide range of problems easily (Fischlin 1991). You can program or model and interactively solve non-linear differential equations, difference equations, and discrete event systems in any combination; size and complexity of your model is only limited by your computer's resources. RAMSES is based on the Modula-2 programing language (Wirth 1985, 1988) that supports the writing of simple, compact, well-readable, type-safe, modular and easily reusable programs that execute at high speed". Extensive documentation is available. You will need Stonybrook (Windows), p1 (Mac OS X) or EPC Modula-2 to use RAMSES with other operating systems than classic Mac OS (For the latter there is the free MacMETH Modula-2 which you can fetch from here).John Andrea's libraries and example code: quite a lot of reusable code, some really interesting things (for example a module for handling .bmp graphics).MAS: The "The Modula-2 Algebra System", description from homepage: "MAS (Modula-2 Algebra System) is an experimental computer algebra system, developed at the University of Passau. MAS combines imperative programming facilities with algebraic specification capabilities for design and study of algebraic algorithms. It contains a large library of implemented Groebner basis algorithms for nearly all algebraic structures where such methods exist. MAS further includes algorithms for real quantifier elimination, parametric real root counting, and for computing in (noncommutative) polynomial rings." As the original homepage at university of Passau disappeared, I am now linking to the university of Mannheim (Download MAS).Page Six is a service bot for IRC channels. Note from the developer: "Note that this bot isn't really meant for general distribution. However, feel free to view the source or contribute, if you feel the urge and want to play around with a Modula-2 project." In my opinion a very interesting project demonstrating the use of sockets with Modula-2. The bot is used in the Modula-2 IRC channel (a link to this channel can be found in the right column of this page).Rosetta Code "is a programming chrestomathy site. The idea is to present solutions to the same task in as many different languages as possible, to demonstrate how languages are similar and different, and to aid a person with a grounding in one approach to a problem in learning another". A lot of classic problems and their solutions are already there. The link points to the Modula-2 section which is growing steadily. Contributions are welcome.Modula2 Chess: A chess game for Linux written in Modula2. From the homepage: "This is an example of how you can use the Modula2 language to write more interesting programs than 'hello world'." The program was developed using the Mocka compiler. It was written by Javier Callón Álvarez.VUB Parallel Computing Laboratory: various modula-2 sources including 3 demo-games with complete sourcecode for XDS Modula-2. Have a look at their Modula-2 technology page! Beside of other interesting projects they provide Wimdows, a library written by Wim Devesse. Using it you can write Windows applications that take advantage of the graphics capabilities of Windows in an easy way for beginning programmers. It is focused on creating simple games and is used at Vrije Universiteit Brussel by participants of Practicum Structured Programming Modula-2. The main components of Wimdows are: Graphics functions for drawing geometric figures (lines, rectangles, circles, polygons, ...), working with bitmaps, control of the mouse and keyboard, menus, buttons and text boxes. The library was written for use with the XDS Modula-2 compiler.
A lot of interesting sources, pieces of code and algorithms written in Modula-2 are available from the archives of AMOK, a Modula-2 and Oberon club for users of the Amiga computers. A lot of the available files are not platform dependent (here is a list of contained things). You need a program able to unpack LHA archives, for example 7-Zip.
Pat Terry wrote an alternative library for FST Modula-2 wich extends the original libs coming with the compiler. Download via ftp: definition modules and object modules.Taak326b.zip: developed by K.H.M. de Jonge and J.H.D. Keukelaar. A library making use of the OO-extensions of newer versions of the FST-compiler. "Modeled after the Turbo C++ Class Library Definition from Borland International (1990).The Vector Board:: Modula-2 sources for different compilers and systems (Turbo Modula-2, Atari ST, CP/M), quite interesting. Here's the list of available files. They also still offer version 1.0 of FST Modula-2!
Mr. Kim Moser's site contains some older Modula-2 sources (written for the Logitech compiler) published under the GPL.Modula-2 page that offers a few simple examples: hello world, sum, factorial. the page contains lots of dead links!Chris Rathman wrote modula-2 code demonstrating OO Shapes. i didn't have time to take a closer look...Gregory S. Vigneault: a short piece of code called Quine, it's a so called "self-reproducing program". See versions in other languages at the Quine Page.