Module : VIDEO.ASM - Direct Video Access Routines for TASM Version 1 Author : Dave Bennett Version : 1.0 Date : 11/9/88 CIS PPN : 74635,1671 FidoNet : 1:280/307 Internet : kcufgat@fidonet.org Description: ------------ This is a module of FAST direct video routines for TASM. At this time they are released to the public domain. Much thanks to Brian Foley for FASTWR.PAS (Turbo Pascal V3 Inline Assember Screen Routines) which gave much insight on screen positioning and snow suppresion (horiz retrace waiting) These routines are dying to have someone write an accompaning windowing module... (hint hint) Please contact me a tell me what you think via EPlex, IBMNET, Borland forums etc... I am very interested in your opinions, bug reports, etc.. --Dave Files in the distributed archive -------------------------------- Name Ext Size Description ---- --- ----- ----------- VIDDEMO ASM 20487 Demonstration program VIDEO ASM 26416 Video routines VIDEO DOC 6792 This file VIDDEMO EXE 2662 Compiled video demo (Not bad for 2.5K!) VIDEO INC 2366 Global Declareations & equates for VIDEO.ASM VIDDEMO MAK 165 Turbo Make file for VIDDEMO.EXE Features: --------- - Video mode detection - Monochrome/CGA/EGA support - Snow suppression - Direct character & string writing - Screen saving & restoring - Area fills (character, attribute, and both) - Cursor on & off control - All commands w/ or w/o attribute changes Global Data: ------------ BaseOfScreen Word value set by GetVideoMode proc. This is set to B800h / B000h depending video mode. SnowCheck Byte value set by GetVideoMode. Set to 1 if adapter is CGA (Not EGA) by default. Mono and EGA cards will set this to 0 by default. VideoMode Video mode set by GetVideoMode. This holds the video mode at the time of the last GetVideoMode call (Set by BIOS INT 10 func 0Fh). Global Procedures: ------------------ Note: No routines preserve the flags register! See VIDDEMO.ASM for examples of all routines, all references to this module and VIDEO.INC have been highlighted with a ($) so that you may better scan VIDDEMO.ASM for examples of how to apply these routines. --Dave EGAInstalled ------------ This procedure checks to see if the current adapter card is an EGA. Output AL = 1 if EGA Adapter is found / 0 if not Modified AX GetVideoMode ------------ This procedure checks the video mode and sets the BaseOfScreen accordingly. It also sets SnowCheck to 1 if adapter is a CGA. Output BaseOfScreen VideoMode SnowCheck Uses EGAInstalled DWriteCH -------- Writes a character to the screen using direct memory access. *** IMPORTANT -- CALL GetVideoMode Before using this routine! Input AH Row on screen 1-25 AL Column on screen 1-80 BH Video Attribute BL Character CX Number of times Output Screen memory (B000:0000 or 8000 CGA/MONO DWriteCHNA ---------- Writes a character to the screen using direct memory access. This procedure does not disturb current attr setting. *** IMPORTANT -- CALL GetVideoMode Before using this routine! Input AH Row on screen 1-25 AL Column on screen 1-80 BL Character CX Number of times Output Screen memory (B000:0000 or 8000 CGA/MONO DWriteStr --------- This procedure writes a null delimited string to the screen using direct memory access. *** IMPORTANT -- CALL GetVideoMode Before using this routine! Input DS:SI Null terminated string to print AH Row on screen 1-25 AL Column on screen 1-80 BH Video Attribute Output Screen memory (B000:0000 or 8000 CGA/MONO Modifies SI - Returns 1 byte past null of displayed string DWriteStrNA ----------- This procedure writes a null delimited string to the screen using direct memory access, attribute is not changed. *** IMPORTANT -- CALL GetVideoMode Before using this routine! Input DS:SI Null terminated string to print AH Row on screen 1-25 AL Column on screen 1-80 Output Screen memory (B000:0000 or 8000 CGA/MONO) Modifies SI - Returns 1 byte past null of displayed string DFillCH ------- This procedure fills an area of the screen with the specified character and attribute. *** IMPORTANT -- CALL GetVideoMode Before using this routine! Input AH = Top Row AL = Left Column BH = Number of rows BL = Number of columns DH = Attribute DL = Character DFillCHNA --------- This procedure fills an area of the screen with the specified character. Attribute remains the same. *** IMPORTANT -- CALL GetVideoMode Before using this routine! Input AH = Top Row AL = Left Column BH = Number of rows BL = Number of columns DL = Character DFillAttr --------- This procedure fills an area of the screen with the specified attribute. Character remains the same. *** IMPORTANT -- CALL GetVideoMode Before using this routine! Input AH = Top Row AL = Left Column BH = Number of rows BL = Number of columns DH = Attribute StoreToMem ---------- This procedure moves an image from the screen to the designated memory area. *** IMPORTANT -- CALL GetVideoMode Before using this routine! Input AH = Top Row AL = Left Column BH = Number of rows BL = Number of columns ES:DI = Memory Destination Modifies DI StoreToScr ---------- This procedure moves an image from memory to the designated screen location. *** IMPORTANT -- CALL GetVideoMode Before using this routine! Input AH = Top Row AL = Left Column BH = Number of rows BL = Number of columns DS:SI = Memory Area of image Modifies SI CursorOff --------- This procedure simply turns the Cursor off CursorOn -------- This procedure simply turns the Cursor on Disclaimer ---------- The current status of these routines is public domain. Author makes no claims to the usefullness of these routines and cannot be held responsible for any situation resulting from the use of these routines. - David Bennett