Stony Brook Software

Stony Brook has a development package for you that combines a powerful, project based, integrated development system with a professional optimizing compiler.  

Supported Target operating systems

Development System Tools

Development Environment

The Stony Brook Integrated Development Environment is the ideal way to manage the development of your applications.  

Source Code Editor

Debugger

*Due to operating system limitations 16-bit Windows programs cannot be debugged under Windows 9x. 16-bit Windows programs can be debugged under Windows NT/2000/XP since it does not contain these limitations.

*The DOS debuggers do not support all of the above listed features.

Compiler

Code Generation Optimization

Linker

Resource Editor

The Stony Brook Resource Editor provides you with a graphical way to create and modify your Win32 and Win16 resources.

Modula-2 Language

Stony Brook Modula-2 follows the ISO standard specification for the language. Look at some of the interesting features the ISO standard introduced.

Check out some of our extensions to the language

Runtime Library Overview

The library of modules provided with Stony Brook Modula-2 is extensive. The library includes ISO Standard modules, modules unique to Stony Brook Modula-2, and modules that are used internally by the compiler runtime system. Many of the ISO modules are implemented with calls to the Stony Brook specific modules. Full source code for all modules is provided, including low-level compiler internal support procedures. The focus of the library are modules that are portable in nature from one operating system to another, and modules that are generally useful to all applications. Some modules are not available for all supported platforms. Unless otherwise specified all modules are available for all supported platforms.

All modules are documented via their DEFINITION MODULE source files included with Stony Brook Modula-2.

SYSTEM modules

SYSTEM
EXCEPTIONS
M2EXCEPTION
M2OOEXCEPTION
TERMINATION
COROUTINES
GARBAGECOLLECTION

The following modules will exist in all ISO Modula-2 implementations.

Storage

This module provides procedures for dynamic memory allocation and deallocation by calling the procedures directly or indirectly with the NEW and DISPOSE standard procedures. The ExStorage module is a more capable module.

CharClass

This module provides procedures to classify the value of a character type to a functional group. For example, to determine if a character is a numeric character.

LowReal

This module provides a very low-level interface to the exact implementation details of the REAL type.

LowLong

This module provides a very low-level interface to the exact implementation details of the LONGREAL type.

The following modules are part of the ISO Standard library, however an implementation does not have to provide these modules. If an implementation does have a module with the same name as one of the ISO Standard modules then that module must conform to the ISO definition of that module with no extensions, alterations or deletions. In general, all ISO Modula-2 implementations will provide these modules.

Strings

This module provides procedures to manipulate ARRAY OF CHAR types, which are normally, called Strings.

RealMath

This module provides various mathematical functions for type REAL.

LongMath

This module provides various mathematical functions for type LONGREAL.

ComplexMath

This module provides various mathematical functions for type COMPLEX.

LongComplexMath

This module provides various mathematical functions for type LONGCOMPLEX.

SysClock

This module provides procedure to access the system real time clock.

ConvTypes

This module defines types used by the ISO string conversion modules.

WholeStr

Procedures to convert INTEGER and CARDINAL types to strings and visa versa.

RealStr

Procedures to convert the REAL type to strings and visa versa.

LongStr

Procedures to convert the LONGREAL type to strings and visa versa.

WholeConv

Low level conversion procedures for INTEGER and CARDINAL.

RealConv

Low level conversion procedures for REAL.

LongConv

Low level conversion procedures for LONGREAL.

The ISO Modula-2 I/O library modules

IOResult, TextIO, WholeIO, RealIO, LongIO, RawIO
IOChan, IOConsts, StdChans
StreamFile, SeqFile, RndFile, TermFile, ProgramArgs
IOLink, ChanConsts
STextIO, SWholeIO, SRealIO, SLongIO, SRawIO, SIOResult

All of the following modules are specific to Stony Brook Modula-2.

Note:
Full source code is supplied for all runtime library modules. Therefore, portability should not be an issue.

ASCII

This module provides mnemonics for ASCII control codes.

Environment

This module provides procedures to access environment strings and the command line string.

RunProg

This module provides procedures to execute programs and command interpreter commands.

Conversions

This module provides numeric conversions for INTEGER, CARDINAL, LONGINT and LONGCARD types.

RConversions

This module provides numeric conversions for the REAL and LONGREAL types.

ElapsedTime

This module provides procedures for calculating an elapsed time between two procedure calls and executing timed delays.

RandomNumbers

This module provides procedures for generating fast pseudo random number sequences of type CARDINAL.

RealRandomNumbers

This module provides procedures for generating fast pseudo random number sequences to type REAL.

Terminal

This module provides procedures for reading and writing to a simple terminal device. On graphical operating systems, a text mode window is used to simulate a text mode terminal.

FileFunc

This module provides extensive flexibility and capability for dealing with disk storage devices and pipes.

TextFileFunc

The module provides procedures for reading and writing human readable formatted text files.

LWholeIO, SLWholeIO, LWholeStr

Similar to the functions found in WholeIO, SWholeIO, WholeStr except these modules apply to type LONGINT and LONGCARD.

ComplexIO, LongComplexIO, SComplexIO, SLongComplexIO

These modules provide text input and output of COMPLEX and LONGCOMPLEX types. The modules follow, and integrate with, the format of the ISO standard I/O library.

FormatString

This module provides a procedure that will generate a formatted string from a format template string and a variable number of format item parameters such as CARDINAL and ARRAY OF CHAR.

MemUtils

This module provides procedures for filling, scanning and moving memory regions.

ExStorage

This is a 100% compatible superset of the ISO Standard Storage module. The ISO Storage module is implemented with calls to this module. This module provides extensive flexibility and capability in dealing with dynamic memory allocation.

ExStrings

This module provides case insensitive versions of the ISO Standard Strings module procedures, plus some other useful procedures.

TimeFunc

This module extends the ISO Standard SysClock module by providing functions for comparing DateTime values, and conversions to/from DateTime and the DOS file date time format, and to/from DateTime and the C/Unix runtime library date time format.

GenCRC

This module provides functions for generating a CCITT 32-bit CRC.

SortLib

This module provides functions for sorting data.

BitVectors

This module provides functions for manipulating bit vectors. Bit vectors are very similar to SET types, however these can be of an arbitrary size allocated at runtime.

SetExStorageDebugMode

This module provides a simple method of setting the default heap in ExStorage to debug mode. This module is useful when you have module initialization code that allocates memory. To use this module you simply import it as the first module imported in your main program.

ExtUtils

This module is only available for 32-bit DOS extended applications.  It provides procedures for accessing real mode memory addresses from 32-bit protected mode. It isolates a program from differences between the FlashTek and PharLap DOS extenders should you want to run under both. The FlashTek extender is the one included Stony Brook Modula-2.

MD5, SHA1, SHA256, SHA384, SHA512, AreSee4, DES, AES, Blowfish, RSA

These are used in cryptography and the names of the modules should tell you what they do.

CryptEncode

Implements various block encoding algorithms used with encryption.

CryptKey

Implements various key generation functions used with password based encrpytion.

VLI

This module implements an integer type with an unlimited numeric range.
VLI = Very large integer.

Money

This module implements an integer fixed point type suitable for monetary computations.

The following modules are available on 32-bit Windows and Unix target systems.

Threads

This module provides procedures that support creating and controlling threads, inter-thread and inter-process synchronization objects.

PipedExec

This module provides procedures to allow you to execute a program asynchronous with your process, and to redirect its standard input and output to a FileFunc File. This can then be used with the FileFunc read/write procedures to read/write the process output/input.

MemShare

This module provides procedures to allocate inter-process shared memory.

FileMap

This module provides procedures to manipulate memory-mapped files.

Pipes

This module provides procedures for controlling pipes used for inter-thread communication. Byte and message pipes are supported.

ConfigSettings

This module provides procedures to read and write configuration information in a portable manner. Both per machine (global) and per user (local) settings are supported.

Socket

This module provides a portable interface to the "sockets" API.

SMTP

This module provides an interface to the SMTP email protocol.

Timers

This module provides an encapsulation for creating timers not associated with a GUI window.

GUI user interface modules.

We use these modules for developing the environment and debugger user interfaces. They are currently implemented for Win32 and GTK+ (Unix) environments

The following modules are only available on 32-bit Windows target systems.

Win32 API interface

WIN32, WINUSER, WINGDI, COMMCTRL, COMMDLG, RichEdit, HTMLHELP, WINSOCK2, SQL, Ole2, OleDlg, WINCON, WINERROR, WINNETWK, WINNLS, WINPERF, WINREG, WINSPOOL, WINSVC, WINVER, WINX, MMSYSTEM, MMREG, MSACM, LZEXPAND, MCIAVI, RPC, TOOLHELP32, SHELLAPI, SHLOBJ, Gdiplus, GdiplusFlat

OpenGL

OpenGL, GLAUX, GLU

SplitterControl

This module provides a control to split a window into to separate panes which can contain independent child windows. The proportion of the split can be controlled by the user by dragging the splitter bar.

Registry

This module provides procedures to greatly simplify using the Win32 registry.

StringCache

This module provides a procedure to read and cache in memory strings that are obtained from a string table resource.

NamedPipes

This module provides procedures for controlling pipes for inter-process and inter-computer (LAN) communication. Byte and message pipes are supported.

The following modules are only available on “Unix” target systems.

UNIX

Portable core Unix APIs

PTHREADS

POSIX threads interface, and additional threading related APIs.

UnixSock

An interface to the various Unix sockets APIs

POSIX_REALTIME

POSIX realtime APIs.

DLFCN

Dynamic shared object loading and unloading API.

GTK+ 1.2.x Interface GUI toolkit APIs

GTK, GDK, GDK_TYPES, GDK_RGB, GDK_PIXBUF

GLADE

This module provides an interface to the libGlade library. It reads the Glade GUI builder generated files and creates individual GUI elements at runtime. Glade uses the GTK toolkit.

Pricing

Win32 native system supporting development for 32-bit Windows, 32-bit DOS extended, 16-bit Windows, 16-bit DOS code generation. Pricing is $495.00 USD.

Linux native supporting development for 32-bit Linux on IA-32 processors. Pricing is $495.00 USD. Cross development for Linux, from Windows, can be done if you also own a license for the Win32 native system.

Solaris/SunOS native (Solaris 8 on SPARC) supporting development for 32-bit Solaris/SunOS on SPARC processors. For pricing information, contact us via email. Cross development for Solaris, from Windows, can be done if you also own a license for the Win32 native system.

Shipping and handling additional. $5 within the USA, $10 International.
Email delivery at no change.
California residents include sales tax.