Notes on the .asm files
***********************
-- Prog019.asm seems missing?
-- We try to indicate some useful routines:

1. Prog009.asm 
;************************************************************************
; Write palette registers from a table                                  *
;              Set the palette registers to the values in 'table'.      *
;              The palette registers are contained in the               *
;              first 16 registers of the attribute controller.          *
;              Here the 16 registers are loaded using the values from   *
;              the parameter array.                                     *
;                                                                       *
; Entry:        [BP+4] - Pointer to register table (16 palette regs)    *
;                                                                       *
;************************************************************************
        PUBLIC  _Write_Palette

2. Prog015.asm
;************************************************************************
; Use BIOS call to clear memory                                         *
;************************************************************************
        PUBLIC  _BIOS_Clear


3. Prog016.asm
;************************************************************************
; Clear memory according to the current mode                            *
;************************************************************************
        PUBLIC  _Clear_Screen

4. Prog018.asm
;************************************************************************
; C interface to BIOS video services.  This routine will not            *
; return any values passed by BIOS service.                             *
; Entry:        [BP+4], [BP+6], ... - Values for AX,BX,CX,DX,ES,BP      *
;************************************************************************
        PUBLIC  _Video_BIOS


5. prog064.asm
;************************************************************************
; Enable the split screen                                               *
; Enter:        Split   - Scan line for the split                       *
; Works only for 'standard' EGA modes                                   *
;************************************************************************
        PUBLIC  _Split_Screen

6. prog081.asm
There are 5 routings here, but here is the most useful:
;************************************************************************
; Compute SEGMENT:OFFSET pair from a given x,y address                  *
; of a pixel.  We know that there is HBYTES bytes in each               *
; raster and that each byte  contains eight pixels.                     *
; To find offest of pixel x,y we use the following formula              *
;                                                                       *
;       OFFSET = HBYTES * y + x/8                                       *
;                                                                       *
; To compute which bit within byte is to be changed we get              *
; (x mod 8) which is remainder when x is divided by 8.                  *
; Which is same as keeping last three bits of x.  We use                *
; position within a byte to rotate value 80H so that the                *
; single bit matches the position in a byte.                            *
; Recall that bit7 in a byte represents left most pixel.                *
; Thus MASK is computed as follows:                                     *
;                                                                       *
;       MASK = ROTATE 80H TO THE RIGHT BY (X AND 7)                     *
;                                                                       *
; Entry:        BX - X coordinate (pixel)                               *
;               AX - Y coordinate (raster)                              *
; Exit:         CL - Mask (x mod 8)                                     *
;               BX - Absolute offset in display buffer                  *
;************************************************************************
Get_Address     PROC    NEAR
 
7. prog084.asm
;************************************************************************
;  Scanline(start, end, raster, color):draw line from (start,y) to      *
;       (end,y) with a color 'color'.                                   *
;  Entry :sp + 2 = Start                                                *
;         sp + 4 = Stop                                                 *
;         sp + 6 = y                                                    *
;         sp + 8 = color                                                *
;               ....                                                    *
;************************************************************************
        PUBLIC  _ScanLine


8. prog085.asm
;************************************************************************
; solid_box(x0,y0,x1,y1,color)   fill a rectangle defined by            *
;       upper-left 'x0,y0', and lower-right 'x1,y1'                     *
;       with the specified color 'Color'.                               *
;       Each pixel on the display corresponds to one bit in memory.     *
;       Thus one byte represents 8 different pixles.                    *
;       A rectangle, in general, will consist of three vertical         *
;       strips. The midle strip will be composed entirely from pixels   *
;       forming a complete byte. The left strip has pixels only in      *
;       last few bits of a byte, and right strip only in first few bits *
;       This routine will draw each strip in a separate loop.           *
;************************************************************************
        PUBLIC  _Solid_Box

9. prog086.asm
;************************************************************************
; Line (x0, y0, x1, y1,c ): draw line from (x0,y0) to (x1,y1)           *
;               with a color (c).                                       *
;               This routine is divided into three parts. Horizontal    *
;               lines are done in the first part, vertical lines in     *
;               second part, and rest in the third part.  The lines     *
;               in the third part are done using the Bresenhams         *
;               algorithm.                                              *
; entry : sp + 2 = x0                                                   *
;         sp + 4 = y0                                                   *
;         sp + 6 = x1                                                   *
;         sp + 8 = y1                                                   *
;         sp + 10= color                                                *
;************************************************************************
        PUBLIC  _Line

10. prog087.asm
;************************************************************************
; Transfer Bit Aligned Block of dimensions Width x Height, from         *
; source, with upper left corner at (X_Src,Y_Src), to destination with  *
; upper left corner at (X_Dst,Y_Dst), using function fn.                *
; Entry:        X_Srs, Y_Src  - Source upper left                       *
;               X_Dst, Y_Dst  - Destination upper left                  *
;               BWidth,BHeight- Dimensions of the block                 *
;               Fn            - Logical function (Copy, AND, OR, XOR)   *
;************************************************************************
        PUBLIC  _BitBlt

11. prog089.asm
;***********************************************************************
; Save current screen into a file PICTURE.001                          * 
; Assumes default settings of EGA registers for modes E,F,10           * 
;***********************************************************************
        PUBLIC  _Screen_Dump

12. prog090.asm
;************************************************************************
; Terminate and stay resident program to intercept INT 5, caused by     *
; <Shift>+<PrtSc>, and to save graphics screen into a file.             *
;************************************************************************

13. prog091.asm
;************************************************************************
; Restore screen from a file PICTURE.001                                *
; Assumes default settings of EGA registers for modes E,F,10            *
;************************************************************************
        PUBLIC  _Screen_Load


