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 Pascal. =====Pascal, part 3 CONTENTS: -----OOP: OOP routines. -----PRINTING: printing routines for Pascal -----SORTING: file and array sorting -----SOUNDS: speech, sound -----STRINGS: string manipulation; command line parsing -----SOURCE: source code for programs -----SYSTEM: overlays, memory, DesqView & other system routines ============================ -----OOP: OOP routines [BTR_OOP] BTR_OOP is a start on an OOPs interface for Btrieve. [BUFFRA] BuffRa (Wentz, Eric C.; $0) is a set of multi-dimensional (from 2 to 255) virtual arrays examples. [CRTPLUS] CrtPlus 1-14-90 (Small, John W.; $20) is a demonstration of window objects. CrtPlus provides keyboard, cursor, and window enhancements to Turbo Pascal 5.5's CRT unit. It is coded in an object-oriented format. [DRAWFIL] DrawFill 2.0 (Biffl, Richard; $10) is a programming tool to help design graphic fill patterns for the Borland Graphics Interface (BGI) used by Borland's Turbo languages. Pascal source code is included. [EVAL_AZ] Eval_AZ (Zatarain, Arthur, P.E.; $0) is an expression evaluator. [FILEOBJ] FileObj (Matsoukas, Bill; $0) is an OOP object that provides an easy way to get information about a file, such as IFEXIST, the full file name, the base name, the date, time, attributes and size. [GENERIC] Genericity (Wentz, Eric C.; $0) offers several low level, generally useable Objects to be used in OOP programming. Source code is included. [HASH] Hash (Wentz, Eric C.; $0) is a simple Generic hash table, designed so that with very little effort, you can hash any data element desired. Requires Genericity, above. [HYPRGID] HyperGuide (Flamig, B.; $0) explains the basics of object-oriented programming with Turbo Pascal. This guide shows you how to put the power of OOP to work for you. The HyperGuide was developed with HyperHelper, a hypertext authoring system. [OBJOVR] ObjOvr (Dubois, David; $0) is a description of a technique for using OBJitized data in an overlayed unit. By OBJitized data, the author means data that has been converted to an .OBJ file using the BinObj utility, and linked as an external procedure. Corrects a subtle bug in the original upload technique. [OOPMOUS] OOPMouse (Peart, Benjamin R.; $0) is Object Oriented Programming routine to make it easier to use an MS mouse in your TP5.5 programs. It also includes a demo Bezier curve program that utilizes the mouse object. [OOPWIN] OOPWin (Hill, Fred; $0) is an object oriented test project that builds an array of expanded wildcards using an input window and then allows comparisons with that array. [STRLINK] StrLink 1.01 (Rosenberger, Rob ASP; $0) in an OOP object which implements a linked list of strings. You can read a text file into memory like StrLinkList. The linked list of strings also saves space by omitting trailing blanks on each line. StrLink can optionally use TurboPower Software's TPRO5 toolkit. [UOBJ] UOBJ Unit 1.0 (Babulic, Mike; $0) is a Pascal unit which contains the TObj class and was written to provide a better base object to Turbo Pascal programmers, enhance portability between Object Pascal and Turbo Pascal (MS/DOS), and provide the standard base object to Quick Pascal programmers. -----PRINTING: printing routines for Pascal [DJSQUASH] DJSquash 1.0 (Straayer, D. H.; $0) is the Pascal source code for intercepting data going to the printer and modifying it before passing it along. This could be used for making a printer compatibility filter, for example. [ESPOOL] ESPooler 1.1 (Webb, Douglas; $10-$30) allows easy addition of a spooler to your Turbo Pascal programs. It can use the heap, EMS, or XMS. [HPCOPY] HPCopy is designed to dump graphics images produced by TP5's Graph Unit to a Hewlett-Packard LaserJet printer. It will print either Normal or LandScape on the HP. [HPLJTPU] HPLJTPU (Gibbons, Jim; $15) is a Unit that makes it easy to use the special features, fonts and functions of the HP LaserJet and several font cartridges. [LPT] LPT 2.0 contains the Pascal source code which allows you to drive the printers on any or all of the LPT printer ports. This allows printer error feedback to be intercepted, preventing it from overflowing the buffer. (Richard S. Sadowsky, reg. fee: $0) [LPTINIT] LPTInit (Sanbar, J. Scott; $0) contains a demonstration program and a command line utility for determining the disposition of a printer. [LZRTPU] LzrTPU (Smedley, Bob; $0) is a unit for printing reports with an HP LaserJet. Most of the commonly used formatting commands have been provided as functions. Also included is SHADETXT, which shows how to write shaded text to an HPLJ. [PPC] Parallel Port Control (Upleger, Robert; $0) prints a disk file using direct control of the parallel port hardware. It will not use any interrupts. [PRINTER2] Printer2 is a TP6 printer unit to change the printer port that the LST file is writ- ing to on the fly. This is helpful to those having a problem with DOS when stripping Ctrl-Z's or other characters from the output stream. [PRINTPA] PrintPas (DiBart, Dennis; $16) is a Turbo Pascal source code printing utility. It tabulates and highlights procedures and functions, denotes global and local variables, modifies comments and skipped code, and more. [PRT] Prt (Camp, Rick; $0) is a printer unit for IBM Proprinters. [PRTERR] PrtErr (Stephenson, Brad; $?) is a routine that intercepts printer errors before DOS reports a critical error. Source and sample code included. [SPOOLDB] Spool (Bradley, David; $0) gives your programs the ability to spool print jobs by giving you access to DOS's PRINT utility. It also has various functions to control and monitor the spooler. [SPOOLER] Spooler (Ebarb, Brian; $0) is a TP5 source for a print spooler. [SPOOLAQ] SpoolAQ (Quint, August; $0) shows how to output data to a printer in the background of the application. Pascal source code and a demo are included. [TPRNT] TP Printer Units (TPRNT) (OptiCom, Inc.; $0-$25) contains objects designed to provide an interface between a printer and an application running under Windows. [TPSPOOL] TPSpool (Webb, Douglas; $10) implements a device driver which allows TP4-5.5 programs to print in the background in your programs. -----SORTING: file and array sorting [ASORTS] ASorts (Rider, J.W.; $0) is a set of general-purpose routines for sorting, searching and moving arrays of arbitrary elements. [QKSORT] QKSort (Showalter, Bob; $0) is a small unit for TP 5.0 that uses qsort and bsearch. Up to 32k elements can be sorted or searched. [SORTS] Sorts contains a general purpose engine to sort in-memory static, dynamic, or indexed arrays using the QuickSort algorithm. Includes source code, examples, and a test program. [SORTING] Sorting (Allison, James L.; $0) is TP5 code illustrating five different sorting algorithms. [SRTKIT11] SortKit 1.1 (Ron Loewy, reg. fee: $25) is a TP6 OOPS sort library that includes internal and external sorting. -----SOUNDS: speech, sound [MODOBJ] MODOBJ 0.03 (Cox, Mark J.; $30) is a set of routines for playing MOD files. [SBVOICE] SBVoice 1.0 (Mathur, Amit K.; $0) is a TP6 unit containing source code for using the voice playback capability of the Sound Blaster card. [SNDTOOLS] SoundTools (Anderson, Nels, ASP; $0) is a set of functions for adding music and sound effects to programs using either interrupts or real time code. SoundTools demonstrates two ways to generate sounds using Turbo Pascal. The simpler method uses tables to generate sound effects in real time. The other method replaces the clock tick interrupt to handle sounds in the background. This is also a good demonstration of Turbo Pascal interrupts in general. [TALK] Talk (Dubois, David Neal and Day, Michael; $0) is assembler and TP5 code for a speech program which uses phonemes to speak numbers through the PC's speaker port. [TP6VOC] TP6VOC (Mathur, Amit K.; $0) is a set routines for making and playing .VOC files. [TPBLASTR] TP SoundBlaster Toolkit 1.0 (Robinson, Trevor; $20) is a set of TP6 routines for accessing Sound Blaster compatible cards. [TXT2SP] Txt2Sp (Schuster, Ron; $0) is TP code for converting English text to phoneme codes that can be used to drive a phonetically-programmed speech synthesizer, such as the Covox Speech Thing. -----STRINGS: string manipulation; command line parsing [BPOS] BPos 1.0 (Bruce J. Lackore, reg. fee: $0) is Pascal code which performs searches for more than a single string, optionally with AND/OR. [GETOPT] GetOPT (Anez, Juancarlo; $0) lets you define command line switches (program options) and parse any command line accordingly. [INTCASE] IntCase is a unit which performs international case conversion functions. [KGSTR] KGSTR.PAS (Greer, Keith; $0) is a set of routines for manipulating strings in Real or Protected mode. [OBJSTR] Objstr (Fralix, Jim; $0) uses less space than a standard string, yet it can be accessed as a standard string. [PARSER25] Parser/TP 2.5 is a recursive decent expression parser unit for Turbo Pascal. (HyperAct, Inc., reg. fee: $30) [PRFTEST] ProfTest (Potvin, Wm II; $0) is a TP6 unit containing a DOS implementation of the Windows Write/Get PrivateProfileString functions, plus a ParseProfileString function and a test program. [SRCH_RS] Search (Sumner, Reuben; $0) is a TP unit for searching text files for specified data. ASM source code is included. [STRASM] StrAsm (Greer, Keith; $0) is a pair of string manipulation routines. One routine removes leading spaces; the other pads or truncates a string to a specified length. [STRGTP6] Strg for TP6 6.1b (Eagle Performance Software; $30) is a set of 111 high-performance string processing routines. Operations include case, comparison, conversions, copy, count, delete, format, justification, parse, search, sort, and many more. [STRNGRW] Strings 1.2 (Winkel, Richard; $13) is a unit containing 29 string related functions written in assembler. The routines are highly optimized and make extensive use of the 80x86 string oriented opcodes. [STR_OBJ] Str_OBJ (Paxton, Mark C.; $0) is a unit for creating and manipulating a String Object. A sample program demos each method of manipulating the object. [SYST] System Unit 5.5c (Eagle Performance Software; $19) is a high speed replacement system unit for Turbo Pascal 5.5. It speeds up more than 30 routines in the system unit including longint math up to 800%; string handling such as Pos, Insert, Delete up to 400%; string/ integer conversions, up to 120%; and more. [TPSTR] TPSTR String Utilities 1.0 (Raviart, Philippe; $20) provides 88 powerful functions and procedures for managing strings. [TS_STR] Turbo Stuff 02.01.00 (Shenandoah Valley Software; $40) is a set of 40 string-related routines routines written in assembler for use with Turbo [ZTFDD] ZTFDD is a routine that can be used to format and combine different data types in a Write statement. -----SOURCE: source code for programs [GROCERY] Grocery List 1.0 is Pascal source code for a demonstration of a shopping list program. (reg. fee: $0) [MORTPAY] MortPay 4.1 (Brown, R. E. & Gilbert, Raymond A.; $0) is TP5 code for a loan amortization program. [PASMAIL] Pascal Mail Label (Harrell, Tim; $0) is Pascal source code for a mail list program. -----SYSTEM: overlays, memory, DesqView & other system routines [CPUIDJL] CPUID (Leonard, John D. II; $0) is a TP6 procedure that will identify a computer's CPU and FPU coprocessor. [DESQ] Desq 4.2 (LeMay, James H. ASP; $0) contains routines to interface DESQview with TP 4.0. [DESQ5X] Desq5x (Eagle Performance Software; $0) is a set of DESQview interface routines that have been modified for use for TP5. [DRIVES] Drives 1.0 is Pascal source code for detecting almost any type of drive. (Schwartz Gabriel, reg. fee: $0) [ENVCALC] EnvCalc demonstrates storing variables using a DOS-like environment table, and using them in SET, CALC, LET, and ECHO commands. [ERROR87] Error87 (Murdoch, D.J.; $10) is a set of tools to help debug floating point code. Unit ERROR87 tries to determine the cause of run-time error 207, "Invalid floating point operation", and fix the reported error address. DV87 fixes bugs in Desqview 2.26 8087 error handling, and NMI fixes problems with 8087 error reporting in some XT machines. [ERRPAT] ErrPat (Larsen, Per B.; $0) is an INLINE MACRO which allows a procedure or function to generate a runtime-error with the address of the CALLING statement. [EXECDEMO] ExecDemo (Rubenking, Neil J.; $0) demonstrates the use of new TP 5.0 routines to enhance the EXEC procedure. [EXIT] Exit (Dubois, David Neal; $0) is a TP5 procedure that makes it easier to set up exit routines in Turbo Pascal. Besides saving the bother of dealing with the ExitProc variable, RegisterExitProcedure has the added benefit of forcing the compiler to check that the procedure is suitable. [EXARRAY] ExtendedArray (Wentz, Eric C.; $0) is a generic ram/diskfile "hybrid" array-like object. The ExtendedArray object resides in both ram and on disk, swapping portions in and out as needed. It is reasonably efficient for up to two meg or so (more for larger array elements). Requires units included in Genericity. [EZMRCI] EZMRCI 1.0 is Pascal code which will allow you to access the Microsoft Realtime Compression Interface engine as used by DoubleSpace. With it, arbitrary blocks of data can be compress and decompressed without any data loss. (Julian M. Bucknall, reg. fee: $0) [FEFIX] FEFix (Faubion, Jay; $0) will repair the headers in Borland Stroked Font files that are damaged as a result of a save action by the Borland Font Editor, FE.EXE, found in the BGI Toolkit. [HEAP55] Heap 5.5 (TurboPower Software; $0) is a set of TP 5.5 units and utilities for managing and extending the heap. [HEAP3] Heap3 is a TP5 unit that implements a heap manager similar to Turbo Pascal 3.0. [HEAP7] Heap7 (Donais, Roger; $0) implements a protected mode heap supporting Mark, GetMem, and Release. A program can simultaneously use the heap provided by this unit and the SYSTEM heap. [HOTMOD] HotMod (Schuster, Ron; $0) lets you reassign the hot keys in the IDE. [INST] Inst (Aaron, Ron; $0) is code that shows how to prevent multiple instances of a program in different VMs. [IOCHECK] IOCheck 1.0 is a set of functions in Pascal for I/O checking operations and returning the error code in the function return. (Mark Reichert, reg. fee: $0) [MAKETXT] MakeTxt converts a Borland help file, such as TURBO.HLP, into a text file that is suitable for input to the Turbo Power Software MAKEHELP program. [MEMSTR] MemStr is a demonstration of a technique in TP for storing a file of strings in a memory array at runtime. [MOVE32] Move32 (Toth, Thomas A. Jr.; $0) is a set of auto-detecting routines to use the 32-bit data bus of the 80386/80486 microprocessors, when present. If one of these processors is not in use, these routines use 16 XFers, still making them faster than the Turbo Move() proc when moving large blocks of information. [MRKRLS] MrkRls (Cariotoglou, Mike; $0) simulates the operation of Mark/Release to port a real-mode program to protected mode. [OBJECTA] ObjectA 1.01 (Rosenberger, Rob ASP; $0) is a TP 5.5 unit that builds on the OBJECTS.PAS file on disk three of the TP package. [ONLINE] Online (Bibb, Don; $0) checks the status of the printer using INT 17H, Service 2. [OVERINIT] Overinit 6.0 expands the heap dynamically during program execution, taking memory away from the overlay buffer. [OVRHAN] Overlay Handler (Furman, Roy; $0) allows an application to explicitly load and unload overlays onto the heap without interfering with TP 5.5's management of the overlay buffer. Source and demo included. [OVERXMS] Overlays in XMS 1.2 (Leijen, Wilber van; $0) allows you to add XMS support to overlaying in TP. [OVERLOK] Overlock (Schuster, Ron; $0) is a TP5.x unit containing the functions OvrLock and OvrUnlock. OvrLock places a "lock" on the overlay buffer and OvrUnlock removes it. [RAMSWAP] RamSwap 1.0 is a TPU which allows a programmer to write a large complex application under the DOS environment and still have plenty of memory for child processes. (Anthony W. Henry, reg. fee: $0-20) [RTE03] Run-time Error Handling & Recovery 1.0 (Hans Schleichert, reg. fee: $0) is a set of BP7 routines to perform run-time error handling from errors for real and protected mode targets. Includes error messages, error recovery, stack trace, overlay trace, and formatted output. Pascal source code and assembler code included. [RUN123] Run123 (Prescott, Richard W.; $8) illustrates a method for writing TP4/5 interrupt routines to modify the behavior of an existing program which is executed as a subprocess. TP5 source and assembly code is provided. [SWAPLOG] SwapLog is Pascal source code which will write a real-time log of overlay loads. It's useful in studying the overlay loading in a program when trying to eliminate thrashing. (Mark Reichert, reg. fee: $0) [SYS60] Sys60 6.0a (Eagle Performance Software; $19) replaces the SYSTEM.TPU in your TURBO.TPL library and provides 32 functions such as Pos and Div that are as much as eight times faster. Turbo Pascal 6.0 is required. [TFDD] TFDD (Ranger, Philippe; $5) contains the source for four object-oriented units that illustrate and apply TFDD's - text file device drivers. [TP_TSR] TP_Tsr (Prescott, Richard W.; $0) illustrates a method for writing TP4/5 TSRs. The interrupt hook and return procedures are written in assembly language, however the remainder of the application can be written entirely in Pascal, can use up to 64K stack, and can Chain or Return from Interrupt from any point in the Pascal Code. [TPFORT] TPFort 1.0 (Murdoch, D. J.; $0) is a collection of several procedures that will allow Microsoft Fortran routines to be called from Turbo Pascal. [TPTSR] TPTSR (Small, John; $20) is a TP unit that turns your Turbo Pascal 5.5 program into a TSR. Includes a demo TSR (popup calendar). [TAP] Turbo Apprentice 1.0 (Cypress Systems, Inc.; $15) is a TSR utility which enables you to extend Turbo Pascal's context-sensitive help system to include reference information for your own units, procedures and functions. Requires a hard disk and TP4+. [VIRTMEM] VirtuMem (Techsonix Marketing; $18) is a virtual memory system that extends dynamic memory into expanded memory and then onto disk. It works with any structures that would normally be dynamically stored as part of the heap, including, but not limited to arrays, records, and objects. Virtual memory size can be up to 4 gigs.