Public (software) Library Programming Library Descriptions and Compilation Copyright 1993 Nelson Ford Duplication, reprinting and distribution of these descriptions is restricted. See LICENSE.DOC in the PSL_NEWS directory for complete information =====C Programming, part 1 CONTENTS: -----COMPILRS: Compilers and interpreters for C. -----ARCHIV: File archiving, compression for C -----DATAFILE: Data file accessing, conversion, encryption, etc. -----SORT: sorting routines for C -----DATA_INP: Data entry routines for C -----NUMERIC: Random numbers, large numbers, etc., for C -----STRINGS: string manipulation routines for C -----KYB_MOUS: Keyboard, mouse, joystick routines -----PRINT: printer routines for C -----SOUNDS: add sounds & music to C programs. (The next section is in C2.TXT.) -----DOS_ACCS: routines for accessing DOS, DOS functions, etc. -----MEMORY: memory management, accessing, TSR's, multi-tasking, etc. -----INFO_TUT: Information, tutorials, etc. -----TOOLS: programming tools for C (The next section is in C3.TXT.) -----GEN_LIB: General, multi-purpose libraries and routines -----GRAPHICS: graphics routines -----VIDEO: screen control, windowing, program screens, etc. -----DAT_TIME: date & time routines: -----SEARCH: search routines for C -----GAMES: game related routines for C -----INDEXING: indexing routines for C -----SPELL_CK: spell checking -----COMMUNIC: communications routines for C -----TURBO_C: stuff specifically for Turbo C -----TV_FOR_C: stuff for TurboVision for C++ ================================================ -----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. [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. [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. [CENVI] CEnvi 1.0 (Noorda, Brent; #38) is a simple interpreter that uses C syntax. [YACC] YACC is a compiler that is not for the casual user and will be useful primarily to expert developers. [Proxy] Proxy (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. -----ARCHIV: File archiving, compression for C [HZIP] HZip (Arizona Software; $0) is C++ source for a file compressor using optimal limited-length Huffman codes. [LZW4C] LZW For C 1.2 (MarshallSoft Computing, Inc.; $38) is a Lempel-Ziv-Welch data compression library for C programmers. It features LZW compress and expand functions. [UnArj] UnArj 2.3 (Jung, Robert; $?) is C source for an archive extractor. [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. -----DATAFILE: Data file accessing, conversion, encryption, etc. [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. [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. [CIFF] CIFF 1.00 (Tini Software; $0) is a C object module for managing indexed files. Functions include GetEqual, GetLT, etc. [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. [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. [OOPBSMC] OOPBase (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 (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. [DES_C] DES_C (Gillogly, James; $0) is a DES subroutine library. [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. [READTEST] ReadTest (Smith, Dave; $0) is the source code for a simple text file viewer. [SPLAY] Splay (O'Connor, Sean; $0) is C and Pascal source code for a utility to compress and decompress files using Splay trees. [RandIO] RandIO (Mulroy, Ed; $0) is C source code illustrating the use and access of random access files. [TABLES] Tables.H (Pandya, Sameer; $0) has tables that can be used to translate characters from ASCII to EBCDIC and back. [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. [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.) [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. [ISM101] ISAM Manager 1.01 (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. [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. [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. [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. -----SORT: [DEMOSRT] DemoSort (Hancock, Les; $0) includes C source for a dozen sort algorithms with a program that lets you compare them. A hook is provided in the demo to let you add your favorite sort routine if it is not already included. EGA/VGA required. [HSORT] HSort is an implementation of the heap sort algorithm. QSort has a slightly better average speed than HSort, but if the items are nearly in order when Qsort is called, it is as slow as a bubble sort, heap sorts always run at about the same speed, which is very fast. [KWIKSORT] KwikSort (Blaine, Gary; $0) is an animated demo of the Quicksort algorithm. Source is included. [PDSort] PDSort 3.1.0 (Williams, Don A.; $0) is complete source code and executable for a file sorting program. The routine can sort any size file, limited only by disk space, and is faster and more efficient than the qsort() routine supplied with most C compilers. [QUICKEST] Quickest Sort? (Andrews, Ron; $0) is `C' code for a sorting routine that the author claims is the fastest he has found for sorting arrays of random numbers. This is a modification of the Quicksort algorithm found in Wirth's books. It will, for example, easily sort "z" within "y" within "x". [TSORT] TSort is a set of three sort routines implemented as templated C++ functions. A bsearch is also included. [FSORT] FSort (Avery, Alan J. ASP; $0) is an example of how to sort a large flat-file database exceeding 64K using the qsort function. C source code included. -----DATA_INP: Data entry routines for C [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. [NEWGETCH] NewGetch (RWR Consulting; $0) is a replacement for the getch() function. The original functions do not properly handle Alt-Q and Alt-R. [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. [PC_Jove] PC-Jove is C source code for an EMACS-like editor. [TINY_WP] Tiny Word Processor (Stevens, Al; $0) is the C source code for the Tiny Word Processor, and SmallCom, a communications program. [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. -----NUMERIC: Random numbers, large numbers, etc., for C [CGAUSS] CGauss (Vass, Garry; $0) is C++ source code to iniatiate a stream of Gaussian random numbers. [CMATH] CMath is a large (150k, unarchived) set of portable, high quality math routines in C. [OOSET] Ooset (Hatfield, Joe; $0) contains a C++ class used for algebraic sets (such as { 1, 3, 8, 11 }). [PARFNCT] PARSE Function 1.0 (Rubin, Jonathan L.; $20-$45) is a mathematical string function evaluator. It lets you add dynamic computations to your programs. [RANDGEN] RandGen is C and ASM code to generate random numbers. [EXTMATH] EXTMath (Victor, Tim; $0) is a library of C-callable assembler subroutines to do 64-bit unsigned math. Turbo Assembler source code is provided for add, subtract, multiply, divide, copy, compare, and negate operations. The object library with the assembled modules and a program example with Turbo C source code are also included. [VECTLIB] Vector Library 1.0 (Litvinoff, Scott; $10) is a C++ Class Library that allows you to easily handle 2 and 3-dimensional vectors and 3x3 matrices. The 2 dimensional vectors can be accessed and handled in either polar or rectangular format and the 3 dimensional vectors can be accessed and handled in rectangular format. [EVALX] Evalx (Hawkins, James P.; $5) is C source code for a convenient and powerful algebraic expression parser and evaluator. [GRAVSIM] GravSim (Hassell, C. Daniel; $0) is C code for a simulation of the affects of mutual gravitational pull on a set of bodies. [WINMAX] Winmax (O'Connor, Dan; $0) is a header file that defines max(), min(), absMax() and absMin() as inline functions instead of macros. [DISPAT] Dispatch (McDermott, Joe; $0) illustrates how to send and receive values via DDVT's. [DOUBLE] Double.C is a routine which converts PASCAL REAL to C DOUBLE and vice versa. [FINCALC] Financial Calculator (Vasile, Eddy; $0) contains C++ code and a program which illustrate object oriented techniques for finance: Present Value, Future Value, Interest Rate and Number of Periods. [BPREAL] BPReal (Biffl, Richard; $0) contains functions in C to convert floating-point numbers between the IEEE double type used by most PC-based C compilers and the proprietary real type used by Borland Pascal. [RNG] Random Number Generators (Holsinger, Ken E.; $0) contains C source code for two random number generators. [COMNUMB] Compound Numbers Class (Azarona Software; $?) is the source for a compound number class. [YAMP] Yet Another Matrix Program 1.6 (Von Tress, Mark Ph.D.; $0) is a C++ matrix algebra package. The package supports recursive matrix functions. Matrices are stored in a virtual memory file that can be stored in a RAM disk, and is limited to 32 megs. Matrices can be larger than 640K. [BUMP] BUMP 1.1 (Almon, Clopper; $0) is the Beginner's Understandable Matrix Package in Borland C++. It has classes with functions, derived classes with inheritance, non-trivial constructors and destructors, overloaded operators, and a virtual function. -----STRINGS: string manipulation routines for C [ASE] Arithmetic String Evaluator 1.0 (TriSoft Technologies; $30) is a procedure library that converts a string expression to a value. This allows users to enter formulas on a line rather than entering one number/function at a time, calculator style. [GCSTRING] GCString (Herrera, William; $0) is a string class which demonstrates methods of garbage collection and class-specific memory allocation. It runs faster than most standard string classes. Source code is provided. [STRTOK] StrTok (Keefe, Ed.; $0) are some C routines, text files and programs intended to demystify the "strtok" function. [WSTR] Wheaton Strings Library (Wheaton, Paul; $0) is a C++ string library. It consists of one class and independent functions that provide an easier way to manipulate strings. [OOSTRNG] OOString Class 1.1 (Bernstein, John; $0) is a class to handle strings. -----KYB_MOUS: Keyboard, mouse, joystick routines [KEYS] Keys is a set of PC keyboard Defines and routines for C. [KYBDEX] KYBDEX (Drash, Jim; $0) reports on the presence of an extended keyboard and if the BIOS supports the extended keyboard. The full source is included. [NOPAUSE] NoPause (Astin, Thomas; $0) demonstrates a way to disable the pause key. [ONKEY] Onkey (Bridges, Steve; $0) is a C library of keyboard functions, including OnKey - calls a supplied function whenever a passed key is hit, InKey - waits n seconds or forever for a key to be pressed, PutKey - stuffs a keystroke into the keyboard and LastKey - retrieves the last key pressed. [GAMEPRT] Gameport (Richards, Fred; $0) is a small set of routines that allow you to read the position of the Joy Stick. Assembler/C source code included. [NILD] Numeric Input Line Demo (Price, James H.; $0) shows how to get TInputLine to accept numeric input only. [PCKEY] PCKey (Small, John; $0) provides access to the PC's keyboard through fast inline member functions. Includes C++ source code and demo. [STUFFKY] StuffKy (Kanarek, Richard; $0) contains an assortment of keyboard handling routines and technical information about the keyboard buffer. Assembler source and sample calling routines in Turbo C are included. [CTRLC] Ctrlc (Pittman, Roger; $0) is a quick-and-dirty Ctrl-Break and Ctrl-C intercept handler. [CMOUSE] Cmouse (Small, John W.; $0) is a TC++/BC++ mouse driver interface class complete with auto-interrupt handler. It uses screen physical coordinates instead of mouse virtual coordinates. [CWSCR] Cwscr (Haden, Charles W.; $?) contains C++ code modules for directly accessing mouse drivers and the screen. Compiled executables are also provided. [GMICE] GMice (Tovey, Dwight N.; $0) is a sample program to demonstrate how to write mouse interrupt handlers entirely in C. [MOUSDM] MousDM (Burks, James B.; $0) is a mouse driver demo with C source routines for using an MS compatible mouse in graphics mode. [MPP] Mouse++ (Moreland, Carl; $15) is a mouse interface class for Borland C++ or TurboC++. Features include a fully buffered event handler, shift-key/button events, MultiClick buffer, hold- and-repeat button events, and more. Source code and a text/graphics demo are included. [MOUSE_C] Mouse (Loos, Rodney; $0) contains mouse routines and the resulting library. Source code is included. [MCDT] Mouse Cursor Design Tool (Oliver, Dale D.; $10) lets you design a mouse cursor and then generates the C code for it. Tools include copy, flip, rotate, flood, clear and more. Requires EGA, a mouse, and 117K of free RAM. [MOUSTR] Mousetrap 1.0 (Curran, James M.; $15) is a collection of functions to control a mouse, designed to be called from a 'C' program. They provide easy access to the low-level functions of the mouse interrupt, as well as a simplified system for high-level control over the mouse. The basic functions are mostly self explanatory, while high-level functions are a bit more complicated. [MOUSTRK] Moustrk (Goldrich, Bob; $0) is C code showing how to implement a mouse event handler. [TCRAT2] Tcrat2 (Smart, J. A.; $0) is a MS-compatible mouse driver to provide mouse support for Borland's Turbo C 2.0 Integrated Development Environment. [Gport] Gport 1.01 (Bri Productions; $27) is a game port library for C. It is compatible with most DOS based C compilers. Features include timer driven button monitor, optional joy stick calibration, and more [CTRLCLIB] CtrlCLib - The Ctrl+C Library (Trendtech Corporation ASP; $33) is a collection of C-language functions that help programs manage the user-initiated class of interrupts such as Ctrl-C, Ctrl-Break Ctrl-Alt-Del, Alt-3, Ctrl-2, Ctrl-NumLock, Pause, Ctrl-S, Ctrl-PrtSc and more. [GOODMOUS] Mr. GoodMouse (American Abbey; $35) is a library of mouse and video services and character menus and windows for DeSmet C and QuickC. No mouse control code is required if a mouse driver has been installed. The video routines include automatic sensing of video type, automatic mouse boundary limiting, windowed data entry and more. Several demo programs and their source code are included. -----PRINT: printer routines for C [QSPRINT] QSprint (McCormick, William B.; $0-PD) is a quick printf() for OS/2 multi-threaded programs for Quick-C. [BANNERC] Banner ($0; is a C routine which writes 10x10 block characters. It's useful for cover pages) for reports or output to spoolers, etc. [PRNSTRM] PrnStream 1.01 (Reilly, Pat; $0) is a stream class that supports printer ports. -----SOUNDS: add sounds & music to C programs. [CBLASTR] C-Blaster 1.0 (Pop Software; $35) lets you add AdLib/Sound Blaster compatible sounds and music to your apps. You can load SB Instrument files. SB-Pro stereo is supported. [MUSICIO] MusicIO is a set of procedures and a function for generating music on the Ad Lib Music Card from a C program. It requires the Ad Lib or Sound Blaster music card (see Retail Products pages) and the sound driver that comes with Ad Lib products. The procedures will read INS and ROL files. [Sefx] Sefx 1.0 (Bri Productions; $27) is a library that lets you add sound effects to your programs. [TSI_SNDS] T.S.I. Sound Library (T. S. I.; $10) offers the following sounds a phaser, flying saucer, buzzer, a bomb dropping, a screech and more. [UC_Snd2] Background Sound (Miller, David A.; $15) will allow you to create background sound in your programs. Sample programs with C source code is included, including a selection of Christmas music and some sound effects.