• Modula-2 FAQ

    From Rick Sutcliffe@rsutc@twu.ca to comp.lang.modula2,comp.answers,news.answers on Tuesday, November 11, 2003 10:45:21
    From Newsgroup: comp.answers

    Archive-name: computer-lang/Modula2-faq/part1
    Version: 2.28
    Last-modified: 2003 10 10
    Posting-frequency: Monthly


                    Modula-2 Frequently Asked Questions

    What is new in version 2.28(2003 10 10)?
    A couple of new websites have sprung up and are indicated in section
    4.1 and 4.2 One of the sites previously mentioned in 4.9 is gone, so
    the answers have been renumbered. What was in section 4.10 has
    vanished behind a firewayy (or into the bit bucket) so the rest of
    that section has been renumbered. Traffic to the Modula-2.com site is
    up again, and so is interest in universities printing the shareware
    text. The GNU Modula-2 version seems to be alive, and their web link
    has been alered slightly.

    What was new in version 2.27(2003 03 26)?
    Very little to be honest. The traffic to Modula-2.com has declined dramatically and few people seem to be reading the FAQ except for a
    handful of students. A new answer, A6 has been added in 1.11. An
    invalid Gardens Point URL has been changed. PMI has been removed. The StonyBrook Section has been revised with new information. We'll prune
    the dead stuff again in June, and no doubt make it a lot shorter.



    SUMMARY:
    1. Answers to many questions about Modula-2 as a programming notation
    may be found in the shareware textbook. As always, users should pay
    the shareware fee. See section 1.4.

    2. Answers to most other frequently asked questions about Modula-2
    will be collected by Rick Sutcliffe at Trinity Western University and
    included in this document from time to time as it is revised.

    3. Submissions should be mailed to -- rsutc@arjay.bc.ca
    Anyone making a submission guarantees that they have the right to do
    so (copyright holder, or information in the public domain.) and that
    the information is not from any source whose copyright lies with
    another.

    4. I will update this summary file and post to the newsgroups comp.lang.modula2 and to comp.answers and news.answers

    5. The latest version will always be available in a Nisus (Mac) form in http://www.arjay.bc.ca/Modula-2/m2faq.html.
    It should also be available from the site rtfm.mit.edu in plain text
    form as ftp://rtfm.mit.edu/pub/usenet-by-group/comp.answers/computer-lang/Modula2-faq/part1
    and as ftp://rtfm.mit.edu/pub/usenet-by-group/comp.answers/computer-lang/Modula2-faq/part2


    CONTENTS:
    Part 1
    1. WHAT IS MODULA-2?
    2. WHERE IS MODULA-2 DISCUSSED?
    3. WHERE CAN I GET MODULA-2 COMPILERS?
    Part 2
    4. WHERE CAN I GET SOURCE CODE, OTHER INFO?
    5. SPECIFIC QUESTIONS ON CODE AND ALGORITHMS
    6. WHAT ARE SOME REFERENCE MATERIALS ON MODULA-2?
    7. REVIEWS
    Appendix: AUTHOR INFORMATION AND DISCLAIMERS


    1. WHAT IS MODULA-2?
    A. Modula-2 is a programming notation that corrects some of the
    deficiencies of Pascal. It is suitable for learning programming, for
    large projects written and maintained in the fashion of professional
    software engineers, and for real time embedded systems. Modula-2 is
    small, expressive, easy to learn, to write, and to read.


    1.1 Who developed Modula-2?
    A. Modula-2 was developed by Niklaus Wirth at ETH in Zurich,
    Switzerland in the late 70's. Wirth also developed Algol-W, Pascal,
    Modula, and Oberon.


    1.2 Where is this language described?
    A. In Programming in Modula-2 3rd edition published by
    Springer-Verlag in 1985. For the purposes of distinguishing this from
    later variants, this description will be referred to herein as
    classical Modula-2.


    1.3 How do you pronounce Herr Wirth's name?
    A. It is incorrect to call him by his value (worth.) Instead his name is veart.


    1.4 Can I get a simple introduction to ISO Modula-2?
    Yes, the latest revised and corrected edition of the shareware text
    as of 2003 10 10 is at  http://www.arjay.bc.ca
    Mirrors (for the text, not the FAQ--some may be out of date):
    1. TWU Main Site http://www.twu.ca/rsbook/index.html
    2. TWU CS Students (Internal only) http://www.csc.twu.ca/rsbook/index.html
    3. Brighton, UK  http://burks.bton.ac.uk/burks/index.htm


    1.5 How does Modula-2 fit into the language zoo?
    A. It is a descendent of Pascal and Modula, and one predecessor of
    Modula-2+, Modula-2*, Modula-3, Oberon, Oberon-2 (Component Pascal),
    and various object oriented versions of these. The latter languages
    are not replacements for Modula-2, merely later notations in the
    same family, having strengths and weaknesses of their own. Modula-2
    is sometimes classified with Ada and C as the trio of modern
    languages in view of their expressive power. Modula-2 is smaller and
    more readable than either.


    1.6 What are the differences between Modula-2 and Standard Pascal?
    A. Modula-2 has separately compiled library modules, and makes much
    less use of blocks (begin...) than Standard Pascal. Identifiers are
    case sensitive; there is no goto label; and I/O is in libraries
    rather than built in. The IF statement is more versatile; and there
    are facilities for concurrent programming via coroutines. The ISO
    standard version has OO and Generics. Extended Pascals may have some
    of these features.


    1.7 What is ISO Standard Modula-2?
    A. A committee of ISO JTC1/SC22/WG13 with delegates from several
    countries met starting in 1987 to work on a standard description of
    Modula-2 and a set of standard library modules.

    A2. The official home of the ISO Modula-2 working group WG13 is at http://sc22wg13.twi.tudelft.nl/

    1.7.1 What is the status of ISO Standard Modula-2?
    A. The international standard (IS 10514) has been voted on and is now official. The Object oriented extensions and Generic extensions have
    also been voted on and are official. The committee itself has been
    disbanded, its work complete.

    1.7.2 Where can I get the Modula-2 standard?
    A1. Contact your national standards body or ISO (the publisher.)

    A2. For an older version, try looking in ftp://ftp.mathematik.uni-ulm.de/pub/soft/modula/standard/draft4/

    1.7.3 What format is the standard document in?
    A. Latex.

    1.7.4 Who is the convenor of the standards group (WG13)?
    A.Martin Schoenhacker of Vienna was the last convenor.

    1.7.5 When was the last WG13 meeting?
    A1. It was March 17-18 1997 in Linz, Austria. For more details,
    follow http://sc22wg13.twi.tudelft.nl/docs/meetings.html

    1.7.6 When is the next WG13 meeting?
    A1. No meeting is currently on the schedule. One may be held if
    necessary to do routine maintenance on the standards. In the
    meantime, the committee has been disbanded.

    1.7.7 Will I be able to read the standard?
    A1. The concrete syntax is written in a variation of EBNF (Extended Backus-Naur Formalism) and should be accessible to most.

    A2. Much of the base document's details are written in VDM-SL (Vienna Development Method - Specification Language) which is a formalism for
    giving a precise definition of a programming language in a
    denotational style. It is worth learning VDM-SL if you plan to write
    a compiler or use formal methods to do any design work.

    1.7.8 Can I at least get electronic copies of the definition modules?
    A. Yes, in ftp://FTP.twu.ca/pub/modula2/ISOLibraries/ISODEFMods/ or ftp://ftp.mathematik.uni-ulm.de/pub/soft/modula/standard/libdefs/

    1.7.9 Can I get ISO library code to port?
    A. Yes, this is available from Rick Sutcliffe, the FAQ maintainer. He
    has done an ISO I/O library for the Mac, and StonyBrook has ported
    this to their system. Anyone else is welcome to do a port provided:
    (1) TWU gets a license to the software produced (2) All code changes
    are marked and submitted to Rick Sutcliffe for the benefit of anyone
    else who wants to do a port.

    1.7.10 Can I get copies of the grammer?
    A1. Yes, in http://www.twu.ca/rsbook/Appendices/Ap3.html
    A2. For classical Modula-2, see also Coco (section 4.9)
    A3. There are nice syntax diagrams for classical Modula-2 in http://cuiwww.unige.ch/db-research/Enseignement/analyseinfo/Modula2/BNFindex.html
    and there are syntax diagrams for ISO Modula-2 stored at http://www.twu.ca/rsbook/Appendices/Ap2.html


    1.8 What difference is there between classical and ISO Modula-2?
    A. ISO Modula-2 has resolved most of the ambiguities in classical
    Modula-2. It adds the data type COMPLEX and LONGCOMPLEX, exceptions,
    module termination (FINALLY clause) and a complete standard I/O
    library. There are numerous minor differences and clarifications.

    1.8.1 What else has WG13 done?
    A. WG13 has completed two additional standards (separate from the
    main one) for (a) object oriented Modula-2 and (b) generic
    programming facilities. Older versions of the generics proposal are
    stored in the directory ftp://FTP.twu.ca/pub/modula2/WG13/

    1.9 What is (was) Turbo Modula-2
    A. Borland prepared CP/M versions of Modula-2 and sold them for a
    time in Europe (also in North America via a distributer.) One of
    these versions later migrated to become TopSpeed Modula-2.

    1.10 What is (was) Top Speed Modula-2
    See also 1.9. Eventually, Top Speed merged with Clarion, a maker of
    database products, who used Modula-2 as their DB language, and for a
    time sold Top Speed separately. Later still, this became
    SoftVelocity, but the Modula-2 compiler has vanished. A fuller
    history is available at http://www.attryde.com/clarion/.

    1.11 Where and for what is Modula-2 used?
    A1. Modula-2 is widely used for teaching the fundamentals of sound
    programming techniques, data structures, and software engineering in
    many parts of the world. It has been the language of choice in much
    of Europe, though Java and C++ are making inroads. Modula-2 has
    features that make it superior to other languages for large projects
    and for programming and real time controllers.


    A2.Here is a reply by Andrew Trevorrow (akt@kagi.com) who is the
    author of the Macintosh programs written in p1 Modula-2: OzTex
    (standard Tex implementation on the Mac) X-Words (a meta-Scrabble
    word game), Anagrams (a fast and friendly anagram generator), LifeLab
    (a software laboratory for 2D cellular automata.) His home page is: http://www.trevorrow.com/

    "Back in 92-93 I worked for the Australian National Uni's Research
    School of Earth Sciences writing Noble, a large suite of programs to
    control mass spectrometers and analyze all the data. Everything was
    written in Modula-2 (the only reason I took the job!).
    In fact, one of the reasons I decided to try making a living from
    shareware was so that I could keep using Modula-2."

    A3. General Motors and its subsidiary Delco do their programming in
    General Motors Modula-2.

    A4. Here is a message sent in by a maker of test equipment:
    Our BoardWizard range of test equipment has compilers,pseudo-code
    interpreters and a complete test operating system written in M2. The
    code was written for one tester in 1987 and has been maintained from
    that date to the present. New tester models have added and new
    interface and UI code has been written, indeed sections have been
    completely re-written but much of the core test logic is untouched
    since about 1990 when I shifted to management. Much of the code is
    unknown to those who maintain it - yet when i look at it after
    several years I can still explain it to others even though comments
    are sparse. I believe that that is the hallmark of a great
    programming language. (Emphasis added.)
    Dave Appleton,
    Technical Manager
    Goldtron Technologies Tel : (065)-870-9886
    (Ex- Proteq Technologies) Fax: (065)-777-2118
    26 Ayer Rajah Crescent #07-01 www: http://www.proteq.com.sg Singapore 139944                          

    A5. Here is an answer sent in by a developer:
    Magic Mouse Productions
    12615 Sir Francis Drake Blvd.
    Inverness, CA 94937 USA
    1-415-669-7010
    http://www.magicmouse.com

    The following products were made using Modula-2. The programs are
    all about 100,000 lines long, and 99% Modula-2, with about 1%
    assembler code for performance in critical areas.

    Flying Colors 2, Anime Designer DragonBall, Action Designer
    Ultraman, Tamagotchi
    Sketch, Curious George Paint & Print Set -- all paint and
    creativity programs.
    Gorgeous Mail -- a new years card making program
    JuniorNet web activities -- various creativity activities for
    JuniorNet web subscription service
    Discus -- CD label making program
    Web Workshop Deluxe -- Web site design product

    A5A. Here is a later rant sent in by the same person.
    We make commercial software using Modula-2, and have been doing so
    since the first appearance of the Logitech "Multiscope" compiler
    about 17 years ago, and about a million lines later we are still
    using Modula-2 to great effect.

    I am proud to announce that Web Workshop Pro, a kids website editor,
    is about to go "golden" and be released to the public. The program,
    written in 98% Modula-2 (with a small assembler section), is
    reliable, fast, and very efficiently coded. An almost identical
    product in feature set and user interface style (but not as good)
    called Site Central was written in C, and is 4 times larger in
    executable. There is no better way to compare languages than to see
    two similar products implemented in the same environment (macintosh + windows), and see the result.

    We use the excellent StonyBrook compiler (a fully integrated
    development environment) for Windows, and the wonderful p1 compiler
    under the Macintosh MPW development environment.

    We have a porting tool which converts between the two compilers,
    although recent improvements to the StonyBrook compiler make it
    almost possible to have identical source code.

    We have implemented a quickdraw emulation layer for windows which
    allows programs to run identically between macintosh and windows
    platforms. This very layer eluded a very large company years ago,
    and is crucial to having a single code base that operates on the mac
    and windows in an identical manner.

    100,000 lines of code, about 10 months to do. one programmer. Less
    than 100 total bugs. I have an 800kb demo if anybody wants to have
    one e-mailed.

    Until I get a chance to build a compiler for my BEADS language, which
    will reduce programming effort by at least 10:1, Modula-2 is the
    simplest, cleanest, easiest to read,
    tends-to-build-a-reliable-product language on the planet. 

    Java stinks! Modula-2 rules! (editor's note: Ouch!)



    A6. Frank Schoonjans mention MedCalc (statistical software for
    Windows, http://www.medcalc.be, developed using Stony Brook Modula-2,
    his main work.

    A7. The following survey results were once posted by Mat. Maher ssu94114@reading.ac.uk

    ORGANISATION LOCATION WORK COMPILER
    Statoil Norway StonyBrook
    Inst. for Space Nerology Austria datafile conversion TopSpeed
    dataviewers
    Boeing Washington Aerospace Eng. p1(MAC)
    CDSS UK embedded control sys. TopSpeed
    for submarines
    (self-employed) UK embedded Pcs and TopSpeed
    pc-like chips
    (manufacturer) Finland, 8051 embedded control Mod51
    S.Africa, 
    Australia,
    NZ, USA   
    Pacific Software California Point-Of-Sale systems -
    Tele-Soft S. Africa Scientific CAD progs TopSpeed
    Databases
    (confidential) UK Instrumentation & TopSpeed &
    telemetry Custom tools
    USA Dept. of Energy Idaho Reusable components StonyBrook
    Idaho Nat. eng. labs systems programming
    Locheed Idaho technologies company
    Applied software resuse Products
    GiaStar Ltd UK Satcoms/Comms. Elect. TopSpeed
    design & m/facture.
    University of Reading UK Teaching,embedded ctrl TopSpeed University of Loughborough UK StonyBrook
    and Hertsfordshire TopSpeed
    (sole trader) UK Electronic Design TopSpeed
    Atomic Energy of Canada Canada Shutdown system for prototype in
    Ltd. (AECL) nuclear reactor TopSpeed
    final version in
    Hicross (HiWare) Wallac Oy Finland beta/gamma counters Logitech,
    control & data acquis. Multiscope Inspectron AG Switzerland remote surveillance Logitech,
    Multiscope
    Bank of New York USA funds transfer ModulAware.com
    (HP OpenVMS Alpha)
    customer enquiries Logitech (VAX/VMS) (freelance) Motorola IC production Logitech
    line tools. (Asia)
    Dexdyne Ltd UK Single-board Pcs & TopSpeed
    applications.
    (freelance) Australia Shareware p1 (mac) Multi-Master AS Norway Embedded systems, Logitech,
    remote control & acquis. Multiscope (confidential) room acoustic sim & TopSpeed
    (audio) virtual reality

    A7. Finally, the keeper of the FAQ notes that he still gets contracts
    to evaluate Modula-2 code in takeover situations and the like.
    Details cannot be made public, but include code written for
    telecommunication and other automatic systems.


    1.12 Why do universities use Modula-2 for teaching instead of C or C++?
    A1. Modula-2 is a type-safe language and its compilers will therefore
    catch many errors that otherwise show up at run time. While
    professional programmers need to learn C++ because it is commonly
    used, it is important to begin a discipline of deliberate, engineered programming at the outset. Modula-2 is easier to write in, easier to
    read (it reads left to right) and easier to debug. It lends itself
    well to software eng
    neering. Modula-2 is a higher level language
    than C++, particularly with respect to pointers, all of which have
    types that depend on what is pointed to, and that can be treated as
    addresses only by flagging this fact in the code. A good computing
    science department (such as the one at Trinity Western University,
    where I teach,) tries to inculcate a way of thinking (as a software
    engineer, not a hacker) and beyond that, a breadth of ideas. At TWU
    C, C++, Java, Prolog and other languages, are taught in appropriate
    courses, and on a variety of platforms but not to beginners. Frankly,
    if I had to switch, my first choice would be Ada or Oberon, and my
    second Java (if it ever became cross platform.) If I had to try
    teaching beginners C++, I would retire.

    A2. Popularity no more implies soundness or superiority when
    considering tools such as Modula-2 and C++ than it does when
    considering hardware (Pentium vs PowerPC), operating systems (Windows
    vs Mac) and applications (Word vs Nisus). Marketing means selling the
    sizzle of appearance not the steak of content; those who know this
    and can apply it consistently win the marketing wars with inferior or
    even poor products. The market situation is no reason to give up on
    the basics of sound tools and methodology. If anything the cirisis
    implied by the inability of large companies to maintain poorly
    designed and bloated software and OSs implies that the industry needs
    to return to basics before it is going to advance much farther.


    1.13 Why is Modula-2 a good language for large commercial projects?
    A1. It supports modular design which reduces errors and cuts down on maintenance time. This also allows platform dependencies to be
    isolated, increasing portability. I/O is found in several
    type-specific modules, so linkers only patch in the I/O code that's
    needed, making programs smaller and faster. This is in sharp contrast
    to the versatile but resource hungry printf in C.

    A2. see: Griffith, Laurie Modula-2 is three times less error prone
    than C, Proceedings of the Second International Modula-2 Conference, Loughborough University of Technology, UK, September 1991, pp 332-338.

    1.14 Where do I get information on YAFL?
    A. This is yet another OO and Generic derivative of Modula-2. The
    homepage for the language is at http://www.phidani.be/yafl/index.html


    2. WHERE IS MODULA-2 DISCUSSED?

    2.1 COMP.LANG.MODULA-2
    This is an internet newsgroup for questions, answers, and discussions
    on Modula-2. You may read it under this name on any machine on which
    you have a news account.


    2.1.1 How do I post a message to comp.lang.modula2?
    A. Post it directly into that group using a news program on any
    computer connected to the network.

    2.1.2 How do I retrieve old messages from comp.lang.modula2?
    A. Your local news server probably keeps old messages only for a few
    weeks. You should be able to mark the entire group as unread and
    browse whatever is available there.


    2.2 Amiga lists

    2.3.1 A general list for Amiga Modula2/Oberon programming. This is
    available in a similar manner at amiga-m2@virginia.edu. It is not
    oriented toward any specific compiler.To subscribe, send mail to majordomo@virginia.edu containing the message "subscribe yourid@youraddress.yourdom amiga-m2".

    2.2.2 A mailing-list for the Amiga Turbo Modula-2 Compiler written by
    Amritpal S. Mann. To subscribe, send a message to
    maillist@econet.demon.co.uk with SignOn turbo-list as the Subject.
    Once subscribed, you will receive a copy of all messages sent to the
    address turbo-list@econet.demon.co.uk.



    2.3 Gardens Point Modula-2
    To join the GPM mailing list, send mail to majordomo@dstc.qut.edu.au
    with the subject line blank and the body
    of the message containing:
    subscribe gpm
    info gpm
    end
    Mail sent to gpm@dstc.qut.edu.au gets automatically forwarded to all
    subscribers on the list. The development team are of course subscribers.


    2.4 Win32
    To join, send mail to listserver@nhm-wien.ac.at
    with a blank subject line and the body Subscribe m2-win95-nt-l 
    Maintainer: Peter Stadler


    2.5 ModulaTor
    This is a regular publication by Guenter Dotzel of ModulAware.
    Back issues are available at: http://www.modulaware.com/mdltr_.htm


    3. WHERE CAN I GET MODULA-2 COMPILERS?

    3.1 Where can I get commercial Modula-2 compilers?

    In this section, the listings are by name of the manufacturer (marked
    M) or distributor (marked D.)


    A+L AG
    activity D
    products Compilers, applications, and books.
    platforms various
    office Daderiz 61
    CH-2540 Grenchen
    Switzerland
    contact Albert Meier
    e-mail aplusl@spectraweb.ch
    voice +41/65/52 03 11
    fax +41/65/52 03 79


    Excelsior, LLC (replaces XDS)
    activity M
    products Native XDS-x86 - Modula-2/Oberon-2 2.32 compiler for x86
    (Windows, OS/2, Linux)
    XDS-C - Modula-2/Oberon-2 "via C" cross compiler (multiple platforms)
    H2D (freeware) translates C header files to M2 Def Mods
    Portable run-time library in C source code form
    POSIX and Win32 API definition modules platforms PC/OS/2 V3
    V4 (Warp), PC/Win95, PC/WNT PC/Linux,
    Sun/Sparc Solaris, Sun/Sparc SunOS, HP PA-Risc/HP-UX,
    others on request. (Mac no longer supported.)

    e-mail info@excelsior-usa.com
    also sold by ModulAware, and Real Time Associtaes
    check the shareware/demo section (below) for product availability Excelsior WWW home page:
    http://www.excelsior-usa.com/
    fully functional evaluation kits are available from the site
    also see ModulaWare, and Real Time Associates for product availability


    Gardens Point
    activity MD
    products Gardens Point Modula-2
    platforms Various Unix, including Linux and FreeBSD, DJGPP, EMX (OS/2)
    and MS-DOS (no Mac)
    office Queensland University of Technology
    Gardens Point Branch
    2 George Street
    POB 2434 Brisbane
    Queensland Australia 4001
    contact John Gough
    e-mail GOUGH@qut.edu.au
    contact Jeffrey Ledermann
    e-mail lederman@dstc.qut.edu.au
    web       http://www.citi.qut.edu.au/research/plas/projects/gardens_point_modula.jsp voice +61 7-864-2132
    fax +61 7-864-1801
    see mail list and net sections


    Mandeno Granville Electronics Ltd
    activity MD
    products Mod51 : 80x51 Cross Compiler, ISO extensions
    Optimised for Embedded Control, Includes some
    IEC1131 Extensions.
    DbgX51 : Remote Debugger for Mod51 Compiler
    IcePGM : ICE and Programmers, for FLASH cores,
    using Mod51 platforms DOS Hosted
    office 128 Grange Rd
    Auckland 3
    New Zealand
    contact
    e-mail Mod51@DesignTools.co.nz
    voice +64 9 6300 558
    fax +64 9 6301 720
    web       http://www.designtools.co.nz/

    The Mill Hill & Canterbury Corporation, Ltd.
    activity MD
    product Canterbury Modula-2 for OS/2 ( PIM, non-ISO,
    object oriented extensions similar to Oberon-2,
    SOM/WPS and Presentation Manager APIs )
    platform OS/2
    product Canterbury Modula-2 for Java 1.1 or 1.2 ( PIM, non-ISO,
    object oriented extensions similar to Oberon-2 )
    platform Any operating system with Java, such as
    Windows-95/98/NT, OS/2, MacOS (incl. Metrowerks), Unix etc. product NITEK MATHPAK 87/32 for Canterbury Modula-2 OS/2
    platform OS/2
    contact S.Neuhoff
    e-mail mhc@webcom.com
    WWW       http://www.mhccorp.com/modrelease.html
    demo      http://www.webcom.com/mhc/java.html
    office P.O.Box 4310 Colchester CO12WL England


    ModulAware
    activity MD
    prod/plat Compaq OpenVMS Alpha: Modula-2 and Oberon-2
    64 bit native-code compiler, MaX V5.02 and A2O V3.0, and
    64 bit Oberon System V4
    Compaq OpenVMS VAX: Modula-2
    32 bit native-code compiler, MVR V4.16
    office1 ModulAware
    La Chanenche
    F-04340 Meolans-Revel
    France
    tel/fax +33 492.813 099
    contact Guenter Dotzel
    e-mail    &#103d@modulAware.co&#109 web       www.modulaware.com


    p1 GmbH
    activity MD
    products MPW and Metrowerks Code Warrier hosted ISO compliant compilers
    NOTE: Current versions of MPW have odds and sods for ISO Modula-2
    written by R. Sutcliffe, for your editing enjoyment
    platforms Macintosh
    office Hogenbergstrasse. 20
    80686 Munich
    Germany
    contact Elmar Henne
    e-mail eh@p1.space.net
    voice +49 89-546 13 10
    fax +49 89-580 25 97
    web       http://www.awiedemann.de/compiler/index.html


    Real Time Associates Ltd.
    activity D
    products Compilers, books, and training courses
    platforms numerous
    office Canning House 59
    Canning Road Croyden Surrey
    CR0 6QF UK
    Tel: +44 20 8656 7333
    Fax: +44 20 8656 7334


    Stony Brook Software
    activity MD
    products Stonybrook Modula-2 ISO compatible. (Environment, editor,
    resource editor, librarian, context sensitive help, optimizing compiler,
    linker, debugger, many extra libraries, including COM, RTL sources)
    Also offers Pascal+
    platforms 16bit DOS, 32bit DOS extended, 16bit Windows, 32bit Windows
    32-bit Linux on IA-32 processors, 32-bit Solaris/SunOS on SPARC processors.
    office 187 E. Wilbur, Suite 4
    Thousand Oaks
    CA 91360, USA
    contact Norman Black
    e-mail    sales@stonybrooksoftware.com
    Home page: http://www.stonybrooksoftware.com
    voice +1 (805) 496-5837
    BBS +1 (805) 379-3357
    FAX +1 (805) 496-7429


    TERRA Datentechnik
    activity MD
    products Logitech/Multiscope Modula-2 and support
    Distributor for Stony Brook Modula-2 (see listing)
    Logitech compatible libraries for Stony Brook Modula-2
    Real and protected mode ROM tools for 80x86 based embeeded
    Modula-2 systems
    TERRA M2VMS/Alpha and M2VMS/VAX
    platforms 16bit DOS, 32bit DOS extended, 16bit Windows, 32bit Windows,
    DEC OpenVMS/Alpha and OpenVMS/VAX
    office Bahnhofstrasse 33b
    CH-8703 Erlenbach
    Switzerland
    voice +41 01 910 35 55
    fax +41 01 910 19 92
    bbs +41 01 910 35 31
    e-mail M2Master@TerraTerra.ch
    web       http://www.TerraTerra.ch/





    3.2 Where can I get a free/shareware compiler on the net?


    Fitted Software Tools (FST) Modula-2 for DOS
    ftp://ftp.psg.com/pub/modula-2/fst/fst-40s.lzh
    contact: Roger Carvalho
    e-mail: res09tkd@verizon.co
    Note: This compiler was developed by Roger Carvalho but is no longer
    actively supported. It essentially conforms to PIM version 3, but also
    supports some simple and interesting OOP extensions.
    P. O. Box 867403 Plano, TX 75023 USA
    Warning: A reader cautions that FST may not work at all if you have
    an AMI BIOS.

    GCC Version
    Title: m2f
    Version: 4.2
    Entered-date: 5NOV01
    Description: a complete Modula-2 compiler based on 2nd Edition PIM
    Keywords: Modula-2 compiler linux
    Author: gaius@glam.ac.uk (Gaius Mulley)
    Maintained-by: gaius@glam.ac.uk
    Site: http://floppsie.comp.glam.ac.uk
    Platforms: gcc
    Copying-policy: GPL
    available in source & binary in rpm or tar.gz format from
    Features:
    + Full debugging via emacs/gdb
    + -students flag performs extra semantic checking
    for dangerous novice programming styles.
        
    NOTE: Mide3de2 is a windows IDE for the FST modula-2 compiler. It is
    available from http://sourceforge.net/projects/mide3de2/

    GNU Version
    An earlier attempt to do this flopped, but a new attempt
    is being coordinated at http://floppsie.comp.glam.ac.uk/Glamorgan/gaius/web/GNUModula2.html

    Gardens Point Modula-2 for DOS, Linux and FreeBSD
    ftp://ftp.fit.qut.edu.au//pub/gpm_modula2/
    ftp://ftp.psg.com/pub/modula-2/gpm
    (The EMX version runs under OS/2 in protected mode and can be used to
    generate OS/2 PM applications. It relies on the GNU tools from the EMX
    package ported by Eberhard Mattes
    mattes@azu.informatik.uni-stuttgart.de which can be found at: ftp.uni-stuttgart.de/pub/systems/os2/ and various
    other mirror sites.

    MacLogimo for the Macintosh
    ftp://ftp.psg.com/pub/modula-2/mac/maclogimo/

    MacMETH Modula-2 for Macintosh
    http://www.ito.umnw.ethz.ch/SysEcol/SimSoftware/SimSoftware.html
    It's also available on CD from: http://www.celestin.com/
    Note that MacMETH is also released as part of RAMSES http://www.ito.umnw.ethz.ch/SysEcol/SimSoftware/SimSoftware.html#RAMSES.
    RAMSES provides a full featured programming environment for the Macintosh, containing all of MacMETH (compilers, linkers, symbolic break debugger,
    macro editor or language support for Alpha editor) plus hundreds more of
    libary modules useful in the context of programing and for scientific applications. RAMSES contains also the 'Dialog Machine', a platform
    independent GUI (see http://www.ito.umnw.ethz.ch/SysEcol/SimSoftware/RAMSES/DialogMachine.html). 'Dialog Machine' implementations exist for MacOS, GEM (no longer
    available), Windows (3.1 .. up to current versions), and Unix. All
    software we have developed, is offered via the internet as freeware.
    Contact: Andreas Fischlin andreas.fischlin@ito.umnw.ethz.ch

    Megamax Modula-2 for the Atari
    This is freeware now and comes with complete source including
    compiler. It runs on all Atari Computers an compatibles and on
    emulators such as MagicMac (Macintosh) and MagiCPC (PC-
    compatibles). The documentation is entirely in german. Available
    from: ftp://ftp.fu-berlin.de//atari/programming/modula/Megamax_Modula-2_DevEnv.ZIP

    MOCKA - Modula Compiler Karlsruhe (Non ISO)
    Universitaet Karlsruhe
    Institut fuer Programm- und Datenstrukturen
    Vincenz-Priessnitz-Strasse 3
    D-76128 Karlsruhe (FRG)
    Phone: *-49-721-608 6088 FAX: *-49-721-691462
    contact: Thilo Gaul
    email: [modula|gaul]@ipd.info.uni-karlsruhe.de

    SUN 4 | SUN OS | SPARC |
    SUN 4 | Solaris2.x/SunOS 5.0| SPARC |
    DEC Station | ULTRIX | R3000, R2000 (MIPS) |
    Silicon | IRIX | R3000, R2000 (MIPS) |
    Graphics | | |
    Sony NEWS | News | MC 68020 with 68881 |
    SUN 3 | SUN OS | MC 68020 with 68881 |
    HP 9000/300 | HPUX | MC 68020 with 68881 |
    HP 9000/700 | HPUX | C back end |
    RS6000 | AIX | C back end |
    PC | Linux | 80386 | +
    PC | 386BSD | 80386 | +
    C-back end | UNIX | different |
    translates | | |
    M-2 To C | | |

    The versions marked with a + are free; no order form must be sent, no
    license fee to be paid. If you use them, please send an email to modula@ipd.info.uni-karlsruhe.de.
    For more information have a look to
    http://i44w3.info.uni-karlsruhe.de/~modula/
    See also ftp://tsx-11.mit.edu/pub/linux/packages/modula-2/ or ftp://ftp.informatik.hu-berlin.de/pub/os/linux/mirrors/tsx-11.mit.edu/packages/modula-2/
    for a Linux version.


    Ulm's Modula-2 System m2c (non-ISO)
    web page:  http://www.mathematik.uni-ulm.de/modula/
    all distributions come along with all sources which may be
    freely distributed under the terms of the GNU General Public License
    SPARCv8 / Solaris 2.x
         ftp://ftp.mathematik.uni-ulm.de/pub/soft/modula/ulm/sun4/
    MC68020 / SunOS 4.x
         ftp://ftp.mathematik.uni-ulm.de/pub/soft/modula/ulm/sun3/
    contact: Andreas Borchert borchert@mathematik.uni-ulm.de

    Excelsior, LLC
    ( Windows 95/NT, OS-2, Linux native code and "via C" compilers. ISO compatible.)
    Makes demo and pre-release versions with some restrictions available.
    The download site for all versions is:
    http://www.excelsior-usa.com

    M2Amiga (Open source Modula-2 Compiler for the Commodore Amiga)
    Sources and Binaries can be obtained from http://m2amiga.claudio.ch/



    3.3 How about a Summary of Commercial ISO Products for the Major
    Microcomputer platforms?

    MS-DOS:
    GPM, ModulAware, Stony Brook
    Windows95/NT:
    Stony Brook, XDS
    OS/2:
    Mill Hill, XDS
    MacOS:
    p1

    3.4 Is there such a thing as a decompiler for Modula-2?
    Nope. But feel free to write one. Be sure to include a facility to
    produce the planning
    documents from which the Modula-2 code could be constructed and one
    to find out what
    the users wanted before the planning documents were written.

    3.5 Is there any other free or cheap stuff available?
    A1. The ISO modules are; beyond that, contact the manufacturer.

    A2. BURKS (the Brighton University Resource Kit for Students) is a non-profit set of 2 CDs available from the University of Brighton (UK) or the George Washington University (USA), price UKP 5.00 / US $8.50 (plus shipping).
    Now in its third year, the current (3rd) edition has kindly been sponsored
    by GEC-Marconi and ROCC Computers.

    Aimed at Computer Science students, it provides around 1.1Gb of material including compilers, tutorials and reference material for over 20 programming languages; a copy of the Free Online Dictionary of Computing with over 11,000 definitions; a Linux distribution, together with a set of Linux manuals; FAQs, tutorials and specifications for Internet and PC related topics (e.g. HTML, FTP, XMS, Winsock, storage devices, modems...), and a large selection of
    MS-DOS and Windows software.

    Modula2-related material includes the FST and GPM compilers, Rick Sutcliffe's "Modula-2: Abstractions for Data and Programming Structures", the Coronado tuorial, the Modula-2 FAQ, and the GPM Language Reference Manual.

    The entire collection is available online at http://burks.bton.ac.uk/. Modula2-related material is at http://burks.bton.ac.uk/burks/language/modula2/. Ordering information (including shipping costs to various destinations)
    is also available online (at http://burks.bton.ac.uk/ordering.htm).

    --
    Rick Sutcliffe Professor Math/Cmpt Trinity Western University. Try <http://www.arjay.bc.ca> for Christian SF, books on Modula-2 and
    Ethics in Technology. Philology site at <http://www.opundo.com>
    --- Synchronet 3.18b-Win32 NewsLink 1.113
  • From Rick Sutcliffe@rsutc@twu.ca to comp.lang.modula2,comp.answers,news.answers on Tuesday, November 11, 2003 10:45:22
    From Newsgroup: comp.answers

    Archive-name: computer-lang/Modula2-faq/part2
    Version: 2.28
    Last-modified: 2003 10 10
    Posting-frequency: Monthly

    Modula-2 Frequently Asked Questions Part 2


    4. WHERE CAN I GET SOURCE CODE, OTHER INFO?

    4.1.1 Is there source or other info available on the net?
    A. Here are some net sites I have accessed at one time or another. I
    am not sure if all are still available or what is in them. ftp://ftp.psg.com/pub/modula-2/
    http://www.arjay.bc.ca/Modula-2/m2faq.html ( Home of this FAQ) ftp://ftp.inf.ethz.ch/pub/
    ftp://NIC.SWITCH.CH
    ftp://ftp.mathematik.uni-ulm.de/pub/soft/modula/

    WWW sites http://dir.yahoo.com/Computers_and_Internet/Programming_and_Development/Languages/Modula_2/

    http://i44www.info.uni-karlsruhe.de/~modula

    http://modula2.org

    http://cs.ru.ac.za/homes/cspt/modula2.htm

    4.2 What other FAQs or lists of pages are available?
    A1. http://burks.bton.ac.uk/burks/language/modula2/index.htm
    A2. http://dmoz.org/Computers/Programming/Languages/Modula-2/Compilers/ A3http://murray.newcastle.edu.au/users/staff/peter/m2/Modula2.html A4http://www.unet.univie.ac.at/~a9406973/modula2/

    4.3 Where can I find graphics libraries, etc?
    A. Try the PMOS library for various platforms at one of the following sites:
    ftp://ftp.psg.com/pub/modula-2/code (North America) ftp://cs.ru.ac.za/pub/languages (South Africa) ftp://dutiba.twi.tudelft.nl/pub/modula2 (Western Europe) ftp://ftp.cnit.nsu.ru/pub/msdos/programm.ing/modula2 (Eastern Europe).

    4.4 Are there any mathematical libraries available?
    A1. See Numerical Procedures in Modula-2 -- authorized translation of Numerical recipes in Pascal from PolyWare (Klara Vancso):
    klarav@telic.nl (work) OR k.vancso@tip.nl (home) The CD-ROM has
    the Modula-2 sources. See http://www.nr.comNote that sources given in
    this book are of the "quick and dirty" variety and cannot be sold as
    such, only in compiled form.

    A23. LMathLib is a library that defines a number of mathematical
    functions for Modula 2 programs. Unlike other libraries of the same
    kind, LMathLib patches the Modula 2 compiler. All library functions
    are inlined as assembler code for the Floating Point Unit. This
    results in faster code compared to the traditional solution with
    subroutine calls. Due to this machine dependent technique, you can
    use the library ONLY with the (free) GMD Modula System Mocka for
    Linux on INTEL based machines. You can get the LMathLib library via
    anonymous ftp from
    ftp://tee-1.tee.uni-essen.de/pub/Mocka/(132.252.131.33) Documentation
    is included.

    A3. MATHPAK 87/32 is available for most 32-bit compilers. A lite
    version for Canterbury M2 is freely downloadable from http://www.webcom.com/mhc/welcome.html
    Features:
    Written fully in INTEL CPU machine language
    Math Coprocessor control
    Basic Math functions
    Vector and Vector-Scalar Routines
    Vector and Vector-Scalar 'Skip' Procedures
    Complex Number Routines
    Complex Vector and Vector-Scalar Routines
    Polynomial Manipulation Routines
    Simple Matrix and Vector-Matrix Routines
    Solving Systems of Linear and Nonlinear Equations
    Unconstrained Minimization
    Nonlinear Least-Squares Minimization
    Eigenvalues and Eigenvectors
    Singular Value Decomposition
    Extrapolation of Vector-Sequences
    Statistical and Data-Fitting Rountines
    Fourier Transforms and Convolution
    Spectral Analysis Routines
    Numerical Integration
    Differential Equations


    4.5 Where can I get a Modula-2 to C converter?
    A: The program mtc is available from ftp://ftp.Uni-Koeln.DE/usenet/comp.archives/languages/modula-2/mtc/
    An already ported version for DOS+DJGPP can be found at ftp://ftp.uni-stuttgart.de/pub/unix/programming/modula/
    Several of the compilers available work or can work by producing C or
    C++ code and can also serve this purpose. See p1, XDS and Ulm's m2c
    (not the same as mtc) listings for examples.


    4.6 Where can I get a Modula-2 to Modula-3 converter?
    A. m2tom3 is available under the terms of the GNU Library General
    Public License from ftp://ftp-i3.informatik.rwth-aachen.de/pub/Modula-3-Contrib/m2tom3/
    m2tom3 is a system to port Modula-2 programs to Modula-3. It consists
    of two parts:
    - A conversion program which tries to create a Modula-3 source text
    with the same semantics as the Modula-2 input while retaining the
    original look and feel as good as possible.
    - A base library which tries to emulate the Modula-2 standard library
    using the Modula-3 standard library.
    contact: Peter Klein
    office: Ahornstrasse 55, 52074 Aachen, Germany
    e-mail: pk@i3.informatik.rwth-aachen.de.
    Tel.: +49/241/80-21316
    Fax.: +49/241/8888-218


    4.7 Where can I get a Modula-2 to Component Pascal converter?
    A.This is available from http://www.lrz.de/~Bernhard_Treutwein/m2o.txt
    Note: Component Pascal is an Oberon dialect, but the translator does
    not use any CP specific features, i.e. generates standard Oberon-2.

    4.8 Are there any Modula-2 applications around?
    A. The Idaho National Engineering Laboratory (INEL) develops and
    maintains a now
    ~350,000 line MODULA-2 reusable component library called SAGE. For
    more information on SAGE send E-Mail to hotline@sage.inel.gov or see
    the web site at http://sage.inel.gov/homepage.htm


    4.9 Are there any compiler construction tools available?

    A1. Coco/R generates recursive descent parsers and their associated
    scanners from attribute grammars. Full source code, and a variety of
    simple example applications are supplied in the distribution kits.
    The Modula versions (1.50 is the latest) are available from ftp://ftp.ssw.uni-linz.ac.at/pub/Coco/ and the Java versions are
    there too, at ftp://ftp.ssw.uni-linz.ac.at/pub/Coco/javacoco.htm
    See also:
    ftp://ftp.inf.ethz.ch:/pub/software/Coco
    ftp://ftp.psg.com:/pub/modula-2/coco
    ftp://cs.ru.ac.za:/pub/coco
    ftp://ftp.fit.qut.edu.au:/pub/coco
    There are versions for the MS-DOS compilers (JPI, FST, Logitech,
    StonyBrook, Gardens Point), for the Mocka compiler for Linux and
    FreeBSD, as well as for the Gardens Point Unix compilers, including
    Linux and FreeBSD. There is also a version that produces TurboPascal
    units very similar to the Modula-2 modules. This is also FreePascal
    compliant now. A port for the p1 compiler on the Mac is also
    available. Latest information is available at http://cs.ru.ac.za/homes/cspt/cocor.htm. Pat Terry's textbook
    "Compilers and Compiler Generators" that uses Coco/R is now online at http://www.scifac.ru.ac.za/compilers.

    A2. A copy of the EBNF for ISO Modula-2 can be found in Appendix 3 at: http://www.arjay.bc.ca


    4.10 Is there an applications framework for Windows programming?
    A. Try looking at
    ftp://ftp.ifi.uio.no/pub/sjr/m2afx.zip orftp://ftp.leo.org/pub/comp/platforms/pc/windows/programming/modula/m2afx.zip

    This software is an application framework that implements a number of
    classes that encapsulate the weirdness of the Windows C API and
    attempts to present it in a cleaner way to the Modula-2 programmer.

    4.11 Does there exist something to convert a C header file to a
    Modula-2 DEFINITION MODULE file for me?
    A. Try looking at the XDS Ltd site for the H2D freeware product on
    some platforms

    4.12 Where can I get the C code of a Modula-2 compiler?

    A. Most Modula-2 compilers are written in Modula-2. It seems
    rather strange to me that one would want to trust the compilation of a
    good language to a tool written in a poor one.




    4.13 What can I do with  old sources from Modula Corp?

    A. From the former president Richard Ohran (ROhran@vinca.com):
    "Modula Corp. is dead. Do whatever you like."



    4.14 Are there source code examples anywhere for Windows programmers?

    A. Translations of Example Programs in Charles Petzold's book
    "Programming Windows 95" from Visual C++ to Stony Brook and XDS
    Modula-2 by Peter Stadler, Vienna can be found at: http://www.nhm-wien.ac.at/Petzold/Index.html


    4.15 Isn't there a Modula-Prolog project somewhere?

    A. Try ABB Corporate Research and Carlo Muller, who may license it to
    you for non-commercial purposes. mailto:cadamuller@swissonline.ch

    4.16 Is C. Lins SCL library available?

    A. Yes, at

    http://www.aha.ru/~uranus/download/scl.zip

    4.17 Can you help me with my assignments?
    A1. Some people may give you hints, but please do not subvert your
    professor and your education by submitting work other people do for
    you.

    A2. Here are two answers submitted to the newsgroup in response to a
    desperate student's plea for ANY Modula-2 program. The first is
    rather prosaic; the second a little more imaginative:
    MODULE homework;

    IMPORT STextIO;

    BEGIN
    LOOP
    STextIO.WriteString ("I will do my own homework.");
    STextIO.WriteLn;
    END;
    END homework.

    main()
    {
    int i;

    for(i=0; i<!--&#60100; i++) 
    printf("I will do my own homework.\n");

    }

    Followup Question: Is that Modula-2? I just finished my first course
    in Modula-2 and that don't look at all familiar. I'm not looking
    forward to the final exam.
    A. (Pat Terry) Computer Science changes sooo rapidly. Haven't you discovered Modula-2++ yet?


    5. SPECIFIC QUESTIONS ON CODE AND ALGORITHMS

    5.0 Where can I get general information on algorithms?
    A Try the site  http://www.cs.sunysb.edu/~algorith/

    5.1 Where can I get an algorithm for an efficient
    ber generator?
    A1. Pierre L'Ecuyer: Efficient and Portable Combined Random Number
    Generators, Communications of the ACM, vol. 31, no. 6, pp. 742-749.
    The RNG has a period of approximately 2.3E+18. Generating 1 000 000
    numbers per second, that means that it would take over 73 000 years
    before it repeated a sequence.

    A2.Look in the PMOS library. This one uses the 'Minimal standard
    random number generator' described by Park & Miller, CACM 31,10,Oct
    88 p1192. The code has been checked for the 10001st random as
    specified in Park & Miller p1195. One site is: ftp://ftp.psg.com/pub/modula-2/code/random/

    A3. A pseudo random generator using the subtractive method taken from
    Knuth, Seminumerical Algorithms, 3.2.2 and 3.6, belongs to Ulm's
    Modula-2 System that is distributed under the terms of the GPL (and
    in case of the library under the terms of the LGPL). More
    informations may be found at 
    http://www.mathematik.uni-ulm.de/modula/ and  http://www.mathematik.uni-ulm.de/modula/man/man3/RandomGenerator.html


    5.2 How can I prevent NIL pointer errors?
    A.First guard your reference by writing
    IF (myPointer # NIL) AND (myPointer^.fieldname =)...etc.

    Because Modula-2 has short circuited Boolean expression evaluation,
    the first part guards the second from being evaluated
    inappropriately. Then, take the radical, unC-like step of checking
    your code design for the logical error that led to the incorrect
    reference in the first place.



    5.3 Why doesn't my IF statement compile?
    A.See the example in the last subsection. Boolean expressions must
    be delineated with parentheses.



    5.4 Can I assume numeric variables are set to zero and Booleans to FALSE?
    A. No. The values of variables are random until your code sets them.
    Declaring does not initialize.




    5.5 Why do conversions from real to whole types sometimes crash?
    A.You need to protect your conversion code by using MAX (TYPE) and
    MIN (TYPE) which are part of the ISO Modula-2 base language.



    5.6 Does a CASE statement always need an ELSE clause?
    A. No, but it's not a bad idea, even if you think you have covered
    all the cases. If you have, a good compiler might optimize your code
    away, but if you haven't, you could be in for trouble.



    5.7 What are the system types to which all other parameters are compatible? A.Just LOC and ARRAY OF LOC (one dimension). This does not work for multidimensional arrays of LOC, and there are no defined BYTE and
    WORD types, though implementations may include them as well.



    5.8 How do I control the serial port, mouse, network card, TCP/IP or
    other communications protocol or peripheral?
    A.These are system dependent, and no modules for this can be found in
    the standard. A vendor MAY supply them. Ask.




    5.9 Does the object model for OO-Modula-2 have garbage collection or not?
    A. BOTH traced (collected) and untraced (roll your own memory
    management) objects are available.



    5.10 What is the arity of inheritance for OO-Modula-2?
    A. Single inheritance only.



    5.11 What do you use the generic extensions for?
    A. These allow you to write code for structures such as lists or
    queues, or for routines such as a sort, without initially specifying
    the data types that are in the structure or the target of the
    routine. The initial module is called a generic module. Such modules
    can be refined for the specific data types by a refining separate
    module (library) or a refining local module.

    5.12 How do I clear the screen?
    A. This non-standard functionality may be present in a module called Terminal.

    5.13 How do redirect screen and keyboard I/O?
    A. This non-standard functionality may be present in a module called
    InOut or (in an extension to ISO versions) in RedirStdIO. The
    procedure to use is OpenInput (or OpenOutput). Unfortunately these
    behave differently in every version (one of the reasons we built a
    standard). Some versions produce a prompt at runtime, others take a
    file name. The latter may or may not require a file extension. They
    may look for the name as you have provided it and if they don't find
    it, try with the default extension .txt Others have a way o
    entering
    the extension. You will have to consult the documentation.



    6. WHAT ARE SOME REFERENCE MATERIALS ON MODULA-2?

    A1. A shareware text I have written (and that MAY be the only
    currently maintained English language instructional text on Modula-2)
    is available. See section 1.4.
    A2.The manuals for some of the commercial products contain much
    useful information.

    A3. The Gardens Point sites have documentation available (see their
    listing above.)

    A4. A document called Modula-2 for Pascal programmers (Postscript,10
    pages) may be fetched by anonymous ftp at ftp://ee.newcastle.edu.au/pub/modula2/Modula2.ps.Z
    The author has not updated the contents for a couple of years, so
    there may be inaccuracies in terms of the current language standard.

    A5. A variety of ETH papers are stored at ftp.ftp.ethz.ch in
    /doc/diss, /doc/tech-reports and /pub/oberon/docu

    A6. What follows is a BIBLIOGRAPHY of some published materials in a
    table delimited by two spaces between fields:

    Author Title City Publisher Year Subject

    Adams, J. Mack Gabrini, Philippe J & Kurtz, Barry L.  An
    Introduction to Computer Science with Modula-2 Lexington, MA D.C.
    Heath & Co 1988
    Backhurst, Nigel G.  Mastering Modula 2 Wilmslow Sigma 1988
    Beidler, John & Jackowitz, Paul  Modula-2 Boston Prindle
    Weber & Schmidt 1985
    Blaschek, G. & Pomberger, G.  Introduction To Programming
    With Modula-2 Springer-Verlag 1990
    Budgen, David  Software Development with Modula-2 Reading,
    MA Addison-Wesley 1989
    Carmony, Lowell A. & Holliday, Robert L.  A First Course In
    Modula-2 New York Computer Science Press c1990
    Carroll, D. W.  Advanced Modula-2 Programming for the IBM PC
    XT and AT Elsevier 1986
    Chirlian, Paul M.  Introduction to Modula-2 Beaverton, Or.
    Matrix Publishers
    Christian, Kaare  A guide to Modula-2 New York Springer-Verlag 1986
    Cooling, J.E.  Modula-2 for Microcomputer Systems Van
    Nostrand Reinhold 1988
    Cooper, Doug  Oh My! Modula-2! New York Norton 1990
    Cornelius, Barry  Programming with TopSpeed Modula-2
    Reading, MA Addison Wesley 1991
    Eisenbach, Susan & Sadler, Cristopher  Program Design with
    Modula-2 Reading, MA Addison-Wesley 1989
    Elder, Jim   Compiler Construction: A Recursive Descent model
    Hemel Hempstead England: Prentice-Hall 1994
    Etling, Don  Modula-2 Programmer's Resource Book Blue Ridge
    Summit, PA Tab Books 1988
    Feldman, Michael B.  Data Structures with Modula-2 Englewood
    Cliffs, NJ Prentice Hall 1988
    Ford, Gary & Wiener, Richard.  Modula-2: A Software
    Development Approach New York Wiley 1985
    Gabrini, Philippe J. & Kurtz, Barry L. Data Structures And
    Algorithms With Modula-2 Lexington, MA DC Heath c1992
    Gleaves, Richard  Modula-2 for Pascal Programmers New York Springer-Verlag 1984
    Gough, K. John & Mohay, George M.  Modula-2: A Second Course
    In Programming Englewood Cliffs, NJ Prentice Hall 1988
    Greenfield, Stuart B.  Invitation to Modula-2 Petrocelli Books 1985
    Harrison, Rachael  Abstract Data Types in Modula-2 New York
    Wiley 1989 Wiley
    Harter, Edward D.  Modula-2 Programming. A First Course
    Englewood Cliffs, NJ Prentice-Hall 1990
    Helman, Paul & Veroff, Robert  Walls and Mirrors:
    Intermediate Problem Solving and Data. Modula-2 Menlo Park, CA
    Benjamin Cummings 1988
    Hewitt, Jill A. & Frak, Raymond J.  Software Engineering in
    Modula-2: an object-oriented approach London Macmillan 1989.
    Hille, R.F. Data Abstraction and Program Development Using Modula-2
    Sydney Prentice Hall 1989
    Hopper, Keith.  The Magic of Modula-2 Melbourne Prentice Hall 1991
    Johnston, Chris  Applying Modula-2 Academic Press 1991
    Jones, William C. Jr.  Data Structures Using Modula-2 New
    York Wiley 1988
    Jones, William C. Jr.  Modula-2 Problem Solving and
    Programming with Style New York Harper & Row 1987
    Joyce, Edward J.  Modula-2: A Seafarer's Manual & Shipyard
    Guide Reading, MA Addison-Wesley 1985
    Kaplan, Ian & Miller, Mike  Modula-2 Programming Rochelle
    Park, NJ Hayden Book Co. 1986
    Kelly-Bootle, Stan  Modula-2 Primer Howard W. Sams & Co. 1987
    King, K.N.  Modula-2: A Complete Guide Lexington, MA D.C.
    Heath & Co 1988
    Knepley, Ed & Platt, Robert  Modula-2 Programming Reston, VA
    Reston Pub. Co. 1985
    Koffman, Elliot B.  Problem Solving and Structured
    Programming in Modula-2 Reading, MA Addison-Wesley 1988
    Kruse, Robert L.  Programming With Data Structures Modula-2
    Version Englewood Cliffs, NJ Prentice-Hall 1988
    Lawrence, Mike  Modula-2 And The Amiga Avant-Garde Software 1990?
    Leestma, Sanford & Nyhoff, Larry  Programming &
    Problem-Solving in Modula-2 New York Macmillan 1989
    Lins, C. (Charles)  The Modula-2 Software Component Library
    Volumes I-IV New York Springer-Verlag 1989-
    Mayer, Herbert G.  Programming in Modula-2. the Art & the
    Craft New York Macmillan 1988
    McCracken, Daniel D. & W. Salmon  A Second Course in Computer
    Science with Modula-2 New York Wiley 1987
    Messer, P. A. & I. Marshall  Modula-2 Constructive Program
    Development Oxford Blackwell Scientific Publications 1986
    Metrowerks, Inc. Staff  Metrowerks Modula-2 Start Pak New
    York Macmillan 1990
    Mitchell, R. J.  Modula-2 Applied London Macmillan 1991
    Mitchell, Richard  Abstract Data Types And Modula-2 A Worked
    Example Of Design Using Data Abstraction Englewood Cliffs, NJ
    Prentice Hall 1992
    Moore, John B. & McKay, Kenneth N.  Modula-2 Text and
    Reference Englewood Cliffs, NJ Prentice-Hall 1987
    Novak, M.M.  Modula-2 in Science & Engineering London McGraw 1990
    Nyhoff, Larry & Leestma ,Sanford  Data Structures & Advanced Programming in Modula-2 New York Macmillan 1990
    Ogilvie, John W. L.  Modula-2 Programming New York McGraw-Hill 1985
    Pinson, Lewis Sincovec, Richard & Weiner, Richard  A First
    Course in Computer Science with Modula-2 New York Wiley 1987
    Pittman, Thomas & Peters, James  The Art Of Compiler Design
    Theory And Practice Englewood Cliffs, NJ Prentice-Hall 1992
    Pomberger, Gustav.   Software Engineering and Modula-2
    Englewood Cliffs, NJ Prentice Hall 1984
    Rechenberg, P. & Mössenböck, H. (tr. O'Meara, John)  A
    Compiler Generator for Microcomputers Englewood Cliffs, NJ Prentice
    Hall / Carl Hanser Verlag 1989
    Riley, David D.  Data Abstraction and Structures: An
    Introduction To Computer Science II Boston Boyd & Fraser Pub. Co.
    1987
    Riley, David D.  Using Modula-2: An Introduction To Computer
    Science I Boston Boyd & Fraser Pub. Co. 1987
    Sale, Arthur H. J.  Modula-2: Discipline & Design Sydney Addison-Wesley 1986
    Sawyer, Brian & Foster, Dennis.   Programming Expert Systems
    in Modula-2 New York Wiley 1986
    Schildt, Herbert  Advanced Modula-2 Berkeley, CA Osborne
    McGraw-Hill 1987
    Schildt, Herbert  Modula-2 Made Easy Berkeley, CA Osborne McGraw-Hill 1986
    Schiper, Andre; (tr. Howlett, Jack)  Concurrent programming: Illustrated With Examples in Portal, Ada, and Modula-2 Halsted
    Press 1989
    Schnapp, Russell L.  Macintosh Graphics in Modula-2
    Englewood Cliffs, NJ Prentice-Hall 1986
    Sincovec, Richard F. & Richard S. Wiener.   Data Structures
    Using Modula-2 New York Wiley 1986
    Sincovec, Richard F. & Wiener, Richard S.  Modula-2 Software Components New York Wiley 1987
    Stubbs, Daniel F. & Webre, Neil W.  Data Structures With
    Abstract Data Types and Modula-2 Monterey, CA Brooks/Cole Pub. Co.
    1987
    Sutcliffe, Richard J.  Introduction to Programming Using
    Modula-2 Columbus, OH Merrill 1987
    Sutcliffe, Richard J. mailto:rsutc@arjay.ca. Modula-2:
    Abstractions for Data and Programming Structures (Using ISO-Standard
    Modula-2) Mt. Lehman: Arjay Enterprises 1996-2000.
    http://www.arjay.bc.ca (1996 09 16)
    Sutcliffe, Richard J. Standard Generic Modula-2 (Document ISO/IEC/JTC1/SC22/WG13 D235) 1996 07 12 ftp://FTP.twu.ca/pub/modula2/WG13/ca101.GenericModula2CD(1996 09 16)
    Sutherland, Robert J.  The Professional Programmer's Guide to
    Modula-2 London Pitman 1988
    Terry, Patrick D.  An Introduction To Programming with
    Modula-2 Reading, MA Addison-Wesley 1987
    Thalmann, Daniel  Modula-2: An Introduction New York
    Springer-Verlag 1985
    Tremblay, Jean-Paul DeDourek, John M. & Daoust, David A. 
    Programming in Modula-2 New York McGraw-Hill 1989
    Tucker, Allen B. Jr. Computer science: A Second Course Using
    Modula-2 New York McGraw-Hill 1988
    Ullmann, Jeffrey  Compiling in Modula-2 - A First
    Introduction To Classical Recursive Descent Compiling Hemel
    Hempstead England: Prentice-Hall 1994
    Ural, Saim & Ural, Suzan  Introduction to Programming with
    Modula-2 New York Harper & Row 1987
    Walker, Billy K  Modula-2 Programming With Data Structures
    Belmont, CA Wadsworth Pub. Co. 1986
    Walker, Robert D.  Modula-2 Library Modules: A Programmer's
    Reference Blue Ridge Summit, PA Tab Books 1988
    Ward, Terry A.  Advanced Programming Techniques in Modula-2
    Glenview, IL Scott Foresman 1987
    Welsh, Jim & Elder, John  Introduction to Modula-2 Englewood
    Cliffs, NJ Prentice-Hall 1987
    Wiatrowski, Claude A. & Wiener, Richard S.  From C to
    Modula-2--and Back - Bridging The Language Gap New York Wiley
    Wiener, Richard  Modula-2 Wizard's Programming Reference New
    York Wiley 1986
    Wiener, Richard & Ford, G.  Modula-2 A Software Development
    Approach New York Wiley 1985
    Wiener, Richard & Sincovec, R. F.  Software Engineering with
    Modula-2 and Ada New York Wiley 1984
    Willis, Claire & Paddon, Derek  Abstraction And Specification
    With Modula-2 London Pitman 1992
    Wirth, Niklaus  Programming in Modula-2 (3rd corrected ed.)
    New York Springer-Verlag 1985
    Wirth, Niklaus  Algorithms and Data Structures (1986 edition) Englewood Cliffs, NJ Prentice-Hall 1986
    Wirth, Niklaus  Programming in Modula-2 (4th ed.) New York Springer-Verlag 1990
    Woodman, Mark et al  Portable Modula-2 Programming
    Maidenhead, Berkshire UK McGraw-Hill 1989

    7. REVIEWS OF MODULA-2 PRODUCTS.

    Note: The reviews have been contributed by others and I take no
    responsibility for their accuracy or for any opinions expressed
    therein. I have updated some of the facts.

    p1 Modula-2 v5.2 for Macintosh, by Marc Martin, Dec 1994.This is an
    excellent Modula-2 compiler, implemented as an MPW Tool. Highlights
    include ISO language extensions & library, a full set of Macintosh
    toolbox definitions, language extensions to simplify toolbox
    programming, object-oriented extensions and support for MacApp,
    greater than 32k code and globals, code generation comparable to
    Apple's official compilers, several FPU code options, multi-window
    debugger, linkable with other MPW languages, detailed documentation,
    and superb technical support via e-mail. Downsides include high cost
    (US$400), dependency on MPW, lack of SADE support. Version 6.0 has
    been released for creating PowerPC programs under MPW or CodeWarrier.

    Appendix: AUTHOR INFORMATION AND DISCLAIMERS

    Personal: I have used, written about, and taught Modula-2 (since
    1983) and have maintained some of the information in this list for
    over seven years. I have used at least a dozen different
    compiler/environments in that time on five different platforms, and
    have written numerous articles and reviews for publication. I have
    been a member of the ISO committee WG13 (Modula-2 standardization)
    since its inception and have participated in all the debates and
    meetings of WG13 except for meeting #9 at Lake Wanaka. I have written
    a text on Modula-2 (now shareware), made numerous submissions to WG13
    and directed an implementation of the ISO I/O library in order to
    verify its concepts. I am the author and project editor of Standard
    Generic Modula-2.

    Disclaimers:
    (i) I take no responsibility for anyone's use or misuse of this information. (ii) Apart from having been a beta tester, textbook writer,
    programmer and a long time user of Modula-2, I have no financial
    connection with any manufacturer or distributor of software. I am the
    author of some Modula-2 materials (some of which are shareware) as
    noted herein, and of various other books. Some manufacturers may
    distribute my shareware on CD-ROM for a previously arranged fee, but
    that is not an endorsement of their products by me or of mine by them.
    (iii) In producing this material, I am NOT acting in an official
    capacity for TWU, WG13, ABC, IEEE, ACM, comp.lang.modula2, or any
    other organization.
    (iv) Mention of a book or product is NOT an endorsement unless
    specifically noted.
    (v) Inclusion of materials on this list is based on relevance to
    Modula-2 and factual content and is otherwise entirely without
    prejudice. I reserve the right to edit all submissions for brevity,
    clarity, and usage.

    To remain authoritative, this and all versions of this FAQ are
    copyright 1991-2002 by Rick Sutcliffe and Arjay Enterprises. This
    document may be freely copied and distributed provided it is not
    altered and no fee is charged with the exception of normal
    downloading or copying costs.

    Compiled by:
    Rick Sutcliffe (aka The Northern Spy in the old days)
    Trinity Western University
    7600 Glover Rd.,
    Langley, B.C. Canada V2Y 1Y1
    1 604 888-7511 Fax 1 604 513-2018

    see my personal services web page at
    Arjay Enterprises
    mailto:rsutc@arjay.ca


    --
    Rick Sutcliffe Professor Math/Cmpt Trinity Western University. Try <http://www.arjay.bc.ca> for Christian SF, books on Modula-2 and
    Ethics in Technology. Philology site at <http://www.opundo.com>
    --- Synchronet 3.18b-Win32 NewsLink 1.113