****************************************************************** * * * * * PROGRAMMER'S JOURNAL--Volume 9.3 CODE DISK * * * * * ****************************************************************** The source code files on this disk are from Programmer's Journal, Volume 9.3, May/June 1991. These files are identical to those published in the magazine, except where noted; OBJ and EXE files have been added. The copyrights are held by the programs'authors, as indicated in the files. All other rights are reserved by Oakley Publishing Company, 1991. No one may commercially distribute these files. Every effort has been made to assure that the program files are correct and complete. No guarantee, express or implied, is offered as to the correctness of the files, nor to the fitness of the programs for any purpose whatsoever. Files from Volume 9.3 are as follows: Code from "Pixel Panning" by Peder Jungck Ever wondered how arcade games simulate motion and generate such smooth action images? Wonder no more. Peder explains how similar feats are possible on the EGA and VGA using fast panning to window onto a "larger than life" screen. PIXELPAN.ASM Assembly language routines for pixel panning designed for C-style calling conventions PANTEST.C Testing code that displays color blocks and then pans the display PANTEST.EXE An executable version PANTEST2.EXE An executable version with macro SLOW_EGA set to 1 **************************** Code from "Object-Oriented SCSI Programming" by Brett Glass Although other PC hardware interfaces have long been standardized, SCSI programming has remained a free-for-all. Brett looks at the latest proposed Common Access Method (CAM) standard for SCSI and writes some portable code to interface with SCSI devices using Turbo Pascal objects. CAM.PAS A Turbo Pascal unit that implements an object-oriented interface to BallardSynergy's CAM SCSI drivers CAMTEST.PAS A simple test program to see what SCSI devices are attached ***************************** Code from "Numeric Exception Handling" by Mark J. Barrenechea Floating-point errors have puzzled programmers for too long. Mark demystifies the IEEE 754 and 854 floating-point standards and explains how the Intel 80287/80387 and i860 chips fit into the puzzle. Learn some slick techniques for handling numeric exceptions in C++ with ease and elegance. EXCEPT.CPP A simple program illustrating numeric exception handling in C++ EXCEPT.EXE An executable version using Zortech C++ ****************************** Code from "Virtual Realities" by Stephen M. Kuhn When your text-based application can no longer deal with the memory-hungry real world, it's time to go virtual. Stephen shows you how to select and develop an application-supported virtual memory system that can take advantage of EMS paging and disk storage. VMHEADER.H Some useful structures for a VM application TOKEN.C Some sample code illustrating the use of VM calls ******************************** Code from "Basic Libraries" by Murray L. Lesser Our BASIC ace shows how to manage personal link libraries. Along the way, he provides two utilities that streamline library management and explains how to shrink applications by linking stub modules. COMMAND.ASM Subroutine to insert "rest of command line" in PSP for Microsoft BASIC Compiler v7.0 COMMAND.OBJ An object code module for your library DOLIB.BAS A BASIC program to update private libraries DOLIB.EXE An executable version FINDFILE.BAS Two BASIC functions to find files in a directory and strip out the filename and extension from the full subdirectory and filename string FINDFILE.OBJ An object code module for your library PBBI.BAS A BASIC program to update the declaration header file for BASIC library maintenance PBBI.EXE An executable version ******************************** Code from "Hashing Functions" by John Otken John examines string hashing functions for fast table lookup and explains why a hash table, unlike your car's gas tank, should never be full. He also creates equivalent functions in assembly language for Windows 3 routines that manage handle-based dynamic storage and atoms (hashed strings). ASM.INC A revised include file with macros ATOM.ASM Atom functions DOS_ERRS.ASM MS-DOS interface that sets error string FATAL.ASM Fatal error routine GLOBAL.ASM Global storage routines MALLOC.ASM Memory allocation and free routines MISC.ASM Miscellaneous support routines PERROR.ASM Routine to print error messages PUTCHAR.ASM Output a single character routine PUTS.ASM Output a string routine STARTUP2.ASM Start up code for assembly language STREAM.ASM Stream I/O routines STRERROR.ASM Error message interface routines STRNCPY.ASM String copy routine TESTATOM.ASM Program to test the atom routines TESTATOM.EXE An executable version of the TESTATOM program TESTATOM.MAK A make file to create the TESTATOM program *********************************** If you would like to subscribe to Programmer's Journal, order back issues, or buy one of our nifty t-shirts, please write to: Programmer's Journal P.O. Box 70167 Eugene, OR 97401-0110 or call (800) 234-0386. Subscriptions are $21.95 annually (six issues). We welcome your comments about the magazine and our code disks. Please use the above address to let us know what you think.