Modula-2
   HOME

TheInfoList



OR:

Modula-2 is a structured, procedural
programming language A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
developed between 1977 and 1985/8 by
Niklaus Wirth Niklaus Emil Wirth ( IPA: ) (15 February 1934 – 1 January 2024) was a Swiss computer scientist. He designed several programming languages, including Pascal, and pioneered several classic topics in software engineering. In 1984, he won the Tu ...
at
ETH Zurich ETH Zurich (; ) is a public university in Zurich, Switzerland. Founded in 1854 with the stated mission to educate engineers and scientists, the university focuses primarily on science, technology, engineering, and mathematics. ETH Zurich ran ...
. It was created as the language for the
operating system An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs. Time-sharing operating systems scheduler (computing), schedule tasks for ...
and
application software Application software is any computer program that is intended for end-user use not operating, administering or programming the computer. An application (app, application program, software application) is any program that can be categorized as ...
of the
Lilith Lilith (; ), also spelled Lilit, Lilitu, or Lilis, is a feminine figure in Mesopotamian and Jewish mythology, theorized to be the first wife of Adam and a primordial she-demon. Lilith is cited as having been "banished" from the Garden of Eden ...
personal
workstation A workstation is a special computer designed for technical or computational science, scientific applications. Intended primarily to be used by a single user, they are commonly connected to a local area network and run multi-user operating syste ...
. It was later used for programming outside the context of the
Lilith Lilith (; ), also spelled Lilit, Lilitu, or Lilis, is a feminine figure in Mesopotamian and Jewish mythology, theorized to be the first wife of Adam and a primordial she-demon. Lilith is cited as having been "banished" from the Garden of Eden ...
. Wirth viewed Modula-2 as a successor to his earlier programming languages Pascal and
Modula The Modula programming language is a descendant of the Pascal language. It was developed in Switzerland, at ETH Zurich, in the mid-1970s by Niklaus Wirth, the same person who designed Pascal. The main innovation of Modula over Pascal is a mo ...
. The main concepts are: # The module as a compiling unit for separate compiling # The
coroutine Coroutines are computer program components that allow execution to be suspended and resumed, generalizing subroutines for cooperative multitasking. Coroutines are well-suited for implementing familiar program components such as cooperative task ...
as the basic building block for concurrent processes # Types and procedures that allow access to machine-specific data The language design was influenced by the
Mesa A mesa is an isolated, flat-topped elevation, ridge, or hill, bounded from all sides by steep escarpments and standing distinctly above a surrounding plain. Mesas consist of flat-lying soft sedimentary rocks, such as shales, capped by a ...
language and the Xerox Alto, both from Xerox PARC, that Wirth saw during his 1976
sabbatical A sabbatical (from the Hebrew: (i.e., Sabbath); in Latin ; Greek: ) is a rest or break from work; "an extended period of time intentionally spent on something that’s not your routine job." The concept of the sabbatical is based on the Bi ...
year there. Page 4. The computer magazine ''
Byte The byte is a unit of digital information that most commonly consists of eight bits. Historically, the byte was the number of bits used to encode a single character of text in a computer and for this reason it is the smallest addressable un ...
'' devoted the August 1984 issue to the language and its surrounding environment. Wirth created the
Oberon Oberon () is a king of the fairy, fairies in Middle Ages, medieval and Renaissance literature. He is best known as a character in William Shakespeare's play ''A Midsummer Night's Dream'', in which he is King of the Fairies and spouse of Titania ...
series of languages as the successor to Modula-2, while others (particularly at
Digital Equipment Corporation Digital Equipment Corporation (DEC ), using the trademark Digital, was a major American company in the computer industry from the 1960s to the 1990s. The company was co-founded by Ken Olsen and Harlan Anderson in 1957. Olsen was president until ...
and
Acorn Computers Acorn Computers Ltd. was a British computer company established in Cambridge, England in 1978 by Hermann Hauser, Christopher Curry (businessman), Chris Curry and Andy Hopper. The company produced a number of computers during the 1980s with asso ...
, later Olivetti) developed Modula-2 into Modula-2+ and later
Modula-3 Modula-3 is a programming language conceived as a successor to an upgraded version of Modula-2 known as Modula-2+. It has been influential in research circles (influencing the designs of languages such as Java, C#, Python and Nim), but it ha ...
.


Description

Modula-2 is a general purpose
procedural language Procedural programming is a programming paradigm, classified as imperative programming, that involves implementing the behavior of a computer program as procedures (a.k.a. functions, subroutines) that call each other. The resulting program is a ...
suitable for both
systems programming Systems programming, or system programming, is the activity of programming computer system software. The primary distinguishing characteristic of systems programming when compared to application programming is that application programming aims t ...
and applications programming. The syntax is based on Wirth's earlier language, Pascal, with some elements and syntactic ambiguities removed. The ''module'' concept, designed to support separate compilation and data abstraction; and direct language support for multiprogramming were added. The language allows the use of
one-pass compiler In computer programming, a one-pass compiler is a compiler that processes each compilation unit only once, sequentially translating each source statement or declaration into something close to its final machine code. This is in contrast to a mul ...
s. Such a
compiler In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primaril ...
by Gutknecht and Wirth was about four times faster than earlier
multi-pass compiler A multi-pass compiler is a type of compiler that processes the source code or abstract syntax tree of a program several times. This is in contrast to a one-pass compiler, which traverses the program only once. Each pass takes the result of the prev ...
s. Here is an example of the source code for the "Hello world" program: MODULE Hello; FROM STextIO IMPORT WriteString; BEGIN WriteString("Hello World!") END Hello. A Modula-2 ''module'' may be used to encapsulate a set of related subprograms and data structures, and restrict their visibility from other parts of the program. Modula-2 programs are composed of modules, each of which is made up of two parts: a ''definition module'', the interface portion, which contains only those parts of the subsystem that are ''exported'' (visible to other modules), and an ''implementation module'', which contains the working code that is internal to the module. The language has strict scope control. Except for standard identifiers, no
object Object may refer to: General meanings * Object (philosophy), a thing, being, or concept ** Object (abstract), an object which does not exist at any particular time or place ** Physical object, an identifiable collection of matter * Goal, an a ...
from the outside is visible inside a module unless explicitly imported; no internal module object is visible from the outside unless explicitly exported. Suppose module M1 exports objects a, b, c, and P by enumerating its identifiers in an explicit export list DEFINITION MODULE M1; EXPORT QUALIFIED a, b, c, P; ... Then the objects a, b, c, and P from module M1 are known outside module M1 as M1.a, M1.b, M1.c, and M1.P. They are exported in a ''qualified'' manner to the outside (assuming module M1 is global). The exporting module's name, i.e. M1, is used as a qualifier followed by the object's name. Suppose module M2 contains the following IMPORT declaration MODULE M2; IMPORT M1; ... Then this means that the objects exported by module M1 to the outside of its enclosing program can now be used inside module M2. They are referenced in a ''qualified'' manner: M1.a, M1.b, M1.c, and M1.P. Example: ... M1.a := 0; M1.c := M1.P(M1.a + M1.b); ... Qualified export avoids name clashes. For example, if another module M3 exports an object called P, then the two objects can be distinguished since M1.P differs from M3.P. It does not matter that both objects are called P inside their exporting modules M1 and M3. An alternative method exists. Suppose module M4 is formulated as this: MODULE M4; FROM M1 IMPORT a, b, c, P; This means that objects exported by module M1 to the outside can again be used inside module M4, but now by mere references to the exported identifiers in an ''unqualified'' manner as: a, b, c, and P. Example: ... a := 0; c := P(a + b); ... This method of import is usable if there are no name clashes. It allows variables and other objects to be used outside their exporting module in the same ''unqualified'' manner as inside the exporting module. The export and import rules not only safeguard objects against unwanted access, but also allow a cross-reference of the definition of every identifier in a program to be created. This property helps with the maintenance of large programs containing many modules. The language provides for single-processor concurrency ( monitors,
coroutine Coroutines are computer program components that allow execution to be suspended and resumed, generalizing subroutines for cooperative multitasking. Coroutines are well-suited for implementing familiar program components such as cooperative task ...
s and explicit transfer of control) and for hardware access (absolute addresses, bit manipulation, and
interrupt In digital computers, an interrupt (sometimes referred to as a trap) is a request for the processor to ''interrupt'' currently executing code (when permitted), so that the event can be processed in a timely manner. If the request is accepted ...
s). It uses a nominal type system.


Dialects

There are two major dialects of Modula-2. The first is ''PIM'', named for the book ''Programming in Modula-2'' by Niklaus Wirth. There were three major editions of PIM: the second, third (corrected), and fourth. Each describes slight variants of the language. The second major dialect is ''ISO'', named for the standardization effort by the
International Organization for Standardization The International Organization for Standardization (ISO ; ; ) is an independent, non-governmental, international standard development organization composed of representatives from the national standards organizations of member countries. M ...
. Here are a few of the differences among them. * ''PIM2'' (1983) ** Required explicit EXPORT clause in definition modules. ** Function SIZE needs to be imported from module SYSTEM * ''PIM3'' (1985) ** Removed the EXPORT clause from definition modules following the observation that everything within a definition module defines the interface to that module, hence the EXPORT clause was redundant. ** Function SIZE is pervasive (visible in any scope without import) * ''PIM4'' (1988) ** Specified the behaviour of the MOD operator when the operands are negative. ** Required all ARRAY OF CHAR strings to be terminated by ASCII NUL, even if the string fits exactly into its array. * ''ISO'' (1996, 1998) ** ISO Modula-2 resolved most of the ambiguities in PIM Modula-2. It added the data types COMPLEX and LONGCOMPLEX, exceptions, module termination (FINALLY clause) and a complete standard
input/output In computing, input/output (I/O, i/o, or informally io or IO) is the communication between an information processing system, such as a computer, and the outside world, such as another computer system, peripherals, or a human operator. Inputs a ...
(I/O)
library A library is a collection of Book, books, and possibly other Document, materials and Media (communication), media, that is accessible for use by its members and members of allied institutions. Libraries provide physical (hard copies) or electron ...
. There are many minor differences and clarifications.


Supersets

There are several supersets of Modula-2 with language extensions for specific application domains: * PIM supersets *
Canterbury Modula-2
extended with Oberon-like extensible records his has been withdrawn and is no longer available anywhere** Modula-2+, extended with preemptive threads and exceptions *
Modula-2*
parallel extension *
Modula-P
another parallel extension ** Modula–Prolog, adds a
Prolog Prolog is a logic programming language that has its origins in artificial intelligence, automated theorem proving, and computational linguistics. Prolog has its roots in first-order logic, a formal logic. Unlike many other programming language ...
layer ** Modula/R, adds
relational database A relational database (RDB) is a database based on the relational model of data, as proposed by E. F. Codd in 1970. A Relational Database Management System (RDBMS) is a type of database management system that stores data in a structured for ...
extensions ** Modula-GM, adds
embedded system An embedded system is a specialized computer system—a combination of a computer processor, computer memory, and input/output peripheral devices—that has a dedicated function within a larger mechanical or electronic system. It is e ...
extensions * ISO supersets ** ISO10514-2, adds an
object-oriented programming Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impl ...
layermodula2.org, 5. Where can I get information about ISO Modula-2?
/ref> ** ISO10514-3, adds a
generic programming Generic programming is a style of computer programming in which algorithms are written in terms of data types ''to-be-specified-later'' that are then ''instantiated'' when needed for specific types provided as parameters. This approach, pioneer ...
(generics) layer * IEC supersets *
Mod51
extended with IEC 1131 constructs for embedded development


Derivatives

There are several derivative languages that resemble Modula-2 very closely but are new languages in their own right. Most are different languages with different purposes and with strengths and weaknesses of their own: *
Modula-3 Modula-3 is a programming language conceived as a successor to an upgraded version of Modula-2 known as Modula-2+. It has been influential in research circles (influencing the designs of languages such as Java, C#, Python and Nim), but it ha ...
, developed by a team of ex-Xerox employees who had moved to DEC and Olivetti *
Oberon Oberon () is a king of the fairy, fairies in Middle Ages, medieval and Renaissance literature. He is best known as a character in William Shakespeare's play ''A Midsummer Night's Dream'', in which he is King of the Fairies and spouse of Titania ...
, developed at
ETH Zurich ETH Zurich (; ) is a public university in Zurich, Switzerland. Founded in 1854 with the stated mission to educate engineers and scientists, the university focuses primarily on science, technology, engineering, and mathematics. ETH Zurich ran ...
Zürich for System Oberonbr>available online
* Oberon-2, Oberon with object-oriented (OO) extensions * Active Oberon, another OO
Oberon Oberon () is a king of the fairy, fairies in Middle Ages, medieval and Renaissance literature. He is best known as a character in William Shakespeare's play ''A Midsummer Night's Dream'', in which he is King of the Fairies and spouse of Titania ...
extension, developed at
ETH Zurich ETH Zurich (; ) is a public university in Zurich, Switzerland. Founded in 1854 with the stated mission to educate engineers and scientists, the university focuses primarily on science, technology, engineering, and mathematics. ETH Zurich ran ...
with the main goal to support
parallel computing Parallel computing is a type of computing, computation in which many calculations or Process (computing), processes are carried out simultaneously. Large problems can often be divided into smaller ones, which can then be solved at the same time. ...
programming on
multiprocessing Multiprocessing (MP) is the use of two or more central processing units (CPUs) within a single computer system. The term also refers to the ability of a system to support more than one processor or the ability to allocate tasks between them. The ...
and
multi-core processor A multi-core processor (MCP) is a microprocessor on a single integrated circuit (IC) with two or more separate central processing units (CPUs), called ''cores'' to emphasize their multiplicity (for example, ''dual-core'' or ''quad-core''). Ea ...
s * Parallaxis, a language for machine-independent data-parallel programming * Umbriel, developed by Pat Terry as a teaching language * YAFL, a research language by Darius Blasband Many other current programming languages have adopted features of Modula-2.


Language elements


Reserved words

PIM ,3,4defines 40
reserved word In a programming language, a reserved word (sometimes known as a reserved identifier) is a word that cannot be used by a programmer as an identifier, such as the name of a variable, function, or label – it is "reserved from use". In brief, an '' ...
s:
AND         ELSIF           LOOP       REPEAT
ARRAY       END             MOD        RETURN
BEGIN       EXIT            MODULE     SET
BY          EXPORT          NOT        THEN
CASE        FOR             OF         TO
CONST       FROM            OR         TYPE
DEFINITION  IF              POINTER    UNTIL
DIV         IMPLEMENTATION  PROCEDURE  VAR
DO          IMPORT          QUALIFIED  WHILE
ELSE        IN              RECORD     WITH


Built-in identifiers

PIM ,4defines 29 built-in
identifier An identifier is a name that identifies (that is, labels the identity of) either a unique object or a unique ''class'' of objects, where the "object" or class may be an idea, person, physical countable object (or class thereof), or physical mass ...
s:
ABS         EXCL            LONGINT    REAL
BITSET      FALSE           LONGREAL   SIZE
BOOLEAN     FLOAT           MAX        TRUE
CAP         HALT            MIN        TRUNC
CARDINAL    HIGH            NIL        VAL
CHAR        INC             ODD
CHR         INCL            ORD
DEC         INTEGER         PROC


Embedded system use

Modula-2 is used to program many
embedded system An embedded system is a specialized computer system—a combination of a computer processor, computer memory, and input/output peripheral devices—that has a dedicated function within a larger mechanical or electronic system. It is e ...
s.


Cambridge Modula-2

Cambridge Modula-2 by Cambridge Microprocessor Systems is based on a subset of PIM4 with language extensions for embedded development. The compiler runs on DOS and it generates code for
Motorola 68000 series The Motorola 68000 series (also known as 680x0, m68000, m68k, or 68k) is a family of 32-bit computing, 32-bit complex instruction set computer (CISC) microprocessors. During the 1980s and early 1990s, they were popular in personal computers and ...
(M68k) based embedded microcontrollers running a MINOS operating system.


Mod51

Mod51 by Mandeno Granville Electronics is based on ISO Modula-2 with language extensions for embedded development following IEC 1131, an industry standard for
programmable logic controller A programmable logic controller (PLC) or programmable controller is an industrial computer that has been ruggedized and adapted for the control of manufacturing processes, such as assembly lines, machines, robotic devices, or any activity that ...
s (PLC) closely related to Modula-2. The Mod51 compiler generates standalone code for 80C51 based microcontrollers.


Modula-GM

Delco Electronics Delco Electronics Corporation was the automotive electronics design and manufacturing subsidiary of General Motors based in Kokomo, Indiana, that manufactured ''Delco'' Automobile radios and other electric products found in GM cars. In 1972, Gen ...
, then a subsidiary of GM Hughes Electronics, developed a version of Modula-2 for embedded control systems starting in 1985. Delco named it Modula-GM. It was the first
high-level programming language A high-level programming language is a programming language with strong Abstraction (computer science), abstraction from the details of the computer. In contrast to low-level programming languages, it may use natural language ''elements'', be ea ...
used to replace
machine code In computer programming, machine code is computer code consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). For conventional binary computers, machine code is the binaryOn nonb ...
(language) for embedded systems in Delco's ''engine control units'' (ECUs). This was significant because Delco was producing over 28,000 ECUs per day in 1988 for GM. This was then the world's largest producer of ECUs. The first experimental use of Modula-GM in an embedded controller was in the 1985 Antilock Braking System Controller which was based on the Motorola 68xxx microprocessor, and in 1993 Gen-4 ECU used by the
Champ Car World Series Champ Car World Series (CCWS) was the series sanctioned by Open-Wheel Racing Series Inc., a sanctioning body for American open-wheel car racing that operated from 2004 to 2008. It was the successor to Championship Auto Racing Teams (CART), ...
Championship Auto Racing Teams (CART) and
Indy Racing League IndyCar, LLC (stylized as INDYCAR), is an auto racing Governing body, sanctioning body for American open-wheel car racing headquartered in Indianapolis, Indiana. The organization sanctions two Auto racing, racing series: the premier IndyCar Serie ...
(IRL) teams. The first production use of Modula-GM was its use in GM trucks starting with the 1990 model year ''vehicle control module'' (VCM) used to manage GM Powertrain's Vortec engines. Modula-GM was also used on all ECUs for GM's 90°
Buick V6 engine The Buick V6 is an Overhead valve engine, OHV V6 engine developed by the Buick division of General Motors Corporation, General Motors and first introduced in 1962. The engine was originally and was marketed as the ''Fireball'' engine. GM continue ...
family 3800 Series II used in the 1997-2005 model year Buick Park Avenue. The Modula-GM compilers and associated software management tools were sourced by Delco from Intermetrics. Modula-2 was selected as the basis for Delco's high level language because of its many strengths over other alternative language choices in 1986. After Delco Electronics was spun off from GM (with other component divisions) to form Delphi Automotive Systems in 1995, global sourcing required that a non-proprietary high-level software language be used. ECU embedded software now developed at Delphi is compiled with commercial compilers for the language C.


Russian radionavigation satellites

The satellites of the Russian radionavigation-satellite service framework
GLONASS GLONASS (, ; ) is a Russian satellite navigation system operating as part of a radionavigation-satellite service. It provides an alternative to Global Positioning System (GPS) and is the second navigational system in operation with global cove ...
, similar to the United States
Global Positioning System The Global Positioning System (GPS) is a satellite-based hyperbolic navigation system owned by the United States Space Force and operated by Mission Delta 31. It is one of the global navigation satellite systems (GNSS) that provide ge ...
(GPS), are programmed in Modula-2.


Compilers

* Amsterdam Compiler Kit (ACK) Modula-2 – for MINIX;
freeware Freeware is software, often proprietary, that is distributed at no monetary cost to the end user. There is no agreed-upon set of rights, license, or EULA that defines ''freeware'' unambiguously; every publisher defines its own rules for the free ...
* ADW Modula-2 – for Windows, ISO compliant, ISO/IEC 10514-1, ISO/IEC 10514-2 (OO extension), ISO/IEC 10514-3 (Generic extension); freeware * Aglet Modula-2 – for
AmigaOS AmigaOS is a family of proprietary native operating systems of the Amiga and AmigaOne personal computers. It was developed first by Commodore International and introduced with the launch of the first Amiga, the Amiga 1000, in 1985. Early versions ...
4.0 for
PowerPC PowerPC (with the backronym Performance Optimization With Enhanced RISC – Performance Computing, sometimes abbreviated as PPC) is a reduced instruction set computer (RISC) instruction set architecture (ISA) created by the 1991 Apple Inc., App ...
; freeware * Fitted Software Tools (FST) Modula-2 – for DOS; freeware * Gardens Point Modula-2 (GPM) – for BSD, Linux, OS/2, Solaris; ISO compliant; freeware, as of 30 July 2014 * Gardens Point Modula-2 (GPM/CLR) – for .NET Framework; freeware * GNU Modula-2 – for GCC platforms, version 1.0 released 11 December 2010; compliance: PIM2, PIM3, PIM4, ISO;
free software Free software, libre software, libreware sometimes known as freedom-respecting software is computer software distributed open-source license, under terms that allow users to run the software for any purpose as well as to study, change, distribut ...
,
GNU General Public License The GNU General Public Licenses (GNU GPL or simply GPL) are a series of widely used free software licenses, or ''copyleft'' licenses, that guarantee end users the freedom to run, study, share, or modify the software. The GPL was the first ...
(GPL) * Logitech - they also had a "Real Time Kernel" for embedded usage (1987) * M2Amiga – for
Amiga Amiga is a family of personal computers produced by Commodore International, Commodore from 1985 until the company's bankruptcy in 1994, with production by others afterward. The original model is one of a number of mid-1980s computers with 16-b ...
;
free software Free software, libre software, libreware sometimes known as freedom-respecting software is computer software distributed open-source license, under terms that allow users to run the software for any purpose as well as to study, change, distribut ...
* M2M – by N. Wirth and collaborators from ETH Zurich, cross-platform, generates M-code for
virtual machine In computing, a virtual machine (VM) is the virtualization or emulator, emulation of a computer system. Virtual machines are based on computer architectures and provide the functionality of a physical computer. Their implementations may involve ...
; freeware * M2RT11 – by N. Wirth and collaborators from ETH Zurich, originally created for bootstrapping the
Lilith Lilith (; ), also spelled Lilit, Lilitu, or Lilis, is a feminine figure in Mesopotamian and Jewish mythology, theorized to be the first wife of Adam and a primordial she-demon. Lilith is cited as having been "banished" from the Garden of Eden ...
* MacMETH – by N. Wirth and collaborators from ETH Zurich for Macintosh, Classic only; freeware * Mod51 – for the Intel 80x51 microcontroller family, ISO compliant, IEC1132 extensions; proprietary software * Megamax Modula-2 – for
Atari ST Atari ST is a line of personal computers from Atari Corporation and the successor to the company's Atari 8-bit computers, 8-bit computers. The initial model, the Atari 520ST, had limited release in April–June 1985, and was widely available i ...
with documentation; freeware * Modula-2 R10 – reference compiler for this Modula; open-source, peer review * ModulaWare – for
OpenVMS OpenVMS, often referred to as just VMS, is a multi-user, multiprocessing and virtual memory-based operating system. It is designed to support time-sharing, batch processing, transaction processing and workstation applications. Customers using Op ...
( VAX and
Alpha Alpha (uppercase , lowercase ) is the first letter of the Greek alphabet. In the system of Greek numerals, it has a value of one. Alpha is derived from the Phoenician letter ''aleph'' , whose name comes from the West Semitic word for ' ...
), ISO compliant; proprietary software * ORCA/Modula-2 – for
Apple IIGS The Apple IIGS (styled as II) is a 16-bit personal computer produced by Apple Inc., Apple Computer beginning in September 1986. It is the fifth and most powerful model of the Apple II family. The "GS" in the name stands for "Graphics and Sound" ...
by The Byte Works for the Apple Programmer's Workshop * p1 Modula-2 – for
Macintosh Mac is a brand of personal computers designed and marketed by Apple Inc., Apple since 1984. The name is short for Macintosh (its official name until 1999), a reference to the McIntosh (apple), McIntosh apple. The current product lineup inclu ...
,
Classic A classic is an outstanding example of a particular style; something of Masterpiece, lasting worth or with a timeless quality; of the first or Literary merit, highest quality, class, or rank – something that Exemplification, exemplifies its ...
and
macOS macOS, previously OS X and originally Mac OS X, is a Unix, Unix-based operating system developed and marketed by Apple Inc., Apple since 2001. It is the current operating system for Apple's Mac (computer), Mac computers. With ...
(
PowerPC PowerPC (with the backronym Performance Optimization With Enhanced RISC – Performance Computing, sometimes abbreviated as PPC) is a reduced instruction set computer (RISC) instruction set architecture (ISA) created by the 1991 Apple Inc., App ...
and Carbon (API) only), ISO compliant; proprietary software * MOCKA – for various platforms, PIM compliant; commercial, freeware Linux/BSD versions * TDI Modula-2 – for
Atari ST Atari ST is a line of personal computers from Atari Corporation and the successor to the company's Atari 8-bit computers, 8-bit computers. The initial model, the Atari 520ST, had limited release in April–June 1985, and was widely available i ...
, by TDI Software * Terra M2VMS – for
OpenVMS OpenVMS, often referred to as just VMS, is a multi-user, multiprocessing and virtual memory-based operating system. It is designed to support time-sharing, batch processing, transaction processing and workstation applications. Customers using Op ...
( VAX and
Alpha Alpha (uppercase , lowercase ) is the first letter of the Greek alphabet. In the system of Greek numerals, it has a value of one. Alpha is derived from the Phoenician letter ''aleph'' , whose name comes from the West Semitic word for ' ...
), PIM compliant; proprietary software * m2c, Ulm Modula-2 System – for Solaris (Sun SPARC and Motorola 68k); free software,
GNU General Public License The GNU General Public Licenses (GNU GPL or simply GPL) are a series of widely used free software licenses, or ''copyleft'' licenses, that guarantee end users the freedom to run, study, share, or modify the software. The GPL was the first ...
(GPL) * XDS – ISO compliant, TopSpeed compatible library: ''Native XDS-x86'' for x86 (Windows and Linux); ''XDS-C'' for Windows and Linux (16- and 32-bit versions), targets C ( K&R &
ANSI The American National Standards Institute (ANSI ) is a private nonprofit organization that oversees the development of voluntary consensus standards for products, services, processes, systems, and personnel in the United States. The organiz ...
); freeware


Turbo Modula-2

Turbo Modula-2 was a compiler and an
integrated development environment An integrated development environment (IDE) is a Application software, software application that provides comprehensive facilities for software development. An IDE normally consists of at least a source-code editor, build automation tools, an ...
for
MS-DOS MS-DOS ( ; acronym for Microsoft Disk Operating System, also known as Microsoft DOS) is an operating system for x86-based personal computers mostly developed by Microsoft. Collectively, MS-DOS, its rebranding as IBM PC DOS, and a few op ...
developed, but not published, by
Borland Borland Software Corporation was a computing technology company founded in 1983 by Niels Jensen, Ole Henriksen, Mogens Glad, and Philippe Kahn. Its main business was developing and selling software development and software deployment products. B ...
. Jensen and Partners, which included Borland cofounder Niels Jensen, bought the unreleased codebase and turned it into TopSpeed Modula-2. It was eventually sold to Clarion, now SoftVelocity, who then offered the Modula-2 compiler as part of its Clarion product line at that time. A
Zilog Z80 The Zilog Z80 is an 8-bit computing, 8-bit microprocessor designed by Zilog that played an important role in the evolution of early personal computing. Launched in 1976, it was designed to be Backward compatibility, software-compatible with the ...
CP/M CP/M, originally standing for Control Program/Monitor and later Control Program for Microcomputers, is a mass-market operating system created in 1974 for Intel 8080/Intel 8085, 85-based microcomputers by Gary Kildall of Digital Research, Dig ...
version of Turbo Modula-2 was briefly marketed by Echelon under license from Borland. A companion release for Hitachi HD64180 was sold by Micromint as a development tool for their SB-180 single-board computer.


IBM Modula-2

IBM International Business Machines Corporation (using the trademark IBM), nicknamed Big Blue, is an American Multinational corporation, multinational technology company headquartered in Armonk, New York, and present in over 175 countries. It is ...
had a Modula-2 compiler for internal use which ran on both
OS/2 OS/2 is a Proprietary software, proprietary computer operating system for x86 and PowerPC based personal computers. It was created and initially developed jointly by IBM and Microsoft, under the leadership of IBM software designer Ed Iacobucci, ...
and AIX, and had first class support in IBM's E2 editor. IBM Modula-2 was used for parts of the OS/400 ''Vertical Licensed Internal Code'' (effectively the kernel of OS/400). This code was mostly replaced with C++ when OS/400 was ported to the IBM RS64 processor family, although some remains in modern releases of the operating system. A
Motorola 68000 The Motorola 68000 (sometimes shortened to Motorola 68k or m68k and usually pronounced "sixty-eight-thousand") is a 16/32-bit complex instruction set computer (CISC) microprocessor, introduced in 1979 by Motorola Semiconductor Products Sector ...
backend also existed, which may have been used in embedded systems products.


Operating systems

Modula-2 is used to program some
operating system An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs. Time-sharing operating systems scheduler (computing), schedule tasks for ...
s (OSs). The Modula-2 module structure and support are used directly in two related OSs. The OS named '' Medos-2'', for the Lilith workstation, was developed at ETH Zurich, by Svend Erik Knudsen with advice from Wirth. It is a single user, object-oriented operating system built from Modula-2 modules. Reprint. The OS named '' Excelsior'', for the Kronos workstation, was developed by the Academy of Sciences of the Soviet Union, Siberian branch,
Novosibirsk Novosibirsk is the largest city and administrative centre of Novosibirsk Oblast and the Siberian Federal District in Russia. As of the 2021 Russian census, 2021 census, it had a population of 1,633,595, making it the most populous city in Siber ...
Computing Center, Modular Asynchronous Developable Systems (MARS) project, Kronos Research Group (KRG). It is a single user system based on Modula-2 modules.


Books

* * * * * * Uses ISO-standard Modula-2.


References


External links

* {{Authority control Modula programming language family Systems programming languages Programming languages created in 1978 Programming languages with an ISO standard Statically typed programming languages High-level programming languages