Public (software) Library Programming Library Descriptions and Compilation Copyright 1994 Nelson Ford ALL RIGHTS RESERVED. Duplication, reprinting and distribution of these descriptions is restricted. See LICENSE.DOC in the PSL_NEWS directory for complete information Also see TOOLS and GEN_VID for tools and routines for multiple languages, including C. =====C Programming, part 1 CONTENTS: -----ARCHIV: file archiving, compression for C -----COMMUNIC: communications & LAN routines for C -----COMPILRS: compilers and interpreters for C. -----DATA_INP: data entry routines for C -----DATETIME: date & time routines: -----DATAFILE: data file accessing, conversion, encryption, CRC, etc. -----DOS_ACCS: routines for accessing DOS, DOS functions, etc. The following are in C2.TXT: -----FORNLANG: foreign language interfaces -----GAMES: game related routines for C -----GEN_LIB: general, multi-purpose libraries and routines -----GRAPHICS: graphics routines -----INDEXING: indexing & linked list routines for C -----INFO_TUT: information, tutorials, etc. -----KYB_MOUS: keyboard, mouse, joystick routines -----NUMERIC: random numbers, large numbers, etc., for C The following are in C3.TXT: -----MEMORY: memory management, accessing, TSR's, multi-tasking, etc. -----PRINT: printer routines for C -----SEARCH: search routines for C -----SORT: sorting routines for C -----SOUNDS: add sounds & music to C programs. -----SPELL_CK: spell checking -----STRINGS: string manipulation routines for C -----TOOLS: programming tools for C The following are in C4.TXT: -----TURBO_C: stuff specifically for Turbo C -----TV_FOR_C: stuff for TurboVision for C++ -----VIDEO: screen control, windowing, program screens, etc. ================================================ -----ARCHIV: file archiving, compression for C [COMP_JCM] Compress (JCM) 1.0 is a pair of C routines for compressing and decompressing GIF files. (Jeffrey C. Moxon, reg. fee: $0) [HZIP] HZip (Arizona Software; $0) is C++ source for a file compressor using optimal limited-length Huffman codes. [LDS_11] LDS 1.1 (Nico E. de Vries, reg. fee: $0) is C source code for a variety of compression methods, including AR002, LZW, COMP, ASH, FIN, HUF, LZ, SPLAY, and LZRW1. [LZWC13] LZW Data Compression Library for C 1.3 (MarshallSoft Computing, Inc., reg. fee: $38) is a data compression library for C programmers which uses the LZW algorithm. Supports Borland Turbo C, Microsoft C, and MIX Power C. [PORT_ZIP] Portable Zip/Unzip (Adler, Mark; $0) is the C source for a Zip and Unzip compatible with PKZIP 1.93. It compiles under MSDOS, OS/2, Unix, VMS, and others. [TCOMP] TComp (Innovative Data Concepts, ASP; $50) gives high-speed access to four of the most popular compression methods. In addition to file-to-file compression, you can also compress memory buffers directly. Features include the ability to integrate compression and decompression capabilities into your own programs; file combining and splitting; and a choice of speed, compactness, or compromises. Most C compilers are supported. -----COMMUNIC: communications & LAN routines for C [AUTOLIB] AutoLibrary Program-Playback Tool (McDaniel, Wayne ASP; $62) is a C function library to automate communications. Keystrokes are manually coded into C programs and played back when the program executes. [COMM] Comm (Giannini, Mario; $0) is a set of routines that creates a interrupt driven communications interface for MSC 5.0 & QuickC. [COMSTR] ComStr (Reilly, Patrick; $0) is source for a serial port stream class. [CPORT] CPort 2.0 (Bri Productions; $65) is a C language interrupt-driven serial communication library. It is compatible with most if not all DOS-based C compilers. Features include baud rates from 50 to 115200 baud, COM 1 through COM 4, hardware and software handshaking, adjustable transmit and receive queues, support for simultaneous communications, NS16550 support, and queues as large as 65534 bytes each. [CPPCOM] CPPCom (Herrera, William; $0) is a C++ communications library. [FILESHR] FileShare shows how to implement file sharing on a LAN. [HSEND] HSend is the C source code for a file transfer system for both host and remote computers. [IBMCOM] IBMcom (Intrinsic Computers; $15-$25) is a set of RS232 interrupt driven communications routines in C -- small memory model only. [INTSER] IntSer (McGuinness, Charles; $0) is a minimal function, all C interrupt serial routine. It supports buffered input and output. [LITECOM] Litecomm Communications Toolbox (Information Technology, Ltd. ASP; $65) [for MS C and Turbo C] is a set of powerful routines designed to provide easy access to the full capabilities of the PC's asynchronous communications ports without any specialized hardware knowledge required on the programmer's part. The critical interrupt handlers have been written in assembly language in order to support higher baud rates. A fully automatic flow control is provided using either hardware of software. [MG_COMM] MG_Comm (Giannini, Mario; $0) is the source code for a small, flexible interrupt-driven communications handler for Turbo and MicroSoft C. [PCL4C40] Personal Communications Library for C 4.0 (MarshalSoft; $58) is an asynchronous communications library designed for experienced software developers programming in Microsoft C or Turbo C. Features include over 20 communications functions, six support functions, interrupt driven receiver, runs from 300 to 115,200 baud, supports COM ports 1-4, adjustable receive queues from 8 to 16 bytes, 11 comm error conditions trapped, allows 2 ports to run concurrently, and provides complete modem control and status. Several example programs are provided. [PPL4C] Personal Protocol Library for C 1.0 (MarshallSoft; $38) consists of a state driven library which implements the XMODEM, XMODEM-CRC, XMODEM-1K, YMODEM, and YMODEM-G file transfer protocols. This allows the programmer to run multiple simultaneous protocol transfers while interacting with the user at the keyboard. [PRQUE] PRQue 1.0 (Michael Fiel, reg. fee: $0) is the BP7.0 source code for an object which opens a print queue on Novell Netware 3.11 without using an LPT port. It can be run in real and protected modes. [RJCOM] RJCom 1.3 (Ryu Consulting; $0) is a communications library for Microsoft C. ANSI support is included. [RS232] RS232 (Karcher, Chris A.; $20) provides the functionality needed to employ serial I/O in any application written with Borland C language compilers. [SERIAL] Serial 1.0 demonstrates how to take advantage of some of the Turbo C extensions to the C language to do asynchronous communications without having to write supporting assembly language routines. (?, reg. fee: $0) [SER_LIB] Serial++ Library 1.01 (Cortlandt Technologies ASP; $25) is a library of small routines that bring interrupt-driven serial port support to your C++ programs. This can give you complete access to the registers of the 8250 UART and easily handles multiple ports and multiple instances. [TERM] Term (Reilly, Patrick; $0) supports streams for terminal emulation. -----COMPILRS: compilers and interpreters for C. [68000CC] 68000 C Compiler (Brandt, Matthew; $?) is an optimizing C compiler for the Motorola 68000 processor and is meant for educational purposes. You can learn a lot about writing a compiler by studying the source files on this disk. Since this code was written for a machine with long integers it may exhibit some irregularity when dealing with long integers on the IBM-PC. The author makes no guarantees. This is not meant as a serious development tool although it could, with little work, be made into one. [CENVID] CEnvi 1.008 is a simple interpreter that uses C syntax. (Brent Noorda, reg. fee: $38) [MIRACLE] Miracle C Compiler 1.5 (Szocik, T.; $25) is a C compiler for a 386 or better. It compiles traditional C (Kernighan and Ritchie) with ANSI language extensions. Appropriate object code is created for a Microsoft or compatible linker. A comprehensive library of functions is included. [PC_COMP] Personal C Compiler (C Ware Corp.; $30) is a fast, powerful C compiler. [PROXY] Proxy 1.12 (Leavenworth, Burt; $25) is an interpreter for a rapid prototyping language with C-like syntax based on modeling software using data structures such as sets, maps, sequences, and objects. It allows the developer to make incremental changes to a design, and test them immediately. It also makes it possible to manipulate objects which encapsulate local states, allowing the user to define a software model as a hierarchy of sub-models. [SCI] SCI (Brandt, Bob; $?) is a C language interpreter that includes a full-screen editor and trace facility. SCI is meant to take the experienced BASIC programmer easily into C. [UNARJ] UnArj 2.3 (Jung, Robert; $?) is C source for an archive extractor. [YACC] YACC is a compiler that is not for the casual user and will be useful primarily to expert developers. -----DATA_INP: data entry routines for C [DIALOG] DialogPro (Stott, Kenneth; $50-$200) is a professional level "dialog box" system for C programmers. It takes over all the drudgery of creating code for input screens, input boxes, pull-down lists, data entry, context-sensitive help, etc. WindowsPro is required. [EDUTIL] EdUtils 1.0 is a set of editor utilities for Turbo C. It allows programmers to add text-mode edit windows to applications. Windows can be use to prompt users for information or for full screen editing. C source code and two samples are included. (Kenneth J. Macke, reg. fee: $15-35) [FIELDS] Fields 1.0 is a C++ input field class to be used in dialog screens. It avoids the use of a data struct matching dialog screen layout. Also avoids using alpha keys for numeric fields. (E.A.B. Schl”sser, reg. fee: $0) [GCONIO] GraphicsConsole (Small, John W.; $0) is a graphics-based input routine. [GR_INP] Gr-Inp provides sample code for how to get user input when in graphics mode. [INPUTS] Inputs (LPC Software; $23) is a set of functions which emulate Clipper's input functions for character, numeric, date, and logical field input, but with more functionality. [MULT_FP] Multiple Field Processor (Pride Software Advancement Corp.; $25) is a library of data entry tools for MS C. The program features full in-field user editing as well as pre- and post-field validation. [NEWGETCH] NewGetch (RWR Consulting; $0) is a replacement for the getch() function. The original functions do not properly handle Alt-Q and Alt-R. [NILD] Numeric Input Line Demo (Price, James H.; $0) shows how to get TInputLine to accept numeric input only. [PC_JOVE] PC-Jove is C source code for an EMACS-like editor. [SCRLDLG] ScrollDialog (Patrick Reilly, reg. fee: $0) shows how to create a scrollable dialog in C++. [TINY_WP] Tiny Word Processor (Stevens, Al; $0) is the C source code for the Tiny Word Processor, and SmallCom, a communications program. -----DATETIME: date & time routines: [CJDATES] Crazy Jack's Date Routines (Crazy Jack; $0) are date routines that make it easy to determine the number of days between dates, find the day of the week of a date, convert between Gregorian and Julian dates, sort on dates, and to check the validity of given dates. Source code (assembler, C, TP), OBJ and TPU files and sample code are included. [DATEDEM] DateDemo (Rohr, Gerald; $0,) is a set of date handling routines for C. [DATELIB] DateLib (Rath, Klaus; $0) are date and time manipulations in C. [DATE_AG] Dates (Gifford, Al; $0) is source for almost anything you could want to do concerning dates, including generating a calendar. [JULDAY] Julian Day 1089 (Kessel, Brian and Perry, J.; $?) is a new version of the C code for computing Julian Days. [DATECL] Killer Date Class 4.8 (Price, Charles D. and others; $0) is a full-function date class, including a full set of overloaded operators for addition, subtraction and comparison of date objects; an overloaded operator with a variety of print formats and options, and constructors to create date objects from a variety of source formats. Source included. [MDATES] MDates is a C++ date class for various date oriented routines. (Matthew Rhoades, reg. fee: $0) [SCHDATE] Schon Date-Time (SchnSoft; $0) is a set date-time handling functions. [SDATE] Sdate is an illustration of searching on a date field using the CLOSESTRECORD parameter. [STRFTIM] Strftim is a routine to convert a time structure into a formatted string based on; the standard ANSI C function as described in K&R. [TIMEDAT] TimeDate (Humkey, John K.; $0) is the source code for two time and date manipulation classes. [WEEKDAY] WeekDay is a simple C function that returns the weekday given the day, month and year. -----DATAFILE: data file accessing, conversion, encryption, CRC, etc. [ASCFIL] AscFil 1.0 is a C++ library of functions to read in a non-delimited ASCII file in sorted or non-sorted order. It is useful for converting ASCII to DBF files on the fly. (Matthew Rhoades, reg. fee: $0) [AVLTREE] AVLTREE is a set of AVL tree management routines, a form of balanced binary tree. [BETEDIT] BetEdit (Bergel, Tim; $0) are two classes for validation of numeric data entry. [BFILE] Bfile (Reilly, Douglas J.; $0) is a basic Btrieve class for C++. [BITSTR] BitStr 1.2 (Mavrinac, Erik; $0) is a set of routines for storing an array of boolean values in minimum space. [BTREE_C] Btree (Adkins, John; $0) demonstrates the use of the Borland Btree classlib. [BTCLASS] Btrieve Classes 2.02 (Object Resource Group; $55) contains a set of Btrieve classes that provide an application programmer with the full functionality of Btrieve 5.0. Requires compiler-specific interface routines from the Btrieve Developer's Kit, Borland C++ 3.x or Microsoft C++ 7.00. A tutorial is included for those with minimal experience in object technology. [BTRVEX] BTRV Express Library (Srebnick Micro Consulting; $75) is a `C' library which manages the task of finding and opening Btrieve files. All calls to Btrieve are made through a central module. The advantage of this is that you can modify that module to perform a certain function each time a file is accessed. This feature could be most most useful in a network environment. For instance, you can place a routine in the central module that checks for hardware errors on the server and logs the user off gently if there is trouble. Designed for MSC 5.0 and Btrieve 4.10. [BTR_SUP] Btr-Sup (Srebnick Micro Consulting; $50) is a Btrieve support library that manages the task of finding and opening Btrieve files. This library was designed for Microsoft C v5.0 and Btrieve v4.10. The program will manage up to three open files at a time. [BLTC17] Bullet 1.7b (Cornel Huth, reg. fee: $80) is a library of assembly language routines to access dBASE files from C. [CDBMANG] C Database Management System (Daytris Information Systems; $35) is a complete database development kit designed for C programmers. It is based on the NETWORK database model and uses the ISAM methodology for key file management. The NETWORK database model is the latest concept in database management. The kit also uses the advanced concept of a Data Definition Language (DDL). Using the DDL, a developer can design and re-design their database with minimal effort and absolutely no code changes. CDB is compatible with both Microsoft C and Turbo C, large models only. (The authors are no longer at the address listed in the documentation.) [CIFF] CIFF 1.00 (Tini Software; $0) is a C object module for managing indexed files. Functions include GetEqual, GetLT, etc. [CRCUTIL] CRC utility routines 1.0 is a collection of C routines for performing CRC calculations one byte at a time using a table lookup mechanism. (Gary P. Mussar, reg. fee: $0) [DATA_MG] Data-MG (Giannini, Mario; $0) is a set of illustrative 'C' implementations of Stacks, Queues, and linked lists. Each has working examples and commented source code. [DATDISP] DatDisp (Stroebel, W. E. R.; $0) is C code for a utility that will let you decipher some types of data files without knowing the exact structure. [DB_KH] DB (Harris, Ken; $0) is an extensive set of file management routines for linking into C programs. Sequential, indexed, and random files are supported. Also included is a simple object dictionary manager. [DES_C] DES_C (Gillogly, James; $0) is a DES subroutine library. [FTREE] Fixed-Order B-Tree Source Coce 1.1 (Bryan Flamig, reg. fee: $20) is source code in C++ for implementing disk-based B-trees, based on Chapter 14 of the book "Practical Data Structures in C++", by Bryan Flamig, (John Wiley & Sons, ISBN 0-471-55863-X). [INIFIL] IniFile (George Byrkit, reg. fee: $0) is an INI file function set for C programs for DOS. This implements the GetProfileString, GetProfileInt, WriteProfileString, GetPrivateProfileString, GetPrivateProfileInt and WritePrivateProfileString. [ISM110] ISAM Manager 1.10 (Adrian Mardlin; $64) is a database management library for C++ programmers. Features include: Full relational capabilities. Up to 2 billion records per data file with fast access. Multiple indexes. The program can automatically generate a data entry program from just a database description file, giving you a framework on which you can build a more powerful application (like a 4th generation language). ISAM Manager is provided for both DOS and Windows and is easily ported to other operating systems. [KAFS] Keyed Access File System 2.0 (Dimestore Software; $45) is a complete file system and sort package for C programmers. This package provides everything necessary for creating utility and application software in C. The file system and sort utility can be used independently of each other. They are designed for speed, ease of implementation, and compactness of code. [KEYTREEC] Keytree Toolbox (Rewse Consultants Ltd. ASP; 30 UK Pounds) is a library of routines to create, maintain and access randomly stored files of variable length records. Records can be displayed as soon as the first character of the record is typed. Files can also be read and written serially. Any number of files can be open. Each file can hold 10 indexes of multiple field keys. Associated records can be linked together. Source code is included. [LSAM] LSAM (Starr, Craig J.; $80) is an indexed sequential (ISAM) file access method implemented as a runtime library accessed through a set of interface subroutines for users of Microsoft (3.x +) compilers. It features support for multiple indices per base file, insertion, deletion (logical), retrieval and update by 'key', and full (logical) sequential processing capability in both directions, including (re-) positioning of a file's internal current record pointer for sequential processing of a record (or group of records) beginning at any logical record location in the file. The shareware version of the LSAM is limited to three index files. [LUMINET] LumiNet 1.5 (Patrick Todd, reg. fee: $55) is a collection of functions that can be used by C or Clipper developers to create documents WordPerfect 5.1 page layup, fonts and text formatting and which can be accessed from any C or Clipper program. [OBJENG] The Object Engine 2.0 (Dr. Mark Brittingham, reg. fee: $25) is a C++ class library that provides a significantly easier interface to the Paradox Engine functions. [OBJER] OBJER (Tranzoa, Co.; $15) converts data or text files to OBJ compatible files that you can link with your own programs. It defaults to creating files compatible with Turbo C and MSC small-model files. [OOPBSMC] OOPBase MC (Silico-Magnetic Intelligence; $0) is an object-oriented database library for Microsoft C that provides flexible and fast OOP database functions for quick application development. [OOPBSTC] OOPBase TC (Silico-Magnetic Intelligence; $0) is an object-oriented database library for Turbo C that provides flexible and fast OOP database functions for quick application development. [PGP23S] Pretty Good Privacy Source Code 2.3 (Phil Zimmerman, reg. fee: $0) is the C source code to the encryption utility program entitled Pretty Good Privacy. [PSK] Programmers Survival Kit 1.3 (Friesen, Geoff; $30) is a C library for creating database applications. It includes a keyboard-video-printer interface with a critical error handler and data entry functions. An example illustrating various components is included. [RANDIO] RandIO (Mulroy, Ed; $0) is C source code illustrating the use and access of random access files. [READTEST] ReadTest (Smith, Dave; $0) is the source code for a simple text file viewer. [SOFTCDB] SoftC Database Library (SoftC, Ltd.; $?) is intended for use as a supplement to your compiler's object libraries. It contains 73 user functions, including dBASE III+ data, memo, and index file functions, dBASE IV data file functions, date and time manipulation and calculation. The clock/calendar functions have been added to enhance the core dBASE routines. The library is currently available for Turbo C 2.0 and Microsoft C 5.1. [SPLAY] Splay (O'Connor, Sean; $0) is C and Pascal source code for a utility to compress and decompress files using Splay trees. [TABLES] Tables.H (Pandya, Sameer; $0) has tables that can be used to translate characters from ASCII to EBCDIC and back. [TFILE] TFile (Innovative Data Concepts, ASP; $50) is a high-speed set of routines for manipulating data, index and memo files. It allows reading, writing and creating files; inserting and removing records; indexing by one or multiple keys; and more. Combined with the popular TCXL, it lets you easily create powerful data file management routines. This program is dBase III compatible. Most C compilers are supported. [UNEEK] Uneek 1.0.0 (Williams, Don A.; $0) is C source for a program that will eliminate duplicate records in a file. [WBTRIEV] WBtrieve (Wheaton, Paul; $50) is a Btrieve class which makes Btrieve a lot easier to use. -----DOS_ACCS: routines for accessing DOS, DOS functions, etc. [ATT] Att 1.0 (Tortorelli, Tony; $?) is C code for a file attribute modification program. [BDC] Bulk Disk Copier (MicroGenesis Software; $0) is C source for reading a floppy image to a hard disk and copying it back to as many floppies as you wish. It also formats blank floppies. The source code is an excellent tutorial on lowlevel disk access under DOS. [BIOSEQP] BiosEquip (Hawk, H.L.; $0) is code that reports on system configuration: the number of disk drives, parallel printers, serial ports, video mode, DOS version, and checks for a math co-processor and game port. [CHKFLP] Chkflp (Kevin Traup; $0) contains source code and an executable to check the status of a floppy drive. [CL_RH] CL (Hirst, Roger; $0) is the C++ source for a command line parser. [CMDLN] CmdLn (Small, John W.; $0) provides an easy way to parse the command line. [CONCUR] ConCur 1.0 (Dickerson, Richard; $0) is a concurrent programming module for the C programming language that enables multi-tasking. It is small and easy to use, and has built-in window management routines. [CPUSPED] CPUSpeed contains small C functions to get CPU type and speed. [CRITERR] Critical Error Handler (Hyman, Peter; $0) is a critical error handler, primarily for use with compilers that do not offer trapping or messages like Abort, Retry, Ignore. [DIRSCAN] DirScan 1.0 (Garrison, Jim; $0) is public domain C source code for a utility that searches a disk directory structure for all files matching the file-name and extension contained in the file mask. [DSIZEDB] DIRSize 1.0 (Bennett, David; $0) is C source code to display a listing of directory and subdirectories specified. [DISKSIZ] DiskSize (Ford, George, H.; $0) is a routine to determine disk media size and attributes. [DRIVER] Driver (Hopson, Scott; $0) is a DOS device driver using C, with the header in Assembler. This should be helpful to programmers wanting information on writing DOS Device Drivers. Commented source code is included. [DRVRDY] DrvRdy (Crosley, Tom; $0) is a routine for C to check to see if a floppy disk drive is ready. This avoids the "Abort, Retry, Ignore" message when the drive latch is left open, etc. [DRVSPC] DrvSpc (Micro Solutions Group, Inc.; $0) is a function that returns a long value containing the current available drive space for the default drive or the specified drive. [FILEBUFF] FileBuff (Morris, Ben; $0) contains source code to find values of FILES= and BUFFERS= as set in CONFIG.SYS. [FINDDEV] FindDev (Woodruff, Eric; $0) is a routine which will locate a specified device driver in memory. [FORALL] ForAll (Ron Aaronson, reg. fee: $0) lets you execute a command on multiple files. C source code is included. [I_SET] I_Set 3.53 (Migliavacca, David; $0) contains C functions for editing of DOS master environment, and a utility to automate variables-setting tasks with an easy language. A choose program with an option to add strings in front of a list in an environment string is included. [LESS] Less.C (Lowther, Bruce; $0) is source code for a utility like DOS's MORE filter, but scroll length can be modified on the command line. This program is an example of combinations of the stdin stream, CON stream, and command line parameters. [MAP_S1] MAP_S1 1.0 demonstrates mapping a Netware drive in C++ and then changing the environment to make it a search drive. This drive remains after program termination. Other environment variables can also be added, edited and deleted. (Thomas H. Smith, reg. fee: $0) [MSCHRT] Microsoft C High Resolution Timer 2.00 (MSCHRT) (Ryle Design; $8) is a software "toolbox" of C routines to manipulate one hundred different timers each with one microsecond resolution. MSCHRT makes it easy to very accurately time nearly any synchronous or asynchronous event your PC can encounter. [MOVE_WM] Move - WM 1.0 (Walt Myers, reg. fee: $0) is C source code for moving files. [MSECDL] MSECDLY.C (Bill Gatliff, reg. fee: $0) is C source for procedures to modify BIOS timer overflow rates. This works better in high-speed-interrupt environments than Borland's delay() routine. [PAUSE] Pause 1.0 (Bill Gatliff, reg. fee: $0) is a C routine to provide a delay that is safer to use than delay() when serial-port interrupts are possible. [VLCLASS] Volume Label Class (Astin, Tom; $0) is code for getting, setting and removing DOS disk volume labels.