
Programmer's Journal  volume 9.1   January/February 1991


PJREADME.91             5580  12-04-90
VGACYCLE.ASM            7189  11-12-90
VGACYCLE.EXE             679  11-12-90
FONTDEMO.MAK             481  10-01-90
LOCAL.H                 1365  10-01-90
FONTDEMO.C              4128  10-01-90
SPEEDO1.C              14182  10-01-90
MONOSCRN.DEF             537  10-27-90
MONOSCRN.SYM             212  10-27-90
MONOSCRN.DLL            1307  10-27-90
MONOSCRN.LIB            1536  10-27-90
MONOSCRN.MAK             569  10-27-90
MONOSCRN.ASM           10253  10-27-90
BUFSET.C                 953  10-31-90
B_CONSTR.C               674  10-31-90
B_DESTRU.C               259  10-31-90
B_DELETE.C               457  10-31-90
TEXTTEST.C              4208  10-31-90
TEXTBUF.H               5979  10-31-90
TEXTTEST.OBJ            3800  10-31-90
BUFSET.OBJ               787  10-31-90
B_CONSTR.OBJ             902  10-31-90
B_DESTRU.OBJ             669  10-31-90
B_DELETE.OBJ             670  10-31-90
B_NEW.OBJ                783  10-31-90
TEXTTEST.OUT            1789  10-31-90
TEXTTEST.EXE           15987  10-31-90
MENUTEST.PRG            2673  11-25-90
MENUKEY.PRG             2899  06-04-90
HOTKEY.PRG              1956  11-25-90
RECURSE.C                907  12-04-90
BLOCK.ASM              15907  11-01-90
MISC.ASM                7428  11-01-90
SWAP.ASM                4838  11-01-90
DIALOG.ASM               867  11-01-90
FILE.ASM                4946  11-01-90
STREAM.ASM              9728  11-01-90
MALLOC.ASM              1456  11-01-90
EMS.ASM                 6944  11-01-90
TEST_BLK.ASM            1774  11-01-90
RAND.ASM                 807  10-31-90
STARTUP2.ASM            3122  11-01-90
DOS_ERRS.ASM            1262  04-29-90
TERM.ASM                2125  10-31-90
STRERROR.ASM             680  10-13-90
PERROR.ASM               972  05-01-90
TEST_BLK.MAK             773  11-01-90
TEST_BLK.LNK             169  11-01-90
ASM.INC                 1965  11-01-90
B_NEW.C                  321  10-31-90
ORDER.AWK               2689  12-05-90

                     
    Code from "VGA color cycling" by Michael Abrash
    Installment 22, in which Michael explores the complexities 
    of VGA color cycling
     
    VGACYCLE.ASM   Listing 1 fills a band across the screen with
                   vertical bars in all 256 attributes, then cycles 
                   a portion of the palette until a key is pressed
    VGACYCLE.EXE   An executable version


    Code from "Digital typography" by Ron Fosner
    Typography and font generation for use on graphics screens 
    and laser printers

    FONTDEMO.MAK   A make file for the FONTDEMO program
    LOCAL.H        Include file for compiler and environment info
    FONTDEMO.C     The demonstration program 
    SPEEDO1.C      Supporting routines for Bitstream's Speedo library

                     
    Code from "Windowing for two" by Chris Schwartz
    A useful Windows 3.0 DLL to access a second monitor just like CodeView

    MONOSCRN.MAK   A make file to create the MONOSCRN Dynamic Link
                   Library (DLL)
    MONOSCRN.ASM   The assembly language source file
    MONOSCRN.DEF   The definition file for the linker
    MONOSCRN.DLL   The executable Windows 3.0 DLL file
    MONOSCRN.LIB   A library file containing the MONOSCRN functions
    MONOSCRN.SYM   The symbol file

                     
    Code from "Text buffers in windows" by Allen Holub
    Allen offers the start of a character-based windowing system in Turbo C/C++

    TEXTBUF.H      The include file with #defines, structures, 
                   macros, and prototypes
    BUFSET.C       Buffer set and move routines
    B_CONSTR.C     Routine to initialize a textbuf -- b_construct()
    B_DELETE.C     Routine to free a textbuf allocated by a 
                   previous b_malloc()
    B_DESTRU.C     Routine to free a textbuf -- b_destruct()
    B_NEW.C        Routine to allocate and initialize a textbuf
    TEXTTEST.C     A test program to exercise the textbuf functions
    TEXTTEST.OUT   Output from the test program
    BUFSET.OBJ     Object files created with Turbo C 2.0 (small model)
    B_CONSTR.OBJ   ..
    B_DELETE.OBJ   ..
    B_DESTRU.OBJ   ..
    B_NEW.OBJ      ..
    TEXTTEST.OBJ   ..
    TEXTTEST.EXE   An executable version of the test program


    Code from "What's on the menu" by M. Steven Baker
    A simple Lotus-style interface for your next database project

    MENUKEY.PRG    The Lotus-Style menubar procedure
    MENUTEST.PRG   A sample code fragment to illustrate MENUKEY
    HOTKEY.PRG     A code fragment that adds a hot-key feature to MENUKEY
       

    Code from "Optimania" by Mark Barrenchea
    Mark explores code inlining and tail-recursion compiler optimizations

    RECURSE.C      A sample C function to illustrate inlining and tail
                   recursion


    Code from "Real-mode virtual memory" by John Otken
    A real-mode virtual memory system for storage and fast file I/O

    ASM.INC        A revised include file with macros
    BLOCK.ASM      Block storage manager routines
    DIALOG.ASM     Dialog box routines
    DOS_ERRS.ASM   MS-DOS interface that sets error string
    EMS.ASM        Expanded memory interface routines
    FILE.ASM       File I/O routines for block storage
    MALLOC.ASM     Memory allocation and free routines
    MISC.ASM       Miscellaneous support routines
    PERROR.ASM     Routine to print error messages
    RAND.ASM       Random number generator routines  
    STARTUP2.ASM   Start up code for assembly language
    STREAM.ASM     Stream I/O routines
    STRERROR.ASM   Error message interface routines
    SWAP.ASM       Swap file manager routines
    TERM.ASM       Termination routines
    TEST_BLK.ASM   Program to test the virtual memory routines
    TEST_BLK.LNK   An indirect link file
    TEST_BLK.MAK   Make file to create TEST_BLK program


    Code from "Order your order here" by William A. Huber 
    in the Letters column.  A program to resequence numbered local
    labels in assembly- language programs written in AWK.

    ORDER.AWK      AWK implementation 




Programmer's Journal  volume 9.2    March/April 1991


PJREADME.92            10196  02-09-91
BLOCK.ASM              15907  11-01-90
VTREE.LZH               5939  02-11-91
FILE.ASM                4946  11-01-90
ZORTECH.LZH            40037  02-11-91
MALLOC.ASM              1456  11-01-90
EMS.ASM                 6944  11-01-90
TERM.ASM                2125  10-31-90
ASM.INC                 1965  11-01-90
XMSDUMP.PAS             7581  10-31-90
VLABEL.ASM              4990  09-17-90
VLABEL.OBJ               432  05-14-90
DRIVER.EXE             21230  08-19-90
DRIVER.BAS               739  09-03-90
MSCTEST.C                931  02-11-91
TORTURE.ASM             3072  02-11-91
MSCTEST.ADA             2583  02-11-91
MONOICON.C              4231  01-09-91
MONOICON.DEF             196  01-08-91
MONOICON.EXE           11946  01-09-91
MONOICON.MAK             264  01-08-91
GMHOOK.C                1299  01-09-91
GMHOOK.DEF               270  01-08-91
GMHOOK.DLL              5101  01-09-91
GMHOOK.H                 379  01-08-91
GMHOOK.LIB              1536  01-09-91
GMHOOK.MAK               543  01-08-91
MONOSCRN.ASM           15241  01-09-91
MONOSCRN.DEF             592  01-08-91
MONOSCRN.DLL            1967  01-09-91
MONOSCRN.H               208  01-08-91
MONOSCRN.LIB            1536  01-09-91
MONOSCRN.MAK             573  11-11-90
F90EXAMP.FOR            6272  02-11-91
OTKENLET.ASM             768  02-11-91
JPI.LZH                37856  02-11-91
BORLAND.LZH             4452  02-11-91
WATCOM.LZH             37822  02-11-91
METAWARE.LZH           36412  02-11-91
MICROSFT.LZH            9348  02-11-91
LHARC.EXE              31256  05-31-89

                     
    Code from "Windows 3 Input Hooks" by Chris Schwartz
    Using hook filter functions in Windows 3.0 to enhance your next
    application

    MONOICON.MAK   A make file to create the MONOICON test program
    MONOICON.C     The C source file
    MONOICON.DEF   The definition file for the linker
    MONOICON.EXE   The executable Windows 3.0 file

    GMHOOK.MAK     A make file to create the GMHOOK Dynamic Link
                   Library (DLL)
    GMHOOK.C       The assembly language source file
    GMHOOK.DEF     The definition file for the linker
    GMHOOK.DLL     The executable Windows 3.0 DLL file
    GMHOOK.LIB     A library file containing the GMHOOK functions
    GMHOOK.H       An include file with function prototypes

    MONOSCRN.MAK   A make file to create the MONOSCRN Dynamic Link
                   Library (DLL)
    MONOSCRN.ASM   The assembly language source file
    MONOSCRN.DEF   The definition file for the linker
    MONOSCRN.DLL   The executable Windows 3.0 DLL file
    MONOSCRN.LIB   A library file containing the MONOSCRN functions
    MONOSCRN.H     An include file with function prototypes

                     
    Code from "C Compilers for Windows" by Paul Yao
    A comparison of C and C++ compilers that support Windows development
     
    JPI.LZH      An archive created with LHARC containing the following
                 files used to test JPI's C compiler
       INITWIN.OBJ  A special OBJ file for initializing Windows
       MIN.C        Our C source file 
       MIN.CUR      Cursor file
       MIN.DEF      Definition file for the linker
       MIN.EXE      The executable Windows program
       MIN.ICO      The icon file
       MIN.LIB      A library file
       MIN.MAK      A MIN make file
       MIN.MAP      The linker map file
       MIN.OBJ      The OBJ file produced by the C compiler
       MIN.RC       The MIN resource file
       MIN.RES      The compiled MIN resource file
       MK.BAT       A batch file to make MIN
       WINDOWS.H    The Windows include file

    BORLAND.LZH  An archive created with LHARC containing the following
                 files used to test Borland's Turbo C++ compiler
       MIN.C        Our C source file 
       MIN.CUR      Cursor file
       MIN.DEF      Definition file for the linker
       MIN.EXE      The executable Windows program
       MIN.ICO      The icon file
       MIN.MAK      A MIN make file
       MIN.MAP      The linker map file
       MIN.OBJ      The OBJ file produced by the C compiler
       MIN.RC       The MIN resource file

    WATCOM.LZH   An archive created with LHARC containing the following
                 files used to test Watcom's C 8.0 compiler
       MIN.C        Our C source file 
       MIN.CUR      Cursor file
       MIN.DAT      Output from the Watcom object disassembler
       MIN.DEF      Definition file for the linker
       MIN.ERR      Error message file created by the compiler
       MIN.EXE      The executable Windows program
       MIN.ICO      The icon file
       MIN.L        A linker directive file for WATCOM linker, wlink
       MIN.LNK      A linker directive file for WATCOM linker, wlink 
       MIN.MAK      A MIN make file
       MIN.MAP      The linker map file
       MIN.OBJ      The OBJ file produced by the C compiler
       MIN.RC       The MIN resource file
       MIN.RES      The compiled MIN resource file
       MIN.RSP      A response file for the linker
       MK.BAT       A batch file to make MIN
       WINDOWS.H    The modified Windows include file
       Z.MSG        Redirected output and warnings from make process

    MICROSFT.LZH An archive created with LHARC containing the following
                 files used to test Microsoft's C compiler
       MIN.C        Our C source file 
       MIN.CUR      Cursor file
       MIN.DEF      Definition file for the linker
       MIN.EXE      The executable Windows program
       MIN.ICO      The icon file
       MIN.MAK      A MIN make file
       MIN.MAP      The linker map file
       MIN.OBJ      The OBJ file produced by the C compiler
       MIN.RC       The MIN resource file
       MIN.RES      The compiled MIN resource file
       MK.BAT       A batch file to make MIN
       WINDOWS.H    The modified Windows include file
       Z.MSG        Redirected output and warnings from make process

    METAWARE.LZH An archive created with LHARC containing the following
                 files used to test MetaWare's High C compiler
       METAWIN.ASM  Special assembly language file for MetaWare
       METAWIN.OBJ  And the OBJ file
       MIN.C        Our C source file 
       MIN.CUR      Cursor file
       MIN.DEF      Definition file for the linker
       MIN.EXE      The executable Windows program
       MIN.ICO      The icon file
       MIN.MAK      A MIN make file
       MIN.OBJ      The OBJ file produced by the C compiler
       MIN.RC       The MIN resource file
       MIN.RES      The compiled MIN resource file
       MK.BAT       A batch file to make MIN
       WINDOWS.H    The modified Windows include file

     ZORTECH.LZH An archive created with LHARC containing the following
                 files used to test Zortech's C++ compiler
       MIN.C        Our C source file 
       MIN.CUR      Cursor file
       MIN.DEF      Definition file for the linker
       MIN.EXE      The executable Windows program
       MIN.ICO      The icon file
       MIN.MAK      A MIN make file
       MIN.MAP      The linker map file
       MIN.OBJ      The OBJ file produced by the C compiler
       MIN.RC       The MIN resource file
       MIN.RES      The compiled MIN resource file
       MK.BAT       A batch file to make MIN
       WINDOWS.H    The modified Windows include file


    Code from "Fortran 90 is Coming!" by Thomas M. Lahey
    Tom describes some exciting new features incorporated in 
    the Fortran 90 Standard

    F90EXAMP.FOR   Fortran 90 code fragments from the article

                     
    Code from "Pragma Interface" By Richard Riehle
    A method for integrating Ada and C with the pragma interface
    
    MSCTEST.ADA    An ADA source file to test the pragma interface
                   to Microsoft C        
    MSCTEST.C      Several C routines to test the ADA program


    Code from "String Handling" by Murray L. Lesser
    Murray examines how to manipulate BASIC strings using library 
    functions

    DRIVER.BAS     A sample driver program to test VLABEL                        
    DRIVER.EXE     An executable program
    VLABEL.ASM     An assembly language routine that shows how to use the
                   new string library functions in Microsoft's Professional
                   BASIC compiler to retrieve the volume label from a disk
    VLABEL.OBJ     An object file


    Code from "Disassembler Roundup" by Brett Glass
    Brett runs several PC disassembler tools through their paces

    TORTURE.ASM    A sample test program designed to be a torture
                   test for the disassemblers
    VTREE.LZH      An archive created with LHARC containing the following
                   files:
       VTREE.COM      A small assembly language utility by Charles Petzhold
                      that displays the tree structure of a disk
       SOURCER.LST    A listing file from the disassembly of VTREE.COM (by
                      Charles Petzhold) generated by Sourcer
       DISNDATA.LST   A listing file from the disassembly of VTREE.COM (by
                      Charles Petzhold)


    Code from "Exploring XMS" by Kim Kokkonen
    A nifty Turbo Pascal utility that maps XMS high-memory drivers

    XMXDUMP.PAS    A pascal program to map XMS memory usage


    Code from "Using EMS for Fast File I/O" by John Otken
    John integrates EMS for fast file I/O into a real-mode virtual 
    memory system

    ASM.INC        A revised include file with macros
    BLOCK.ASM      Block storage manager routines
    EMS.ASM        Expanded memory interface routines
    FILE.ASM       File I/O routines for block storage
    MALLOC.ASM     Memory allocation and free routines
    TERM.ASM       Termination routines
      


    Code from John Otken's response in the Letters column.  An example
    to illustrate freeing DOS memory from an assembly language program.

    OTKENLET.ASM   A short assembly language 


    The LHARC public domain archive and compression utility 
    by Haruyasu Yoshizaki is included on this disk
    to unarchive the compressed files with a .LZH extension

    LHARC.EXE      Version 1.13c of LHARC    




Programmer's Journal  volume 9.3    May/June 1991


PJREADME.93             6075  04-17-91
PANTEST.C               1955  02-28-91
PIXELPAN.ASM            7095  03-23-91
PANTEST.EXE             2775  03-23-91
PANTEST2.EXE            2775  03-23-91
COMMAND.ASM             3661  03-30-90
COMMAND.OBJ              238  03-30-90
DOLIB.BAS               5898  04-16-91
DOLIB.EXE              28744  08-20-90
FINDFILE.BAS            3860  08-17-90
FINDFILE.OBJ            2106  08-17-90
PBBI.BAS                3900  08-20-90
PBBI.EXE               22030  08-20-90
ATOM.ASM                7364  02-22-91
DOS_ERRS.ASM            1262  04-29-90
FATAL.ASM                419  02-20-91
GLOBAL.ASM              4237  02-22-91
MALLOC.ASM              2170  02-20-91
MISC.ASM                7436  02-21-91
PERROR.ASM               972  05-01-90
PUTCHAR.ASM              205  04-27-90
PUTS.ASM                 454  04-26-90
STARTUP2.ASM            3122  11-01-90
STREAM.ASM              9728  11-01-90
STRERROR.ASM             680  10-13-90
STRNCPY.ASM              596  02-21-91
TESTATOM.ASM             866  02-22-91
ASM.INC                 1965  02-21-91
TESTATOM.MAK             813  02-22-91
TESTATOM.EXE            6332  02-22-91
CAMTEST.PAS             3295  04-16-91
CAM.PAS                11002  04-16-91
EXCEPT.EXE             15502  04-17-91
EXCEPT.CPP              6459  04-17-91
TOKEN.C                 1049  04-16-91
VMHEADER.H              1056  04-16-91

                     
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  

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

***********************************



Programmer's Journal  volume 9.4    July/August 1991


PJREADME.94             9698  06-10-91
CEGDRAW.EXE            26770  05-14-91
CEGDRAW.C              13669  04-15-91
CEGDRAW.OBJ             3420  05-14-91
CEGDAC.ASM             12844  04-15-91
CEGDAC.OBJ               505  05-14-91
CLIENT.ASM              3779  04-19-91
DATAGRAM.ASM            2199  04-19-91
DOS_ERRS.ASM            1262  04-29-90
MALLOC.ASM              2170  02-20-91
MISC.ASM                4050  04-18-91
NET_MISC.ASM            6643  05-17-91
PUTBYTES.ASM            1048  04-17-91
PUTCHAR.ASM              205  04-27-90
PUTS.ASM                 454  04-26-90
SERVER.ASM              4676  04-19-91
SETARG.ASM              2479  04-19-91
SPY.ASM                 3399  04-19-91
STARTUP2.ASM            3122  11-01-90
STRERROR.ASM             680  10-13-90
STRNCPY.ASM              596  02-21-91
ASM.INC                 1965  02-21-91
NETBIOS.INC             1836  04-18-91
CLIENT.MAK               773  04-19-91
DATAGRAM.MAK             784  04-19-91
SERVER.MAK               773  04-19-91
SPY.MAK                  793  04-19-91
TESTTERM.PAS            1244  05-13-91
NETBIOS.PAS             9155  05-12-91
NETTOOLS.PAS            4667  05-13-91
COMMCLNT.PAS            4262  05-13-91
COMMSERV.PAS           12753  05-13-91
STRIPIT.BAS             2771  03-27-91
LIVERMOR.LST            1020  06-03-91
V_CONSTR.C              1040  05-03-91
V_DESTRO.C               482  05-03-91
V_SAVE_S.C               543  05-03-91
V_RESTOR.C               547  05-03-91
V_FILL_S.C               592  05-03-91
V_OPEN.C                2265  05-03-91
V_CLOSE.C                885  05-03-91
V_DEACTI.C              1220  05-03-91
V_SIZE.C                 955  05-03-91
V_MOVE.C                1349  05-03-91
V_GOTORC.C               983  05-03-91
V_PUTC.C                1224  05-03-91
V_PUTS.C                 732  05-03-91
V_GETC.C                 659  05-03-91
V_GETS.C                 718  05-03-91
VIEWPORT.C              3294  05-03-91
VIEWPORT.H              4932  05-03-91
MAKEFILE.BCC            2142  05-03-91
DLRING.ADB              4844  05-09-91
DLRING.ADS              2694  05-09-91
DATAGRAM.OBJ             942  04-19-91
BSTREE.C                2876  06-03-91
BSTREE.EXE              9258  06-03-91
DOS_ERRS.OBJ             667  04-29-90
MALLOC.OBJ               386  02-20-91
MISC.OBJ                 644  04-18-91
NET_MISC.OBJ            1189  05-17-91
PUTCHAR.OBJ              124  04-27-90
PUTS.OBJ                 186  04-26-90
SETARG.OBJ               556  04-19-91
STARTUP2.OBJ             731  11-01-90
STRERROR.OBJ             252  10-13-90
STRNCPY.OBJ              129  02-21-91
DATAGRAM.EXE            2500  04-19-91
CLIENT.OBJ              1377  04-19-91
CLIENT.EXE              3272  05-17-91
SERVER.OBJ              1441  04-19-91
SERVER.EXE              3226  05-17-91
SPY.OBJ                 1289  04-19-91
PUTBYTES.OBJ             307  04-17-91
SPY.EXE                 3684  05-17-91
MAKEFILE.TCC            1857  06-03-91
V_STARTU.C              1594  05-03-91
V_CLEAR.C                579  05-03-91
VIEWPORT.LIB           20992  05-03-91
TESTTERM.EXE            3920  05-13-91
COMMSERV.EXE            9456  05-13-91
COMMCLNT.EXE            5280  05-13-91
STRIPIT.EXE            21874  03-27-91
V_SCROLL.C              2928  05-03-91
VIEWPORT.EXE           13304  05-03-91
PJLTRS.LST              8492  06-07-91

                     
Code from "A Coat of Many Colors" by Michael Abrash

Pick a pack of purple pixels ... or make them red, white, and blue. 
Graphics guru Michael Abrash shows how to boost your screen's 
color quotient and program some animation using Edsun's plug-in DAC 
replacement, the CEG/DAC.
     
    CEGDAC.ASM     Assembly language routines for Edsun CEG/DAC 
                   animation program designed for C-style calling conventions.
    CEGDAC.OBJ     An object file.
    CEGDRAW.C      Code that performs 256-color animation on the Edsun
                   DAC, taking advantage of both pixel weighting (selecting 
                   pixel colors as weighted averages of the colors of nearby 
                   pixels) and EDP (the ability to embed information in the 
                   bitmap that reprograms the DAC's palette during the 
                   course of each frame). 
    CEGDRAW.EXE    An executable version. 
    CEGDRAW.OBJ    An object file created with Turbo C++ 1.0.

****************************

Code from "Communicating Over NetBIOS" by Brett Glass

There's probably a modem pool in your future. Brett gets 
you into the swim of things by mixing communications with NetBIOS 
sessions and Turbo Pascal objects. He also looks briefly at not-so-standard 
network modem interfaces. So step into the LAN of plenty!

    COMMCLNT.PAS   A CommServer Client program written in Turbo Pascal.
    COMMCLNT.EXE   An executable version.
    COMMSERV.PAS   The CommServer program written in Turbo Pascal.
    COMMSERV.EXE   An executable version.
    NETBIOS.PAS    An Object-Oriented Turbo Pascal unit to interface 
                   NetBIOS. NCBS are objects. 
    NETTOOLS.PAS   Some NetBIOS tools routines in Turbo Pascal. 
    TESTTERM.PAS   A Turbo Pascal program to test the CommServer and     
                   client programs.
    TESTTERM.EXE   An executable version.

                     
*****************************

Code from "Spying on NetBIOS" by John Otken

Need to network your DOS machine with other computers? John 
develops assembly language routines to interface with NetBIOS and 
a utility for spying on datagrams. You'll also find his simple but 
elegant client and server applications for transferring files. 

    ASM.INC        A revised include file with macros.
    CLIENT.ASM     A simple file transfer Client over NetBIOS using datagrams.
    CLIENT.EXE     An executable version of file transfer Client.
    CLIENT.MAK     A makefile to create CLIENT.EXE.
    CLIENT.OBJ     An object file.
    DATAGRAM.ASM   A test program to send a text string as a 
                   NetBIOS datagram to a specific target NetBIOS name 
                   or as a broadcast datagram.
    DATAGRAM.EXE   An executable version.
    DATAGRAM.MAK   A makefile to create DATAGRAM.EXE.
    DATAGRAM.OBJ   An object file.
    DOS_ERRS.ASM   An MS-DOS interface that sets error string.
    DOS_ERRS.OBJ   An object file.
    MALLOC.ASM     Memory allocation and free routines.
    MALLOC.OBJ     An object file.
    MISC.ASM       Miscellaneous support routines.
    MISC.OBJ       An object file.
    NET_MISC.ASM   Miscellaneous NetBIOS support routines.
    NET_MISC.OBJ   An object module.
    NETBIOS.INC    An include file for the NetBIOS routines.
    PUTBYTES.ASM   A routine to output a single character.
    PUTBYTES.OBJ   An object file.
    PUTCHAR.ASM    A routine to output a single character to stdout.
    PUTCHAR.OJB    An object file.
    PUTS.ASM       A routine to output a string routine to stdout.
    PUTS.OBJ       An object file.
    SERVER.ASM     A simple file transfer Server over NetBIOS using datagrams.
    SERVER.EXE     An executable version.
    SERVER.MAK     A makefile to create SERVER.EXE.
    SERVER.OBJ     An object file.
    SETARG.ASM     Part of the startup support routines for assembly language.
    SETARG.OBJ     An object file.
    SPY.ASM        A program to display network datagrams.
    SPY.EXE        An executable version.
    SPY.MAK        A makefile to create SPY.EXE.
    SPY.OBJ        An object file.
    STARTUP2.ASM   Start up code for assembly language.
    STARTUP2.OBJ   An object file.
    STRERROR.ASM   Error message interface routines.
    STRERROR.OBJ   An object file.
    STRNCPY.ASM    String copy routine.
    STRNCPY.OBJ    An object file.

 
******************************

Code from "Window Viewports" by Allen Holub

Allen continues to perfect the art of window management in 
this second part of his text-windowing system. He tacks a display 
layer (or "viewport") on to the previous text buffer routines, 
creating a stand-alone windowing system that won't tie you or your 
computer's memory up in knots.

    MAKEFILE.BCC   A makefile for Borland C++ 2.0.
    MAKEFILE.TCC   A makefile for Turbo C++ 1.0.
    VIEWPORT.C     A program to test Viewport routines.
    VIEWPORT.EXE   An executable version.
    VIEWPORT.H     Viewport definitions and macros.
    VIEWPORT.LIB   A Viewport library file created with Turbo C++ 1.0.
    V_CLEAR.C      Clear Viewport routines.
    V_CLOSE.C      Close Viewport (remove from screen permanently).
    V_CONSTR.C     Initialize a Viewport.
    V_DEACTI.C     Deactivate a Viewport.
    V_DESTRO.C     Destroy a Viewport.
    V_FILL_S.C     Workhorse function to fill a screen region.
    V_GETC.C       Get a character from Viewport.
    V_GETS.C       Get a string from Viewport.
    V_GOTORC.C     Move cursor within Viewport.
    V_MOVE.C       Move Viewport.
    V_OPEN.C       Display a Viewport.
    V_PUTC.C       Write a character to Viewport.
    V_PUTS.C       Write a string to Viewport.
    V_RESTOR.C     Workhorse function to restore a screen region.
    V_SAVE_S.C     Workhorse function to save a screen region.
    V_SIZE.C       Change the Viewport size.
    V_STARTU.C     Routines to startup and shutdown the video system.
    V_SCROLL.C     Workhorse function to scroll a screen region.


********************************

Table from "Loop Unrolling: A RISCy Business" By Mark J. Barrenechea

Compiler optimizations tend to remain in the realm of the 
mysterious. Mark unravels loop unrolling to reveal its uses and discuss 
its limits. He also compares scalar and vector optimizations on the 
i860 with loop unrolling on the 80486. 

    LIVERMOR.LST   A brief one-line description of each of the Livermore
                   Loops used for testing.
       

********************************

Code from "Data Structure Imperatives" by Richard Riehle

It's embarrassing when you don't know an algorithm from a 
biorhythm, or which data structure you need to get into the swing 
of things while traversing a binary tree. Richard poses challenging 
questions and provides some sample solutions.

    BSTREE.C       A simple C program implementing a binary search
                   data structure.
    BSTREE.EXE     An executable version using Borland Turbo C++ 1.0.
    DLRING.ADB     Ada package body for a simple doubly-linked ring
                   data structure.
    DLRING.ADS     Ada package specification for a simple doubly-linked 
                   ring data structure.


***********************************

Code from "Text Filters in BASIC" by Murray L. Lesser

Who says simple can't be beautiful? Once you get to know 
Murray's text filter program, you'll want to write others--and 
you'll know how to go about it.

    STRIPIT.BAS    A simple text filter program written in BASIC that deletes 
                   extraneous <LF> characters in MASM 5.10 listing files.
    STRIPIT.EXE    An executable version.

*************************************

Code from a letter to PJ by Joan Flugel.

Joan ran a simple program on five different 
disassemblers and the results, as you can see,
vary widely--particularly in the treatment of
immediate values.
    
    PJLTRS.LST    The program and the results from disassembling it with
                  Sourcer, DisDoc, MasterKey, MD86, and Snoop

****************************




Programmer's Journal  volume 9.6    November/December 1991


PJREADME.96             6652  10-03-91
BINGO.ASM               3472  07-28-91
BINGO.COM                139  07-28-91
DEBING.ASM              1186  07-28-91
DEBING.COM                71  07-28-91
EDITOR.C               31426  10-03-91
EDITOR.H                3411  10-03-91
GARLIC.ASM              3375  07-28-91
GARLIC.COM               107  07-28-91
GARLICP.COM              107  07-28-91
GENERIC.CPP              351  06-05-91
GENERIC.DEF              212  04-22-91
GENERIC.EXE            17680  06-15-91
GENERIC.MAK              763  06-14-91
GENERIC.PRJ             5022  06-14-91
HERCLINE.ASM           12736  03-07-91
HERCTEST.C              3303  03-06-91
HERCTEST.EXE           64508  03-07-91
HERCTEST.MAK             391  11-17-90
INITAPP.H                334  06-06-91
INITINST.H               316  06-06-91
PEN.H                    496  06-15-91
SCRIBBLE.CPP            1860  10-31-91
SCRIBBLE.EXE           19392  10-31-91
SCRIBBLE.MAK             776  06-14-91
SCRIBBLE.PRJ            5023  06-14-91
VAMPIRE.ASM             1261  07-28-91
VAMPIRE.COM              115  07-28-91
VIDSAVE.ASM            12813  10-01-91
VIDSAVE.COM              689  10-02-91
WINCLASS.CPP           14432  10-31-91
WINCLASS.H              1956  06-15-91
WINCLASS.LIB           16896  06-15-91
WINCLASS.MAK             595  06-01-91
ALIB.DOC               12105  08-23-91
ALIB.ZIP               63855  08-23-91
ALIBTOOL.ZIP           27683  08-23-91

                     
Code from "A Tiny Windows Class Library" by John Dimm

Simple is beautiful. John shows how to shrink an entire Windows 
program down to just eight lines using C++ and make the switch to 
object-oriented compilers and class libraries at your own pace. 

    GENERIC.CPP    C++ source for the basic GENERIC (Windows) program 
                   that produces an empty window
    GENERIC.DEF    A default Windows .DEF file
    GENERIC.EXE    The executable program
    GENERIC.MAK    A make file
    GENERIC.PRJ    A Borland C++ project file for use with the
                   Integrated Development Environment (IDE)
    INITAPP.H      A header for registering InitApplication functions
    INITINST.H     A header for registering InitInstance functions
    PEN.H          An example of a PEN object
    SCRIBBLE.CPP   C++ source for a Windows program to draw with a mouse
    SCRIBBLE.EXE   The executable file
    SCRIBBLE.MAK   A make file
    SCRIBBLE.PRJ   A Borland C++ project file for use with the
                   Integrated Development Environment (IDE)
    WINCLASS.CPP   The class library C++ source file
    WINCLASS.H     A header file for use with the WINCLASS library
    WINCLASS.LIB   A small-model version of the the WINCLASS library
    WINCLASS.MAK   A make file to create a small-model WINCLASS.LIB

****************************

Code from "A Window System for Text Editing" by Allen Holub

This is it--Allen winds up his layered windowing system. 
The final installment includes all the functions needed by an editing 
engine to implement a window-based editor. For additional elegance, 
the code is written in an object-oriented manner.

    EDITOR.H       An include file of workhorse functions required
                   by the editor to manipulate the screen
    EDITOR.C       C source code for the low-level workhorse functions


*****************************

Code from "Libraries Revisited" by John Otken      

Nothing's better than a good library, especially if you're 
programming in assembly language. John uses the standard C library 
and other well-known models as templates for his ALIB library, which 
contains about 120 usable functions. 

    ALIB.DOC       Documentation on the ALIB library functions that
                   is automatically generated by the ASMHDR program
                   found in ALIBTOOL.ZIP
    ALIB.ZIP       A zipped archive containing the following ALIB 
                   source files along with a built ALIB.LIB library:

abort.asm       fatal.asm       isxdigit.asm    putchar.asm     strcmpi.asm
alib.doc        file.asm        malloc.asm      puts.asm        strcpy.asm
alib.lib        get_inpu.asm    movefptr.asm    puts_dgr.asm    strcpy_l.asm
asm.inc         getvecto.asm    ms_dos.asm      rand.asm        stream.asm
atom.asm        global.asm      net_misc.asm    read_ef.asm     strerror.asm
block.asm       in_fsize.asm    netbios.inc     readfile.asm    strlen.asm
close.asm       isalnum.asm     open_in.asm     remove.asm      strlenz.asm
close_cf.asm    iscntrl.asm     open_out.asm    rename.asm      strncpy.asm
dialog.asm      isgraph.asm     perror.asm      rewind.asm      strskp.asm
dos_errs.asm    islower.asm     put_hex.asm     savemost.asm    swap.asm
ems.asm         isprint.asm     put_uns.asm     sel_min.asm     term.asm
er_dskfl.asm    ispunct.asm     putbytes.asm    setarg.asm      tolower.asm
exit.asm        isspace.asm     putch_nl.asm    skip_nl.asm     toupper.asm
f_size.asm      isupper.asm     putch_sp.asm    startup2.asm    writfile.asm

    ALIBTOOL.ZIP   A zipped archive containing the following source 
                   and executables for useful tools to maintain ALIB: 

asmhdr.c     asmhdr.mak   libgen.exe   order.asm
asmhdr.exe   libgen.c     libgen.mak   order.exe

 
******************************

Code from "Save your Video Mode" by Walter Oney

Are you tired of having your video mode trashed by applications 
that make rude and hasty exits? Don't get mad--get VIDSAVEd. Screen 
preservation and restoration are just a program away. Walt also shows 
you how to go about wrapping an EXE program with a COM file.

    VIDSAVE.ASM    Source code for a useful utility that forms a 
                   wrapper around programs that trash your machine's
                   text video mode
    VIDSAVE.COM    An executable version


********************************

Code from "The Midnight Vampire" by Murray L. Lesser

Just when you thought it was safe to go back to the keyboard, 
you find a day has been sucked from your DOS calendar. Murray has 
a program to foil the vampire--with GARLIC, naturally--and he 
urges readers to regard "the experts" with a healthy grain 
of salt.

    BINGO.ASM      An short TSR program used for checking whether DOS is
                   testing for a calendar update while waiting for
                   command-line input
    BINGO.COM      An executable file
    DEBING.ASM     A utility program to remove the BINGO TSR
                   when BINGO has been run in an environment (such as DESQView
                   386) that doesn't periodically emit an INT 1AH, AH=0 
    DEBING.COM     An executable file
    GARLIC.ASM     A tiny TSR that circumvents the midnight vampire
    GARLIC.COM     An executable file
    GARLICP.COM    An executable version that also removes the tie between
                   the DOS clock and the real-time clock
    VAMPIRE.ASM    Assembly language source designed to demonstrate the
                   midnight vampire (see article for test procedure)
    VAMPIRE.COM    An executable file


***********************************

Code from "Fast Hercules Line Drawing" by Nicholas Wilt

The venerable Hercules standard isn't losing any ground in 
the monochrome graphics arena. Going back to basics, Nicholas presents 
assembly language code for fast line drawing on banded graphics cards 
such as the Hercules monographics, the AT&T 6300, and the original 
CGA.

    HERCLINE.ASM   Assembly language source for our fast line drawing
                   routine
    HERCTEST.C     A program to test and compare HERCLINE with the Borland
                   line-drawing (BGI) library routine
    HERCTEST.EXE   An executable file
    HERCTEST.MAK   A make file


***********************************
