Category : Assembly Language Source Code
Archive   : ASMLIB35.ZIP
Filename : MODE.DOC

 
Output of file : MODE.DOC contained in archive : ASMLIB35.ZIP

**************************** VIDEO MODES ***********************************

ASMLIB video mode subroutines (c) Copyright 1991 Douglas Herr
All rights reserved

°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

HGRAPH: establishes Hercules graphics mode, pages 0 & 1
HGRAPH0: establishes Hercules graphics mode, clear page 0 only
Source: hgraph.asm (a$herc.asm, hmode.asm)

Hercules or compatible required
(including Hercules InColor)

Call with: no parameters
Returns: if CF = 1, no Hercules installed
if CF = 0, AX = code for Hercules model
128 = HGC
144 = HGC+
208 = InC
Uses: AX, CX, CF
Supports: Hercules graphics cards and compatibles: graphics mode
see also Use64k in SYSTEM.DOC
Example: call hgraph ; establish graphics mode
jc no_hercules ; drat!


°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°


HRAM8043: establish an 80-column, 43-row RamFont mode, loading a
standard 8x8 character font in RAM
Source: hram8043.asm (a$herc.asm, hmode.asm, hload8x8.asm)

HRAM9025: establish a 90-column, 25-row RamFont mode using
standard ROM characters
Source: hram9025.asm (a$herc.asm, hmode.asm)

HRAM9043: establish a 90-column, 43-row RamFont mode, loading a
standard 8x8 character font in RAM
Source: hram9043.asm (a$herc.asm, hload8x8.asm, hmode.asm)

Hercules RamFont card required
(including Hercules InColor)

Note: use htext to restore normal 80 x 25 text mode

Call with: no parameters
Returns: if CF = 1, no RamFont card installed
if CF = 0, AX = code for Hercules model
144 = HGC+
208 = InC
Uses: AX, CF; all other flags and registers are saved
Supports: HGC+ and InC cards: 4k RamFont mode
Example: call hram8043 ; RamFont mode: 80x43
jc no_ramfont ; drat!


°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

HTEXT: establish (or restore) Hercules text mode
Source: htext.asm (a$herc, hmode)

Call with: no parameters
Returns: if CF = 1, no Hercules installed
if CF = 0, AX = code for Hercules model
128 = HGC
144 = HGC+
208 = InC
Uses: AX, CF
Supports: Hercules graphics cards and compatibles: text mode
(including Hercules InColor)
Example: call htext ; Hercules text mode
jc no_herc ; drat!


°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

MODE13243: switches supported systems to 132 column, 43 row text mode
MODE13225: switches supported systems to 132 column, 25 row text mode
Source: mode132.asm (isevga.asm)

Call with: AX = SuperEGA/VGA code returned by IsSEVGA
Returns: CF = 1 if mode not supported
if CF = 0, AX = mode number
Uses: AX, CF; all other registers and flags are saved
Supports: Equipment detected by IsSEVGA (see IsSEVGA in SYSTEM.DOC).
Most VGA boards require a multi-frequency monitor to
use 132-column modes; consult your board's documentation.
The Paradise EGA 480 requires an EGA monitor; the Everex
EGA works with Monochrome and EGA monitors, and the 25-row
mode also works with a CGA monitor.
Example:

call issevga ; test for Super EGA or Super VGA
jc no132 ; no good - skip
call mode13243 ; set mode
jc no132 ; no good
.
.
.



°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

MODECOLOR: switches system to color text mode; may be used to switch
monitors on a 2-monitor system, or to switch to the standard
80-column, 25-rows color mode from other color modes
Source: mode.asm (find6845.asm)

Call with: no parameters
Returns: CF = 1 if no color monitor
CF = 0 if successful
Uses: CF; all registers and all other flags are saved
Example: call modecolor
jc nocolor
.
.
.

°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

MODEMONO: switches system to monochrome text mode; may be used either
to switch active monitors on a 2-monitor sysem or to switch
to monchrome text mode (80x25) from graphics mode (EGA or
Hercules).
Source: mode.asm (find6845.asm)

Call with: no parameters
Returns: CF = 1 if no monochrome monitor
CF = 0 if successful
Uses: CF; all registers and all other flags are saved
Example: call modemono
jc nomono
.
.
.

°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

MODE43: switch EGA to 80x43 text mode or VGA to 80x50 text mode
Mode43 switches an EGA to the 80-column, 43-row text mode from
any color mode or any EGA monochrome mode, or switches a color
VGA to 80x50 text mode from any other color mode.
Source: mode43.asm

Call with: no parameters
Returns: if CF = 1, AX = 0 if no EGA or VGA in system
AX = -1 if EGA connected to CGA monitor
if CF = 0, AX = 3 if EGA or VGA connected to color monitor
AX = 7 if EGA or VGA connected to monochrome monitor
Uses: AX, CF; all other registers and flags are saved
Example: call mode43
jc noega



°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

SUPER13: changes standard VGA systems to an undocumented 320x400
256-color graphics mode. ASMLIB supports 2 graphics pages
in this mode. See also XModeClear.
Source: super13.asm ($graph.asm)

Call with: no parameters
Returns: if CF = 1, no VGA installed
if CF = 0, all OK
Uses: AX, CF
Supports: VGA only: graphics mode
Example: call super13
jc oops ; do something else if no VGA


°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

SUPER13A: an undocumented 360x480 256-color mode for any VGA system.
One page is available in this mode. See Super13 for example.
ASMLIB graphics subroutines recognize this mode.
Super13a is based on John Bridges' code and parameters.
Source: super13a.asm ($graph.asm)

Call with: no parameters
Returns: if CF = 1, no VGA installed
if CF = 0, all OK
Uses: AX, flags
Supports: VGA only: graphics mode
Example: call super13a
jc oops ; do something else if no VGA



°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

SVGA16: set Super VGA mode
Source: svga16.asm (banks.asm)

Call with: AX = 16-color mode desired
AX = 0 for 800x600
AX = 1 for 1024x768

!! DO NOT USE ANY VALUE FOR AX OTHER THAN 0 OR 1 !!

ASMLIB's SVGA subroutines are derived from John Bridges'
public domain VGAKIT board identification and bank switching code.
Boards supported are:

Ahead Technologies
ATI
Chips & Technologies
Everex
Genoa GVGA
NCR
Oak Technologies
Paradise (Western Digital)
Trident
Trident 8900
Tseng (Genoa, Orchid, Willow)
Tseng 4000
VESA standard (800x600 only)
Video 7

I have not been able to test VGAKIT modes on all boards; please
let me know if you encounter difficulties.

Returns: AX = mode number
if AX = 0, requested mode is not available
SVGA16 cannot determine if the monitor you are using will
work with the requested mode. Monitor damage may result
from improper use of SVGA16.

Example:

include asm.inc

public mygraph
extrn whichvga:proc, extrn svga16:proc

.code
mygraph proc
; I want to use a 16-color 1024x768 mode if available
; start by calling WhichVGA to determine if the equipment is capable
call whichvga
or ax,ax ; SuperVGA installed?
jz no_svga ; nope, use some other mode
mov ax,1 ; specify 1024x768 mode
call svga16

°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

SVGA256: set Super VGA 256-color mode
Source: svga256.asm (banks.asm)

Call with: AX = 256-color mode desired
AX = 0 for 640x400
AX = 1 for 640x480
AX = 2 for 800x600
AX = 3 for 1024x768

!! DO NOT USE ANY AX VALUES OTHER THAN 0, 1, 2 & 3 !!

ASMLIB's SVGA subroutines are derived from John Bridges'
public domain VGAKIT board identification and bank switching code.

Equipment supported is listed under SVGA16, plus:

Compaq (640x480 only)


Returns: AX = mode number
if AX = 0, requested mode is not available
SVGA256 cannot determine if the monitor you are using will
work with the requested mode. Monitor damage may result
from improper use of SVGA256.

Example: see SVGA16

°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

XMODE16: establish SuperEGA/SuperVGA graphics mode and configure
ASMLIB graphics subroutines to work with the mode.
XMODECLEAR: restore ASMLIB's default graphics configuration
Source: xmode16.asm ($graph.asm)

Parameters: maximum x, maximum y, registers as required to set mode.
XMode16 assumes that the mode is set with AH = 0.
Returns: nothing
Uses: All registers and flags saved.
Supports: 16-color EGA/VGA-style graphics modes, up to 800 x 600 pixels.
Various equipment. You must have the required equipment and
use the correct mode number; hardware damage may result from
improper use of XMode16. I cannot be held responsible for
damage resulting from use or misuse of XMode16. Use XMode16
if your equipment is not supported by SVGA16.

If 800 horizontal pixels are available, maxX% should be 799.
Similarly, if 600 vertical pixels are possible, maxY% should
be 599.

Your graphics card manual lists mode numbers, monitor
requirements, and the number of horizontal and vertical
pixels corresponding to the mode. Mode numbers are usually

in hex format. Some modes and corresponding mode numbers
are listed on the next pages.



Equipment mode mode number Example

Orchid ProDesigner 800x600 29h mov ax,799
STB EM/16 push ax
Genoa mov ax,599
Sigma X16 push ax
(Tseng chip set) mov al,29h
call xmode16


Everex MED EGA 640X480 AL = 70h, BL = 00h
(Micro Enhancer Deluxe)
752x410 AL = 70h, BL = 01h
mov ax,751
push ax
mov ax,409
push ax
mov al,70h
mov bl,01h
call xmode16


ATI VGA Wonder 800x600 54h mov ax,799
push ax
mov ax,599
push ax
mov al,54h
call xmode16


ATI VIP 800x560 53h mov ax,799
push ax
mov ax,559
push ax
mov al,53h
call xmode16

(continued)

Paradise Plus-16 800x600 58h mov ax,799
Paradise Professional push ax
mov ax,599
push ax
mov al,58h
call xmode16


Video 7 Fastwrite 800x600 62h mov ax,799
Video 7 VRAM push ax
mov ax,599
push ax
mov al,62h
call xmode16


Western Digital 800x600 6Ah (color) mov ax,799
6Bh (mono) push ax
(VESA modes) mov ax,599
push ax
mov al,6Ah ; color
call xmode16


If any of this information conflicts with the specifications in your

video card's instruction manual, the manual's recommendation is a safer
bet. Note that all the above modes require a multi-frequency monitor.

When you're all done with Graphics mode, CALL ModeColor to return to
80x25 text mode, and CALL XModeClear to reset ASMLIB's graphics mode
flags.





  3 Responses to “Category : Assembly Language Source Code
Archive   : ASMLIB35.ZIP
Filename : MODE.DOC

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/