Glossary of Terms
The Intel 80386 and higher processors are actually native 48-bit [addressing]
processors. This means it uses a 16-bit selector and a 32-bit offset. Borland
Pascal 7.0 is a 16 bit protected mode compiler which can be turned into a
48-bit protected mode compiler.
Blits are transparent bitmaps (ie, a bitmap with a colour, usually 0, removed).
Extensive work (by Mark Iuzzolino) has gone into developing blindingly fast
blits. Currently the Blit Format Specification (BFS) is version 2.0, which
includes automatic blit clipping.
Borland Graphics Interface. Originally a way to write graphics programs
easily and quickly. Somewhat outdated today.
DOS Protected Mode Interface is an industry standard that allows DOS programs
to access the advanced features of the 80286-, 80386-, and 80486-based PCs
in a well-behaved, hardware-independent fashion. For further reading, look
in the Borland Pascal Language Guide under DPMI server.
General Protection Fault. Also known as Runtime error 216. The DPMI server
generates a GPF when an error has occurred in your program. Most likely the
error occured by one of the following:
- Loading invalid values into segment registers
- Accessing memory beyond a segment's limit
- Writing to code segments
- Dereferencing nil pointers
HxVxNbpp is Horizontal resolution by Vertical resolution by N bits per pixel.
For example: 640x400x8bpp is 640 pixels wide, by 400 pixels high, with one byte
per pixel. Other possible bit depths are 15bpp, 16bpp, 24bpp, 32bpp or higher.
Other possible resolutions are 640x480, 800x600, 1024x768, 1280x1024, 1600x1200,
4800x3600, et al.
Michael Abrash is the author of several books, most notably Zen of Code
Optimization and Zen of Graphics Programming. He used to write
for Doctor Dobbs journal. He also used to work for Microsoft and recently
moved to ID Software (a move we all cheered). His optimization techniques
are amazing, and I highly recommend his books. The only person I know of
who can optimize better than he can is Terje Mathisen.
320x200x8bpp. Probably the easiest graphics mode to code for, since all of the
screen memory is accessable within one segment. To initialize the mode,
one could do the following:
procedure InitMode13h; assembler;
320x240x8bpp un-chained. ModeX is a term that Michael Abrash invented. This
is an un-chained video mode, which means that you have to use a form of bank
switching to access all the screen memory. Some benefits of this mode
are hardware page flipping, multiple on-card virtual buffers (sometimes
referred to as double buffers), fast horizontal line fills (used for
*very* fast solid filled polygons), and hardware scrolling. Some drawbacks
of this mode are that it is difficult to code for and isn't any faster than
Mode 13h on a PC today. This mode isn't supported by our VESA library, since
it is outdated and doesn't offer anything we can't already do in a higher
resolution through software. There is an example of how to init ModeX
on the Introduction to Linking External ASM
Files Into Borland Pascal page.
320x200x8bpp un-chained. Similar to ModeX in that it has multiple video
buffers, but has a vertical resolution of only 200 pixels. Doom 1 and 2 were
written using this mode.
NewOrder Demo Group
We are affiliated with the NewOrder Demo Group. Two of the members (TCA and
Surface) are part of the
MonsterSoft team. The name NewOrder comes from the English band, of which
we are all fans. There will be little or no information about the band on
this web-site, but we do recommend them as excellent music to program to.
Protected Mode is a mode of operation on the Intel processor that was
implemented on the 286 and higher. It expands the amount of physically
addressable memory from 1MB to 16MB.
Real Mode is the other mode of operation. It is compatible with the original
8086 processor and allowed only up to 1 MB of readily addressible memory.
Super Video Graphics Array. Anything 640x400x8bpp and above is considered SVGA,
since implementations differ from video card to video card.
Terje is a brilliant coder who occasionally posts in alt.lang.x86 and
comp.lang.asm.x86 (and, strangely enough, rec.skiing.nordic). If you see a
post by him, save it (except for the skiing ones ;). They are always useful,
even if you can't use it now. I have at least 2 meg of posts by him that I
use as a reference guide to optimizations
VESA stands for Video and Electronic Standards Association. In this context
they dictated a [pseudo] standard interface so that programmers could write a
VESA library that would work on any SVGA.