# CORONADO ENTERPRISES MODULA-2 TUTORIAL - Version 1.00 (Generic Version)

This documentation and the accompanying software, including all of the example programs and text files, are protected under United States Copyright law to protect them from unauthorized commercialization. This entire tutorial is distributed under the "Freeware" concept which means that you are not required to pay for it. You are permitted to copy the disks in their entirety and pass them on to a friend or acquaintance. In fact, you are encouraged to do so. You are permitted to charge a small fee to cover the mechanical costs of duplication, but the software itself must be distributed free of charge, and in its entirety.

If you find the tutorial and the accompanying example programs useful, you may, if you desire, pay a small fee to the author to help compensate him for his time and expense in writing it. A payment of $10.00 is suggested as reasonable and sufficient. If you don't feel the tutorial was worth this amount, please do not make any payment, but feel free to send in the questionnaire anyway.

Whether or not you send any payment, feel free to write to Coronado Enterprises and ask for the latest list of available tutorials and a list of the known Public Domain libraries that can supply you with this software for the price of copying. Please enclose a self addressed stamped envelope, business size preferred, for a copy of the latest information. See the accompanying "READ.ME" file on the disk for more information.

I have no facilities for telephone support of this tutorial and have no plans to institute such. If you find any problems, or if you have any suggestions, please write to me at the address below.

Gordon Dodrill - March 16, 1987

Copyright (c) 1987, Coronado Enterprises

Coronado Enterprises

12501 Coronado Ave NE

Albuquerque, New Mexico 87122

## TABLE OF CONTENTS

**Introduction to the Modula-2 Tutorial**

FIRSTEX.MOD The first example program

**Part I - Modula-2 is like Pascal**

Chapter 1 - What is a computer program?

Chapter 2 - Getting started in Modula-2

- PUPPYDOG.MOD The minimum Modula-2 program
- WRITESM.MOD Write something on the monitor
- MODCOMS.MOD Modula-2 comments
- GOODFORM.MOD Good formatting example
- UGLYFORM.MOD Ugly formatting example

Chapter 3 - The simple Modula-2 data types

- INTVAR.MOD Integer variables
- INTMATH.MOD Integer variable math examples
- CARDMATH.MOD Cardinal variable math examples
- REALMATH.MOD Real variable math example
- BOOLMATH.MOD Boolean variable math example
- CHARDEMO.MOD Character variable demonstration
- TRANSFER.MOD Transfer between types

Chapter 4 - Modula-2 loops and control structures

- LOOPDEMO.MOD Loop demonstration
- IFDEMO.MOD Conditional branching
- LOOPIF.MOD Loops and IF's together
- TEMPCONV.MOD Temperature conversion
- DUMBCONV.MOD Poor variable names
- CASEDEMO.MOD CASE demonstration

Chapter 5 - Modula-2 procedures

- PROCED1.MOD Simple procedures
- PROCED2.MOD Procedures with variables
- PROCED3.MOD Multiple variables
- PROCED4.MOD Scope of variables
- PROCED5.MOD Procedure calling procedures
- FUNCTION.MOD An example function
- RECURSON.MOD An example with recursion

Chapter 6 - Arrays, types, constants, and labels

- ARRAYS.MOD Simple arrays
- ARRAYS2.MOD Multiple arrays
- TYPES.MOD Example of types
- CONSTANT.MOD Example of constants
- ARAYPASS.MOD Pass Array to Procedure
- STRINGEX.MOD String Handling Examples

Chapter 7 - Overall Program Construction

- OVERPROG.MOD Overall Program Construction
- MOREPROG.MOD More Program Construction
- LASTPROG.MOD Scrambled Order of Definitions

Chapter 8 - Input/Output and Printing

- SIMPLOUT.MOD Simple Monitor Output
- SIMPLIN.MOD Simple Keyboard Input
- FILEIO.MOD File I/O with InOut
- VARYFILE.MOD Variable Filename Input
- PRINTFLE.MOD Printer and File Output

Chapter 9 - Example Programs

- TIMEDATE.MOD Time and Date Example
- AREAS.MOD Calculate Areas
- PC.MOD Printer Control
- LIST.MOD List Program File

**Part II - Advanced Topics**

Chapter 10 - Scalars, subranges, and sets

- ENTYPES.MOD Enumerated Types
- SUBRANGE.MOD Subranges
- SETS.MOD A SET example

Chapter 11 - Records

- SMALLREC.MOD A Small Record Example
- BIGREC.MOD A Larger Record Example
- VARREC.MOD A Variant Record Example

Chapter 12 - Pointers and Dynamic Allocation

- POINTERS.MOD Pointer Example
- DYNREC.MOD A Dynamically Allocated Record
- LINKLIST.MOD A linked List

**Part III - Modula-2 extends Pascal**

Chapter 13 - Modules, Local and Global

- LOCMOD1.MOD Local Module Demonstration
- LOCMOD2.MOD Local Module Demonstration
- CIRCLES.DEF Global Module - Definition
- CIRCLES.MOD Global Module - Implementation
- GARDEN.MOD Calls Module "MYCALCUL"
- PROCTYPE.MOD Procedure Type Example

Chapter 14 - Machine Dependent Facilities

- TYPEREL.MOD Type relaxation
- WORDADDR.MOD WORD and ADDRESS example
- ADRSTUFF.MOD Address manipulation

Chapter 15 - Concurrency

- COROUT.MOD A Simple Coroutine
- COROUT2.MOD Added Features
- COROUT3.MOD Triple Coroutines
- INFINITE.MOD Infinite Execution Loop

Chapter 16 - Complete example programs

- BAKLIST.MOD Get All filenames From Disk
- BAKCOPY.MOD Copy files from Fixed to Floppy
- BAKRSTR.MOD Read Floppy back to Fixed Disk
- DIRHELPS.DEF Directory help procedures
- DIRHELPS.MOD
- BITOPS.DEF Bit Level Operations
- BITOPS.MOD
- REAL2MON.DEF Real outputs to the monitor
- REAL2MON.MOD
- REAL2FIL.DEF Real outputs to a file
- REAL2FIL.MOD