CUG CD-ROM Vols. 300-319

(CUG 300) MAT_LIB: Matrix Library

MAT_LIB (Matrix Library), is a shareware package submitted by John J. Huges III (TN). MAT_LIB includes approximately 50 C functions and macros which input and output tabular data maintained in ASCII text files. While the tabular data is in RAM, it is stored in dynamically-allocated token arrays or floating-point arrays on the heap. Functions are provided to examine an ASCII text file to determine the number of rows, columns, and token size of the tabular data in the file. Other C macros dimension either a floating-point or string token array large enough to hold the ASCII data. Once in memory, floating-point array matrix operations can be performed on the data. Token array data can be converted to and from float or integer values. Floating-point arrays which have been modified by calculation can be merged into a token array for output or they can be output to a text file directly. The output files can in turn be used as the input for later application programs found in MAT_LIB text file formats. The disk includes a users manual, test programs, example programs, and small and medium model libraries for Turbo C.

(CUG 301) BGI Applications

This volume contains graphics applications that use Borland Graphics Interfaces (BGI). All programs were compiled with Turbo C and use BGI files. This disk includes C source code, executable code and BGI files.

Mark A. Johnson (CO) has created DCUWCU, a simple application environment that provides a mouse-driven cursor, stacked pop-up menus, and forms that contain editable fields and a variety of selectable buttons. The sample program DRAW allows you to draw lines, circles, and text on the screen using a mouse. A stacked pop-up menu can be invoked anywhere on the screen. DRAW uses public domain Microsoft mouse routines written by Andrew Markley.

Henry M. Pollock (MA) has submitted a demonstration program combining trig functions and graphics functions in Turbo C. By selecting an option from the menu, the program displays circleoids, asteriods, spirals, cycloids, etc.

John Muczynski (MI) has created a graphics pull-down menu system with deeply nested menus. The included code allows you to change key assignments and create macros. The new configuration may be saved and restored. He also has submitted an example program, Conway's game of life, using the pull-down menu.

(CUG 302) 3D Transforms

Written by Gus O'Donnell (CA) and submitted by Michael Yokoyama (HI), 3-D Transforms is a library of functions used to create, manipulate and display objects in three dimensions. The functions allow the programmer to create representations of solid objects bound by polygons, to rotate, translate, scale the objects in three dimensions, and to display the objects in color with a given light source. The disk includes a brief description of each function in the library, complete C source code, function libraries for Turbo C, and a demonstration program which displays a cube, a tetrahedron, and an octahedron in three dimensions with each figure rotated about a different axis. The program requires a Turbo C graphics library and BGI files. Turbo C v1.5 or later is recommended.

(CUG 303) MC68K Disassembler

Written by John M. Collins (England), MC68K Disassembler runs on Motolora 68000 ports of UNIX System III and V. The disassembled output can be assembled to generate the same object module as the input. When disassembling stripped executable files, object modules and libraries may be scanned, modules in the main input identified and the appropriate names automatically inserted into the output. Also, an option is available to convert most non-global names into local symbols, reducing the number of symbols in the generated assembler file. The disassembler copes reasonably with modules merged with the -r option to ld, generating a warning message as to the number of modules involved. The disk includes a users guide and complete C source code. Although the program is MC6800 specific, it is easily adaptable to run in most any operating system environment as a cross development tool. The COFF object file can now be taken as input and disassmebled.

(CUG 304) ROFF5: Technical Text Formatter

Ernest E. Bergmann (PA) has completed a major rewrite of his ROFF4 (CUJ128 and CUG145). The ROFF5, v2.00 technical text formatter has evolved from ROFF4 to become somewhat more like UNIX's nroff and troff. ROFF5 now supports conditional macros, page traps, roman numerals and line numbering. It is intended for preparation of manuscripts on any dot matrix printer and can handle equations and special symbols. Different output devices are supported with device-specific ASCII files that inform ROFF5 of the special controls for that device. Fractional line spacing for superscripts and subscripts are supported even for printers that cannot reverse scroll. The built-in commands follow the naming conventions of nroff and troff where appropriate; however, in contrast to the UNIX formatters, ROFF5 supports register and macro names of arbitrary length. The disk includes a complete set of C source code, well-written documentation, and a number of test and demo files. The program was written using Turbo C v2.0 for MS-DOS.

(CUG 305A) HGA Mandelbrot Explorer

Dan Schechter has submitted a Hercules monochrome Mandelbrot program, as well as the card games poker and blackjack. Unlike most Mandelbrot programs, which require you to specify color-value information in advance, his programs EMANDEL and EJULIA save all calculation data, allowing you to tweak the picture by specifying color-value information afterwards.

(CUG 305B) HGA BlackJack and Draw Poker

POKER is five-card draw poker. The computer plays four hands independently (the computer's four players do not consult with each other) and you play one hand. BLACKJACK is not quite real casino blackjack. It is just you against the dealer. Doubling down is not supported. The screen display of both card games is neatly organized using the Hercules graphics. This disk includes C source codes as well as executables for MS-DOS. All the programs are compiled using the Aztec C compiler.

(CUG 306A) Thread: multitasking kernel w/ lightweight threads

Gregory Colvin (CO) has contributed Thread and Synapsys. Thread is a multi-tasking kernel based on lightweight threads. He uses the ANSI Standard C library functions, setjmp() and longjmp() to implement multiple threads within a single C program. He has tested the code with Microsoft C v5.0 on an IBM-AT, and with MPW C v3.0 on an Macintosh SE. On his AT machine, the kernel compiles to under 1K of code and executes over 80,000 jumps per second.

(CUG 306B) Synapsys: neural network simulator

Synapsys is a neural network simulation program which implements a very fast back-propagation network by representing synapse layers as word arrays and implementing all operations with integer arithmetic. The disk includes C source code, benchmark and testing code for both programs.

(CUG 307A) ADU: Alien Disk Utility

ADU is a disk utility program designed to work with both the IBM PC standard and non-PC disk formats, submitted by Alex Cameron (Australia). By choosing an option from the main menu, ADU can analyze the disk format, then read and write the contents of the disk, sector by sector. The menu is also user-configurable so that the disk parameters can be adapted to almost any conceivable disk format. The initial alien disk parameters are derived by scanning the disk and building up a disk_base table, which may then be modified by the user. The volume includes C source code and well-written documentation revealing the low-level detail of the PC's disk drive configuration, not available anywhere else. The program is compiled under Turbo C v2.0 or v1.5. No assembly is required.

(CUG 307B) COMX: serial port driver for MS-DOS

COMX, an MS-DOS communication port device driver submitted by Hugh Daschbach (CA), provides buffered I/O to a serial port with optional XON/XOFF flow control through standard read/write requests or interrupt 0x14. The program uses mixed memory models. COMX.C is compiled under the small model with explicitly declared far pointers and a front end program forces the linkage editor to produce a tiny model executable. This program is specifically written for Microsoft C (v5.0 or later) and some assembly code comes with the C source code.

(CUG 308A) MSU: simulates a hypothetical computer

Dinghuei Ho (WA) has submitted MSU, an educational simulation of simple computer architecture and operation. MSU can simulate a computer that has a 4K word memory space (each word is 32 bits), a CPU that includes four segment origin registers, instruction register, program status register, a card reader and line printer for input/output, and a clock. The program runs under VMS on the DEC VAX 8820, but you can port it to other environments by modifying the code.

(CUG 308B) REMZ: Parks-McClellan-Remez FIR filter design

Bob Briggs (CA) has submitted REMZ, the classic Parks-McClellan-Remez FIR filter design program based on the FORTRAN version appearing in Theory and Application of Digital Signal Processing by Rabiner & Gold (Prentice Hall). The program compiles under Turbo C or Quick C.

(CUG 308C) LIST: object-oriented linked list in C and C++

Michael Kelly (MA) has submitted LIST, an object-oriented implementation of a linked list using both C and C++. In C, LIST is able to imitate C++ notation (address_list.sort()) by defining a general structure whose fields are pointers to functions, each corresponding to the operations of an object. Version 2.01 of List allows an unlimited number of active lists.

(CUG 309) 6809 C Compiler for MS-DOS

Brian Brown (New Zealand) has ported CUG221 6809 C for FLEX to MS-DOS. Modifications allow the program to run with ASxxxx assembler (CUG292), as well as with Motorola AS9 assembler. The program also generates ROMmable code. The disk includes a complete set of C source code, well-written documentation, and a run-time library such as routines for controlling the ACIA serial port, functions for character handling and data conversion between character strings and integers, routines for controlling a Hercules card, routines for a magnetic card reader, memory manipulation routines, PC serial card functions, and string handling functions.

(CUG 310) Little Smalltalk for MS-DOS

This Little Smalltalk, submitted by Henri de Feraudy (France) is part of Smalltalk Express Ltd.'s (England) effort to bring the object-oriented paradigm to the general public. They ported Professor Timothy Budd's Little Smalltalk to three different, low-cost platforms: the IBM-PC, the Atari ST, and a British machine the Acorn Archimedes. This particular volume is for MS-DOS. The disk includes the source code and executable files but no documentation. You can learn more about smalltalk in A Little Smalltalk, by Timothy Budd, published by Addison-Wesley (1987), ISBN: 0201106981. The program was compiled under Microsoft C v4.0. The original UNIX version of Little Smalltalk is also available from our library (CUG229 and CUG230).

(CUG 311) Relational database with ISAM

Ken Harris (WI) has contributed his database routines, DB package v1.3. The DB package consists of a library of file handling routines that may be linked with user applications. The routines support the four file organizations: sequential (data records of fixed length are stored sequentially), index (data records are stored in an ISAM type organization), random (data records of variable length are stored sequentially). The routines include basic database manipulation routines such as addition, deletion, and search, and also sort routines. The DB package lets you develop a data object dictionary to create a relation between two data records. The disk includes all C source code and test files, and a users guide that describes each routine. The program has been compiled and tested under Ultrix on a VAX station-2000 with gcc, using Microsoft C v5.1 and Turbo C v2.0 under MS-DOS, and cc under UNIX on 3B1.

(CUG 312) Make-Maker: AWK-based analyzer builds make files

Contributed by Jim R. Yehle (CO), Make-Maker automates the process of creating a makefile. Make-Maker is a series of AWK programs that first scans C source code for #include files to build a dependency list (a makefile component, called a Dependency Generator), then scans a linker configuration file to build a primary target dependency list (Object file Extractor), and finally builds a full makefile. Since the linker configuration file is unique to each linker, you must create your own object file extractor. The disk includes object file extractors for the Turbo Link Response file and the Intel Linker (binder) configuration file. The disk also includes Intel 80x86 assembly and PL/M dependency generators, as well as a C dependency generator. All the AWK code takes advantage of the 1985 enhancements to the original 1977 AWK.

(CUG 313) STEVIE: multiplatform Vi text editor

The STEVIE editor by Tony Andrews (Boulder, CO) is a highly portable clone of the popular Unix "vi" editor. STEVIE first appeared on the Atari ST platform and its name stands for "ST Editor for VI Enthusiasts". However, the current version of STEVIE can be compiled for the Atari ST running TOS or Minix, Unix System V or BSD, and PCs running MS-DOS or OS/2. Others have reported success in porting STEVIE to the Amiga and Data General machines, although platform-specific code for them is not included in this release. In any case, the CUG distribution does not include any binary executables so you must compile it yourself before you can run it.

STEVIE displays text with ANSI terminal emulation escape sequences. These escape sequences were popularized by the DEC VT-100 series of terminals. Ideally, ANSI terminal support provides maximum display portability with minimum programming effort. For PCs, you'll need an ANSI accelerator like NANSI.SYS by Daniel Kegel (Altadena, CA). STEVIE does not check for the presence of ANSI emulation and will render an illegible set of escape strings if it is missing.

Because STEVIE v3.71 was released in 1989, the documentation only claims compatability with Microsoft C 5.1 in the MS-DOS environment. However, I compiled the STEVIE source code without errors using the Microsoft C 6.00A. The quality of the source code could be improved with the addition of ANSI function prototypes.

(CUG 314) MNP: Microcom Networking Protocol

Written by Gregory Pearson (CA), Microcom MNP C Library is a set of subroutines that implements the stream model (Class 2) of the Microcom Networking Protocol (MNP) link protocol. MNP link protocol's stream mode works with MNP error-correcting modems or with other software implementations which use the Microcom MNP Library or other compatible software. The program is suitable for use with a Microsoft C application using the small code/small data model. The volume includes C and assembly source code for the library, a programmer's guide, and a sample terminal emulation program.

(CUG 315) FTGRAPH: Fast-Fourier Transform plus Graphics

Contributed by Thomas R. Clune (MA), FTGRAPH is a set of utilities for performing Fourier transforms and inverse Fourier transforms. The program also performs operations such as multiplication of data files, auto-power spectrum, cross-power spectrum, correlation from power-spectrum data, and filter time-domain real data. The result can be displayed on the monitor or printer, or saved as an HPGL file. The minimal hardware requirements are: an IBM PC, XT, AT or clone, 256K or more RAM, MS-DOS or PC-DOS v2.0 or later. The program will use a math coprocessor (8087, 80287, or 80387) if present, but does not require it. The program supports Hercules, CGA, EGA, and VGA graphics cards. A Microsoft (or compatible) mouse can select an option from the menu. The disk includes a complete set of C source code including a mouse driver, documentation, and sample data files such as a 16-cycles square wave, a Gaussian waveform, a sine and cosine wave and a noisy Gaussian curve. The program is copyrighted by the Eye Research Institute.

(CUG 316) AS8: Cross-Assembler for Zilog Z8

Contributed by H.G. Willers, this volume includes a cross assembler for Z8 microprocessor. The assembler is based on the code of a cross assembler for a Z80 processor from DECUS and enhanced with a hashed symbol table and several bug fixes. The source code compiles under MS-DOS using Mark Williams Let's C (v3.0.3) and QuickC(v1.01) and under System 5.3 UNIX for 68020 and Interactive UNIX for 386. The disk includes C source code, a users guide and test files.

(CUG 317)Group 3/4 Image Processing (TIFF)

Michael P. Marking (AZ) has submitted a set of programs that manipulate facsimile or scanner graphics images. These programs include techniques to encode and decode Group 3 (or 4) images and techniques to extract and insert TIFF (Tag Image File Format) image files in C. The C source code should be fairly portable, though it was developed with Microsoft C v5.1 under MS-DOS.

(CUG 318) RED: compact text editor handles big files

Edward K. Ream has placed his commercial software, the RED text editor in the public domain. RED v7.0 is a full-screen text editor written as an exercise in information hiding techniques. RED provides an edit mode, an insert mode, an overtype mode, and searching that allows wild cards, replacement, undo, and block operations. RED achieves two technical accomplishments without sacrificing portability; the screen is updated quickly, and arbitrarily large files are handled quickly. The size of the .EXE file is very small, only 35K. RED compiles with Microsoft C v5.0 or later and Turbo C v2.0 under MS-DOS. Make and link files have been included for both compilers. The source code has been revised to take advantage of the latest features of the draft ANSI standard of January, 1988. Function prototypes and other modern features are used throughout. The distribution disk includes complete C source code, excellent documentation, make files, and programs with a debugging session of Ed Ream's Sherlock debugging system.

(CUG 319) CPP: industrial strength ANSI C Pre-Processor

Edward K. Ream has placed his commercial software CPP (C preprocessor) in the public domain. CPP v5.3 is a modern C preprocessor that conforms to the ANSI C standard, but will complain about duplicate macro definitions. CPP provides several command line options to include comments in the output file, define an identifier, allow nested comments, specify search paths for #include files, and cancel the effect of the first definition of a macro. CPP will compile with Microsoft C v5.0 or later and Turbo C v2.0 under MS-DOS. Both compilers include make and link files. The source code uses the features of the draft ANSI standard of January 1988. The distribution disk includes complete C source code, excellent documentation, make files, and programs with a debugging session of Ed Ream's Sherlock debugging system.

This page maintained by Victor R. Volkman
Last updated on 4/19/97