Metropoli BBS
VIEWER: worddocument MODE: BINARY (HEX)
==============================================================================================================================================
OFFSET    00 01 02 03 04 05 06 07  08 09 0A 0B 0C 0D 0E 0F  10 11 12 13 14 15 16 17  18 19 1A 1B 1C 1D 1E 1F
----------------------------------------------------------------------------------------------------------------------------------------------
00000000  DC A5 68 00 57 E0 09 04  00 00 00 00 65 00 00 00  00 00 00 00 00 00 00 00  00 03 00 00 F3 74 00 00  Ñh.Wα....e..............t..
00000020  24 8E 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 F3 71 00 00  00 00 00 00 00 00 00 00  $Ä..................q..........
00000040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 80 00 00 B8 01 00 00  .........................Ç....
00000060  00 80 00 00 B8 01 00 00  B8 81 00 00 00 00 00 00  B8 81 00 00 00 00 00 00  B8 81 00 00 00 00 00 00  .Ç....ü......ü......ü......
00000080  B8 81 00 00 00 00 00 00  B8 81 00 00 14 00 00 00  92 82 00 00 54 02 00 00  92 82 00 00 00 00 00 00  ü......ü.....Æé..T..Æé......
000000A0  E6 84 00 00 00 00 00 00  E6 84 00 00 00 00 00 00  E6 84 00 00 00 00 00 00  E6 84 00 00 0A 00 00 00  µä......µä......µä......µä.....
000000C0  F0 84 00 00 1C 00 00 00  92 82 00 00 00 00 00 00  4C 8D 00 00 44 00 00 00  0C 85 00 00 16 00 00 00  ä.....Æé......Lì..D...à.....
000000E0  22 85 00 00 00 00 00 00  22 85 00 00 00 00 00 00  22 85 00 00 00 00 00 00  22 85 00 00 00 00 00 00  "à......"à......"à......"à......
00000100  22 85 00 00 24 02 00 00  46 87 00 00 3C 01 00 00  82 88 00 00 A0 00 00 00  33 8B 00 00 02 00 00 00  "à..$..Fç..<..éê..á...3ï.....
00000120  35 8B 00 00 00 00 00 00  35 8B 00 00 00 00 00 00  35 8B 00 00 51 00 00 00  86 8B 00 00 D4 00 00 00  5ï......5ï......5ï..Q...åï.....
00000140  5A 8C 00 00 D4 00 00 00  2E 8D 00 00 1E 00 00 00  90 8D 00 00 58 00 00 00  E8 8D 00 00 3C 00 00 00  Zî......ì.....Éì..X...Φì..<...
00000160  4C 8D 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  B8 81 00 00 00 00 00 00  Lì......................ü......
00000180  22 89 00 00 00 00 00 00  00 00 3B 00 3C 00 01 00  04 00 22 85 00 00 00 00  00 00 22 85 00 00 00 00  "ë........;.<..."à......"à....
000001A0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 22 89 00 00 00 00  00 00 22 89 00 00 00 00  .................."ë......"ë....
000001C0  00 00 4C 8D 00 00 00 00  00 00 F4 8A 00 00 00 00  00 00 B8 81 00 00 00 00  00 00 B8 81 00 00 00 00  ..Lì......è......ü......ü....
000001E0  00 00 22 85 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 0C 85 00 00 00 00  .."à......................à....
00000200  00 00 F4 8A 00 00 00 00  00 00 F4 8A 00 00 00 00  00 00 F4 8A 00 00 00 00  00 00 22 89 00 00 D2 01  ..è......è......è......"ë..
00000220  00 00 B8 81 00 00 00 00  00 00 22 85 00 00 00 00  00 00 B8 81 00 00 00 00  00 00 22 85 00 00 00 00  ..ü......"à......ü......"à....
00000240  00 00 33 8B 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 C7 2F 76 3B CC  BB 01 CC 81 00 00 4A 00  ..3ï.............../v;ü..J.
00000260  00 00 16 82 00 00 7C 00  00 00 B8 81 00 00 00 00  00 00 B8 81 00 00 00 00  00 00 B8 81 00 00 00 00  ..é..|...ü......ü......ü....
00000280  00 00 B8 81 00 00 00 00  00 00 22 89 00 00 00 00  00 00 33 8B 00 00 00 00  00 00 F4 8A 00 00 3F 00  ..ü......"ë......3ï......è..?.
000002A0  00 00 F4 8A 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ..è............................
000002C0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
000002E0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
00000300  55 73 69 6E 67 20 74 68  65 20 53 75 70 65 72 56  47 41 20 4B 69 74 0D 54  68 69 73 20 73 65 63 74  Using the SuperVGA KitThis sect
00000320  69 6F 6E 20 70 72 6F 76  69 64 65 73 20 61 6E 20  6F 76 65 72 76 69 65 77  20 6F 66 20 74 68 65 20  ion provides an overview of the 
00000340  53 75 70 65 72 56 47 41  20 4B 69 74 2C 20 61 6E  64 20 70 72 6F 76 69 64  65 73 20 62 61 63 6B 67  SuperVGA Kit, and provides backg
00000360  72 6F 75 6E 64 20 64 65  74 61 69 6C 73 20 6F 6E  20 74 68 65 20 53 75 70  65 72 56 47 41 20 4B 69  round details on the SuperVGA Ki
00000380  74 20 66 75 6E 63 74 69  6F 6E 61 6C 69 74 79 20  61 6E 64 20 68 6F 77 20  74 6F 20 75 74 69 6C 69  t functionality and how to utili
000003A0  7A 65 20 74 68 69 73 20  66 75 6E 63 74 69 6F 6E  61 6C 69 74 79 20 69 6E  20 79 6F 75 72 20 6F 77  ze this functionality in your ow
000003C0  6E 20 61 70 70 6C 69 63  61 74 69 6F 6E 73 2E 0D  4E 6F 74 65 20 74 68 61  74 20 74 68 65 20 53 75  n applications.Note that the Su
000003E0  70 65 72 56 47 41 20 4B  69 74 20 69 73 20 6E 6F  20 6C 6F 6E 67 65 72 20  61 20 73 75 70 70 6F 72  perVGA Kit is no longer a suppor
00000400  74 65 64 20 53 63 69 54  65 63 68 20 53 6F 66 74  77 61 72 65 20 70 72 6F  64 75 63 74 2C 20 61 6E  ted SciTech Software product, an
00000420  64 20 66 6F 72 20 6D 61  78 69 6D 75 6D 20 70 6F  72 74 61 62 69 6C 69 74  79 20 79 6F 75 20 73 68  d for maximum portability you sh
00000440  6F 75 6C 64 20 61 74 74  65 6D 70 74 20 74 6F 20  6D 6F 76 65 20 61 6C 6C  20 79 6F 75 72 20 53 75  ould attempt to move all your Su
00000460  70 65 72 56 47 41 20 4B  69 74 20 63 6F 64 65 20  61 63 72 6F 73 73 20 74  6F 20 75 73 65 20 74 68  perVGA Kit code across to use th
00000480  65 20 72 65 61 6C 20 4D  47 4C 20 41 50 49 2E 20  48 6F 77 65 76 65 72 20  74 68 65 20 53 75 70 65  e real MGL API. However the Supe
000004A0  72 56 47 41 20 4B 69 74  20 69 73 20 73 74 69 6C  6C 20 70 72 6F 76 69 64  65 64 2C 20 61 6E 64 20  rVGA Kit is still provided, and 
000004C0  74 68 69 73 20 64 6F 63  75 6D 65 6E 74 61 74 69  6F 6E 20 69 73 20 70 72  6F 76 69 64 65 64 20 66  this documentation is provided f
000004E0  6F 72 20 64 65 76 65 6C  6F 70 65 72 73 20 77 68  6F 20 61 72 65 20 63 6F  6E 74 65 6E 74 20 74 6F  or developers who are content to
00000500  20 75 73 65 20 74 68 69  73 20 41 50 49 2E 0D 57  68 61 74 20 69 73 20 74  68 65 20 53 63 69 54 65   use this API.What is the SciTe
00000520  63 68 20 53 75 70 65 72  56 47 41 20 4B 69 74 3F  0D 54 68 65 20 53 63 69  54 65 63 68 20 53 75 70  ch SuperVGA Kit?The SciTech Sup
00000540  65 72 56 47 41 20 4B 69  74 20 69 73 20 61 20 53  6F 66 74 77 61 72 65 20  44 65 76 65 6C 6F 70 6D  erVGA Kit is a Software Developm
00000560  65 6E 74 20 4B 69 74 20  66 6F 72 20 77 6F 72 6B  69 6E 67 20 77 69 74 68  20 56 45 53 41 20 56 42  ent Kit for working with VESA VB
00000580  45 20 63 6F 6D 70 6C 69  61 6E 74 20 53 75 70 65  72 56 47 41 20 67 72 61  70 68 69 63 73 20 63 61  E compliant SuperVGA graphics ca
000005A0  72 64 73 20 75 6E 64 65  72 20 62 6F 74 68 20 44  4F 53 20 61 6E 64 20 57  69 6E 64 6F 77 73 2E 20  rds under both DOS and Windows. 
000005C0  54 68 69 73 20 53 44 4B  20 69 6E 63 6C 75 64 65  73 20 66 75 6C 6C 20 73  75 70 70 6F 72 74 20 66  This SDK includes full support f
000005E0  6F 72 20 61 6C 6C 20 73  74 61 6E 64 61 72 64 20  56 42 45 20 64 65 76 69  63 65 73 2C 20 61 73 20  or all standard VBE devices, as 
00000600  77 65 6C 6C 20 61 73 20  64 65 76 69 63 65 73 20  74 68 61 74 20 73 75 70  70 6F 72 74 20 74 68 65  well as devices that support the
00000620  20 6E 65 77 20 56 42 45  2F 41 46 20 41 63 63 65  6C 65 72 61 74 6F 72 20  46 75 6E 63 74 69 6F 6E   new VBE/AF Accelerator Function
00000640  73 20 73 70 65 63 69 66  69 63 61 74 69 6F 6E 2E  20 41 6C 74 68 6F 75 67  68 20 56 42 45 20 32 2E  s specification. Although VBE 2.
00000660  30 20 6F 72 20 56 42 45  2F 41 46 20 31 2E 30 20  69 73 20 72 65 71 75 69  72 65 64 20 74 6F 20 67  0 or VBE/AF 1.0 is required to g
00000680  65 74 20 74 68 65 20 6D  61 78 69 6D 75 6D 20 70  65 72 66 6F 72 6D 61 6E  63 65 20 6F 75 74 20 6F  et the maximum performance out o
000006A0  66 20 74 68 69 73 20 6C  69 62 72 61 72 79 2C 20  69 74 20 64 6F 65 73 20  70 72 6F 76 69 64 65 20  f this library, it does provide 
000006C0  66 75 6C 6C 20 73 75 70  70 6F 72 74 20 66 6F 72  20 65 78 69 73 74 69 6E  67 20 63 6F 6E 74 72 6F  full support for existing contro
000006E0  6C 6C 65 72 73 20 74 68  61 74 20 73 75 70 70 6F  72 74 20 74 68 65 20 56  42 45 20 31 2E 32 20 61  llers that support the VBE 1.2 a
00000700  6E 64 20 6C 6F 77 65 72  20 73 70 65 63 69 66 69  63 61 74 69 6F 6E 73 2E  0D 54 68 65 20 53 63 69  nd lower specifications.The Sci
00000720  54 65 63 68 20 53 75 70  65 72 56 47 41 20 4B 69  74 20 70 72 6F 76 69 64  65 73 20 73 75 70 70 6F  Tech SuperVGA Kit provides suppo
00000740  72 74 20 66 6F 72 20 62  6F 74 68 20 31 36 20 62  69 74 20 72 65 61 6C 20  6D 6F 64 65 20 61 6E 64  rt for both 16 bit real mode and
00000760  20 33 32 20 62 69 74 20  70 72 6F 74 65 63 74 65  64 20 6D 6F 64 65 20 64  65 76 65 6C 6F 70 6D 65   32 bit protected mode developme
00000780  6E 74 20 75 6E 64 65 72  20 4D 53 2D 44 4F 53 2C  20 61 6E 64 20 62 6F 74  68 20 31 36 20 61 6E 64  nt under MS-DOS, and both 16 and
000007A0  20 33 32 20 62 69 74 20  70 72 6F 74 65 63 74 65  64 20 6D 6F 64 65 20 75  6E 64 65 72 20 57 69 6E   32 bit protected mode under Win
000007C0  64 6F 77 73 20 33 2E 31  20 61 6E 64 20 57 69 6E  64 6F 77 73 20 39 35 2E  20 55 6E 64 65 72 20 57  dows 3.1 and Windows 95. Under W
000007E0  69 6E 64 6F 77 73 20 33  2E 31 20 61 6E 64 20 57  69 6E 64 6F 77 73 20 39  35 20 74 68 65 20 53 75  indows 3.1 and Windows 95 the Su
00000800  70 65 72 56 47 41 20 4B  69 74 20 69 73 20 70 72  6F 76 69 64 65 64 20 61  73 20 62 6F 74 68 20 31  perVGA Kit is provided as both 1
00000820  36 20 61 6E 64 20 33 32  20 62 69 74 20 44 4C 4C  92 73 2C 20 61 6E 64 20  61 73 20 73 74 61 74 69  6 and 32 bit DLLÆs, and as stati
00000840  63 61 6C 6C 79 20 6C 69  6E 6B 61 62 6C 65 20 6C  69 62 72 61 72 69 65 73  2E 20 49 66 20 79 6F 75  cally linkable libraries. If you
00000860  20 77 69 73 68 20 74 6F  20 75 73 65 20 74 68 65  20 73 74 61 74 69 63 20  6C 69 6E 6B 20 6C 69 62   wish to use the static link lib
00000880  72 61 72 69 65 73 20 75  6E 64 65 72 20 31 36 20  62 69 74 20 57 69 6E 64  6F 77 73 2C 20 70 6C 65  raries under 16 bit Windows, ple
000008A0  61 73 65 20 72 65 61 64  20 74 68 65 20 73 70 65  63 69 61 6C 20 73 65 63  74 69 6F 6E 20 72 65 6C  ase read the special section rel
000008C0  61 74 65 64 20 74 6F 20  74 68 69 73 20 62 65 6C  6F 77 2E 0D 53 75 70 65  72 56 47 41 20 4B 69 74  ated to this below.SuperVGA Kit
000008E0  20 63 6F 6D 70 6F 6E 65  6E 74 73 0D 54 68 65 20  53 75 70 65 72 56 47 41  20 4B 69 74 20 63 6F 6E   componentsThe SuperVGA Kit con
00000900  73 69 73 74 73 20 6F 66  20 61 20 6E 75 6D 62 65  72 20 6F 66 20 68 65 61  64 65 72 20 66 69 6C 65  sists of a number of header file
00000920  73 20 61 6E 64 20 73 74  61 74 69 63 20 6C 69 6E  6B 20 6C 69 62 72 61 72  69 65 73 20 66 6F 72 20  s and static link libraries for 
00000940  44 4F 53 20 61 6E 64 20  57 69 6E 64 6F 77 73 20  61 70 70 6C 69 63 61 74  69 6F 6E 73 2C 20 6F 72  DOS and Windows applications, or
00000960  20 61 73 20 31 36 20 6F  72 20 33 32 20 62 69 74  20 44 4C 4C 92 73 20 66  6F 72 20 57 69 6E 64 6F   as 16 or 32 bit DLLÆs for Windo
00000980  77 73 20 61 70 70 6C 69  63 61 74 69 6F 6E 73 2E  20 54 61 62 6C 65 20 31  20 6C 69 73 74 73 20 74  ws applications. Table 1 lists t
000009A0  68 65 20 66 69 6C 65 73  20 74 68 61 74 20 63 6F  6D 70 72 69 73 65 20 74  68 65 20 73 74 61 6E 64  he files that comprise the stand
000009C0  61 72 64 20 53 75 70 65  72 56 47 41 20 4B 69 74  20 6C 69 62 72 61 72 79  20 70 61 63 6B 61 67 65  ard SuperVGA Kit library package
000009E0  20 28 73 65 65 20 69 6E  73 74 61 6C 6C 61 74 69  6F 6E 20 73 65 63 74 69  6F 6E 20 66 6F 72 20 64   (see installation section for d
00000A00  65 74 61 69 6C 73 20 6F  6E 20 77 68 65 72 65 20  74 68 65 20 66 69 6C 65  73 20 77 69 6C 6C 20 62  etails on where the files will b
00000A20  65 20 6C 6F 63 61 74 65  64 29 2E 0D 46 69 6C 65  07 50 75 72 70 6F 73 65  07 07 53 56 47 41 2E 48  e located).FilePurposeSVGA.H
00000A40  07 4D 61 69 6E 20 53 75  70 65 72 56 47 41 20 4B  69 74 20 68 65 61 64 65  72 20 66 69 6C 65 07 07  Main SuperVGA Kit header file
00000A60  53 56 47 41 4D 47 4C 2E  48 07 53 75 70 65 72 56  47 41 20 4B 69 74 20 43  6F 6D 70 61 74 69 62 69  SVGAMGL.HSuperVGA Kit Compatibi
00000A80  6C 69 74 79 20 4C 69 62  72 61 72 79 20 68 65 61  64 65 72 20 66 69 6C 65  07 07 56 45 53 41 56 42  lity Library header fileVESAVB
00000AA0  45 2E 48 07 48 65 61 64  65 72 20 66 69 6C 65 20  66 6F 72 20 56 45 53 41  20 56 42 45 20 31 2E 32  E.HHeader file for VESA VBE 1.2
00000AC0  2F 32 2E 30 20 69 6E 74  65 72 66 61 63 65 20 6D  6F 64 75 6C 65 07 07 56  42 45 41 46 2E 48 07 48  /2.0 interface moduleVBEAF.HH
00000AE0  65 61 64 65 72 20 66 69  6C 65 20 66 6F 72 20 56  42 45 2F 41 46 20 31 2E  30 20 69 6E 74 65 72 66  eader file for VBE/AF 1.0 interf
00000B00  61 63 65 20 6D 6F 64 75  6C 65 07 07 53 56 47 41  2E 4C 49 42 07 53 74 61  74 69 63 20 6C 69 6E 6B  ace moduleSVGA.LIBStatic link
00000B20  20 6C 69 62 72 61 72 69  65 73 20 66 6F 72 20 64  65 66 61 75 6C 74 20 63  61 6C 6C 69 6E 67 20 63   libraries for default calling c
00000B40  6F 6E 76 65 6E 74 69 6F  6E 73 07 07 53 56 47 41  4D 47 4C 2E 4C 49 42 07  53 75 70 65 72 56 47 41  onventionsSVGAMGL.LIBSuperVGA
00000B60  20 4B 69 74 20 43 6F 6D  70 61 74 69 62 69 6C 69  74 79 20 4C 69 62 72 61  72 79 07 07 53 53 56 47   Kit Compatibility LibrarySSVG
00000B80  41 2E 4C 49 42 07 57 61  74 63 6F 6D 20 43 2B 2B  20 73 74 61 74 69 63 20  6C 69 6E 6B 20 6C 69 62  A.LIBWatcom C++ static link lib
00000BA0  72 61 72 69 65 73 20 66  6F 72 20 73 74 61 63 6B  20 63 61 6C 6C 69 6E 67  20 63 6F 6E 76 65 6E 74  raries for stack calling convent
00000BC0  69 6F 6E 73 07 07 53 53  56 47 41 4D 47 4C 2E 4C  49 42 07 57 61 74 63 6F  6D 20 43 2B 2B 20 53 75  ionsSSVGAMGL.LIBWatcom C++ Su
00000BE0  70 65 72 56 47 41 20 4B  69 74 20 43 6F 6D 70 61  74 69 62 69 6C 69 74 79  20 4C 69 62 72 61 72 79  perVGA Kit Compatibility Library
00000C00  20 66 6F 72 20 73 74 61  63 6B 20 63 61 6C 6C 69  6E 67 20 63 6F 6E 76 65  6E 74 69 6F 6E 73 07 07   for stack calling conventions
00000C20  53 56 47 41 36 32 2E 4C  49 42 07 31 36 20 62 69  74 20 53 75 70 65 72 56  47 41 20 4B 69 74 20 66  SVGA62.LIB16 bit SuperVGA Kit f
00000C40  6F 72 20 57 69 6E 64 6F  77 73 20 69 6D 70 6F 72  74 20 6C 69 62 72 61 72  79 07 07 53 56 47 41 36  or Windows import librarySVGA6
00000C60  32 46 2E 4C 49 42 07 33  32 20 62 69 74 20 53 75  70 65 72 56 47 41 20 4B  69 74 20 66 6F 72 20 57  2F.LIB32 bit SuperVGA Kit for W
00000C80  69 6E 64 6F 77 73 20 69  6D 70 6F 72 74 20 6C 69  62 72 61 72 79 07 07 53  56 47 41 36 32 2E 44 4C  indows import librarySVGA62.DL
00000CA0  4C 07 31 36 20 62 69 74  20 53 75 70 65 72 56 47  41 20 4B 69 74 20 66 6F  72 20 57 69 6E 64 6F 77  L16 bit SuperVGA Kit for Window
00000CC0  73 20 44 4C 4C 07 07 53  56 47 41 36 32 46 2E 44  4C 4C 07 33 32 20 62 69  74 20 53 75 70 65 72 56  s DLLSVGA62F.DLL32 bit SuperV
00000CE0  47 41 20 4B 69 74 20 66  6F 72 20 57 69 6E 64 6F  77 73 20 44 4C 4C 07 07  54 61 62 6C 65 20 13 20  GA Kit for Windows DLLTable  
00000D00  53 45 51 20 54 61 62 6C  65 5F 41 2D 20 5C 2A 20  41 52 41 42 49 43 20 14  31 15 0D 4E 6F 74 65 20  SEQ Table_A- \* ARABIC 1§Note 
00000D20  74 68 61 74 20 69 6E 20  6F 72 64 65 72 20 74 6F  20 75 73 65 20 74 68 65  20 53 75 70 65 72 56 47  that in order to use the SuperVG
00000D40  41 20 4B 69 74 20 66 6F  72 20 57 69 6E 64 6F 77  73 2C 20 79 6F 75 20 77  69 6C 6C 20 61 6C 73 6F  A Kit for Windows, you will also
00000D60  20 6E 65 65 64 20 74 68  65 20 57 69 6E 44 69 72  65 63 74 20 70 61 63 6B  61 67 65 20 28 64 65 73   need the WinDirect package (des
00000D80  63 72 69 62 65 64 20 62  65 6C 6F 77 29 20 74 6F  20 73 68 75 74 20 64 6F  77 6E 20 61 6E 64 20 72  cribed below) to shut down and r
00000DA0  65 73 74 6F 72 65 20 47  44 49 2E 0D 55 73 69 6E  67 20 57 69 6E 64 6F 77  73 20 31 36 20 62 69 74  estore GDI.Using Windows 16 bit
00000DC0  20 73 74 61 74 69 63 20  6C 69 6E 6B 20 6C 69 62  72 61 72 69 65 73 0D 49  6E 20 6F 72 64 65 72 20   static link librariesIn order 
00000DE0  74 6F 20 73 75 70 70 6F  72 74 20 33 32 20 62 69  74 20 6C 69 6E 65 61 72  20 66 72 61 6D 65 62 75  to support 32 bit linear framebu
00000E00  66 66 65 72 20 61 63 63  65 73 73 20 66 72 6F 6D  20 31 36 20 62 69 74 20  57 69 6E 64 6F 77 73 20  ffer access from 16 bit Windows 
00000E20  63 6F 64 65 2C 20 74 68  65 20 53 75 70 65 72 56  47 41 20 4B 69 74 20 69  6E 63 6C 75 64 65 73 20  code, the SuperVGA Kit includes 
00000E40  73 70 65 63 69 61 6C 20  33 32 20 62 69 74 20 6C  69 6E 65 61 72 20 66 72  61 6D 65 62 75 66 66 65  special 32 bit linear framebuffe
00000E60  72 20 61 73 73 65 6D 62  6C 65 72 20 66 75 6E 63  74 69 6F 6E 73 2E 20 54  68 65 73 65 20 66 75 6E  r assembler functions. These fun
00000E80  63 74 69 6F 6E 73 20 61  72 65 20 33 32 20 62 69  74 20 61 73 73 65 6D 62  6C 65 72 20 63 6F 64 65  ctions are 32 bit assembler code
00000EA0  20 74 68 61 74 20 72 65  73 69 64 65 20 69 6E 20  61 20 63 6F 6D 70 6C 65  74 65 6C 79 20 73 65 70   that reside in a completely sep
00000EC0  61 72 61 74 65 20 33 32  20 62 69 74 20 63 6F 64  65 20 73 65 67 6D 65 6E  74 2E 20 42 65 66 6F 72  arate 32 bit code segment. Befor
00000EE0  65 20 61 6E 79 20 6F 66  20 74 68 65 20 33 32 20  62 69 74 20 63 6F 64 65  20 63 61 6E 20 62 65 20  e any of the 32 bit code can be 
00000F00  72 75 6E 2C 20 74 68 65  20 53 75 70 65 72 56 47  41 20 4B 69 74 20 63 6F  64 65 20 63 61 6C 6C 73  run, the SuperVGA Kit code calls
00000F20  20 61 20 73 70 65 63 69  61 6C 20 66 75 6E 63 74  69 6F 6E 20 69 6E 20 74  68 65 20 33 32 20 62 69   a special function in the 32 bi
00000F40  74 20 63 6F 64 65 20 73  65 67 6D 65 6E 74 20 74  68 61 74 20 77 69 6C 6C  20 63 6F 6E 76 65 72 74  t code segment that will convert
00000F60  20 74 68 65 20 73 65 6C  65 63 74 6F 72 20 66 6F  72 20 74 68 61 74 20 73  65 67 6D 65 6E 74 20 74   the selector for that segment t
00000F80  6F 20 61 20 33 32 20 62  69 74 20 63 6F 64 65 20  73 65 67 6D 65 6E 74 20  73 65 6C 65 63 74 6F 72  o a 32 bit code segment selector
00000FA0  2E 20 0D 48 6F 77 65 76  65 72 20 63 75 72 72 65  6E 74 20 31 36 20 62 69  74 20 43 20 63 6F 6D 70  . However current 16 bit C comp
00000FC0  69 6C 65 72 73 20 64 6F  6E 92 74 20 6B 6E 6F 77  20 61 62 6F 75 74 20 33  32 20 62 69 74 20 63 6F  ilers donÆt know about 32 bit co
00000FE0  64 65 20 73 65 67 6D 65  6E 74 73 2C 20 61 6E 64  20 62 79 20 64 65 66 61  75 6C 74 20 77 69 6C 6C  de segments, and by default will
00001000  20 61 75 74 6F 6D 61 74  69 63 61 6C 6C 79 20 6D  65 72 67 65 20 74 68 65  20 33 32 20 62 69 74 20   automatically merge the 32 bit 
00001020  63 6F 64 65 20 73 65 67  6D 65 6E 74 20 77 69 74  68 20 79 6F 75 72 20 61  70 70 6C 69 63 61 74 69  code segment with your applicati
00001040  6F 6E 73 20 6E 6F 72 6D  61 6C 20 31 36 20 62 69  74 20 63 6F 64 65 20 73  65 67 6D 65 6E 74 73 2E  ons normal 16 bit code segments.
00001060  20 57 68 65 6E 20 74 68  69 73 20 68 61 70 70 65  6E 73 2C 20 74 68 65 20  73 61 6D 65 20 73 65 6C   When this happens, the same sel
00001080  65 63 74 6F 72 20 77 69  6C 6C 20 62 65 20 75 73  65 64 20 66 6F 72 20 74  68 65 20 33 32 20 62 69  ector will be used for the 32 bi
000010A0  74 20 63 6F 64 65 20 73  65 67 6D 65 6E 74 20 61  6E 64 20 61 6E 79 20 6F  66 20 74 68 65 20 6D 65  t code segment and any of the me
000010C0  72 67 65 64 20 31 36 20  62 69 74 20 63 6F 64 65  20 73 65 67 6D 65 6E 74  73 21 20 4E 61 74 75 72  rged 16 bit code segments! Natur
000010E0  61 6C 6C 79 20 74 68 65  20 63 6F 64 65 20 77 69  6C 6C 20 6E 6F 74 20 72  75 6E 20 63 6F 72 72 65  ally the code will not run corre
00001100  63 74 6C 79 2C 20 61 6E  64 20 79 6F 75 72 20 70  72 6F 67 72 61 6D 20 77  69 6C 6C 20 63 72 61 73  ctly, and your program will cras
00001120  68 2E 0D 54 68 65 20 73  6F 6C 75 74 69 6F 6E 20  69 73 20 74 6F 20 65 6E  73 75 72 65 20 74 68 61  h.The solution is to ensure tha
00001140  74 20 77 68 65 6E 20 79  6F 75 20 6C 69 6E 6B 20  79 6F 75 72 20 61 70 70  6C 69 63 61 74 69 6F 6E  t when you link your application
00001160  20 74 68 61 74 20 79 6F  75 20 74 65 6C 6C 20 79  6F 75 72 20 6C 69 6E 6B  65 72 20 74 6F 20 74 75   that you tell your linker to tu
00001180  72 6E 20 6F 66 66 20 74  68 65 20 63 6F 64 65 20  73 65 67 6D 65 6E 74 20  70 61 63 6B 69 6E 67 20  rn off the code segment packing 
000011A0  6F 70 74 69 6F 6E 20 64  75 72 69 6E 67 20 74 68  65 20 6C 69 6E 6B 2C 20  77 68 69 63 68 20 77 69  option during the link, which wi
000011C0  6C 6C 20 73 6F 6C 76 65  20 74 68 65 20 70 72 6F  62 6C 65 6D 2E 20 41 6E  20 61 6C 74 65 72 6E 61  ll solve the problem. An alterna
000011E0  74 69 76 65 20 73 6F 6C  75 74 69 6F 6E 20 69 73  20 74 6F 20 61 6C 77 61  79 73 20 75 73 65 20 74  tive solution is to always use t
00001200  68 65 20 70 72 6F 76 69  64 65 64 20 31 36 20 62  69 74 20 44 4C 4C 20 72  61 74 68 65 72 20 74 68  he provided 16 bit DLL rather th
00001220  61 6E 20 6C 69 6E 6B 69  6E 67 20 77 69 74 68 20  74 68 65 20 73 74 61 74  69 63 20 6C 69 6E 6B 20  an linking with the static link 
00001240  6C 69 62 72 61 72 79 20  66 6F 72 20 31 36 20 62  69 74 20 57 69 6E 64 6F  77 73 20 63 6F 64 65 2E  library for 16 bit Windows code.
00001260  0D 42 75 69 6C 64 69 6E  67 20 61 70 70 6C 69 63  61 74 69 6F 6E 73 20 77  69 74 68 20 74 68 65 20  Building applications with the 
00001280  53 75 70 65 72 56 47 41  20 4B 69 74 0D 54 6F 20  62 75 69 6C 64 20 61 6E  20 61 70 70 6C 69 63 61  SuperVGA KitTo build an applica
000012A0  74 69 6F 6E 20 75 73 69  6E 67 20 74 68 65 20 53  75 70 65 72 56 47 41 20  4B 69 74 2C 20 79 6F 75  tion using the SuperVGA Kit, you
000012C0  20 77 69 6C 6C 20 6E 65  65 64 20 74 6F 20 69 6E  63 6C 75 64 65 20 74 68  65 20 53 56 47 41 2E 48   will need to include the SVGA.H
000012E0  20 68 65 61 64 65 72 20  66 69 6C 65 20 69 6E 20  79 6F 75 72 20 63 6F 64  65 2C 20 61 6E 64 20 6C   header file in your code, and l
00001300  69 6E 6B 20 79 6F 75 72  20 61 70 70 6C 69 63 61  74 69 6F 6E 20 77 69 74  68 20 62 6F 74 68 20 74  ink your application with both t
00001320  68 65 20 53 56 47 41 2E  4C 49 42 20 61 6E 64 20  50 4D 4F 44 45 2E 4C 49  42 20 6C 69 62 72 61 72  he SVGA.LIB and PMODE.LIB librar
00001340  69 65 73 20 66 6F 72 20  79 6F 75 72 20 44 4F 53  20 45 78 74 65 6E 64 65  72 20 28 73 65 65 20 73  ies for your DOS Extender (see s
00001360  65 63 74 69 6F 6E 20 6F  66 20 50 4D 2F 50 72 6F  20 6C 69 62 72 61 72 79  20 66 6F 72 20 6D 6F 72  ection of PM/Pro library for mor
00001380  65 20 64 65 74 61 69 6C  73 29 2E 20 59 6F 75 20  77 69 6C 6C 20 6E 65 65  64 20 74 6F 20 65 6E 73  e details). You will need to ens
000013A0  75 72 65 20 74 68 61 74  20 79 6F 75 20 73 65 6C  65 63 74 20 74 68 65 20  63 6F 72 72 65 63 74 20  ure that you select the correct 
000013C0  6C 69 62 72 61 72 69 65  73 20 66 6F 72 20 74 68  65 20 73 70 65 63 69 66  69 63 20 63 6F 6D 70 69  libraries for the specific compi
000013E0  6C 65 72 20 61 6E 64 20  63 61 6C 6C 69 6E 67 20  63 6F 6E 76 65 6E 74 69  6F 6E 73 20 74 68 61 74  ler and calling conventions that
00001400  20 79 6F 75 20 61 72 65  20 75 73 69 6E 67 2E 20  46 6F 72 20 57 69 6E 64  6F 77 73 20 63 6F 64 65   you are using. For Windows code
00001420  20 79 6F 75 20 77 69 6C  6C 20 6E 65 65 64 20 74  6F 20 6C 69 6E 6B 20 77  69 74 68 20 74 68 65 20   you will need to link with the 
00001440  50 4D 2F 50 72 6F 20 44  4C 4C 20 69 6D 70 6F 72  74 20 6C 69 62 72 61 72  69 65 73 20 62 65 63 61  PM/Pro DLL import libraries beca
00001460  75 73 65 20 74 68 65 20  50 4D 2F 50 72 6F 20 6C  69 62 72 61 72 79 20 69  73 20 6F 6E 6C 79 20 70  use the PM/Pro library is only p
00001480  72 6F 76 69 64 65 64 20  61 73 20 44 4C 4C 92 73  20 66 6F 72 20 57 69 6E  64 6F 77 73 2E 0D 49 66  rovided as DLLÆs for Windows.If
000014A0  20 79 6F 75 20 61 72 65  20 63 6F 6D 70 69 6C 69  6E 67 20 57 69 6E 64 6F  77 73 20 63 6F 64 65 20   you are compiling Windows code 
000014C0  61 6E 64 20 77 69 73 68  20 74 6F 20 75 73 65 20  74 68 65 20 44 4C 4C 20  76 65 72 73 69 6F 6E 20  and wish to use the DLL version 
000014E0  6F 66 20 74 68 65 20 53  75 70 65 72 56 47 41 20  4B 69 74 2C 20 79 6F 75  20 77 69 6C 6C 20 6E 65  of the SuperVGA Kit, you will ne
00001500  65 64 20 74 6F 20 23 64  65 66 69 6E 65 20 53 56  47 41 5F 44 4C 4C 20 20  77 68 65 6E 20 79 6F 75  ed to #define SVGA_DLL  when you
00001520  20 63 6F 6D 70 69 6C 65  20 61 6C 6C 20 73 6F 75  72 63 65 20 6D 6F 64 75  6C 65 73 20 74 68 61 74   compile all source modules that
00001540  20 69 6E 63 6C 75 64 65  20 74 68 65 20 53 56 47  41 2E 48 20 68 65 61 64  65 72 20 66 69 6C 65 2C   include the SVGA.H header file,
00001560  20 61 6E 64 20 6C 69 6E  6B 20 77 69 74 68 20 74  68 65 20 53 75 70 65 72  56 47 41 20 4B 69 74 20   and link with the SuperVGA Kit 
00001580  44 4C 4C 20 69 6D 70 6F  72 74 20 6C 69 62 72 61  72 69 65 73 20 66 6F 72  20 79 6F 75 72 20 63 6F  DLL import libraries for your co
000015A0  6D 70 69 6C 65 72 2E 20  54 68 65 20 44 4C 4C 20  69 6D 70 6F 72 74 20 6C  69 62 72 61 72 69 65 73  mpiler. The DLL import libraries
000015C0  20 68 61 76 65 20 74 68  65 20 73 61 6D 65 20 6E  61 6D 65 20 61 73 20 74  68 65 20 44 4C 4C 20 66   have the same name as the DLL f
000015E0  69 6C 65 73 20 66 6F 72  20 74 68 69 73 20 72 65  6C 65 61 73 65 20 6F 66  20 74 68 65 20 53 75 70  iles for this release of the Sup
00001600  65 72 56 47 41 20 4B 69  74 20 77 69 74 68 20 74  68 65 20 2E 4C 49 42 20  66 69 6C 65 20 65 78 74  erVGA Kit with the .LIB file ext
00001620  65 6E 73 69 6F 6E 20 28  69 2E 65 2E 20 53 56 47  41 36 30 2E 4C 49 42 20  6F 72 20 53 56 47 41 36  ension (i.e. SVGA60.LIB or SVGA6
00001640  30 46 2E 4C 49 42 20 66  6F 72 20 74 68 65 20 36  2E 30 20 72 65 6C 65 61  73 65 29 2E 20 4E 6F 74  0F.LIB for the 6.0 release). Not
00001660  65 20 74 68 61 74 20 66  6F 72 20 57 69 6E 64 6F  77 73 20 63 6F 64 65 20  75 73 69 6E 67 20 74 68  e that for Windows code using th
00001680  65 20 44 4C 4C 20 6C 69  62 72 61 72 69 65 73 20  79 6F 75 20 77 69 6C 6C  20 6E 6F 74 20 6E 65 65  e DLL libraries you will not nee
000016A0  64 20 74 6F 20 6C 69 6E  6B 20 74 6F 20 74 68 65  20 50 4D 2F 50 72 6F 20  6C 69 62 72 61 72 79 20  d to link to the PM/Pro library 
000016C0  66 69 6C 65 73 20 75 6E  6C 65 73 73 20 79 6F 75  20 6D 61 6B 65 20 65 78  70 6C 69 63 69 74 20 63  files unless you make explicit c
000016E0  61 6C 6C 73 20 74 6F 20  74 68 65 73 65 20 6C 69  62 72 61 72 79 20 66 75  6E 63 74 69 6F 6E 73 2C  alls to these library functions,
00001700  20 61 73 20 74 68 65 20  53 75 70 65 72 56 47 41  20 4B 69 74 20 44 4C 4C  92 73 20 61 72 65 20 61   as the SuperVGA Kit DLLÆs are a
00001720  6C 72 65 61 64 79 20 6C  69 6E 6B 65 64 20 74 6F  20 74 68 65 20 50 4D 2F  50 72 6F 20 6C 69 62 72  lready linked to the PM/Pro libr
00001740  61 72 79 20 44 4C 4C 92  73 2E 0D 54 68 65 20 53  63 69 54 65 63 68 20 53  75 70 65 72 56 47 41 20  ary DLLÆs.The SciTech SuperVGA 
00001760  4B 69 74 20 63 6F 6D 65  73 20 77 69 74 68 20 66  75 6C 6C 20 73 6F 75 72  63 65 20 63 6F 64 65 2C  Kit comes with full source code,
00001780  20 73 6F 20 79 6F 75 20  63 61 6E 20 61 6C 73 6F  20 64 69 72 65 63 74 6C  79 20 69 6E 63 6C 75 64   so you can also directly includ
000017A0  65 20 74 68 65 20 73 6F  75 72 63 65 20 63 6F 64  65 20 66 6F 72 20 74 68  65 20 53 75 70 65 72 56  e the source code for the SuperV
000017C0  47 41 20 4B 69 74 20 69  6E 20 79 6F 75 72 20 6F  77 6E 20 70 72 6F 67 72  61 6D 73 20 72 61 74 68  GA Kit in your own programs rath
000017E0  65 72 20 74 68 61 6E 20  6C 69 6E 6B 69 6E 67 20  77 69 74 68 20 74 68 65  20 70 72 65 2D 63 6F 6D  er than linking with the pre-com
00001800  70 69 6C 65 64 20 6C 69  62 72 61 72 69 65 73 2E  20 48 6F 77 65 76 65 72  20 79 6F 75 20 77 69 6C  piled libraries. However you wil
00001820  6C 20 6E 65 65 64 20 54  75 72 62 6F 20 41 73 73  65 6D 62 6C 65 72 20 34  2E 30 20 6F 72 20 6C 61  l need Turbo Assembler 4.0 or la
00001840  74 65 72 20 69 6E 20 6F  72 64 65 72 20 74 6F 20  61 73 73 65 6D 62 6C 65  20 74 68 65 20 70 72 6F  ter in order to assemble the pro
00001860  76 69 64 65 64 20 61 73  73 65 6D 62 6C 65 72 20  73 6F 75 72 63 65 20 63  6F 64 65 20 28 65 78 74  vided assembler source code (ext
00001880  72 61 63 74 20 74 68 65  20 6F 62 6A 65 63 74 20  66 69 6C 65 73 20 66 72  6F 6D 20 74 68 65 20 70  ract the object files from the p
000018A0  72 6F 76 69 64 65 64 20  6C 69 62 72 61 72 69 65  73 20 77 69 74 68 20 79  6F 75 72 20 63 6F 6D 70  rovided libraries with your comp
000018C0  69 6C 65 72 92 73 20 6C  69 62 72 61 72 69 61 6E  20 69 66 20 79 6F 75 20  64 6F 6E 92 74 20 68 61  ilerÆs librarian if you donÆt ha
000018E0  76 65 20 54 75 72 62 6F  20 41 73 73 65 6D 62 6C  65 72 29 2E 0D 49 66 20  79 6F 75 20 64 6F 6E 92  ve Turbo Assembler).If you donÆ
00001900  74 20 77 69 73 68 20 74  6F 20 75 73 65 20 74 68  65 20 65 6E 74 69 72 65  20 53 75 70 65 72 56 47  t wish to use the entire SuperVG
00001920  41 20 4B 69 74 20 6C 69  62 72 61 72 69 65 73 20  69 6E 20 79 6F 75 72 20  61 70 70 6C 69 63 61 74  A Kit libraries in your applicat
00001940  69 6F 6E 20 62 75 74 20  77 69 73 68 20 74 6F 20  73 75 70 70 6F 72 74 20  56 42 45 20 32 2E 30 20  ion but wish to support VBE 2.0 
00001960  69 6E 20 79 6F 75 72 20  61 70 70 6C 69 63 61 74  69 6F 6E 73 2C 20 77 65  20 68 69 67 68 6C 79 20  in your applications, we highly 
00001980  72 65 63 6F 6D 6D 65 6E  64 20 79 6F 75 20 6C 69  6E 6B 20 69 6E 20 61 6E  64 20 75 73 65 20 74 68  recommend you link in and use th
000019A0  65 20 56 45 53 41 56 42  45 2E 43 20 6D 6F 64 75  6C 65 20 61 73 20 79 6F  75 72 20 6D 61 69 6E 20  e VESAVBE.C module as your main 
000019C0  69 6E 74 65 72 66 61 63  65 20 74 6F 20 56 42 45  20 32 2E 30 2E 20 4E 6F  6E 65 20 6F 66 20 74 68  interface to VBE 2.0. None of th
000019E0  65 20 63 6F 64 65 20 69  6E 20 56 45 53 41 56 42  45 2E 43 20 69 73 20 73  70 65 65 64 20 63 72 69  e code in VESAVBE.C is speed cri
00001A00  74 69 63 61 6C 2C 20 61  6E 64 20 74 68 69 73 20  6D 6F 64 75 6C 65 20 74  61 6B 65 73 20 63 61 72  tical, and this module takes car
00001A20  65 20 6F 66 20 66 69 78  69 6E 67 20 6D 69 6E 6F  72 20 62 75 67 73 20 69  6E 20 73 6C 69 67 68 74  e of fixing minor bugs in slight
00001A40  6C 79 20 76 61 72 79 69  6E 67 20 56 42 45 20 69  6D 70 6C 65 6D 65 6E 74  61 74 69 6F 6E 73 20 74  ly varying VBE implementations t
00001A60  6F 20 6D 61 6B 65 20 74  68 65 20 68 69 67 68 20  6C 65 76 65 6C 20 69 6E  74 65 72 66 61 63 65 20  o make the high level interface 
00001A80  63 6F 6E 73 69 73 74 65  6E 74 2E 20 54 68 69 73  20 6D 6F 64 75 6C 65 20  61 6C 73 6F 20 74 61 6B  consistent. This module also tak
00001AA0  65 73 20 63 61 72 65 20  6F 66 20 69 73 6F 6C 61  74 69 6E 67 20 70 72 6F  74 65 63 74 65 64 20 6D  es care of isolating protected m
00001AC0  6F 64 65 20 61 70 70 6C  69 63 61 74 69 6F 6E 73  20 66 72 6F 6D 20 74 68  65 20 6E 65 65 64 20 74  ode applications from the need t
00001AE0  6F 20 64 65 61 6C 20 77  69 74 68 20 70 6F 69 6E  74 65 72 73 20 74 6F 20  72 65 61 6C 20 6D 6F 64  o deal with pointers to real mod
00001B00  65 20 6D 65 6D 6F 72 79  20 6C 6F 63 61 74 69 6F  6E 73 20 62 79 20 6D 61  70 70 69 6E 67 20 61 6C  e memory locations by mapping al
00001B20  6C 20 73 75 63 68 20 64  61 74 61 20 69 6E 74 6F  20 74 68 65 20 64 65 66  61 75 6C 74 20 64 61 74  l such data into the default dat
00001B40  61 20 73 65 67 6D 65 6E  74 20 61 75 74 6F 6D 61  74 69 63 61 6C 6C 79 2E  0D 53 75 70 65 72 56 47  a segment automatically.SuperVG
00001B60  41 20 4B 69 74 20 63 6F  6D 70 61 74 69 62 69 6C  69 74 79 20 6C 69 62 72  61 72 79 0D 49 66 20 79  A Kit compatibility libraryIf y
00001B80  6F 75 20 68 61 76 65 20  64 65 76 65 6C 6F 70 65  64 20 61 6E 20 61 70 70  6C 69 63 61 74 69 6F 6E  ou have developed an application
00001BA0  20 75 73 69 6E 67 20 74  68 65 20 53 75 70 65 72  56 47 41 20 4B 69 74 20  61 6E 64 20 79 6F 75 20   using the SuperVGA Kit and you 
00001BC0  77 6F 75 6C 64 20 6C 69  6B 65 20 74 6F 20 6D 6F  76 65 20 75 70 20 74 6F  20 74 68 65 20 66 75 6C  would like to move up to the ful
00001BE0  6C 20 4D 47 4C 20 41 50  49 2C 20 79 6F 75 20 63  61 6E 20 67 65 74 20 73  74 61 72 74 65 64 20 71  l MGL API, you can get started q
00001C00  75 69 63 6B 6C 79 20 77  69 74 68 20 74 68 65 20  53 75 70 65 72 56 47 41  20 4B 69 74 20 63 6F 6D  uickly with the SuperVGA Kit com
00001C20  70 61 74 62 69 6C 69 74  79 20 6C 69 62 72 61 72  79 2E 20 54 68 69 73 20  69 73 20 61 20 73 6D 61  patbility library. This is a sma
00001C40  6C 6C 20 6C 69 62 72 61  72 79 20 74 68 61 74 20  65 78 70 6F 72 74 73 20  61 6E 20 69 64 65 6E 74  ll library that exports an ident
00001C60  69 63 61 6C 20 41 50 49  20 74 6F 20 74 68 65 20  6F 72 69 67 69 6E 61 6C  20 53 75 70 65 72 56 47  ical API to the original SuperVG
00001C80  41 20 4B 69 74 2C 20 62  75 74 20 79 6F 75 20 6C  69 6E 6B 20 79 6F 75 72  20 63 6F 64 65 20 77 69  A Kit, but you link your code wi
00001CA0  74 68 20 74 68 65 20 4D  47 4C 20 6C 69 62 72 61  72 69 65 73 20 72 61 74  68 65 72 20 74 68 61 6E  th the MGL libraries rather than
00001CC0  20 74 68 65 20 53 75 70  65 72 56 47 41 20 4B 69  74 20 6C 69 62 72 61 72  69 65 73 2E 20 0D 49 66   the SuperVGA Kit libraries. If
00001CE0  20 79 6F 75 20 64 6F 20  75 73 65 20 74 68 65 20  63 6F 6D 70 61 74 69 62  69 6C 69 74 79 20 6C 69   you do use the compatibility li
00001D00  62 72 61 72 79 2C 20 77  65 20 72 65 63 6F 6D 6D  65 6E 64 20 74 68 61 74  20 79 6F 75 20 65 76 65  brary, we recommend that you eve
00001D20  6E 74 75 61 6C 6C 79 20  70 6F 72 74 20 79 6F 75  72 20 63 6F 64 65 20 6F  76 65 72 20 74 6F 20 74  ntually port your code over to t
00001D40  68 65 20 66 75 6C 6C 20  4D 47 4C 20 41 50 49 2C  20 61 73 20 74 68 65 20  53 75 70 65 72 56 47 41  he full MGL API, as the SuperVGA
00001D60  20 4B 69 74 20 63 6F 6D  70 61 74 69 62 69 6C 69  74 79 20 6C 69 62 72 61  72 79 20 69 73 20 6E 6F   Kit compatibility library is no
00001D80  74 20 70 6F 72 74 61 62  6C 65 20 74 6F 20 57 69  6E 64 6F 77 73 20 61 6E  64 20 77 69 6C 6C 20 6E  t portable to Windows and will n
00001DA0  6F 74 20 77 6F 72 6B 20  77 69 74 68 20 74 68 65  20 44 69 72 65 63 74 58  20 6C 69 62 72 61 72 69  ot work with the DirectX librari
00001DC0  65 73 2E 20 54 68 65 20  66 75 6C 6C 20 73 6F 75  72 63 65 20 63 6F 64 65  20 74 6F 20 74 68 65 20  es. The full source code to the 
00001DE0  63 6F 6D 70 61 74 69 62  69 6C 69 74 79 20 6C 69  62 72 61 72 79 20 69 73  20 70 72 6F 76 69 64 65  compatibility library is provide
00001E00  64 20 61 73 20 70 61 72  74 20 6F 66 20 74 68 65  20 73 74 61 6E 64 61 72  64 20 4D 47 4C 20 64 69  d as part of the standard MGL di
00001E20  73 74 72 69 62 75 74 69  6F 6E 2C 20 73 6F 20 79  6F 75 20 63 61 6E 20 75  73 65 20 74 68 61 74 20  stribution, so you can use that 
00001E40  73 6F 75 72 63 65 20 63  6F 64 65 20 61 73 20 61  20 67 75 69 64 65 20 74  6F 20 68 65 6C 70 69 6E  source code as a guide to helpin
00001E60  67 20 79 6F 75 20 70 6F  72 74 20 79 6F 75 72 20  63 6F 64 65 20 66 72 6F  6D 20 74 68 65 20 53 75  g you port your code from the Su
00001E80  70 65 72 56 47 41 20 4B  69 74 20 41 50 49 20 74  6F 20 74 68 65 20 66 75  6C 6C 20 4D 47 4C 20 41  perVGA Kit API to the full MGL A
00001EA0  50 49 2E 0D 55 73 69 6E  67 20 74 68 65 20 53 75  70 65 72 56 47 41 20 4B  69 74 20 43 6F 6D 70 61  PI.Using the SuperVGA Kit Compa
00001EC0  74 69 62 69 6C 69 74 79  20 4C 69 62 72 61 72 79  0D 49 6E 20 6F 72 64 65  72 20 74 6F 20 65 61 73  tibility LibraryIn order to eas
00001EE0  65 20 74 68 65 20 70 6F  72 74 69 6E 67 20 65 66  66 6F 72 74 20 72 65 71  75 69 72 65 64 20 74 6F  e the porting effort required to
00001F00  20 6D 6F 76 65 20 79 6F  75 72 20 63 6F 64 65 20  66 72 6F 6D 20 74 68 65  20 53 75 70 65 72 56 47   move your code from the SuperVG
00001F20  41 20 4B 69 74 20 41 50  49 20 6F 76 65 72 20 74  6F 20 74 68 65 20 53 63  69 54 65 63 68 20 4D 47  A Kit API over to the SciTech MG
00001F40  4C 20 41 50 49 2C 20 77  65 20 68 61 76 65 20 70  72 6F 76 69 64 65 64 20  61 20 73 6D 61 6C 6C 20  L API, we have provided a small 
00001F60  53 75 70 65 72 56 47 41  20 4B 69 74 20 43 6F 6D  70 61 74 69 62 69 6C 69  74 79 20 4C 69 62 72 61  SuperVGA Kit Compatibility Libra
00001F80  72 79 20 28 77 69 74 68  20 73 6F 75 72 63 65 20  63 6F 64 65 29 2E 20 54  68 69 73 20 6C 69 62 72  ry (with source code). This libr
00001FA0  61 72 79 20 69 6D 70 6C  65 6D 65 6E 74 73 20 74  68 65 20 65 6E 74 69 72  65 20 53 75 70 65 72 56  ary implements the entire SuperV
00001FC0  47 41 20 4B 69 74 20 41  50 49 20 62 75 74 20 69  6D 70 6C 65 6D 65 6E 74  73 20 61 6C 6C 20 74 68  GA Kit API but implements all th
00001FE0  65 20 6D 6F 64 65 20 69  6E 69 74 69 61 6C 69 7A  61 74 69 6F 6E 20 61 6E  64 20 67 72 61 70 68 69  e mode initialization and graphi
00002000  63 73 20 6F 75 74 70 75  74 20 66 75 6E 63 74 69  6F 6E 73 20 75 73 69 6E  67 20 53 63 69 54 65 63  cs output functions using SciTec
00002020  68 20 4D 47 4C 2E 20 54  6F 20 75 73 65 20 74 68  69 73 20 6C 69 62 72 61  72 79 2C 20 61 6C 6C 20  h MGL. To use this library, all 
00002040  79 6F 75 20 6E 65 65 64  20 74 6F 20 64 6F 20 69  73 20 63 6F 6D 70 69 6C  65 20 79 6F 75 72 20 63  you need to do is compile your c
00002060  6F 64 65 20 61 73 20 6E  6F 72 6D 61 6C 2C 20 61  6E 64 20 74 68 65 6E 20  73 69 6D 70 6C 79 20 72  ode as normal, and then simply r
00002080  65 6C 69 6E 6B 20 77 69  74 68 20 62 6F 74 68 20  74 68 65 20 53 56 47 41  4D 47 4C 2E 4C 49 42 20  elink with both the SVGAMGL.LIB 
000020A0  61 6E 64 20 74 68 65 20  61 70 70 72 6F 70 72 69  61 74 65 20 4D 47 4C 20  6C 69 62 72 61 72 69 65  and the appropriate MGL librarie
000020C0  73 20 28 69 2E 65 2E 20  4D 47 4C 4C 54 2E 4C 49  42 20 66 6F 72 20 74 68  65 20 4D 47 4C 2F 4C 69  s (i.e. MGLLT.LIB for the MGL/Li
000020E0  74 65 20 6C 69 62 72 61  72 69 65 73 29 2E 0D 49  66 20 68 6F 77 65 76 65  72 20 79 6F 75 20 61 72  te libraries).If however you ar
00002100  65 20 75 73 69 6E 67 20  74 68 65 20 57 69 6E 44  69 72 65 63 74 20 63 6F  6D 70 61 74 69 62 69 6C  e using the WinDirect compatibil
00002120  69 74 79 20 6C 69 62 72  61 72 69 65 73 20 66 6F  72 20 65 76 65 6E 74 20  68 61 6E 64 6C 69 6E 67  ity libraries for event handling
00002140  20 75 6E 64 65 72 20 44  4F 53 2C 20 79 6F 75 20  77 69 6C 6C 20 6E 65 65  64 20 74 6F 20 69 6E 63   under DOS, you will need to inc
00002160  6C 75 64 65 20 74 68 65  20 53 56 47 41 4D 47 4C  2E 48 20 68 65 61 64 65  72 20 66 69 6C 65 20 69  lude the SVGAMGL.H header file i
00002180  6E 73 74 65 61 64 20 6F  66 20 74 68 65 20 73 74  61 6E 64 61 72 64 20 53  56 47 41 2E 48 20 68 65  nstead of the standard SVGA.H he
000021A0  61 64 65 72 20 66 69 6C  65 2E 20 54 68 69 73 20  66 69 6C 65 20 63 6F 6E  74 61 69 6E 73 20 73 6F  ader file. This file contains so
000021C0  6D 65 20 74 72 61 6E 73  6C 61 74 69 6F 6E 20 6D  61 63 72 6F 73 20 61 6E  64 20 66 75 6E 63 74 69  me translation macros and functi
000021E0  6F 6E 73 20 74 6F 20 74  72 61 6E 73 6C 61 74 65  20 74 68 65 20 65 76 65  6E 74 20 68 61 6E 64 6C  ons to translate the event handl
00002200  69 6E 67 20 66 75 6E 63  74 69 6F 6E 73 20 66 72  6F 6D 20 74 68 65 20 57  69 6E 44 69 72 65 63 74  ing functions from the WinDirect
00002220  20 41 50 49 20 74 6F 20  74 68 65 20 53 63 69 54  65 63 68 20 4D 47 4C 20  41 50 49 2E 0D 49 6E 69   API to the SciTech MGL API.Ini
00002240  74 69 61 6C 69 7A 69 6E  67 20 74 68 65 20 53 75  70 65 72 56 47 41 20 4B  69 74 0D 42 65 66 6F 72  tializing the SuperVGA KitBefor
00002260  65 20 79 6F 75 20 63 61  6E 20 75 73 65 20 74 68  65 20 53 75 70 65 72 56  47 41 20 4B 69 74 2C 20  e you can use the SuperVGA Kit, 
00002280  79 6F 75 20 6E 65 65 64  20 74 6F 20 63 61 6C 6C  20 74 68 65 20 53 56 5F  69 6E 69 74 20 69 6E 69  you need to call the SV_init ini
000022A0  74 69 61 6C 69 7A 61 74  69 6F 6E 20 66 75 6E 63  74 69 6F 6E 2E 20 54 68  69 73 20 66 75 6E 63 74  tialization function. This funct
000022C0  69 6F 6E 20 74 61 6B 65  73 20 61 20 66 6C 61 67  20 74 68 61 74 20 69 6E  64 69 63 61 74 65 73 20  ion takes a flag that indicates 
000022E0  77 68 65 74 68 65 72 20  79 6F 75 20 77 69 73 68  20 74 6F 20 73 65 61 72  63 68 20 66 6F 72 20 61  whether you wish to search for a
00002300  6E 64 20 75 73 65 20 56  42 45 2F 41 46 20 73 65  72 76 69 63 65 73 20 77  68 65 72 65 20 61 76 61  nd use VBE/AF services where ava
00002320  69 6C 61 62 6C 65 2C 20  61 6E 64 20 77 69 6C 6C  20 72 65 74 75 72 6E 20  61 20 70 6F 69 6E 74 65  ilable, and will return a pointe
00002340  72 20 74 6F 20 74 68 65  20 53 75 70 65 72 56 47  41 20 4B 69 74 92 73 20  67 6C 6F 62 61 6C 20 64  r to the SuperVGA KitÆs global d
00002360  65 76 69 63 65 20 63 6F  6E 74 65 78 74 20 62 6C  6F 63 6B 2E 20 54 68 69  73 20 67 6C 6F 62 61 6C  evice context block. This global
00002380  20 64 65 76 69 63 65 20  63 6F 6E 74 65 78 74 20  62 6C 6F 63 6B 20 6D 61  69 6E 74 61 69 6E 73 20   device context block maintains 
000023A0  61 6C 6C 20 74 68 65 20  73 74 61 74 65 20 69 6E  66 6F 72 6D 61 74 69 6F  6E 20 66 6F 72 20 74 68  all the state information for th
000023C0  65 20 53 75 70 65 72 56  47 41 20 4B 69 74 2C 20  61 6E 64 20 63 61 6E 20  62 65 20 75 73 65 64 20  e SuperVGA Kit, and can be used 
000023E0  74 6F 20 64 69 72 65 63  74 6C 79 20 61 63 63 65  73 73 20 6D 61 6E 79 20  6F 66 20 74 68 65 20 53  to directly access many of the S
00002400  75 70 65 72 56 47 41 20  4B 69 74 92 73 20 69 6E  74 65 72 6E 61 6C 20 76  61 72 69 61 62 6C 65 73  uperVGA KitÆs internal variables
00002420  20 66 6F 72 20 6D 61 78  69 6D 75 6D 20 70 65 72  66 6F 72 6D 61 6E 63 65  2E 0D 4E 6F 74 65 20 74   for maximum performance.Note t
00002440  68 61 74 20 74 68 69 73  20 69 73 20 73 6C 69 67  68 74 6C 79 20 64 69 66  66 65 72 65 6E 74 20 74  hat this is slightly different t
00002460  6F 20 74 68 65 20 70 72  65 76 69 6F 75 73 20 35  2E 78 20 72 65 6C 65 61  73 65 73 20 6F 66 20 74  o the previous 5.x releases of t
00002480  68 65 20 53 75 70 65 72  56 47 41 20 4B 69 74 20  77 68 65 72 65 20 61 6C  6C 20 67 6C 6F 62 61 6C  he SuperVGA Kit where all global
000024A0  20 76 61 72 69 61 62 6C  65 73 20 77 65 72 65 20  61 76 61 69 6C 61 62 6C  65 20 64 69 72 65 63 74   variables were available direct
000024C0  6C 79 2E 20 53 69 6E 63  65 20 74 68 65 20 53 75  70 65 72 56 47 41 20 4B  69 74 20 68 61 73 20 62  ly. Since the SuperVGA Kit has b
000024E0  65 65 6E 20 75 70 64 61  74 65 64 20 74 6F 20 73  75 70 70 6F 72 74 20 62  6F 74 68 20 31 36 20 61  een updated to support both 16 a
00002500  6E 64 20 33 32 20 62 69  74 20 44 4C 4C 92 73 20  75 6E 64 65 72 20 57 69  6E 64 6F 77 73 2C 20 74  nd 32 bit DLLÆs under Windows, t
00002520  68 65 20 69 6E 74 65 72  66 61 63 65 20 77 61 73  20 63 68 61 6E 67 65 64  20 74 6F 20 69 6E 63 6C  he interface was changed to incl
00002540  75 64 65 20 61 20 67 6C  6F 62 61 6C 20 64 65 76  69 63 65 20 63 6F 6E 74  65 78 74 20 62 6C 6F 63  ude a global device context bloc
00002560  6B 20 70 6F 69 6E 74 65  72 20 72 65 74 75 72 6E  65 64 20 74 6F 20 74 68  65 20 61 70 70 6C 69 63  k pointer returned to the applic
00002580  61 74 69 6F 6E 2E 20 54  68 65 20 72 65 61 73 6F  6E 20 66 6F 72 20 74 68  69 73 20 69 73 20 74 68  ation. The reason for this is th
000025A0  61 74 20 79 6F 75 20 63  61 6E 6E 6F 74 20 73 68  61 72 65 20 67 6C 6F 62  61 6C 20 76 61 72 69 61  at you cannot share global varia
000025C0  62 6C 65 73 20 64 69 72  65 63 74 6C 79 20 69 6E  20 31 36 20 62 69 74 20  44 4C 4C 92 73 20 28 79  bles directly in 16 bit DLLÆs (y
000025E0  6F 75 20 63 61 6E 20 66  6F 72 20 33 32 20 62 69  74 20 44 4C 4C 92 73 2C  20 62 75 74 20 6D 61 6E  ou can for 32 bit DLLÆs, but man
00002600  79 20 63 6F 6D 70 69 6C  65 72 73 20 64 6F 20 6E  6F 74 20 63 75 72 72 65  6E 74 6C 79 20 73 75 70  y compilers do not currently sup
00002620  70 6F 72 74 20 74 68 69  73 29 2E 20 54 68 65 20  61 64 76 61 6E 74 61 67  65 20 74 6F 20 74 68 65  port this). The advantage to the
00002640  20 6E 65 77 20 69 6E 74  65 72 66 61 63 65 20 69  73 20 74 68 61 74 20 79  6F 75 20 63 61 6E 20 63   new interface is that you can c
00002660  68 61 6E 67 65 20 66 72  6F 6D 20 74 68 65 20 73  74 61 74 69 63 20 6C 69  6E 6B 20 6C 69 62 72 61  hange from the static link libra
00002680  72 69 65 73 20 74 6F 20  74 68 65 20 44 4C 4C 20  76 65 72 73 69 6F 6E 20  6F 66 20 74 68 65 20 53  ries to the DLL version of the S
000026A0  75 70 65 72 56 47 41 20  4B 69 74 20 73 69 6D 70  6C 79 20 62 79 20 61 64  64 69 6E 67 20 74 68 65  uperVGA Kit simply by adding the
000026C0  20 23 64 65 66 69 6E 65  20 53 56 47 41 5F 44 4C  4C 20 61 6E 64 20 72 65  63 6F 6D 70 69 6C 69 6E   #define SVGA_DLL and recompilin
000026E0  67 20 61 6E 64 20 6C 69  6E 6B 69 6E 67 20 79 6F  75 72 20 63 6F 64 65 2E  0D 53 74 61 72 74 69 6E  g and linking your code.Startin
00002700  67 20 61 20 67 72 61 70  68 69 63 73 20 6D 6F 64  65 0D 42 65 66 6F 72 65  20 79 6F 75 20 63 61 6E  g a graphics modeBefore you can
00002720  20 73 74 61 72 74 20 61  6E 79 20 67 72 61 70 68  69 63 73 20 6D 6F 64 65  2C 20 79 6F 75 20 6D 75   start any graphics mode, you mu
00002740  73 74 20 66 69 72 73 74  20 66 69 6E 64 20 74 68  65 20 6D 6F 64 65 20 6E  75 6D 62 65 72 20 6F 66  st first find the mode number of
00002760  20 74 68 65 20 67 72 61  70 68 69 63 73 20 6D 6F  64 65 20 74 68 61 74 20  79 6F 75 20 77 69 73 68   the graphics mode that you wish
00002780  20 74 6F 20 73 74 61 72  74 2E 20 54 68 65 20 53  75 70 65 72 56 47 41 20  4B 69 74 20 64 6F 65 73   to start. The SuperVGA Kit does
000027A0  20 6E 6F 74 20 64 65 66  69 6E 65 20 61 6E 79 20  73 74 61 6E 64 61 72 64  20 6D 6F 64 65 20 6E 75   not define any standard mode nu
000027C0  6D 62 65 72 73 2C 20 61  6E 64 20 69 74 20 69 73  20 75 70 20 74 6F 20 79  6F 75 72 20 61 70 70 6C  mbers, and it is up to your appl
000027E0  69 63 61 74 69 6F 6E 20  63 6F 64 65 20 74 6F 20  72 65 61 64 20 74 68 72  6F 75 67 68 20 74 68 65  ication code to read through the
00002800  20 6C 69 73 74 20 6F 66  20 61 76 61 69 6C 61 62  6C 65 20 67 72 61 70 68  69 63 73 20 6D 6F 64 65   list of available graphics mode
00002820  73 20 61 6E 64 20 74 6F  20 73 65 61 72 63 68 20  66 6F 72 20 61 20 67 72  61 70 68 69 63 73 20 6D  s and to search for a graphics m
00002840  6F 64 65 20 77 69 74 68  20 74 68 65 20 64 65 73  69 72 65 64 20 72 65 73  6F 6C 75 74 69 6F 6E 20  ode with the desired resolution 
00002860  61 6E 64 20 63 6F 6C 6F  72 20 64 65 70 74 68 20  75 73 69 6E 67 20 74 68  65 20 56 42 45 5F 67 65  and color depth using the VBE_ge
00002880  74 4D 6F 64 65 49 6E 66  6F 20 66 75 6E 63 74 69  6F 6E 2E 0D 54 68 65 20  53 75 70 65 72 56 47 41  tModeInfo function.The SuperVGA
000028A0  20 4B 69 74 20 61 6C 6C  6F 77 73 20 79 6F 75 20  74 6F 20 73 74 61 72 74  20 61 20 67 72 61 70 68   Kit allows you to start a graph
000028C0  69 63 73 20 6D 6F 64 65  20 75 73 69 6E 67 20 65  69 74 68 65 72 20 74 68  65 20 62 61 6E 6B 65 64  ics mode using either the banked
000028E0  20 66 72 61 6D 65 62 75  66 66 65 72 2C 20 61 20  76 69 72 74 75 61 6C 20  6C 69 6E 65 61 72 20 66   framebuffer, a virtual linear f
00002900  72 61 6D 65 62 75 66 66  65 72 20 6F 72 20 61 20  68 61 72 64 77 61 72 65  20 6C 69 6E 65 61 72 20  ramebuffer or a hardware linear 
00002920  66 72 61 6D 65 62 75 66  66 65 72 20 6F 6E 20 74  68 65 20 67 72 61 70 68  69 63 73 20 63 61 72 64  framebuffer on the graphics card
00002940  20 28 64 65 70 65 6E 64  69 6E 67 20 6F 6E 20 74  68 65 20 75 6E 64 65 72  6C 79 69 6E 67 20 56 42   (depending on the underlying VB
00002960  45 20 64 72 69 76 65 72  92 73 20 63 61 70 61 62  69 6C 69 74 69 65 73 29  2E 20 57 68 65 6E 20 74  E driverÆs capabilities). When t
00002980  68 65 20 53 75 70 65 72  56 47 41 20 4B 69 74 20  69 73 20 69 6E 69 74 69  61 6C 69 7A 65 64 2C 20  he SuperVGA Kit is initialized, 
000029A0  69 74 20 77 69 6C 6C 20  69 6E 74 65 72 72 6F 67  61 74 65 20 74 68 65 20  67 72 61 70 68 69 63 73  it will interrogate the graphics
000029C0  20 63 61 72 64 20 61 6E  64 20 64 65 74 65 72 6D  69 6E 65 20 69 66 20 69  74 20 73 75 70 70 6F 72   card and determine if it suppor
000029E0  74 73 20 61 20 68 61 72  64 77 61 72 65 20 6C 69  6E 65 61 72 20 66 72 61  6D 65 62 75 66 66 65 72  ts a hardware linear framebuffer
00002A00  2E 20 49 66 20 69 74 20  64 6F 65 73 20 73 75 70  70 6F 72 74 20 6F 6E 65  2C 20 74 68 65 20 6C 69  . If it does support one, the li
00002A20  6E 65 61 72 41 64 64 72  20 76 61 72 69 61 62 6C  65 20 69 6E 20 74 68 65  20 67 6C 6F 62 61 6C 20  nearAddr variable in the global 
00002A40  64 65 76 69 63 65 20 63  6F 6E 74 65 78 74 20 62  6C 6F 63 6B 20 77 69 6C  6C 20 62 65 20 73 65 74  device context block will be set
00002A60  20 74 6F 20 74 68 65 20  76 61 6C 75 65 20 6F 66  20 74 68 65 20 70 68 79  73 69 63 61 6C 20 61 64   to the value of the physical ad
00002A80  64 72 65 73 73 20 6F 66  20 74 68 65 20 6C 69 6E  65 61 72 20 66 72 61 6D  65 62 75 66 66 65 72 20  dress of the linear framebuffer 
00002AA0  28 74 68 69 73 20 69 73  20 6E 6F 74 20 61 20 43  50 55 20 61 64 64 72 65  73 73 2C 20 73 6F 20 64  (this is not a CPU address, so d
00002AC0  6F 6E 92 74 20 74 72 79  20 74 6F 20 77 72 69 74  65 20 74 6F 20 69 74 21  21 29 2E 20 49 74 20 69  onÆt try to write to it!!). It i
00002AE0  73 20 74 68 65 6E 20 75  70 20 74 6F 20 79 6F 75  72 20 61 70 70 6C 69 63  61 74 69 6F 6E 20 74 6F  s then up to your application to
00002B00  20 70 61 73 73 20 74 68  65 20 73 76 4C 69 6E 65  61 72 42 75 66 66 65 72  20 66 6C 61 67 20 74 6F   pass the svLinearBuffer flag to
00002B20  20 74 68 65 20 53 56 5F  73 65 74 4D 6F 64 65 20  66 75 6E 63 74 69 6F 6E  20 77 68 65 6E 20 79 6F   the SV_setMode function when yo
00002B40  75 20 73 74 61 72 74 20  74 68 65 20 67 72 61 70  68 69 63 73 20 6D 6F 64  65 2C 20 61 6E 64 20 69  u start the graphics mode, and i
00002B60  74 20 77 69 6C 6C 20 65  6E 61 62 6C 65 20 74 68  65 20 68 61 72 64 77 61  72 65 20 6C 69 6E 65 61  t will enable the hardware linea
00002B80  72 20 66 72 61 6D 65 62  75 66 66 65 72 20 6D 6F  64 65 2E 0D 49 66 20 61  20 68 61 72 64 77 61 72  r framebuffer mode.If a hardwar
00002BA0  65 20 6C 69 6E 65 61 72  20 66 72 61 6D 65 62 75  66 66 65 72 20 6D 6F 64  65 20 69 73 20 6E 6F 74  e linear framebuffer mode is not
00002BC0  20 61 76 61 69 6C 61 62  6C 65 2C 20 74 68 65 20  53 75 70 65 72 56 47 41  20 4B 69 74 20 63 68 65   available, the SuperVGA Kit che
00002BE0  63 6B 73 20 74 6F 20 73  65 65 20 69 66 20 69 74  20 69 73 20 70 6F 73 73  69 62 6C 65 20 74 6F 20  cks to see if it is possible to 
00002C00  69 6E 69 74 69 61 6C 69  7A 65 20 61 20 76 69 72  74 75 61 6C 20 6C 69 6E  65 61 72 20 66 72 61 6D  initialize a virtual linear fram
00002C20  65 62 75 66 66 65 72 20  75 73 69 6E 67 20 74 68  65 20 33 38 36 20 76 69  72 74 75 61 6C 20 6D 65  ebuffer using the 386 virtual me
00002C40  6D 6F 72 79 20 6D 61 6E  61 67 65 72 20 28 6E 6F  74 20 70 6F 73 73 69 62  6C 65 20 75 6E 64 65 72  mory manager (not possible under
00002C60  20 44 4F 53 20 62 6F 78  65 73 20 61 6E 64 20 73  6F 6D 65 20 44 4F 53 20  65 78 74 65 6E 64 65 72   DOS boxes and some DOS extender
00002C80  73 29 2E 20 49 66 20 74  68 69 73 20 69 73 20 70  6F 73 73 69 62 6C 65 2C  20 69 74 20 73 65 74 73  s). If this is possible, it sets
00002CA0  20 74 68 65 20 68 61 76  65 56 69 72 74 75 61 6C  42 75 66 66 65 72 20 66  6C 61 67 20 69 6E 20 74   the haveVirtualBuffer flag in t
00002CC0  68 65 20 67 6C 6F 62 61  6C 20 64 65 76 69 63 65  20 63 6F 6E 74 65 78 74  20 62 6C 6F 63 6B 20 74  he global device context block t
00002CE0  6F 20 74 72 75 65 2C 20  69 6E 64 69 63 61 74 69  6E 67 20 74 68 61 74 20  74 68 65 20 76 69 72 74  o true, indicating that the virt
00002D00  75 61 6C 20 6C 69 6E 65  61 72 20 62 75 66 66 65  72 20 69 73 20 61 76 61  69 6C 61 62 6C 65 2E 20  ual linear buffer is available. 
00002D20  57 68 65 6E 20 79 6F 75  20 69 6E 69 74 69 61 6C  69 7A 65 20 61 20 67 72  61 70 68 69 63 73 20 6D  When you initialize a graphics m
00002D40  6F 64 65 2C 20 74 68 65  20 53 75 70 65 72 56 47  41 20 4B 69 74 20 77 69  6C 6C 20 63 68 65 63 6B  ode, the SuperVGA Kit will check
00002D60  20 74 68 65 20 75 73 65  56 69 72 74 75 61 6C 42  75 66 66 65 72 20 66 6C  61 67 20 79 6F 75 20 70   the useVirtualBuffer flag you p
00002D80  61 73 73 20 74 6F 20 74  68 65 20 73 65 74 20 6D  6F 64 65 20 66 75 6E 63  74 69 6F 6E 73 20 74 6F  ass to the set mode functions to
00002DA0  20 64 65 74 65 72 6D 69  6E 65 20 69 66 20 74 68  65 20 76 69 72 74 75 61  6C 20 6C 69 6E 65 61 72   determine if the virtual linear
00002DC0  20 66 72 61 6D 65 62 75  66 66 65 72 20 73 68 6F  75 6C 64 20 62 65 20 75  73 65 64 2E 20 49 66 20   framebuffer should be used. If 
00002DE0  74 68 69 73 20 66 6C 61  67 20 69 73 20 73 65 74  20 74 6F 20 74 72 75 65  20 74 68 65 20 76 69 72  this flag is set to true the vir
00002E00  74 75 61 6C 20 6C 69 6E  65 61 72 20 66 72 61 6D  65 62 75 66 66 65 72 20  6D 6F 64 65 20 77 69 6C  tual linear framebuffer mode wil
00002E20  6C 20 62 65 20 69 6E 69  74 69 61 6C 69 7A 65 64  20 61 6E 64 20 74 68 65  20 76 69 72 74 75 61 6C  l be initialized and the virtual
00002E40  42 75 66 66 65 72 20 66  6C 61 67 20 69 6E 20 74  68 65 20 67 6C 6F 62 61  6C 20 64 65 76 69 63 65  Buffer flag in the global device
00002E60  20 63 6F 6E 74 65 78 74  20 77 69 6C 6C 20 62 65  20 73 65 74 20 74 6F 20  74 72 75 65 20 74 6F 20   context will be set to true to 
00002E80  69 6E 64 69 63 61 74 65  20 74 68 61 74 20 74 68  65 20 76 69 72 74 75 61  6C 20 62 75 66 66 65 72  indicate that the virtual buffer
00002EA0  69 6E 67 20 6D 6F 64 65  20 69 73 20 63 75 72 72  65 6E 74 6C 79 20 61 63  74 69 76 65 2E 0D 4F 6E  ing mode is currently active.On
00002EC0  63 65 20 74 68 65 20 67  72 61 70 68 69 63 73 20  6D 6F 64 65 20 69 73 20  69 6E 69 74 69 61 6C 69  ce the graphics mode is initiali
00002EE0  7A 65 64 2C 20 79 6F 75  20 63 61 6E 20 64 72 61  77 20 74 6F 20 69 74 20  75 73 69 6E 67 20 74 68  zed, you can draw to it using th
00002F00  65 20 73 75 70 70 6C 69  65 64 20 53 75 70 65 72  56 47 41 20 4B 69 74 20  67 72 61 70 68 69 63 73  e supplied SuperVGA Kit graphics
00002F20  20 6F 75 74 70 75 74 20  66 75 6E 63 74 69 6F 6E  73 20 28 6E 6F 74 20 76  65 72 79 20 73 70 65 63   output functions (not very spec
00002F40  74 61 63 75 6C 61 72 29  20 6F 72 20 79 6F 75 20  63 61 6E 20 77 72 69 74  65 20 79 6F 75 72 20 6F  tacular) or you can write your o
00002F60  77 6E 20 68 69 67 68 20  73 70 65 65 64 20 72 65  6E 64 65 72 69 6E 67 20  63 6F 64 65 20 74 6F 20  wn high speed rendering code to 
00002F80  72 65 6E 64 65 72 20 64  69 72 65 63 74 6C 79 20  74 6F 20 74 68 65 20 6C  69 6E 65 61 72 20 66 72  render directly to the linear fr
00002FA0  61 6D 65 62 75 66 66 65  72 20 72 65 67 69 6F 6E  73 2E 0D 4E 6F 74 65 20  74 68 61 74 20 69 66 20  amebuffer regions.Note that if 
00002FC0  79 6F 75 20 61 72 65 20  75 73 69 6E 67 20 74 68  65 20 53 75 70 65 72 56  47 41 20 4B 69 74 20 75  you are using the SuperVGA Kit u
00002FE0  6E 64 65 72 20 57 69 6E  64 6F 77 73 2C 20 79 6F  75 20 6D 75 73 74 20 63  61 6C 6C 20 74 68 65 20  nder Windows, you must call the 
00003000  57 69 6E 44 69 72 65 63  74 20 57 44 5F 73 74 61  72 74 46 75 6C 6C 73 63  72 65 65 6E 20 66 75 6E  WinDirect WD_startFullscreen fun
00003020  63 74 69 6F 6E 20 62 65  66 6F 72 65 20 79 6F 75  20 69 6E 69 74 69 61 6C  69 7A 65 20 61 20 67 72  ction before you initialize a gr
00003040  61 70 68 69 63 73 20 6D  6F 64 65 2C 20 61 6E 64  20 79 6F 75 20 6D 75 73  74 20 63 61 6C 6C 20 57  aphics mode, and you must call W
00003060  44 5F 72 65 73 74 6F 72  65 47 44 49 20 74 6F 20  72 65 74 75 72 6E 20 62  61 63 6B 20 74 6F 20 6E  D_restoreGDI to return back to n
00003080  6F 72 6D 61 6C 20 57 69  6E 64 6F 77 73 20 6D 6F  64 65 2E 20 46 61 69 6C  69 6E 67 20 74 6F 20 64  ormal Windows mode. Failing to d
000030A0  6F 20 73 6F 20 77 69 6C  6C 20 63 61 75 73 65 20  74 68 65 20 53 75 70 65  72 56 47 41 20 4B 69 74  o so will cause the SuperVGA Kit
000030C0  20 74 6F 20 77 72 69 74  65 20 74 6F 20 74 68 65  20 64 69 73 70 6C 61 79  20 63 6F 6E 63 75 72 72   to write to the display concurr
000030E0  65 6E 74 6C 79 20 77 69  74 68 20 47 44 49 20 61  6E 64 20 77 69 6C 6C 20  63 61 75 73 65 20 47 44  ently with GDI and will cause GD
00003100  49 20 74 6F 20 65 76 65  6E 74 75 61 6C 6C 79 20  6C 6F 63 6B 20 75 70 2E  0D 53 74 61 72 74 69 6E  I to eventually lock up.Startin
00003120  67 20 61 20 76 69 72 74  75 61 6C 20 73 63 72 6F  6C 6C 69 6E 67 20 67 72  61 70 68 69 63 73 20 6D  g a virtual scrolling graphics m
00003140  6F 64 65 0D 49 66 20 79  6F 75 20 77 69 73 68 20  74 6F 20 75 73 65 20 68  61 72 64 77 61 72 65 20  odeIf you wish to use hardware 
00003160  76 69 72 74 75 61 6C 20  73 63 72 6F 6C 6C 69 6E  67 20 77 69 74 68 20 74  68 65 20 53 75 70 65 72  virtual scrolling with the Super
00003180  56 47 41 20 4B 69 74 2C  20 79 6F 75 20 6D 75 73  74 20 69 6E 69 74 69 61  6C 69 7A 65 20 74 68 65  VGA Kit, you must initialize the
000031A0  20 67 72 61 70 68 69 63  73 20 6D 6F 64 65 20 75  73 69 6E 67 20 74 68 65  20 53 56 5F 73 65 74 56   graphics mode using the SV_setV
000031C0  69 72 74 75 61 6C 4D 6F  64 65 20 66 75 6E 63 74  69 6F 6E 20 72 61 74 68  65 72 20 74 68 61 6E 20  irtualMode function rather than 
000031E0  74 68 65 20 75 73 75 61  6C 20 53 56 5F 73 65 74  4D 6F 64 65 20 66 75 6E  63 74 69 6F 6E 2E 20 54  the usual SV_setMode function. T
00003200  68 65 20 76 69 72 74 75  61 6C 20 73 63 72 6F 6C  6C 69 6E 67 20 76 65 72  73 69 6F 6E 20 6F 66 20  he virtual scrolling version of 
00003220  74 68 69 73 20 66 75 6E  63 74 69 6F 6E 20 74 61  6B 65 73 20 74 77 6F 20  65 78 74 72 61 20 70 61  this function takes two extra pa
00003240  72 61 6D 65 74 65 72 73  20 74 68 61 74 20 64 65  66 69 6E 65 20 74 68 65  20 76 69 72 74 75 61 6C  rameters that define the virtual
00003260  20 68 65 69 67 68 74 20  61 6E 64 20 76 69 72 74  75 61 6C 20 77 69 64 74  68 20 6F 66 20 74 68 65   height and virtual width of the
00003280  20 67 72 61 70 68 69 63  73 20 6D 6F 64 65 20 74  68 61 74 20 79 6F 75 20  77 69 73 68 20 74 6F 20   graphics mode that you wish to 
000032A0  69 6E 69 74 69 61 6C 69  7A 65 2C 20 61 6E 64 20  77 69 6C 6C 20 61 74 74  65 6D 70 74 20 74 6F 20  initialize, and will attempt to 
000032C0  73 74 61 72 74 20 74 68  65 20 67 72 61 70 68 69  63 73 20 6D 6F 64 65 20  77 69 74 68 20 74 68 65  start the graphics mode with the
000032E0  20 73 70 65 63 69 66 69  65 64 20 76 69 72 74 75  61 6C 20 64 69 6D 65 6E  73 69 6F 6E 73 2E 20 49   specified virtual dimensions. I
00003300  66 20 74 68 65 20 67 72  61 70 68 69 63 73 20 68  61 72 64 77 61 72 65 20  63 61 6E 6E 6F 74 20 68  f the graphics hardware cannot h
00003320  61 6E 64 6C 65 20 61 20  76 69 72 74 75 61 6C 20  6D 6F 64 65 20 6F 66 20  74 68 65 73 65 20 64 69  andle a virtual mode of these di
00003340  6D 65 6E 73 69 6F 6E 73  2C 20 74 68 69 73 20 66  75 6E 63 74 69 6F 6E 20  77 69 6C 6C 20 66 61 69  mensions, this function will fai
00003360  6C 2E 0D 4F 6E 63 65 20  74 68 65 20 76 69 72 74  75 61 6C 20 73 63 72 6F  6C 6C 69 6E 67 20 6D 6F  l.Once the virtual scrolling mo
00003380  64 65 20 68 61 73 20 62  65 65 6E 20 69 6E 69 74  69 61 6C 69 7A 65 64 2C  20 79 6F 75 20 63 61 6E  de has been initialized, you can
000033A0  20 75 73 65 20 74 68 65  20 53 56 5F 73 65 74 44  69 73 70 6C 61 79 53 74  61 72 74 20 66 75 6E 63   use the SV_setDisplayStart func
000033C0  74 69 6F 6E 20 74 6F 20  73 65 74 20 74 68 65 20  64 69 73 70 6C 61 79 20  73 74 61 72 74 20 61 64  tion to set the display start ad
000033E0  64 72 65 73 73 20 66 6F  72 20 74 68 65 20 6D 6F  64 65 2C 20 61 6C 6C 6F  77 69 6E 67 20 79 6F 75  dress for the mode, allowing you
00003400  20 74 6F 20 73 63 72 6F  6C 6C 20 74 68 65 20 76  69 73 69 62 6C 65 20 77  69 6E 64 6F 77 20 69 6E   to scroll the visible window in
00003420  74 6F 20 74 68 65 20 66  72 61 6D 65 62 75 66 66  65 72 20 6D 65 6D 6F 72  79 20 75 73 69 6E 67 20  to the framebuffer memory using 
00003440  74 68 65 20 68 61 72 64  77 61 72 65 20 70 61 6E  6E 69 6E 67 20 72 65 67  69 73 74 65 72 73 2E 0D  the hardware panning registers.
00003460  43 68 61 6E 67 69 6E 67  20 74 68 65 20 63 6F 6C  6F 72 20 70 61 6C 65 74  74 65 0D 49 6E 20 6F 72  Changing the color paletteIn or
00003480  64 65 72 20 74 6F 20 63  68 61 6E 67 65 20 74 68  65 20 63 6F 6C 6F 72 20  70 61 6C 65 74 74 65 20  der to change the color palette 
000034A0  66 6F 72 20 74 68 65 20  63 75 72 72 65 6E 74 20  67 72 61 70 68 69 63 73  20 6D 6F 64 65 2C 20 79  for the current graphics mode, y
000034C0  6F 75 20 77 69 6C 6C 20  6E 65 65 64 20 74 6F 20  63 61 6C 6C 20 74 68 65  20 53 56 5F 73 65 74 50  ou will need to call the SV_setP
000034E0  61 6C 65 74 74 65 20 66  75 6E 63 74 69 6F 6E 2E  20 49 74 20 69 73 20 69  6D 70 6F 72 74 61 6E 74  alette function. It is important
00003500  20 74 68 61 74 20 79 6F  75 20 75 73 65 20 74 68  69 73 20 66 75 6E 63 74  69 6F 6E 20 74 6F 20 73   that you use this function to s
00003520  65 74 20 74 68 65 20 68  61 72 64 77 61 72 65 20  70 61 6C 65 74 74 65 2C  20 61 73 20 56 42 45 20  et the hardware palette, as VBE 
00003540  32 2E 30 20 61 6E 64 20  56 42 45 2F 41 46 20 64  65 76 69 63 65 73 20 6D  61 79 20 62 65 20 72 75  2.0 and VBE/AF devices may be ru
00003560  6E 6E 69 6E 67 20 69 6E  20 61 20 4E 6F 6E 56 47  41 20 67 72 61 70 68 69  63 73 20 6D 6F 64 65 20  nning in a NonVGA graphics mode 
00003580  69 6E 20 77 68 69 63 68  20 63 61 73 65 20 64 69  72 65 63 74 6C 79 20 70  72 6F 67 72 61 6D 6D 69  in which case directly programmi
000035A0  6E 67 20 74 68 65 20 73  74 61 6E 64 61 72 64 20  56 47 41 20 72 65 67 69  73 74 65 72 73 20 69 73  ng the standard VGA registers is
000035C0  20 6E 6F 74 20 70 6F 73  73 69 62 6C 65 2E 0D 50  65 72 66 6F 72 6D 69 6E  67 20 64 6F 75 62 6C 65   not possible.Performing double
000035E0  20 62 75 66 66 65 72 69  6E 67 0D 49 6E 20 6F 72  64 65 72 20 74 6F 20 70  65 72 66 6F 72 6D 20 64   bufferingIn order to perform d
00003600  6F 75 62 6C 65 20 62 75  66 66 65 72 69 6E 67 20  77 69 74 68 20 74 68 65  20 53 75 70 65 72 56 47  ouble buffering with the SuperVG
00003620  41 20 4B 69 74 2C 20 79  6F 75 20 6D 75 73 74 20  70 61 73 73 20 74 68 65  20 73 76 44 6F 75 62 6C  A Kit, you must pass the svDoubl
00003640  65 42 75 66 66 65 72 20  66 6C 61 67 20 63 6F 6D  62 69 6E 65 64 20 77 69  74 68 20 74 68 65 20 6E  eBuffer flag combined with the n
00003660  75 6D 62 65 72 20 6F 66  20 74 68 65 20 67 72 61  70 68 69 63 73 20 6D 6F  64 65 20 79 6F 75 20 77  umber of the graphics mode you w
00003680  69 73 68 20 74 6F 20 69  6E 69 74 69 61 6C 69 7A  65 20 77 68 65 6E 20 79  6F 75 20 63 61 6C 6C 20  ish to initialize when you call 
000036A0  53 56 5F 73 65 74 4D 6F  64 65 20 6F 72 20 53 56  5F 73 65 74 56 69 72 74  75 61 6C 4D 6F 64 65 2E  SV_setMode or SV_setVirtualMode.
000036C0  20 54 68 69 73 20 66 6C  61 67 20 69 73 20 6E 65  63 65 73 73 61 72 79 20  74 6F 20 63 6F 72 72 65   This flag is necessary to corre
000036E0  63 74 6C 79 20 69 6E 66  6F 72 6D 20 74 68 65 20  56 42 45 2F 41 46 20 64  72 69 76 65 72 73 20 74  ctly inform the VBE/AF drivers t
00003700  68 61 74 20 79 6F 75 20  77 69 73 68 20 74 6F 20  70 65 72 66 6F 72 6D 20  64 6F 75 62 6C 65 20 62  hat you wish to perform double b
00003720  75 66 66 65 72 69 6E 67  2C 20 73 6F 20 74 68 61  74 20 74 68 65 20 64 72  69 76 65 72 73 20 77 69  uffering, so that the drivers wi
00003740  6C 6C 20 63 6F 72 72 65  63 74 6C 79 20 73 65 74  20 61 73 69 64 65 20 65  6E 6F 75 67 68 20 66 72  ll correctly set aside enough fr
00003760  61 6D 65 62 75 66 66 65  72 20 6D 65 6D 6F 72 79  20 74 6F 20 68 6F 6C 64  20 74 68 65 20 64 6F 75  amebuffer memory to hold the dou
00003780  62 6C 65 20 62 75 66 66  65 72 73 20 61 6E 64 20  64 65 63 72 65 61 73 65  20 74 68 65 20 73 69 7A  ble buffers and decrease the siz
000037A0  65 20 6F 66 20 74 68 65  20 61 76 61 69 6C 61 62  6C 65 20 6F 66 66 73 63  72 65 65 6E 20 66 72 61  e of the available offscreen fra
000037C0  6D 65 62 75 66 66 65 72  20 6D 65 6D 6F 72 79 20  75 73 65 64 20 66 6F 72  20 73 74 6F 72 69 6E 67  mebuffer memory used for storing
000037E0  20 62 69 74 6D 61 70 73  20 65 74 63 2E 20 49 66  20 74 68 65 20 6D 6F 64  65 20 69 73 20 69 6E 63   bitmaps etc. If the mode is inc
00003800  61 70 61 62 6C 65 20 6F  66 20 64 6F 75 62 6C 65  20 62 75 66 66 65 72 69  6E 67 20 74 68 65 20 6D  apable of double buffering the m
00003820  6F 64 65 20 73 65 74 20  77 69 6C 6C 20 73 74 69  6C 6C 20 77 6F 72 6B 20  63 6F 72 72 65 63 74 6C  ode set will still work correctl
00003840  79 2C 20 68 6F 77 65 76  65 72 20 74 68 65 20 6D  6F 64 65 20 77 69 6C 6C  20 62 65 20 73 65 74 20  y, however the mode will be set 
00003860  75 70 20 66 6F 72 20 73  69 6E 67 6C 65 20 62 75  66 66 65 72 65 64 20 6F  70 65 72 61 74 69 6F 6E  up for single buffered operation
00003880  2E 0D 4F 6E 63 65 20 61  20 64 6F 75 62 6C 65 20  62 75 66 66 65 72 65 64  20 67 72 61 70 68 69 63  .Once a double buffered graphic
000038A0  73 20 6D 6F 64 65 20 68  61 73 20 62 65 65 6E 20  73 74 61 72 74 65 64 2C  20 74 68 65 20 6D 6F 64  s mode has been started, the mod
000038C0  65 20 77 69 6C 6C 20 62  65 20 73 65 74 20 75 70  20 77 69 74 68 20 74 68  65 20 61 63 74 69 76 65  e will be set up with the active
000038E0  20 61 6E 64 20 76 69 73  69 62 6C 65 20 62 75 66  66 65 72 73 20 62 6F 74  68 20 73 65 74 20 74 6F   and visible buffers both set to
00003900  20 74 68 65 20 66 69 72  73 74 20 62 75 66 66 65  72 20 69 6E 20 66 72 61  6D 65 62 75 66 66 65 72   the first buffer in framebuffer
00003920  20 6D 65 6D 6F 72 79 20  61 6E 64 20 74 68 65 20  73 79 73 74 65 6D 20 69  73 20 65 73 73 65 6E 74   memory and the system is essent
00003940  69 61 6C 6C 79 20 69 6E  20 6E 6F 72 6D 61 6C 20  73 69 6E 67 6C 65 20 62  75 66 66 65 72 65 64 20  ially in normal single buffered 
00003960  6D 6F 64 65 2E 20 54 6F  20 70 65 72 66 6F 72 6D  20 64 6F 75 62 6C 65 20  62 75 66 66 65 72 69 6E  mode. To perform double bufferin
00003980  67 20 79 6F 75 20 73 69  6D 70 6C 79 20 6D 61 6B  65 20 63 61 6C 6C 73 20  74 6F 20 74 68 65 20 53  g you simply make calls to the S
000039A0  56 5F 73 65 74 41 63 74  69 76 65 42 75 66 66 65  72 20 61 6E 64 20 53 56  5F 73 65 74 56 69 73 69  V_setActiveBuffer and SV_setVisi
000039C0  62 6C 65 42 75 66 66 65  72 20 66 75 6E 63 74 69  6F 6E 73 20 74 6F 20 63  68 61 6E 67 65 20 74 68  bleBuffer functions to change th
000039E0  65 20 61 63 74 69 76 65  20 61 6E 64 20 76 69 73  69 62 6C 65 20 62 75 66  66 65 72 73 2E 20 54 68  e active and visible buffers. Th
00003A00  65 20 61 63 74 69 76 65  20 62 75 66 66 65 72 20  69 73 20 74 68 65 20 62  75 66 66 65 72 20 77 68  e active buffer is the buffer wh
00003A20  65 72 65 20 61 6C 6C 20  6F 75 74 70 75 74 20 77  69 6C 6C 20 63 75 72 72  65 6E 74 6C 79 20 62 65  ere all output will currently be
00003A40  20 64 72 61 77 6E 2C 20  61 6E 64 20 74 68 65 20  76 69 73 69 62 6C 65 20  62 75 66 66 65 72 20 69   drawn, and the visible buffer i
00003A60  73 20 74 68 65 20 6F 6E  65 20 74 68 61 74 20 74  68 65 20 67 72 61 70 68  69 63 73 20 63 61 72 64  s the one that the graphics card
00003A80  20 69 73 20 63 75 72 72  65 6E 74 6C 79 20 64 69  73 70 6C 61 79 69 6E 67  2E 20 46 6F 72 20 64 6F   is currently displaying. For do
00003AA0  75 62 6C 65 20 62 75 66  66 65 72 65 64 20 61 6E  69 6D 61 74 69 6F 6E 20  79 6F 75 20 73 65 74 20  uble buffered animation you set 
00003AC0  74 68 65 20 61 63 74 69  76 65 20 62 75 66 66 65  72 20 74 6F 20 61 20 68  69 64 64 65 6E 20 62 75  the active buffer to a hidden bu
00003AE0  66 66 65 72 20 73 6F 20  74 68 61 74 20 79 6F 75  20 63 61 6E 20 64 72 61  77 20 74 6F 20 69 74 20  ffer so that you can draw to it 
00003B00  77 69 74 68 6F 75 74 20  74 68 65 20 75 73 65 72  20 73 65 65 69 6E 67 20  74 68 65 20 64 72 61 77  without the user seeing the draw
00003B20  20 6F 63 63 75 72 20 6F  6E 20 74 68 65 20 64 69  73 70 6C 61 79 2C 20 61  6E 64 20 74 68 65 6E 20   occur on the display, and then 
00003B40  73 77 69 74 63 68 20 74  68 65 20 76 69 73 69 62  6C 65 20 62 75 66 66 65  72 20 74 6F 20 74 68 65  switch the visible buffer to the
00003B60  20 68 69 64 64 65 6E 20  62 75 66 66 65 72 20 74  6F 20 69 6E 73 74 61 6E  74 6C 79 20 64 69 73 70   hidden buffer to instantly disp
00003B80  6C 61 79 20 74 68 65 20  6E 65 77 20 66 72 61 6D  65 2E 0D 49 66 20 79 6F  75 20 61 72 65 20 64 6F  lay the new frame.If you are do
00003BA0  69 6E 67 20 64 6F 75 62  6C 65 20 62 75 66 66 65  72 69 6E 67 20 61 6E 64  20 79 6F 75 20 77 69 73  ing double buffering and you wis
00003BC0  68 20 74 6F 20 72 65 6E  64 65 72 20 64 69 72 65  63 74 6C 79 20 74 6F 20  74 68 65 20 66 72 61 6D  h to render directly to the fram
00003BE0  65 62 75 66 66 65 72 2C  20 79 6F 75 20 77 69 6C  6C 20 6E 65 65 64 20 74  6F 20 75 73 65 20 74 68  ebuffer, you will need to use th
00003C00  65 20 6F 72 69 67 69 6E  4F 66 66 73 65 74 20 61  6E 64 20 62 61 6E 6B 4F  66 66 73 65 74 20 76 61  e originOffset and bankOffset va
00003C20  72 69 61 62 6C 65 20 69  6E 20 74 68 65 20 67 6C  6F 62 61 6C 20 64 65 76  69 63 65 20 63 6F 6E 74  riable in the global device cont
00003C40  65 78 74 20 62 6C 6F 63  6B 20 74 6F 20 64 65 74  65 72 6D 69 6E 65 20 77  68 65 72 65 20 74 68 65  ext block to determine where the
00003C60  20 63 75 72 72 65 6E 74  6C 79 20 61 63 74 69 76  65 20 62 75 66 66 65 72  20 73 74 61 72 74 73 2E   currently active buffer starts.
00003C80  20 49 6E 20 62 61 6E 6B  65 64 20 6D 6F 64 65 73  20 74 68 65 73 65 20 64  65 66 69 6E 65 20 74 68   In banked modes these define th
00003CA0  65 20 73 74 61 72 74 69  6E 67 20 36 34 4B 62 20  62 61 6E 6B 20 61 6E 64  20 6F 66 66 73 65 74 20  e starting 64Kb bank and offset 
00003CC0  77 69 74 68 20 74 68 61  74 20 36 34 4B 62 20 62  61 6E 6B 20 66 6F 72 20  74 68 65 20 63 75 72 72  with that 64Kb bank for the curr
00003CE0  65 6E 74 6C 79 20 61 63  74 69 76 65 20 62 75 66  66 65 72 2C 20 77 68 69  6C 65 20 69 6E 20 6C 69  ently active buffer, while in li
00003D00  6E 65 61 72 20 66 72 61  6D 65 62 75 66 66 65 72  20 6D 6F 64 65 73 20 74  68 65 20 6F 72 69 67 69  near framebuffer modes the origi
00003D20  6E 4F 66 66 73 65 74 20  76 61 72 69 61 62 6C 65  20 70 6F 69 6E 74 73 20  64 69 72 65 63 74 6C 79  nOffset variable points directly
00003D40  20 74 6F 20 74 68 65 20  73 74 61 72 74 20 6F 66  20 74 68 65 20 61 63 74  69 76 65 20 62 75 66 66   to the start of the active buff
00003D60  65 72 20 69 6E 20 74 68  65 20 33 32 20 62 69 74  20 6C 69 6E 65 61 72 20  61 64 64 72 65 73 73 20  er in the 32 bit linear address 
00003D80  73 70 61 63 65 2E 0D 44  72 61 77 69 6E 67 20 70  69 78 65 6C 73 2C 20 6C  69 6E 65 73 20 61 6E 64  space.Drawing pixels, lines and
00003DA0  20 74 65 78 74 0D 54 68  65 20 53 75 70 65 72 56  47 41 20 4B 69 74 20 70  72 6F 76 69 64 65 73 20   textThe SuperVGA Kit provides 
00003DC0  61 20 66 65 77 20 6C 69  6D 69 74 65 64 20 66 75  6E 63 74 69 6F 6E 73 20  66 6F 72 20 64 72 61 77  a few limited functions for draw
00003DE0  69 6E 67 20 67 72 61 70  68 69 63 73 20 6F 75 74  70 75 74 2C 20 73 75 63  68 20 61 73 20 70 69 78  ing graphics output, such as pix
00003E00  65 6C 73 2C 20 6C 69 6E  65 73 20 61 6E 64 20 74  65 78 74 2E 20 54 68 65  73 65 20 70 69 78 65 6C  els, lines and text. These pixel
00003E20  20 6F 75 74 70 75 74 20  61 6E 64 20 6C 69 6E 65  20 64 72 61 77 69 6E 67  20 66 75 6E 63 74 69 6F   output and line drawing functio
00003E40  6E 73 20 61 72 65 20 77  72 69 74 74 65 6E 20 69  6E 20 68 69 67 68 6C 79  20 6F 70 74 69 6D 69 7A  ns are written in highly optimiz
00003E60  65 64 20 61 73 73 65 6D  62 6C 65 72 20 63 6F 64  65 20 73 6F 20 74 68 65  79 20 61 72 65 20 76 65  ed assembler code so they are ve
00003E80  72 79 20 66 61 73 74 2E  20 48 6F 77 65 76 65 72  20 74 68 65 20 70 72 69  6D 61 72 79 20 70 75 72  ry fast. However the primary pur
00003EA0  70 6F 73 65 20 6F 66 20  74 68 65 20 53 75 70 65  72 56 47 41 20 4B 69 74  20 69 73 20 6E 6F 74 20  pose of the SuperVGA Kit is not 
00003EC0  74 6F 20 70 72 6F 76 69  64 65 20 61 20 72 69 63  68 20 73 65 74 20 6F 66  20 67 72 61 70 68 69 63  to provide a rich set of graphic
00003EE0  73 20 70 72 69 6D 69 74  69 76 65 73 2C 20 73 6F  20 6F 6E 6C 79 20 73 6F  6C 69 64 2C 20 73 69 6E  s primitives, so only solid, sin
00003F00  67 6C 65 20 70 69 78 65  6C 20 6C 69 6E 65 73 20  61 72 65 20 73 75 70 70  6F 72 74 65 64 2E 20 54  gle pixel lines are supported. T
00003F20  68 65 20 74 65 78 74 20  6F 75 74 70 75 74 20 66  75 6E 63 74 69 6F 6E 20  69 73 20 77 72 69 74 74  he text output function is writt
00003F40  65 6E 20 69 6E 20 43 20  61 6E 64 20 63 61 6C 6C  73 20 75 70 6F 6E 20 74  68 65 20 70 69 78 65 6C  en in C and calls upon the pixel
00003F60  20 6F 75 74 70 75 74 20  66 75 6E 63 74 69 6F 6E  73 20 74 6F 20 64 72 61  77 20 74 68 65 20 74 65   output functions to draw the te
00003F80  78 74 2C 20 73 6F 20 69  74 20 69 73 20 6E 6F 74  20 70 61 72 74 69 63 75  6C 61 72 6C 79 20 66 61  xt, so it is not particularly fa
00003FA0  73 74 2E 0D 4E 6F 74 65  20 74 68 61 74 20 74 68  65 20 53 75 70 65 72 56  47 41 20 4B 69 74 20 70  st.Note that the SuperVGA Kit p
00003FC0  72 6F 76 69 64 65 73 20  74 77 6F 20 6D 65 74 68  6F 64 73 20 6F 66 20 64  72 61 77 69 6E 67 20 70  rovides two methods of drawing p
00003FE0  69 78 65 6C 73 20 61 6E  64 20 6C 69 6E 65 73 2E  20 54 68 65 20 66 69 72  73 74 20 6D 65 74 68 6F  ixels and lines. The first metho
00004000  64 20 69 73 20 76 69 61  20 74 68 65 20 73 74 61  6E 64 61 72 64 20 66 75  6E 63 74 69 6F 6E 73 20  d is via the standard functions 
00004020  61 6E 64 20 63 61 6E 20  62 65 20 75 73 65 64 20  74 6F 20 64 72 61 77 20  70 69 78 65 6C 73 20 61  and can be used to draw pixels a
00004040  6E 64 20 6C 69 6E 65 73  20 61 74 20 61 6E 79 20  74 69 6D 65 20 77 69 74  68 69 6E 20 79 6F 75 72  nd lines at any time within your
00004060  20 63 6F 64 65 2E 20 54  68 65 20 73 65 63 6F 6E  64 20 73 65 74 20 6F 66  20 66 75 6E 63 74 69 6F   code. The second set of functio
00004080  6E 73 20 61 72 65 20 70  72 6F 76 69 64 65 64 20  66 6F 72 20 64 72 61 77  69 6E 67 20 66 61 73 74  ns are provided for drawing fast
000040A0  20 62 61 74 63 68 65 64  20 70 69 78 65 6C 73 20  61 6E 64 20 6C 69 6E 65  73 2C 20 61 6E 64 20 70   batched pixels and lines, and p
000040C0  72 6F 76 69 64 65 20 72  6F 75 74 69 6E 65 73 20  74 68 61 74 20 77 69 6C  6C 20 64 72 61 77 20 70  rovide routines that will draw p
000040E0  69 78 65 6C 73 20 61 6E  64 20 6C 69 6E 65 73 20  61 73 20 66 61 73 74 20  61 73 20 70 6F 73 73 69  ixels and lines as fast as possi
00004100  62 6C 65 20 77 68 65 6E  20 79 6F 75 20 6E 65 65  64 20 74 6F 20 64 72 61  77 20 6D 75 6C 74 69 70  ble when you need to draw multip
00004120  6C 65 20 6C 6F 74 73 20  6F 66 20 65 61 63 68 20  64 69 66 66 65 72 65 6E  74 20 70 72 69 6D 69 74  le lots of each different primit
00004140  69 76 65 2E 20 54 6F 20  75 73 65 20 74 68 65 20  62 61 74 63 68 65 64 20  64 72 61 77 69 6E 67 20  ive. To use the batched drawing 
00004160  66 75 6E 63 74 69 6F 6E  73 2C 20 79 6F 75 20 6D  75 73 74 20 63 61 6C 6C  20 74 68 65 20 53 56 5F  functions, you must call the SV_
00004180  62 65 67 69 6E 50 69 78  65 6C 20 6F 72 20 53 56  5F 62 65 67 69 6E 4C 69  6E 65 20 66 75 6E 63 74  beginPixel or SV_beginLine funct
000041A0  69 6F 6E 73 20 66 69 72  73 74 2C 20 61 6E 64 20  74 68 65 6E 20 63 61 6C  6C 20 74 68 65 20 66 61  ions first, and then call the fa
000041C0  73 74 20 76 61 72 69 61  6E 74 73 20 6F 66 20 74  68 65 20 6E 6F 72 6D 61  6C 20 64 72 61 77 69 6E  st variants of the normal drawin
000041E0  67 20 66 75 6E 63 74 69  6F 6E 73 2E 20 57 68 65  6E 20 79 6F 75 20 61 72  65 20 66 69 6E 69 73 68  g functions. When you are finish
00004200  65 64 20 72 65 6E 64 65  72 69 6E 67 20 79 6F 75  20 6D 75 73 74 20 63 61  6C 6C 20 53 56 5F 65 6E  ed rendering you must call SV_en
00004220  64 50 69 78 65 6C 20 6F  72 20 53 56 5F 65 6E 64  4C 69 6E 65 20 74 6F 20  72 65 74 75 72 6E 20 74  dPixel or SV_endLine to return t
00004240  6F 20 74 68 65 20 6E 6F  72 6D 61 6C 20 6D 6F 64  65 20 6F 66 20 6F 70 65  72 61 74 69 6F 6E 2E 0D  o the normal mode of operation.
00004260  54 68 65 20 62 61 74 63  68 65 64 20 66 75 6E 63  74 69 6F 6E 73 20 61 72  65 20 69 6D 70 6F 72 74  The batched functions are import
00004280  61 6E 74 20 66 6F 72 20  6F 62 74 61 69 6E 69 6E  67 20 74 68 65 20 6D 61  78 69 6D 75 6D 20 70 65  ant for obtaining the maximum pe
000042A0  72 66 6F 72 6D 61 6E 63  65 20 77 68 65 6E 20 64  72 61 77 69 6E 67 20 6C  69 6E 65 73 20 61 6E 64  rformance when drawing lines and
000042C0  20 70 69 78 65 6C 73 20  6F 6E 20 56 42 45 2F 41  46 20 64 65 76 69 63 65  73 2C 20 65 73 70 65 63   pixels on VBE/AF devices, espec
000042E0  69 61 6C 6C 79 20 77 68  65 6E 20 74 68 65 20 6C  69 6E 65 20 64 72 61 77  69 6E 67 20 69 73 20 62  ially when the line drawing is b
00004300  65 69 6E 67 20 70 65 72  66 6F 72 6D 65 64 20 69  6E 20 73 6F 66 74 77 61  72 65 20 28 66 6F 72 20  eing performed in software (for 
00004320  56 42 45 2F 41 46 20 64  65 76 69 63 65 73 20 79  6F 75 20 6E 65 65 64 20  74 6F 20 61 72 62 69 74  VBE/AF devices you need to arbit
00004340  72 61 74 65 20 64 69 72  65 63 74 20 61 63 63 65  73 73 20 74 6F 20 74 68  65 20 66 72 61 6D 65 62  rate direct access to the frameb
00004360  75 66 66 65 72 20 77 69  74 68 20 74 68 65 20 47  55 49 20 65 6E 67 69 6E  65 29 2E 0D 44 69 72 65  uffer with the GUI engine).Dire
00004380  63 74 20 66 72 61 6D 65  62 75 66 66 65 72 20 61  63 63 65 73 73 0D 4F 6E  65 20 6F 66 20 74 68 65  ct framebuffer accessOne of the
000043A0  20 70 6F 77 65 72 66 75  6C 20 66 65 61 74 75 72  65 73 20 6F 66 20 74 68  65 20 53 75 70 65 72 56   powerful features of the SuperV
000043C0  47 41 20 4B 69 74 20 69  73 20 74 68 61 74 20 69  74 20 70 72 6F 76 69 64  65 73 20 79 6F 75 72 20  GA Kit is that it provides your 
000043E0  61 70 70 6C 69 63 61 74  69 6F 6E 73 20 77 69 74  68 20 64 69 72 65 63 74  20 61 63 63 65 73 73 20  applications with direct access 
00004400  74 6F 20 74 68 65 20 68  61 72 64 77 61 72 65 20  76 69 64 65 6F 20 6D 65  6D 6F 72 79 20 66 72 61  to the hardware video memory fra
00004420  6D 65 62 75 66 66 65 72  20 72 65 67 69 6F 6E 73  2E 20 41 63 63 65 73 73  20 69 73 20 70 72 6F 76  mebuffer regions. Access is prov
00004440  69 64 65 64 20 65 69 74  68 65 72 20 76 69 61 20  61 20 62 61 6E 6B 65 64  20 66 72 61 6D 65 62 75  ided either via a banked framebu
00004460  66 66 65 72 20 61 72 63  68 69 74 65 63 74 75 72  65 20 6F 72 20 76 69 61  20 61 20 68 69 67 68 20  ffer architecture or via a high 
00004480  70 65 72 66 6F 72 6D 61  6E 63 65 20 6C 69 6E 65  61 72 20 66 72 61 6D 65  62 75 66 66 65 72 20 61  performance linear framebuffer a
000044A0  72 63 68 69 74 65 63 74  75 72 65 20 6F 6E 20 67  72 61 70 68 69 63 73 20  68 61 72 64 77 61 72 65  rchitecture on graphics hardware
000044C0  20 74 68 61 74 20 73 75  70 70 6F 72 74 73 20 69  74 2E 20 54 68 69 73 20  6D 65 61 6E 73 20 74 68   that supports it. This means th
000044E0  61 74 20 79 6F 75 20 63  61 6E 20 75 73 65 20 74  68 65 20 53 75 70 65 72  56 47 41 20 4B 69 74 20  at you can use the SuperVGA Kit 
00004500  74 6F 20 70 65 72 66 6F  72 6D 20 61 6C 6C 20 74  68 65 20 6C 6F 77 20 6C  65 76 65 6C 20 68 6F 75  to perform all the low level hou
00004520  73 65 6B 65 65 70 69 6E  67 20 61 6E 64 20 6D 6F  64 65 20 69 6E 69 74 69  61 6C 69 7A 61 74 69 6F  sekeeping and mode initializatio
00004540  6E 20 66 75 6E 63 74 69  6F 6E 73 20 72 65 71 75  69 72 65 64 20 74 6F 20  67 65 74 20 75 70 20 61  n functions required to get up a
00004560  6E 64 20 72 75 6E 6E 69  6E 67 20 69 6E 20 53 75  70 65 72 56 47 41 20 6D  6F 64 65 73 2C 20 61 6E  nd running in SuperVGA modes, an
00004580  64 20 74 68 65 6E 20 75  73 65 20 79 6F 75 72 20  6F 77 6E 20 68 69 67 68  20 70 65 72 66 6F 72 6D  d then use your own high perform
000045A0  61 6E 63 65 20 72 65 6E  64 65 72 69 6E 67 20 63  6F 64 65 20 74 6F 20 72  65 6E 64 65 72 20 64 69  ance rendering code to render di
000045C0  72 65 63 74 6C 79 20 74  6F 20 74 68 65 20 68 61  72 64 77 61 72 65 20 66  72 61 6D 65 62 75 66 66  rectly to the hardware framebuff
000045E0  65 72 73 2E 0D 41 20 62  61 6E 6B 65 64 20 66 72  61 6D 65 62 75 66 66 65  72 20 69 73 20 70 72 6F  ers.A banked framebuffer is pro
00004600  76 69 64 65 64 20 62 79  20 56 42 45 20 31 2E 32  20 61 6E 64 20 65 61 72  6C 69 65 72 20 63 6F 6D  vided by VBE 1.2 and earlier com
00004620  70 6C 69 61 6E 74 20 64  65 76 69 63 65 73 20 61  6E 64 20 61 6C 73 6F 20  62 79 20 56 42 45 20 32  pliant devices and also by VBE 2
00004640  2E 30 20 61 6E 64 20 56  42 45 2F 41 46 20 64 65  76 69 63 65 73 20 74 68  61 74 20 64 6F 6E 92 74  .0 and VBE/AF devices that donÆt
00004660  20 73 75 70 70 6F 72 74  20 61 20 68 61 72 64 77  61 72 65 20 6C 69 6E 65  61 72 20 66 72 61 6D 65   support a hardware linear frame
00004680  62 75 66 66 65 72 2E 20  49 6E 20 6F 72 64 65 72  20 74 6F 20 61 63 63 65  73 73 20 74 68 65 20 68  buffer. In order to access the h
000046A0  75 67 65 20 61 6D 6F 75  6E 74 20 6F 66 20 76 69  64 65 6F 20 6D 65 6D 6F  72 79 20 6F 6E 20 74 68  uge amount of video memory on th
000046C0  65 20 67 72 61 70 68 69  63 73 20 63 61 72 64 20  64 69 72 65 63 74 6C 79  2C 20 77 65 20 6E 65 65  e graphics card directly, we nee
000046E0  64 20 74 6F 20 6D 61 70  20 65 61 63 68 20 73 65  63 74 69 6F 6E 20 6F 66  20 76 69 64 65 6F 20 6D  d to map each section of video m
00004700  65 6D 6F 72 79 20 69 6E  74 6F 20 61 20 36 34 4B  62 20 62 61 6E 6B 20 6C  6F 63 61 74 65 64 20 69  emory into a 64Kb bank located i
00004720  6E 20 74 68 65 20 66 69  72 73 74 20 31 4D 62 20  6F 66 20 6D 65 6D 6F 72  79 2E 20 49 6E 20 6F 72  n the first 1Mb of memory. In or
00004740  64 65 72 20 74 6F 20 63  68 61 6E 67 65 20 74 68  65 20 61 63 74 69 76 65  20 62 61 6E 6B 2C 20 79  der to change the active bank, y
00004760  6F 75 20 6E 65 65 64 20  74 6F 20 63 61 6C 6C 20  70 72 6F 76 69 64 65 64  20 53 56 5F 73 65 74 42  ou need to call provided SV_setB
00004780  61 6E 6B 20 66 75 6E 63  74 69 6F 6E 20 77 69 74  68 20 74 68 65 20 69 6E  64 65 78 20 6F 66 20 74  ank function with the index of t
000047A0  68 65 20 62 61 6E 6B 20  74 68 61 74 20 79 6F 75  20 77 69 73 68 20 74 6F  20 6D 61 6B 65 20 61 63  he bank that you wish to make ac
000047C0  74 69 76 65 2E 20 49 66  20 79 6F 75 20 61 72 65  20 77 72 69 74 69 6E 67  20 68 69 67 68 20 70 65  tive. If you are writing high pe
000047E0  72 66 6F 72 6D 61 6E 63  65 20 61 73 73 65 6D 62  6C 65 72 20 63 6F 64 65  2C 20 79 6F 75 20 73 68  rformance assembler code, you sh
00004800  6F 75 6C 64 20 63 61 6C  6C 20 74 68 65 20 61 73  73 65 6D 62 6C 65 72 20  53 56 5F 73 65 74 42 61  ould call the assembler SV_setBa
00004820  6E 6B 41 53 4D 20 76 65  72 73 69 6F 6E 20 6F 66  20 74 68 65 20 62 61 6E  6B 20 73 77 69 74 63 68  nkASM version of the bank switch
00004840  69 6E 67 20 66 75 6E 63  74 69 6F 6E 20 77 68 69  63 68 20 74 61 6B 65 73  20 69 74 92 73 20 70 61  ing function which takes itÆs pa
00004860  72 61 6D 65 74 65 72 73  20 69 6E 20 43 50 55 20  72 65 67 69 73 74 65 72  73 20 72 61 74 68 65 72  rameters in CPU registers rather
00004880  20 74 68 61 6E 20 6F 6E  20 74 68 65 20 73 74 61  63 6B 2E 20 4F 6E 63 65  20 79 6F 75 20 68 61 76   than on the stack. Once you hav
000048A0  65 20 63 68 61 6E 67 65  64 20 74 68 65 20 61 63  74 69 76 65 20 62 61 6E  6B 20 74 6F 20 74 68 65  e changed the active bank to the
000048C0  20 6C 6F 63 61 74 69 6F  6E 20 77 68 65 72 65 20  79 6F 75 20 77 69 73 68  20 74 6F 20 70 65 72 66   location where you wish to perf
000048E0  6F 72 6D 20 79 6F 75 72  20 64 72 61 77 69 6E 67  2C 20 79 6F 75 20 63 61  6E 20 74 68 65 6E 20 64  orm your drawing, you can then d
00004900  72 61 77 20 64 69 72 65  63 74 6C 79 20 69 6E 74  6F 20 74 68 65 20 66 72  61 6D 65 62 75 66 66 65  raw directly into the framebuffe
00004920  72 20 76 69 61 20 76 69  64 65 6F 4D 65 6D 20 70  6F 69 6E 74 65 72 20 70  72 6F 76 69 64 65 64 20  r via videoMem pointer provided 
00004940  69 6E 20 74 68 65 20 53  75 70 65 72 56 47 41 20  4B 69 74 20 64 65 76 69  63 65 20 63 6F 6E 74 65  in the SuperVGA Kit device conte
00004960  78 74 20 62 6C 6F 63 6B  2E 20 4E 6F 74 65 20 74  68 61 74 20 69 66 20 79  6F 75 20 61 72 65 20 70  xt block. Note that if you are p
00004980  65 72 66 6F 72 6D 69 6E  67 20 64 6F 75 62 6C 65  20 62 75 66 66 65 72 69  6E 67 2C 20 74 68 65 20  erforming double buffering, the 
000049A0  6F 72 69 67 69 6E 4F 66  66 73 65 74 20 61 6E 64  20 62 61 6E 6B 4F 66 66  73 65 74 20 76 61 72 69  originOffset and bankOffset vari
000049C0  61 62 6C 65 73 20 69 6E  20 74 68 65 20 64 65 76  69 63 65 20 63 6F 6E 74  65 78 74 20 62 6C 6F 63  ables in the device context bloc
000049E0  6B 20 61 72 65 20 75 73  65 64 20 74 6F 20 69 6E  64 69 63 61 74 65 20 77  68 65 72 65 20 69 6E 20  k are used to indicate where in 
00004A00  76 69 64 65 6F 20 6D 65  6D 6F 72 79 20 74 68 65  20 63 75 72 72 65 6E 74  6C 79 20 61 63 74 69 76  video memory the currently activ
00004A20  65 20 62 75 66 66 65 72  20 62 65 67 69 6E 73 2C  20 61 6E 64 20 79 6F 75  20 77 69 6C 6C 20 6E 65  e buffer begins, and you will ne
00004A40  65 64 20 74 6F 20 6F 66  66 73 65 74 20 61 6C 6C  20 79 6F 75 72 20 64 72  61 77 69 6E 67 20 63 6F  ed to offset all your drawing co
00004A60  64 65 20 69 6E 74 6F 20  74 68 65 20 66 72 61 6D  65 62 75 66 66 65 72 20  75 73 69 6E 67 20 74 68  de into the framebuffer using th
00004A80  65 73 65 20 76 61 72 69  61 62 6C 65 73 20 28 63  68 65 63 6B 20 74 68 65  20 5F 53 56 47 41 53 44  ese variables (check the _SVGASD
00004AA0  4B 2E 41 53 4D 20 6D 6F  64 75 6C 65 20 66 6F 72  20 64 65 74 61 69 6C 73  20 6F 6E 20 68 6F 77 20  K.ASM module for details on how 
00004AC0  74 68 69 73 20 69 73 20  64 6F 6E 65 20 69 6E 20  61 73 73 65 6D 62 6C 65  72 20 63 6F 64 65 29 2E  this is done in assembler code).
00004AE0  0D 49 66 20 74 68 65 20  61 70 70 6C 69 63 61 74  69 6F 6E 20 69 73 20 72  75 6E 6E 69 6E 67 20 69  If the application is running i
00004B00  6E 20 61 20 33 32 20 62  69 74 20 70 72 6F 74 65  63 74 65 64 20 6D 6F 64  65 20 65 6E 76 69 72 6F  n a 32 bit protected mode enviro
00004B20  6E 6D 65 6E 74 2C 20 77  65 20 63 61 6E 20 73 69  6D 70 6C 69 66 79 20 61  63 63 65 73 73 20 74 6F  nment, we can simplify access to
00004B40  20 74 68 65 20 76 69 64  65 6F 20 6D 65 6D 6F 72  79 20 6F 6E 20 74 68 65  20 67 72 61 70 68 69 63   the video memory on the graphic
00004B60  73 20 63 61 72 64 20 62  79 20 75 73 69 6E 67 20  65 69 74 68 65 72 20 61  20 68 61 72 64 77 61 72  s card by using either a hardwar
00004B80  65 20 6F 72 20 76 69 72  74 75 61 6C 20 6C 69 6E  65 61 72 20 66 72 61 6D  65 62 75 66 66 65 72 2E  e or virtual linear framebuffer.
00004BA0  20 41 20 68 61 72 64 77  61 72 65 20 6C 69 6E 65  61 72 20 66 72 61 6D 65  62 75 66 66 65 72 20 61   A hardware linear framebuffer a
00004BC0  6C 6C 6F 77 73 20 74 68  65 20 61 70 70 6C 69 63  61 74 69 6F 6E 20 74 6F  20 64 69 72 65 63 74 6C  llows the application to directl
00004BE0  79 20 61 63 63 65 73 73  20 61 6C 6C 20 6F 66 20  74 68 65 20 6D 65 6D 6F  72 79 20 6F 6E 20 74 68  y access all of the memory on th
00004C00  65 20 67 72 61 70 68 69  63 73 20 63 61 72 64 20  69 6E 20 6F 6E 65 20 63  6F 6E 74 69 67 75 6F 75  e graphics card in one contiguou
00004C20  73 20 63 68 75 6E 6B 2C  20 72 61 74 68 65 72 20  74 68 61 6E 20 68 61 76  69 6E 67 20 74 6F 20 64  s chunk, rather than having to d
00004C40  65 61 6C 20 77 69 74 68  20 6D 6F 76 69 6E 67 20  61 20 73 6C 69 64 69 6E  67 20 36 34 4B 62 20 77  eal with moving a sliding 64Kb w
00004C60  69 6E 64 6F 77 20 69 6E  74 6F 20 74 68 65 20 66  72 61 6D 65 62 75 66 66  65 72 2E 20 41 20 76 69  indow into the framebuffer. A vi
00004C80  72 74 75 61 6C 20 6C 69  6E 65 61 72 20 66 72 61  6D 65 62 75 66 66 65 72  20 69 73 20 65 6E 61 62  rtual linear framebuffer is enab
00004CA0  6C 65 64 20 62 79 20 75  73 69 6E 67 20 74 68 65  20 33 38 36 2B 20 43 50  55 92 73 20 76 69 72 74  led by using the 386+ CPUÆs virt
00004CC0  75 61 6C 20 6D 65 6D 6F  72 79 20 66 65 61 74 75  72 65 73 20 74 6F 20 63  72 65 61 74 65 20 77 68  ual memory features to create wh
00004CE0  61 74 20 61 70 70 65 61  72 73 20 74 6F 20 62 65  20 61 20 6C 69 6E 65 61  72 20 66 72 61 6D 65 62  at appears to be a linear frameb
00004D00  75 66 66 65 72 2C 20 62  75 74 20 69 73 20 61 63  74 75 61 6C 6C 79 20 61  20 72 65 67 69 6F 6E 20  uffer, but is actually a region 
00004D20  6F 66 20 76 69 72 74 75  61 6C 20 6D 65 6D 6F 72  79 20 74 68 61 74 20 61  75 74 6F 6D 61 74 69 63  of virtual memory that automatic
00004D40  61 6C 6C 79 20 6D 61 70  73 20 74 68 65 20 63 6F  6E 74 72 6F 6C 6C 65 72  73 20 36 34 4B 62 20 62  ally maps the controllers 64Kb b
00004D60  61 6E 6B 65 64 20 61 70  65 72 74 75 72 65 20 77  68 65 6E 20 74 68 65 20  61 70 70 6C 69 63 61 74  anked aperture when the applicat
00004D80  69 6F 6E 20 64 69 72 65  63 74 6C 79 20 61 63 63  65 73 73 65 73 20 70 6F  72 74 69 6F 6E 73 20 6F  ion directly accesses portions o
00004DA0  66 20 74 68 65 20 76 69  72 74 75 61 6C 20 66 72  61 6D 65 62 75 66 66 65  72 2E 20 49 66 20 61 20  f the virtual framebuffer. If a 
00004DC0  6C 69 6E 65 61 72 20 66  72 61 6D 65 62 75 66 66  65 72 20 6D 6F 64 65 20  69 73 20 73 74 61 72 74  linear framebuffer mode is start
00004DE0  65 64 20 77 69 74 68 20  74 68 65 20 53 56 5F 73  65 74 4D 6F 64 65 20 66  75 6E 63 74 69 6F 6E 2C  ed with the SV_setMode function,
00004E00  20 74 68 65 20 76 69 64  65 6F 4D 65 6D 20 76 61  72 69 61 62 6C 65 20 6F  66 20 74 68 65 20 67 6C   the videoMem variable of the gl
00004E20  6F 62 61 6C 20 64 65 76  69 63 65 20 63 6F 6E 74  65 78 74 20 62 6C 6F 63  6B 20 77 69 6C 6C 20 70  obal device context block will p
00004E40  6F 69 6E 74 20 74 6F 20  74 68 65 20 73 74 61 72  74 20 6F 66 20 74 68 65  20 6C 69 6E 65 61 72 20  oint to the start of the linear 
00004E60  66 72 61 6D 65 62 75 66  66 65 72 20 72 65 67 69  6F 6E 2C 20 61 6E 64 20  79 6F 75 20 63 61 6E 20  framebuffer region, and you can 
00004E80  75 73 65 20 74 68 69 73  20 76 61 72 69 61 62 6C  65 20 74 6F 20 72 65 6E  64 65 72 20 64 69 72 65  use this variable to render dire
00004EA0  63 74 6C 79 20 69 6E 74  6F 20 69 74 2E 20 4E 6F  74 65 20 74 68 61 74 20  69 66 20 79 6F 75 20 61  ctly into it. Note that if you a
00004EC0  72 65 20 64 6F 69 6E 67  20 64 6F 75 62 6C 65 20  62 75 66 66 65 72 69 6E  67 20 74 68 65 20 6F 72  re doing double buffering the or
00004EE0  69 67 69 6E 4F 66 66 73  65 74 20 76 61 72 69 61  62 6C 65 20 69 73 20 73  65 74 20 74 6F 20 70 6F  iginOffset variable is set to po
00004F00  69 6E 74 20 64 69 72 65  63 74 6C 79 20 74 6F 20  74 68 65 20 73 74 61 72  74 20 6F 66 20 74 68 65  int directly to the start of the
00004F20  20 63 75 72 72 65 6E 74  6C 79 20 61 63 74 69 76  65 20 62 75 66 66 65 72  20 69 6E 20 6C 69 6E 65   currently active buffer in line
00004F40  61 72 20 66 72 61 6D 65  62 75 66 66 65 72 20 6D  65 6D 6F 72 79 2C 20 61  6E 64 20 74 68 65 20 76  ar framebuffer memory, and the v
00004F60  69 64 65 6F 4D 65 6D 20  61 6E 64 20 62 61 6E 6B  4F 66 66 73 65 74 20 76  61 72 69 61 62 6C 65 73  ideoMem and bankOffset variables
00004F80  20 61 72 65 20 6E 6F 20  6C 6F 6E 67 65 72 20 75  73 65 64 2E 0D 56 69 72  74 75 61 6C 20 6C 69 6E   are no longer used.Virtual lin
00004FA0  65 61 72 20 66 72 61 6D  65 62 75 66 66 65 72 20  61 63 63 65 73 73 0D 49  74 20 69 73 20 70 6F 73  ear framebuffer accessIt is pos
00004FC0  73 69 62 6C 65 20 74 68  61 74 20 77 68 65 6E 20  74 68 65 20 67 72 61 70  68 69 63 73 20 6D 6F 64  sible that when the graphics mod
00004FE0  65 20 68 61 73 20 62 65  65 6E 20 69 6E 69 74 69  61 6C 69 7A 65 64 2C 20  69 74 20 68 61 73 20 62  e has been initialized, it has b
00005000  65 65 6E 20 69 6E 69 74  69 61 6C 69 7A 65 64 20  77 69 74 68 20 61 20 6C  69 6E 65 61 72 20 66 72  een initialized with a linear fr
00005020  61 6D 65 62 75 66 66 65  72 20 76 69 72 74 75 61  6C 69 7A 65 64 20 69 6E  20 73 6F 66 74 77 61 72  amebuffer virtualized in softwar
00005040  65 20 28 69 66 20 79 6F  75 20 70 61 73 73 65 64  20 74 68 65 20 75 73 65  56 69 72 74 75 61 6C 42  e (if you passed the useVirtualB
00005060  75 66 66 65 72 20 66 6C  61 67 20 74 6F 20 74 72  75 65 20 66 6F 72 20 74  68 65 20 6D 6F 64 65 20  uffer flag to true for the mode 
00005080  73 65 74 29 2E 20 49 66  20 79 6F 75 20 69 6E 74  65 6E 64 20 74 6F 20 64  69 72 65 63 74 6C 79 20  set). If you intend to directly 
000050A0  72 65 6E 64 65 72 20 74  6F 20 61 20 76 69 72 74  75 61 6C 20 6C 69 6E 65  61 72 20 66 72 61 6D 65  render to a virtual linear frame
000050C0  62 75 66 66 65 72 2C 20  74 68 65 72 65 20 61 72  65 20 61 20 66 65 77 20  63 61 76 65 61 74 73 20  buffer, there are a few caveats 
000050E0  74 68 61 74 20 6D 75 73  74 20 62 65 20 75 6E 64  65 72 73 74 6F 6F 64 2E  0D 46 69 72 73 74 2C 20  that must be understood.First, 
00005100  74 68 65 72 65 20 69 73  20 61 6E 20 6F 76 65 72  68 65 61 64 20 69 6E 76  6F 6C 76 65 64 20 69 6E  there is an overhead involved in
00005120  20 74 68 65 20 70 61 67  65 20 66 61 75 6C 74 69  6E 67 20 6D 65 63 68 61  6E 69 73 6D 20 74 68 61   the page faulting mechanism tha
00005140  74 20 69 73 20 75 73 65  64 20 74 6F 20 61 75 74  6F 6D 61 74 69 63 61 6C  6C 79 20 6D 61 70 20 74  t is used to automatically map t
00005160  68 65 20 67 72 61 70 68  69 63 73 20 6D 65 6D 6F  72 79 2C 20 73 6F 20 69  74 20 77 6F 6E 92 74 20  he graphics memory, so it wonÆt 
00005180  62 65 20 61 73 20 66 61  73 74 20 61 73 20 68 69  67 68 6C 79 20 6F 70 74  69 6D 69 7A 65 64 20 62  be as fast as highly optimized b
000051A0  61 6E 6B 20 73 77 69 74  63 68 65 64 20 63 6F 64  65 20 28 62 75 74 20 69  74 20 63 6F 6D 65 73 20  ank switched code (but it comes 
000051C0  76 65 72 79 20 63 6C 6F  73 65 29 2E 20 49 66 20  79 6F 75 20 61 72 65 20  73 69 6D 70 6C 79 20 63  very close). If you are simply c
000051E0  6F 70 79 69 6E 67 20 62  6C 6F 63 6B 73 20 6F 66  20 64 61 74 61 20 74 6F  20 74 68 65 20 66 72 61  opying blocks of data to the fra
00005200  6D 65 62 75 66 66 65 72  20 69 6E 20 61 20 6C 65  66 74 20 74 6F 20 72 69  67 68 74 20 61 6E 64 20  mebuffer in a left to right and 
00005220  74 6F 70 20 64 6F 77 6E  20 66 61 73 68 69 6F 6E  2C 20 74 68 65 20 63 6F  70 79 69 6E 67 20 77 69  top down fashion, the copying wi
00005240  6C 6C 20 6E 6F 74 20 63  61 75 73 65 20 76 65 72  79 20 6D 61 6E 79 20 70  61 67 65 20 66 61 75 6C  ll not cause very many page faul
00005260  74 73 20 61 6E 64 20 68  65 6E 63 65 20 74 68 65  20 6F 76 65 72 68 65 61  64 73 20 77 69 6C 6C 20  ts and hence the overheads will 
00005280  62 65 20 73 6D 61 6C 6C  20 69 66 20 6E 6F 74 20  6E 65 67 6C 69 67 69 62  6C 65 2E 20 49 66 20 68  be small if not negligible. If h
000052A0  6F 77 65 76 65 72 20 79  6F 75 20 61 72 65 20 64  72 61 77 69 6E 67 20 72  61 6E 64 6F 6D 20 6C 69  owever you are drawing random li
000052C0  6E 65 73 20 6F 6E 20 74  68 65 20 73 63 72 65 65  6E 2C 20 79 6F 75 20 77  69 6C 6C 20 66 69 6E 64  nes on the screen, you will find
000052E0  20 74 68 61 74 20 74 68  65 20 6F 76 65 72 68 65  61 64 20 69 6E 76 6F 6C  76 65 64 20 69 6E 20 74   that the overhead involved in t
00005300  68 65 20 70 61 67 65 20  66 61 75 6C 74 69 6E 67  20 61 6E 64 20 62 61 6E  6B 20 73 77 69 74 63 68  he page faulting and bank switch
00005320  69 6E 67 20 77 69 6C 6C  20 73 6C 6F 77 20 64 6F  77 6E 20 70 65 72 66 6F  72 6D 61 6E 63 65 20 28  ing will slow down performance (
00005340  62 75 74 20 69 74 20 69  73 20 6E 6F 74 20 74 68  61 74 20 6D 75 63 68 20  73 6C 6F 77 65 72 20 74  but it is not that much slower t
00005360  68 61 6E 20 68 69 67 68  20 73 70 65 65 64 20 62  61 6E 6B 20 73 77 69 74  63 68 65 64 20 61 73 73  han high speed bank switched ass
00005380  65 6D 62 6C 65 72 20 63  6F 64 65 3B 20 70 65 72  68 61 70 73 20 35 2D 31  30 25 29 2E 0D 53 65 63  embler code; perhaps 5-10%).Sec
000053A0  6F 6E 64 2C 20 79 6F 75  20 73 69 6D 70 6C 79 20  63 61 6E 6E 6F 74 20 70  65 72 66 6F 72 6D 20 61  ond, you simply cannot perform a
000053C0  20 57 4F 52 44 20 6F 72  20 44 57 4F 52 44 20 6D  65 6D 6F 72 79 20 61 63  63 65 73 73 20 74 68 61   WORD or DWORD memory access tha
000053E0  74 20 63 72 6F 73 73 65  73 20 61 20 36 34 4B 62  20 62 61 6E 6B 20 62 6F  75 6E 64 61 72 79 2E 20  t crosses a 64Kb bank boundary. 
00005400  44 6F 69 6E 67 20 73 6F  20 63 61 75 73 65 73 20  61 6E 20 69 6E 66 69 6E  69 74 65 20 70 61 67 65  Doing so causes an infinite page
00005420  20 66 61 75 6C 74 20 6C  6F 6F 70 20 74 68 61 74  20 77 69 6C 6C 20 68 61  6E 67 20 74 68 65 20 6D   fault loop that will hang the m
00005440  61 63 68 69 6E 65 2E 20  54 68 65 20 69 6E 66 69  6E 69 74 65 20 6C 6F 6F  70 20 6F 63 63 75 72 73  achine. The infinite loop occurs
00005460  20 62 65 63 61 75 73 65  20 74 68 65 20 43 50 55  20 70 61 67 65 20 66 61  75 6C 74 73 20 6F 6E 20   because the CPU page faults on 
00005480  74 68 65 20 73 65 63 6F  6E 64 20 68 61 6C 66 20  6F 66 20 74 68 65 20 6D  65 6D 6F 72 79 20 61 63  the second half of the memory ac
000054A0  63 65 73 73 2C 20 77 68  69 63 68 20 63 61 75 73  65 73 20 61 20 62 61 6E  6B 20 73 77 69 74 63 68  cess, which causes a bank switch
000054C0  20 74 6F 20 6F 63 63 75  72 2E 20 54 68 65 6E 20  74 68 65 20 65 6E 74 69  72 65 20 69 6E 73 74 72   to occur. Then the entire instr
000054E0  75 63 74 69 6F 6E 20 69  73 20 72 65 2D 73 74 61  72 74 65 64 20 61 6E 64  20 63 61 75 73 65 73 20  uction is re-started and causes 
00005500  61 20 6D 65 6D 6F 72 79  20 61 63 63 65 73 73 20  74 6F 20 74 68 65 20 70  72 65 76 69 6F 75 73 20  a memory access to the previous 
00005520  36 34 4B 62 20 62 61 6E  6B 20 77 68 69 63 68 20  68 61 73 20 6E 6F 77 20  62 65 65 6E 20 6D 61 70  64Kb bank which has now been map
00005540  70 65 64 20 6F 75 74 2E  20 41 6E 6F 74 68 65 72  20 70 61 67 65 20 66 61  75 6C 74 20 6F 63 63 75  ped out. Another page fault occu
00005560  72 73 20 61 6E 64 20 74  68 65 20 69 6E 73 74 72  75 63 74 69 6F 6E 20 69  73 20 72 65 2D 73 74 61  rs and the instruction is re-sta
00005580  72 74 65 64 20 61 67 61  69 6E 20 61 6E 64 20 77  65 20 61 72 65 20 62 61  63 6B 20 77 68 65 72 65  rted again and we are back where
000055A0  20 77 65 20 73 74 61 72  74 65 64 2E 20 0D 48 65  6E 63 65 20 69 74 20 69  73 20 76 69 74 61 6C 6C   we started. Hence it is vitall
000055C0  79 20 69 6D 70 6F 72 74  61 6E 74 20 74 68 61 74  20 61 6E 79 20 76 69 72  74 75 61 6C 20 6C 69 6E  y important that any virtual lin
000055E0  65 61 72 20 66 72 61 6D  65 62 75 66 66 65 72 20  72 65 6E 64 65 72 69 6E  67 20 63 6F 64 65 20 65  ear framebuffer rendering code e
00005600  6E 73 75 72 65 20 74 68  61 74 20 61 6C 6C 20 6D  65 6D 6F 72 79 20 61 63  63 65 73 73 65 73 20 61  nsure that all memory accesses a
00005620  72 65 20 61 6C 69 67 6E  65 64 20 74 6F 20 65 69  74 68 65 72 20 61 20 42  59 54 45 2C 20 57 4F 52  re aligned to either a BYTE, WOR
00005640  44 20 6F 72 20 44 57 4F  52 44 20 62 6F 75 6E 64  61 72 79 20 74 6F 20 61  76 6F 69 64 20 74 68 65  D or DWORD boundary to avoid the
00005660  20 69 6E 66 69 6E 69 74  65 20 70 61 67 65 20 66  61 75 6C 74 20 6C 6F 6F  70 2E 0D 55 73 69 6E 67   infinite page fault loop.Using
00005680  20 74 68 65 20 56 42 45  2F 41 46 20 41 63 63 65  6C 65 72 61 74 6F 72 20  46 75 6E 63 74 69 6F 6E   the VBE/AF Accelerator Function
000056A0  73 0D 54 68 65 20 53 75  70 65 72 56 47 41 20 4B  69 74 20 70 72 6F 76 69  64 65 73 20 74 72 61 6E  sThe SuperVGA Kit provides tran
000056C0  73 70 61 72 65 6E 74 20  73 75 70 70 6F 72 74 20  66 6F 72 20 62 6F 74 68  20 56 42 45 20 32 2E 30  sparent support for both VBE 2.0
000056E0  20 61 6E 64 20 62 65 6C  6F 77 20 64 65 76 69 63  65 73 2C 20 61 6E 64 20  56 42 45 2F 41 46 20 41   and below devices, and VBE/AF A
00005700  63 63 65 6C 65 72 61 74  6F 72 20 46 75 6E 63 74  69 6F 6E 73 2E 20 49 74  20 77 69 6C 6C 20 61 75  ccelerator Functions. It will au
00005720  74 6F 6D 61 74 69 63 61  6C 6C 79 20 75 73 65 20  74 68 65 20 56 42 45 2F  41 46 20 67 72 61 70 68  tomatically use the VBE/AF graph
00005740  69 63 73 20 61 63 63 65  6C 65 72 61 74 6F 72 20  66 6F 72 20 63 6C 65 61  72 69 6E 67 20 74 68 65  ics accelerator for clearing the
00005760  20 66 72 61 6D 65 62 75  66 66 65 72 20 61 6E 64  20 64 72 61 77 69 6E 67  20 6C 69 6E 65 73 20 69   framebuffer and drawing lines i
00005780  66 20 74 68 65 20 68 61  72 64 77 61 72 65 20 73  75 70 70 6F 72 74 73 20  74 68 61 74 20 66 75 6E  f the hardware supports that fun
000057A0  63 74 69 6F 6E 61 6C 69  74 79 20 69 6E 20 74 68  65 20 63 75 72 72 65 6E  74 20 67 72 61 70 68 69  ctionality in the current graphi
000057C0  63 73 20 6D 6F 64 65 20  28 61 6E 64 20 79 6F 75  20 73 65 74 20 74 68 65  20 75 73 65 56 42 45 41  cs mode (and you set the useVBEA
000057E0  46 20 66 6C 61 67 20 74  6F 20 74 72 75 65 20 77  68 65 6E 20 74 68 65 20  67 72 61 70 68 69 63 73  F flag to true when the graphics
00005800  20 6D 6F 64 65 20 77 61  73 20 73 74 61 72 74 65  64 29 2E 20 48 6F 77 65  76 65 72 20 74 68 65 20   mode was started). However the 
00005820  56 42 45 2F 41 46 20 73  70 65 63 69 66 69 63 61  74 69 6F 6E 20 61 6C 73  6F 20 70 72 6F 76 69 64  VBE/AF specification also provid
00005840  65 73 20 73 75 70 70 6F  72 74 20 66 6F 72 20 61  20 6D 75 63 68 20 6C 61  72 67 65 72 20 61 72 72  es support for a much larger arr
00005860  61 79 20 6F 66 20 70 72  69 6D 69 74 69 76 65 73  20 74 68 61 6E 20 6A 75  73 74 20 74 68 65 73 65  ay of primitives than just these
00005880  20 74 77 6F 20 66 75 6E  63 74 69 6F 6E 73 2C 20  73 75 63 68 20 61 73 20  70 61 74 74 65 72 6E 65   two functions, such as patterne
000058A0  64 20 72 65 63 74 61 6E  67 6C 65 20 66 69 6C 6C  73 2C 20 70 6F 6C 79 67  6F 6E 20 66 69 6C 6C 73  d rectangle fills, polygon fills
000058C0  20 61 6E 64 20 74 72 61  6E 73 70 61 72 65 6E 74  20 42 69 74 42 6C 74 20  66 75 6E 63 74 69 6F 6E   and transparent BitBlt function
000058E0  73 2E 0D 49 66 20 61 20  56 42 45 2F 41 46 20 64  65 76 69 63 65 20 68 61  73 20 62 65 65 6E 20 64  s.If a VBE/AF device has been d
00005900  65 74 65 63 74 65 64 20  61 6E 64 20 69 73 20 63  75 72 72 65 6E 74 6C 79  20 62 65 69 6E 67 20 75  etected and is currently being u
00005920  73 65 64 20 62 79 20 74  68 65 20 6C 69 62 72 61  72 79 2C 20 74 68 65 20  67 6C 6F 62 61 6C 20 76  sed by the library, the global v
00005940  61 72 69 61 62 6C 65 20  41 46 44 43 20 77 69 6C  6C 20 62 65 20 73 65 74  20 74 6F 20 61 20 70 6F  ariable AFDC will be set to a po
00005960  69 6E 74 65 72 20 74 6F  20 74 68 65 20 56 42 45  2F 41 46 20 64 65 76 69  63 65 20 63 6F 6E 74 65  inter to the VBE/AF device conte
00005980  78 74 20 62 6C 6F 63 6B  20 66 6F 72 20 74 68 65  20 63 75 72 72 65 6E 74  6C 79 20 6C 6F 61 64 65  xt block for the currently loade
000059A0  64 20 64 72 69 76 65 72  2E 20 59 6F 75 20 63 61  6E 20 74 68 65 6E 20 75  73 65 20 74 68 65 20 73  d driver. You can then use the s
000059C0  75 70 70 6C 69 65 64 20  56 42 45 2F 41 46 20 43  20 62 61 73 65 64 20 41  50 49 20 69 6E 20 74 68  upplied VBE/AF C based API in th
000059E0  65 20 56 42 45 41 46 2E  48 20 68 65 61 64 65 72  20 66 69 6C 65 20 74 6F  20 64 69 72 65 63 74 6C  e VBEAF.H header file to directl
00005A00  79 20 63 61 6C 6C 20 74  68 65 73 65 20 66 75 6E  63 74 69 6F 6E 73 2C 20  6F 72 20 79 6F 75 20 63  y call these functions, or you c
00005A20  61 6E 20 75 73 65 20 74  68 65 20 73 61 6D 70 6C  65 20 61 73 73 65 6D 62  6C 65 72 20 63 6F 64 65  an use the sample assembler code
00005A40  20 69 6E 20 74 68 65 20  5F 56 42 45 41 46 2E 41  53 4D 20 6D 6F 64 75 6C  65 20 74 6F 20 77 72 69   in the _VBEAF.ASM module to wri
00005A60  74 65 20 79 6F 75 72 20  6F 77 6E 20 68 69 67 68  20 70 65 72 66 6F 72 6D  61 6E 63 65 20 61 63 63  te your own high performance acc
00005A80  65 6C 65 72 61 74 65 64  20 67 72 61 70 68 69 63  73 20 66 75 6E 63 74 69  6F 6E 73 2E 0D 4E 6F 74  elerated graphics functions.Not
00005AA0  65 20 74 68 61 74 20 61  6C 74 68 6F 75 67 68 20  77 65 20 70 72 6F 76 69  64 65 20 61 20 43 20 62  e that although we provide a C b
00005AC0  61 73 65 64 20 41 50 49  20 66 6F 72 20 56 42 45  2F 41 46 20 61 63 63 65  6C 65 72 61 74 69 6F 6E  ased API for VBE/AF acceleration
00005AE0  20 69 6E 20 74 68 65 20  53 75 70 65 72 56 47 41  20 4B 69 74 2C 20 74 68  65 20 73 70 65 63 69 66   in the SuperVGA Kit, the specif
00005B00  69 63 61 74 69 6F 6E 20  70 61 73 73 65 73 20 76  61 6C 75 65 73 20 74 6F  20 74 68 65 20 64 72 69  ication passes values to the dri
00005B20  76 65 72 20 69 6E 20 61  20 63 6F 6D 62 69 6E 61  74 69 6F 6E 20 6F 66 20  72 65 67 69 73 74 65 72  ver in a combination of register
00005B40  73 20 61 6E 64 20 70 61  72 61 6D 65 74 65 72 20  62 6C 6F 63 6B 73 20 74  68 61 74 20 69 73 20 68  s and parameter blocks that is h
00005B60  69 67 68 6C 79 20 74 75  6E 65 64 20 74 6F 77 61  72 64 73 20 63 61 6C 6C  73 20 66 72 6F 6D 20 74  ighly tuned towards calls from t
00005B80  69 67 68 74 20 61 73 73  65 6D 62 6C 79 20 6C 61  6E 67 75 61 67 65 20 6C  6F 6F 70 73 2E 20 46 6F  ight assembly language loops. Fo
00005BA0  72 20 61 62 73 6F 6C 75  74 65 20 6D 61 78 69 6D  75 6D 20 70 65 72 66 6F  72 6D 61 6E 63 65 20 69  r absolute maximum performance i
00005BC0  6E 20 79 6F 75 72 20 63  6F 64 65 2C 20 70 6C 65  61 73 65 20 72 65 61 64  20 74 68 65 20 56 42 45  n your code, please read the VBE
00005BE0  2F 41 46 20 73 70 65 63  69 66 69 63 61 74 69 6F  6E 73 20 61 6E 64 20 77  72 69 74 65 20 79 6F 75  /AF specifications and write you
00005C00  72 20 6F 77 6E 20 61 73  73 65 6D 62 6C 65 72 20  66 75 6E 63 74 69 6F 6E  73 20 74 6F 20 69 6E 74  r own assembler functions to int
00005C20  65 72 66 61 63 65 20 64  69 72 65 63 74 6C 79 20  77 69 74 68 20 74 68 65  20 56 42 45 2F 41 46 20  erface directly with the VBE/AF 
00005C40  64 65 76 69 63 65 20 64  72 69 76 65 72 20 66 75  6E 63 74 69 6F 6E 73 2E  0D 49 6E 20 6F 72 64 65  device driver functions.In orde
00005C60  72 20 74 6F 20 61 6C 6C  6F 77 20 79 6F 75 72 20  61 63 63 65 6C 65 72 61  74 69 6F 6E 20 63 6F 64  r to allow your acceleration cod
00005C80  65 20 74 6F 20 72 75 6E  20 63 6F 72 72 65 63 74  6C 79 2C 20 79 6F 75 20  6D 75 73 74 20 61 6C 73  e to run correctly, you must als
00005CA0  6F 20 6F 62 73 65 72 76  65 20 61 20 66 65 77 20  72 75 6C 65 73 20 74 6F  20 65 6E 73 75 72 65 20  o observe a few rules to ensure 
00005CC0  63 6F 72 72 65 63 74 20  61 72 62 69 74 72 61 74  69 6F 6E 20 62 65 74 77  65 65 6E 20 74 68 65 20  correct arbitration between the 
00005CE0  67 72 61 70 68 69 63 73  20 61 63 63 65 6C 65 72  61 74 6F 72 20 68 61 72  64 77 61 72 65 20 61 6E  graphics accelerator hardware an
00005D00  64 20 61 6E 79 20 63 6F  64 65 20 74 68 61 74 20  72 65 6E 64 65 72 73 20  64 69 72 65 63 74 6C 79  d any code that renders directly
00005D20  20 74 6F 20 74 68 65 20  66 72 61 6D 65 62 75 66  66 65 72 2E 20 42 79 20  64 65 66 61 75 6C 74 20   to the framebuffer. By default 
00005D40  77 68 65 6E 20 61 20 6D  6F 64 65 20 69 73 20 69  6E 69 74 69 61 6C 69 7A  65 64 2C 20 69 74 20 69  when a mode is initialized, it i
00005D60  73 20 73 65 74 20 75 70  20 66 6F 72 20 68 61 72  64 77 61 72 65 20 61 63  63 65 6C 65 72 61 74 65  s set up for hardware accelerate
00005D80  64 20 72 65 6E 64 65 72  69 6E 67 20 61 6E 64 20  79 6F 75 20 63 61 6E 6E  6F 74 20 64 69 72 65 63  d rendering and you cannot direc
00005DA0  74 6C 79 20 61 63 63 65  73 73 20 74 68 65 20 66  72 61 6D 65 62 75 66 66  65 72 2E 20 42 65 66 6F  tly access the framebuffer. Befo
00005DC0  72 65 20 79 6F 75 20 64  6F 20 61 6E 79 20 64 69  72 65 63 74 20 66 72 61  6D 65 62 75 66 66 65 72  re you do any direct framebuffer
00005DE0  20 61 63 63 65 73 73 2C  20 79 6F 75 20 6D 75 73  74 20 63 61 6C 6C 20 74  68 65 20 53 56 5F 62 65   access, you must call the SV_be
00005E00  67 69 6E 44 69 72 65 63  74 41 63 63 65 73 73 20  66 75 6E 63 74 69 6F 6E  20 74 6F 20 65 6E 73 75  ginDirectAccess function to ensu
00005E20  72 65 20 6D 75 74 75 61  6C 20 65 78 63 6C 75 73  69 6F 6E 20 74 6F 20 74  68 65 20 66 72 61 6D 65  re mutual exclusion to the frame
00005E40  62 75 66 66 65 72 2C 20  61 6E 64 20 77 68 65 6E  20 79 6F 75 20 61 72 65  20 64 6F 6E 65 20 63 61  buffer, and when you are done ca
00005E60  6C 6C 20 53 56 5F 65 6E  64 44 69 72 65 63 74 41  63 63 65 73 73 20 61 67  61 69 6E 20 74 6F 20 72  ll SV_endDirectAccess again to r
00005E80  65 74 75 72 6E 20 74 6F  20 6E 6F 72 6D 61 6C 20  68 61 72 64 77 61 72 65  20 61 63 63 65 6C 65 72  eturn to normal hardware acceler
00005EA0  61 74 69 6F 6E 20 6D 6F  64 65 2E 20 49 66 20 79  6F 75 20 64 6F 20 6E 6F  74 20 64 6F 20 74 68 69  ation mode. If you do not do thi
00005EC0  73 2C 20 74 68 65 72 65  20 69 73 20 61 20 63 68  61 6E 63 65 20 74 68 61  74 20 74 68 65 20 64 61  s, there is a chance that the da
00005EE0  74 61 20 73 74 6F 72 65  64 20 69 6E 20 74 68 65  20 66 72 61 6D 65 62 75  66 66 65 72 20 77 69 6C  ta stored in the framebuffer wil
00005F00  6C 20 67 65 74 20 63 6F  72 72 75 70 74 65 64 2C  20 6F 72 20 65 76 65 6E  20 77 6F 72 73 65 20 69  l get corrupted, or even worse i
00005F20  74 20 69 73 20 71 75 69  74 65 20 70 6F 73 73 69  62 6C 65 20 74 6F 20 6C  6F 63 6B 20 75 70 20 74  t is quite possible to lock up t
00005F40  68 65 20 67 72 61 70 68  69 63 73 20 63 6F 6E 74  72 6F 6C 6C 65 72 20 68  61 72 64 77 61 72 65 20  he graphics controller hardware 
00005F60  72 65 71 75 69 72 69 6E  67 20 61 20 68 61 72 64  20 72 65 62 6F 6F 74 2E  0D 0D 0C 44 65 76 65 6C  requiring a hard reboot.Devel
00005F80  6F 70 69 6E 67 20 66 6F  72 20 4D 61 78 69 6D 75  6D 20 43 6F 6D 70 61 74  69 62 69 6C 69 74 79 0D  oping for Maximum Compatibility
00005FA0  54 68 69 73 20 73 65 63  74 69 6F 6E 20 63 6F 6E  74 61 69 6E 73 20 69 6E  66 6F 72 6D 61 74 69 6F  This section contains informatio
00005FC0  6E 20 72 65 6C 61 74 69  6E 67 20 74 6F 20 64 65  76 65 6C 6F 70 69 6E 67  20 61 70 70 6C 69 63 61  n relating to developing applica
00005FE0  74 69 6F 6E 20 73 6F 66  74 77 61 72 65 20 77 69  74 68 20 6D 61 78 69 6D  75 6D 20 63 6F 6D 70 61  tion software with maximum compa
00006000  74 69 62 69 6C 69 74 79  20 69 6E 20 6D 69 6E 64  2C 20 77 69 74 68 6F 75  74 20 73 61 63 72 69 66  tibility in mind, without sacrif
00006020  69 63 69 6E 67 20 70 65  72 66 6F 72 6D 61 6E 63  65 20 6F 72 20 66 65 61  74 75 72 65 73 2E 20 41  icing performance or features. A
00006040  6C 74 68 6F 75 67 68 20  74 68 65 20 56 42 45 20  73 74 61 6E 64 61 72 64  20 64 65 66 69 6E 65 73  lthough the VBE standard defines
00006060  20 68 6F 77 20 74 68 65  20 73 70 65 63 69 66 69  63 61 74 69 6F 6E 20 73  68 6F 75 6C 64 20 77 6F   how the specification should wo
00006080  72 6B 2C 20 74 68 65 72  65 20 61 72 65 20 6D 61  6E 79 20 64 69 66 66 65  72 65 6E 74 20 66 6C 61  rk, there are many different fla
000060A0  76 6F 72 73 20 6F 66 20  68 61 72 64 77 61 72 65  20 6F 75 74 20 69 6E 20  74 68 65 20 66 69 65 6C  vors of hardware out in the fiel
000060C0  64 2E 20 49 74 20 69 73  20 76 65 72 79 20 69 6D  70 6F 72 74 61 6E 74 20  74 68 61 74 20 79 6F 75  d. It is very important that you
000060E0  20 64 65 73 69 67 6E 20  79 6F 75 72 20 61 70 70  6C 69 63 61 74 69 6F 6E  20 77 69 74 68 20 74 68   design your application with th
00006100  65 20 66 6F 6C 6C 6F 77  69 6E 67 20 73 70 65 63  69 61 6C 20 63 61 73 65  73 20 69 6E 20 6D 69 6E  e following special cases in min
00006120  64 20 73 6F 20 74 68 61  74 20 79 6F 75 20 61 70  70 6C 69 63 61 74 69 6F  6E 20 77 69 6C 6C 20 72  d so that you application will r
00006140  75 6E 20 6F 6E 20 74 68  65 20 77 69 64 65 73 74  20 76 61 72 69 65 74 79  20 6F 66 20 68 61 72 64  un on the widest variety of hard
00006160  77 61 72 65 20 70 6F 73  73 69 62 6C 65 2E 0D 4E  6F 74 65 20 74 68 61 74  20 6D 61 6E 79 20 6F 66  ware possible.Note that many of
00006180  20 74 68 65 20 69 73 73  75 65 73 20 69 6E 20 74  68 69 73 20 73 65 63 74  69 6F 6E 20 61 72 65 20   the issues in this section are 
000061A0  6F 6E 6C 79 20 72 65 6C  61 74 65 64 20 74 6F 20  64 69 72 65 63 74 6C 79  20 70 72 6F 67 72 61 6D  only related to directly program
000061C0  6D 69 6E 67 20 66 6F 72  20 74 68 65 20 56 42 45  20 31 2E 32 2F 32 2E 30  20 69 6E 74 65 72 66 61  ming for the VBE 1.2/2.0 interfa
000061E0  63 65 73 2E 20 49 66 20  79 6F 75 20 61 72 65 20  64 6F 69 6E 67 20 61 6C  6C 20 79 6F 75 72 20 64  ces. If you are doing all your d
00006200  65 76 65 6C 6F 70 6D 65  6E 74 20 77 69 74 68 20  74 68 65 20 6E 61 74 69  76 65 20 4D 47 4C 20 41  evelopment with the native MGL A
00006220  50 49 2C 20 53 63 69 54  65 63 68 20 4D 47 4C 20  69 6E 73 75 6C 61 74 65  73 20 79 6F 75 20 66 72  PI, SciTech MGL insulates you fr
00006240  6F 6D 20 6D 61 6E 79 20  6F 66 20 74 68 65 73 65  20 69 73 73 75 65 73 2E  20 48 6F 77 65 76 65 72  om many of these issues. However
00006260  20 73 6F 6D 65 20 69 73  73 75 65 73 20 73 75 63  68 20 61 73 20 62 65 69  6E 67 20 61 77 61 72 65   some issues such as being aware
00006280  20 6F 66 20 74 68 65 20  64 69 66 66 65 72 65 6E  74 20 74 79 70 65 73 20  6F 66 20 68 61 72 64 77   of the different types of hardw
000062A0  61 72 65 20 63 6F 6E 66  69 67 75 72 61 74 69 6F  6E 73 20 74 68 61 74 20  77 69 6C 6C 20 62 65 20  are configurations that will be 
000062C0  6F 75 74 20 74 68 65 72  65 20 28 73 75 63 68 20  61 73 20 68 61 72 64 77  61 72 65 20 74 68 61 74  out there (such as hardware that
000062E0  20 63 61 6E 6E 6F 74 20  64 6F 20 70 61 67 65 20  66 6C 69 70 70 69 6E 67  29 20 61 66 66 65 63 74   cannot do page flipping) affect
00006300  20 4D 47 4C 20 61 70 70  6C 69 63 61 74 69 6F 6E  73 20 61 73 20 77 65 6C  6C 2E 0D 43 68 65 63 6B   MGL applications as well.Check
00006320  20 69 66 20 56 47 41 20  43 6F 6D 70 61 74 69 62  6C 65 20 42 65 66 6F 72  65 20 54 6F 75 63 68 69   if VGA Compatible Before Touchi
00006340  6E 67 20 41 6E 79 20 56  47 41 20 52 65 67 69 73  74 65 72 73 0D 43 61 72  64 73 20 41 66 66 65 63  ng Any VGA RegistersCards Affec
00006360  74 65 64 3A 0D 41 54 49  20 4D 61 63 68 33 32 20  61 6E 64 20 4D 61 63 68  36 34 0D 44 69 61 6D 6F  ted:ATI Mach32 and Mach64Diamo
00006380  6E 64 20 56 69 70 65 72  20 73 65 72 69 65 73 20  28 57 65 69 74 65 6B 20  50 39 30 30 30 20 61 6E  nd Viper series (Weitek P9000 an
000063A0  64 20 50 39 31 30 30 29  0D 44 69 61 6D 6F 6E 64  20 45 64 67 65 20 33 44  20 28 4E 56 69 64 69 61  d P9100)Diamond Edge 3D (NVidia
000063C0  20 4E 56 31 29 0D 49 42  4D 20 58 47 41 0D 49 49  54 20 41 47 58 0D 4D 61  74 72 6F 78 20 4D 69 6C   NV1)IBM XGAIIT AGXMatrox Mil
000063E0  6C 65 6E 69 75 6D 20 0D  4E 75 6D 62 65 72 20 4E  69 6E 65 20 49 6D 61 67  69 6E 65 20 31 32 38 0D  lenium Number Nine Imagine 128
00006400  4D 6F 73 74 20 6E 65 77  65 72 20 63 61 72 64 73  0D 0D 4D 61 6E 79 20 64  65 76 65 6C 6F 70 65 72  Most newer cardsMany developer
00006420  73 20 66 69 6E 64 20 74  68 61 74 20 74 68 65 72  65 20 69 73 20 61 6E 20  69 72 72 65 73 69 73 74  s find that there is an irresist
00006440  69 62 6C 65 20 75 72 67  65 20 74 6F 20 70 75 73  68 20 74 68 65 20 62 6F  75 6E 64 61 72 69 65 73  ible urge to push the boundaries
00006460  20 6F 66 20 70 65 72 66  6F 72 6D 61 6E 63 65 2C  20 61 6E 64 20 74 68 65  79 20 77 69 6C 6C 20 74   of performance, and they will t
00006480  72 79 20 61 6E 79 74 68  69 6E 67 20 61 6E 64 20  65 76 65 72 79 74 68 69  6E 67 20 74 68 65 79 20  ry anything and everything they 
000064A0  63 61 6E 20 74 6F 20 61  74 74 61 69 6E 20 74 68  65 73 65 20 67 6F 61 6C  73 2E 20 4F 6E 65 20 6F  can to attain these goals. One o
000064C0  66 20 74 68 65 20 74 68  69 6E 67 73 20 74 68 61  74 20 69 73 20 63 6F 6D  6D 6F 6E 6C 79 20 64 6F  f the things that is commonly do
000064E0  6E 65 20 69 73 20 74 6F  20 70 65 72 66 6F 72 6D  20 77 65 69 72 64 20 61  6E 64 20 77 6F 6E 64 65  ne is to perform weird and wonde
00006500  72 66 75 6C 20 66 65 61  74 73 20 6F 66 20 6D 61  67 69 63 20 75 73 69 6E  67 20 73 6F 6D 65 20 6F  rful feats of magic using some o
00006520  66 20 74 68 65 20 73 74  61 6E 64 61 72 64 20 56  47 41 20 72 65 67 69 73  74 65 72 73 2E 20 54 68  f the standard VGA registers. Th
00006540  69 73 20 64 6F 65 73 20  77 6F 72 6B 2C 20 61 6E  64 20 77 6F 72 6B 20 77  65 6C 6C 20 6F 6E 20 73  is does work, and work well on s
00006560  6F 6D 65 20 67 72 61 70  68 69 63 73 20 63 61 72  64 73 2C 20 62 75 74 20  6E 6F 74 20 6F 6E 20 61  ome graphics cards, but not on a
00006580  6C 6C 20 63 61 72 64 73  21 20 20 0D 49 66 20 74  68 65 20 67 72 61 70 68  69 63 73 20 63 6F 6E 74  ll cards!  If the graphics cont
000065A0  72 6F 6C 6C 65 72 20 69  73 20 62 61 73 65 64 20  6F 6E 20 61 20 4E 6F 6E  56 47 41 20 67 72 61 70  roller is based on a NonVGA grap
000065C0  68 69 63 73 20 68 61 72  64 77 61 72 65 20 74 65  63 68 6E 6F 6C 6F 67 79  20 28 61 6E 64 20 6D 61  hics hardware technology (and ma
000065E0  6E 79 20 70 6F 70 75 6C  61 72 20 6F 6E 65 73 20  61 72 65 29 2C 20 69 6E  20 74 68 65 20 53 75 70  ny popular ones are), in the Sup
00006600  65 72 56 47 41 20 67 72  61 70 68 69 63 73 20 6D  6F 64 65 73 20 74 68 65  20 56 47 41 20 72 65 67  erVGA graphics modes the VGA reg
00006620  69 73 74 65 72 73 20 73  69 6D 70 6C 79 20 64 6F  20 6E 6F 74 20 65 78 69  73 74 20 61 6E 79 6D 6F  isters simply do not exist anymo
00006640  72 65 2C 20 61 6E 64 20  61 74 74 65 6D 70 74 69  6E 67 20 74 6F 20 73 79  6E 63 68 20 74 6F 20 74  re, and attempting to synch to t
00006660  68 65 73 65 20 72 65 67  69 73 74 65 72 73 20 77  69 6C 6C 20 70 75 74 20  79 6F 75 72 20 63 6F 64  hese registers will put your cod
00006680  65 20 69 6E 74 6F 20 61  6E 20 69 6E 66 69 6E 69  74 65 20 6C 6F 6F 70 2E  20 53 6F 20 62 65 20 66  e into an infinite loop. So be f
000066A0  6F 72 65 77 61 72 6E 65  64 20 74 68 61 74 20 64  6F 69 6E 67 20 61 6E 79  20 66 69 64 64 6C 69 6E  orewarned that doing any fiddlin
000066C0  67 20 77 69 74 68 20 74  68 65 20 73 74 61 6E 64  61 72 64 20 56 47 41 20  72 65 67 69 73 74 65 72  g with the standard VGA register
000066E0  73 20 69 73 20 61 73 6B  69 6E 67 20 66 6F 72 20  74 72 6F 75 62 6C 65 20  6F 6E 20 63 65 72 74 61  s is asking for trouble on certa
00006700  69 6E 20 67 72 61 70 68  69 63 73 20 63 61 72 64  20 74 68 61 74 20 75 73  65 20 4E 6F 6E 56 47 41  in graphics card that use NonVGA
00006720  20 63 6F 6E 74 72 6F 6C  6C 65 72 73 20 74 6F 20  70 72 6F 67 72 61 6D 20  74 68 65 20 53 75 70 65   controllers to program the Supe
00006740  72 56 47 41 20 67 72 61  70 68 69 63 73 20 6D 6F  64 65 73 20 28 61 6E 64  20 6C 6F 74 73 20 6D 6F  rVGA graphics modes (and lots mo
00006760  72 65 20 6F 66 20 74 68  65 73 65 20 61 72 65 20  63 6F 6D 69 6E 67 20 6F  75 74 29 2E 0D 54 68 65  re of these are coming out).The
00006780  72 65 20 69 73 20 68 6F  77 65 76 65 72 20 61 20  73 6F 6C 75 74 69 6F 6E  20 66 6F 72 20 56 42 45  re is however a solution for VBE
000067A0  20 32 2E 30 20 61 6E 64  20 56 42 45 2F 41 46 20  63 6F 6E 74 72 6F 6C 6C  65 72 73 2E 20 54 68 65   2.0 and VBE/AF controllers. The
000067C0  72 65 20 69 73 20 61 20  62 69 74 20 69 6E 20 74  68 65 20 56 42 45 20 6D  6F 64 65 49 6E 66 6F 42  re is a bit in the VBE modeInfoB
000067E0  6C 6F 63 6B 20 66 6F 72  20 65 76 65 72 79 20 67  72 61 70 68 69 63 73 20  6D 6F 64 65 20 74 68 61  lock for every graphics mode tha
00006800  74 20 69 6E 64 69 63 61  74 65 73 20 77 68 65 74  68 65 72 20 74 68 61 74  20 6D 6F 64 65 20 69 73  t indicates whether that mode is
00006820  20 61 20 4E 6F 6E 56 47  41 20 6D 6F 64 65 20 6F  72 20 56 47 41 20 63 6F  6D 70 61 74 69 62 6C 65   a NonVGA mode or VGA compatible
00006840  20 6D 6F 64 65 2E 20 49  66 20 74 68 69 73 20 62  69 74 20 69 73 20 73 65  74 20 69 6E 64 69 63 61   mode. If this bit is set indica
00006860  74 69 6E 67 20 74 68 61  74 20 61 20 4E 6F 6E 56  47 41 20 63 6F 6E 74 72  6F 6C 6C 65 72 20 69 73  ting that a NonVGA controller is
00006880  20 62 65 69 6E 67 20 75  73 65 64 20 74 6F 20 70  72 6F 67 72 61 6D 20 74  68 65 20 64 65 73 69 72   being used to program the desir
000068A0  65 64 20 67 72 61 70 68  69 63 73 20 6D 6F 64 65  2C 20 79 6F 75 20 6D 75  73 74 20 6E 6F 74 20 64  ed graphics mode, you must not d
000068C0  6F 20 61 6E 79 74 68 69  6E 67 20 72 65 6C 61 74  65 64 20 74 6F 20 72 65  2D 70 72 6F 67 72 61 6D  o anything related to re-program
000068E0  6D 69 6E 67 20 61 6E 79  20 6F 66 20 74 68 65 20  73 74 61 6E 64 61 72 64  20 56 47 41 20 72 65 67  ming any of the standard VGA reg
00006900  69 73 74 65 72 73 2E 20  49 6E 20 74 68 65 73 65  20 63 61 73 65 73 20 79  6F 75 20 6D 75 73 74 20  isters. In these cases you must 
00006920  66 61 6C 6C 62 61 63 6B  20 6F 6E 74 6F 20 67 65  6E 65 72 69 63 20 63 6F  64 65 20 74 68 61 74 20  fallback onto generic code that 
00006940  77 69 6C 6C 20 70 65 72  66 6F 72 6D 20 61 6C 6C  20 69 74 92 73 20 67 72  61 70 68 69 63 73 20 63  will perform all itÆs graphics c
00006960  61 72 64 20 69 6E 74 65  72 61 63 74 69 6F 6E 20  74 68 72 6F 75 67 68 20  74 68 65 20 73 74 61 6E  ard interaction through the stan
00006980  64 61 72 64 20 56 42 45  20 32 2E 30 20 73 65 72  76 69 63 65 73 2E 0D 4E  4F 54 45 3A 20 54 68 65  dard VBE 2.0 services.NOTE: The
000069A0  20 53 63 69 54 65 63 68  20 4D 47 4C 20 41 50 49  20 69 6E 73 75 6C 61 74  65 73 20 64 65 76 65 6C   SciTech MGL API insulates devel
000069C0  6F 70 65 72 73 20 66 72  6F 6D 20 74 68 69 73 20  69 73 73 75 65 2E 0D 43  68 65 63 6B 20 69 66 20  opers from this issue.Check if 
000069E0  56 47 41 20 43 6F 6D 70  61 74 69 62 6C 65 20 42  65 66 6F 72 65 20 44 69  72 65 63 74 6C 79 20 50  VGA Compatible Before Directly P
00006A00  72 6F 67 72 61 6D 6D 69  6E 67 20 74 68 65 20 44  41 43 0D 43 61 72 64 73  20 41 66 66 65 63 74 65  rogramming the DACCards Affecte
00006A20  64 3A 0D 41 54 49 20 4D  61 63 68 33 32 20 61 6E  64 20 4D 61 63 68 36 34  0D 44 69 61 6D 6F 6E 64  d:ATI Mach32 and Mach64Diamond
00006A40  20 56 69 70 65 72 20 73  65 72 69 65 73 20 28 57  65 69 74 65 6B 20 50 39  30 30 30 20 61 6E 64 20   Viper series (Weitek P9000 and 
00006A60  50 39 31 30 30 29 0D 44  69 61 6D 6F 6E 64 20 45  64 67 65 20 33 44 20 28  4E 56 69 64 69 61 20 4E  P9100)Diamond Edge 3D (NVidia N
00006A80  56 31 29 0D 49 42 4D 20  58 47 41 0D 49 49 54 20  41 47 58 0D 4D 61 74 72  6F 78 20 4D 69 6C 6C 65  V1)IBM XGAIIT AGXMatrox Mille
00006AA0  6E 69 75 6D 20 0D 4E 75  6D 62 65 72 20 4E 69 6E  65 20 49 6D 61 67 69 6E  65 20 31 32 38 0D 4D 6F  nium Number Nine Imagine 128Mo
00006AC0  73 74 20 6E 65 77 65 72  20 63 61 72 64 73 0D 0D  41 6E 6F 74 68 65 72 20  61 72 65 61 20 6F 66 20  st newer cardsAnother area of 
00006AE0  63 6F 6E 63 65 72 6E 20  69 73 20 70 72 6F 67 72  61 6D 6D 69 6E 67 20 74  68 65 20 63 6F 6C 6F 72  concern is programming the color
00006B00  20 70 61 6C 65 74 74 65  2E 20 4F 6E 63 65 20 61  67 61 69 6E 20 74 68 65  20 73 61 6D 65 20 70 72   palette. Once again the same pr
00006B20  6F 62 6C 65 6D 20 6F 63  63 75 72 73 20 77 68 65  6E 20 70 72 6F 67 72 61  6D 6D 69 6E 67 20 74 68  oblem occurs when programming th
00006B40  65 20 70 61 6C 65 74 74  65 20 66 6F 72 20 4E 6F  6E 56 47 41 20 63 6F 6E  74 72 6F 6C 6C 65 72 73  e palette for NonVGA controllers
00006B60  3B 20 74 68 65 20 56 47  41 20 70 61 6C 65 74 74  65 20 72 65 67 69 73 74  65 72 73 20 6E 6F 20 6C  ; the VGA palette registers no l
00006B80  6F 6E 67 65 72 20 65 78  69 73 74 20 61 6E 64 20  61 74 74 65 6D 70 74 69  6E 67 20 74 6F 20 70 72  onger exist and attempting to pr
00006BA0  6F 67 72 61 6D 20 74 68  65 20 70 61 6C 65 74 74  65 20 76 69 61 20 74 68  65 73 65 20 72 65 67 69  ogram the palette via these regi
00006BC0  73 74 65 72 73 20 77 69  6C 6C 20 73 69 6D 70 6C  79 20 64 6F 20 6E 6F 74  68 69 6E 67 2E 20 45 76  sters will simply do nothing. Ev
00006BE0  65 6E 20 77 6F 72 73 65  20 61 74 74 65 6D 70 74  69 6E 67 20 74 6F 20 73  79 6E 63 68 20 74 6F 20  en worse attempting to synch to 
00006C00  74 68 65 20 76 65 72 74  69 63 61 6C 20 6F 72 20  68 6F 72 69 7A 6F 6E 74  61 6C 20 72 65 74 72 61  the vertical or horizontal retra
00006C20  63 65 20 77 69 6C 6C 20  61 6C 73 6F 20 63 61 75  73 65 20 74 68 65 20 73  79 73 74 65 6D 20 74 6F  ce will also cause the system to
00006C40  20 67 65 74 20 69 6E 74  6F 20 61 6E 20 69 6E 66  69 6E 69 74 65 20 6C 6F  6F 70 2E 0D 48 65 6E 63   get into an infinite loop.Henc
00006C60  65 20 69 66 20 79 6F 75  20 6E 65 65 64 20 74 6F  20 70 72 6F 67 72 61 6D  20 74 68 65 20 63 6F 6C  e if you need to program the col
00006C80  6F 72 20 70 61 6C 65 74  74 65 2C 20 79 6F 75 20  73 68 6F 75 6C 64 20 61  6C 77 61 79 73 20 74 72  or palette, you should always tr
00006CA0  79 20 74 6F 20 75 73 65  20 74 68 65 20 73 75 70  70 6C 69 65 64 20 56 42  45 20 32 2E 30 20 61 6E  y to use the supplied VBE 2.0 an
00006CC0  64 20 56 42 45 2F 41 46  20 70 61 6C 65 74 74 65  20 70 72 6F 67 72 61 6D  6D 69 6E 67 20 72 6F 75  d VBE/AF palette programming rou
00006CE0  74 69 6E 65 73 20 72 61  74 68 65 72 20 74 68 61  6E 20 70 72 6F 67 72 61  6D 6D 69 6E 67 20 74 68  tines rather than programming th
00006D00  65 20 70 61 6C 65 74 74  65 20 64 69 72 65 63 74  6C 79 2E 20 49 66 20 79  6F 75 20 6D 75 73 74 20  e palette directly. If you must 
00006D20  68 61 76 65 20 79 6F 75  72 20 6F 77 6E 20 70 61  6C 65 74 74 65 20 70 72  6F 67 72 61 6D 6D 69 6E  have your own palette programmin
00006D40  67 20 63 6F 64 65 2C 20  6D 61 6B 65 20 73 75 72  65 20 79 6F 75 20 63 68  65 63 6B 20 74 68 65 20  g code, make sure you check the 
00006D60  4E 6F 6E 56 47 41 20 61  74 74 72 69 62 75 74 65  20 62 69 74 20 61 73 20  64 69 73 63 75 73 73 65  NonVGA attribute bit as discusse
00006D80  64 20 61 62 6F 76 65 2C  20 61 6E 64 20 69 66 20  61 20 4E 6F 6E 56 47 41  20 6D 6F 64 65 20 69 73  d above, and if a NonVGA mode is
00006DA0  20 64 65 74 65 63 74 65  64 20 79 6F 75 20 77 69  6C 6C 20 68 61 76 65 20  74 6F 20 70 72 6F 67 72   detected you will have to progr
00006DC0  61 6D 20 74 68 65 20 70  61 6C 65 74 74 65 20 76  69 61 20 74 68 65 20 73  74 61 6E 64 61 72 64 20  am the palette via the standard 
00006DE0  56 42 45 20 32 2E 30 20  6F 72 20 56 42 45 2F 41  46 20 73 65 72 76 69 63  65 73 2E 0D 4E 4F 54 45  VBE 2.0 or VBE/AF services.NOTE
00006E00  3A 20 54 68 65 20 53 63  69 54 65 63 68 20 4D 47  4C 20 41 50 49 20 69 6E  73 75 6C 61 74 65 73 20  : The SciTech MGL API insulates 
00006E20  64 65 76 65 6C 6F 70 65  72 73 20 66 72 6F 6D 20  74 68 69 73 20 69 73 73  75 65 2E 0D 48 61 6E 64  developers from this issue.Hand
00006E40  6C 69 6E 67 20 47 72 61  70 68 69 63 73 20 43 61  72 64 73 20 77 69 74 68  20 4F 6E 6C 79 20 4D 65  ling Graphics Cards with Only Me
00006E60  6D 6F 72 79 20 4D 61 70  70 65 64 20 52 65 67 69  73 74 65 72 73 0D 43 61  72 64 73 20 41 66 66 65  mory Mapped RegistersCards Affe
00006E80  63 74 65 64 3A 0D 41 6C  6C 69 61 6E 63 65 20 50  72 6F 4D 6F 74 69 6F 6E  20 33 32 31 30 2F 36 34  cted:Alliance ProMotion 3210/64
00006EA0  31 30 0D 4E 75 6D 62 65  72 20 4E 69 6E 65 20 49  6D 61 67 69 6E 65 20 31  32 38 0D 53 6F 6D 65 20  10Number Nine Imagine 128Some 
00006EC0  6E 65 77 65 72 20 63 61  72 64 73 0D 0D 4F 6E 65  20 61 72 65 61 20 74 68  61 74 20 69 73 20 6E 6F  newer cardsOne area that is no
00006EE0  74 20 76 65 72 79 20 77  65 6C 6C 20 63 6F 76 65  72 65 64 20 69 6E 20 74  68 65 20 56 42 45 20 32  t very well covered in the VBE 2
00006F00  2E 30 20 73 70 65 63 73  20 69 73 20 73 75 70 70  6F 72 74 20 66 6F 72 20  63 6F 6E 74 72 6F 6C 6C  .0 specs is support for controll
00006F20  65 72 73 20 74 68 61 74  20 6F 6E 6C 79 20 68 61  76 65 20 6D 65 6D 6F 72  79 20 6D 61 70 70 65 64  ers that only have memory mapped
00006F40  20 72 65 67 69 73 74 65  72 73 20 72 61 74 68 65  72 20 74 68 61 6E 20 49  4F 20 6D 61 70 70 65 64   registers rather than IO mapped
00006F60  20 72 65 67 69 73 74 65  72 73 2E 20 46 6F 72 20  74 68 65 73 65 20 63 6F  6E 74 72 6F 6C 6C 65 72   registers. For these controller
00006F80  73 20 74 68 65 72 65 20  61 72 65 20 61 20 6E 75  6D 62 65 72 20 6F 66 20  73 6D 61 6C 6C 20 69 73  s there are a number of small is
00006FA0  73 75 65 73 20 74 68 61  74 20 6E 65 65 64 20 74  6F 20 62 65 20 68 61 6E  64 6C 65 64 20 69 6E 20  sues that need to be handled in 
00006FC0  6F 72 64 65 72 20 74 6F  20 6D 61 6B 65 20 73 75  72 65 20 74 68 61 74 20  74 68 65 20 33 32 20 62  order to make sure that the 32 b
00006FE0  69 74 20 56 42 45 20 32  2E 30 20 72 65 6C 6F 63  61 74 65 61 62 6C 65 20  66 75 6E 63 74 69 6F 6E  it VBE 2.0 relocateable function
00007000  73 20 77 6F 72 6B 20 63  6F 72 72 65 63 74 6C 79  2E 20 49 66 20 6F 72 64  65 72 20 66 6F 72 20 74  s work correctly. If order for t
00007020  68 65 73 65 20 66 75 6E  63 74 69 6F 6E 73 20 74  6F 20 77 6F 72 6B 2C 20  61 20 73 65 6C 65 63 74  hese functions to work, a select
00007040  6F 72 20 74 6F 20 74 68  65 20 6D 65 6D 6F 72 79  20 6D 61 70 70 65 64 20  72 65 67 69 73 74 65 72  or to the memory mapped register
00007060  73 20 6D 75 73 74 20 62  65 20 70 61 73 73 65 64  20 69 6E 20 74 68 65 20  45 53 20 72 65 67 69 73  s must be passed in the ES regis
00007080  74 65 72 20 74 6F 20 74  68 65 20 62 61 6E 6B 20  73 77 69 74 63 68 69 6E  67 20 61 6E 64 20 64 69  ter to the bank switching and di
000070A0  73 70 6C 61 79 20 73 74  61 72 74 20 61 64 64 72  65 73 73 20 70 72 6F 67  72 61 6D 6D 69 6E 67 20  splay start address programming 
000070C0  72 6F 75 74 69 6E 65 73  2C 20 61 6E 64 20 69 6E  20 74 68 65 20 44 53 20  72 65 67 69 73 74 65 72  routines, and in the DS register
000070E0  20 66 6F 72 20 74 68 65  20 70 61 6C 65 74 74 65  20 70 72 6F 67 72 61 6D  6D 69 6E 67 20 72 6F 75   for the palette programming rou
00007100  74 69 6E 65 2E 20 49 66  20 74 68 69 73 20 73 65  6C 65 63 74 6F 72 20 69  73 20 6E 6F 74 20 70 61  tine. If this selector is not pa
00007120  73 73 65 64 2C 20 74 68  65 20 63 6F 64 65 20 77  69 6C 6C 20 6E 6F 74 20  62 65 20 61 62 6C 65 20  ssed, the code will not be able 
00007140  74 6F 20 63 6F 72 72 65  63 74 6C 79 20 61 63 63  65 73 73 20 74 68 65 20  6E 65 63 65 73 73 61 72  to correctly access the necessar
00007160  79 20 6D 65 6D 6F 72 79  20 6D 61 70 70 65 64 20  72 65 67 69 73 74 65 72  73 20 61 6E 64 20 79 6F  y memory mapped registers and yo
00007180  75 72 20 61 70 70 6C 69  63 61 74 69 6F 6E 20 77  69 6C 6C 20 70 72 6F 62  61 62 6C 79 20 63 72 61  ur application will probably cra
000071A0  73 68 2E 0D 4E 6F 74 65  20 74 68 61 74 20 74 68  65 20 55 6E 69 56 42 45  20 61 6E 64 20 6F 75 72  sh.Note that the UniVBE and our
000071C0  20 55 56 42 45 4C 69 62  20 64 65 76 69 63 65 20  73 75 70 70 6F 72 74 20  6C 69 62 72 61 72 69 65   UVBELib device support librarie
000071E0  73 20 68 61 76 65 20 73  6F 6D 65 20 73 70 65 63  69 61 6C 20 63 61 73 65  20 63 6F 64 65 20 74 68  s have some special case code th
00007200  61 74 20 77 69 6C 6C 20  77 6F 72 6B 20 63 6F 72  72 65 63 74 6C 79 20 69  66 20 44 4F 53 34 47 57  at will work correctly if DOS4GW
00007220  20 69 73 20 75 73 65 64  2C 20 62 75 74 20 6E 6F  74 20 77 69 74 68 20 61  6E 79 20 6F 74 68 65 72   is used, but not with any other
00007240  20 44 4F 53 20 65 78 74  65 6E 64 65 72 2E 20 48  6F 77 65 76 65 72 20 79  6F 75 20 73 68 6F 75 6C   DOS extender. However you shoul
00007260  64 20 6D 61 6B 65 20 73  75 72 65 20 79 6F 75 20  63 6F 64 65 20 63 6F 72  72 65 63 74 6C 79 20 68  d make sure you code correctly h
00007280  61 6E 64 6C 65 73 20 74  68 65 73 65 20 73 69 74  75 61 74 69 6F 6E 73 2C  20 61 73 20 69 74 20 6D  andles these situations, as it m
000072A0  61 79 20 65 6E 64 20 75  70 20 72 75 6E 6E 69 6E  67 20 6F 6E 20 61 20 64  69 66 66 65 72 65 6E 74  ay end up running on a different
000072C0  20 56 42 45 20 69 6D 70  6C 65 6D 65 6E 74 61 74  69 6F 6E 20 74 68 61 74  20 64 6F 65 73 20 6E 6F   VBE implementation that does no
000072E0  74 20 68 61 76 65 20 73  70 65 63 69 61 6C 20 63  61 73 65 20 63 6F 64 65  20 66 6F 72 20 44 4F 53  t have special case code for DOS
00007300  34 47 57 2E 0D 50 6C 65  61 73 65 20 6C 6F 6F 6B  20 61 74 20 74 68 65 20  63 6F 64 65 20 69 6E 20  4GW.Please look at the code in 
00007320  74 68 65 20 53 56 47 41  53 44 4B 2E 43 20 61 6E  64 20 5F 53 56 47 41 53  44 4B 2E 41 53 4D 20 73  the SVGASDK.C and _SVGASDK.ASM s
00007340  6F 75 72 63 65 20 66 69  6C 65 73 20 69 6E 20 74  68 65 20 53 75 70 65 72  56 47 41 20 4B 69 74 20  ource files in the SuperVGA Kit 
00007360  74 68 61 74 20 70 65 72  66 6F 72 6D 20 74 68 69  73 20 66 75 6E 63 74 69  6F 6E 20 28 56 42 45 32  that perform this function (VBE2
00007380  30 5F 73 65 74 42 61 6E  6B 41 45 53 20 65 74 63  2E 29 2E 20 49 74 20 69  73 20 70 6F 73 73 69 62  0_setBankAES etc.). It is possib
000073A0  6C 65 20 74 6F 20 68 61  6E 64 6C 65 20 74 68 65  73 65 20 73 69 74 75 61  74 69 6F 6E 73 20 63 6F  le to handle these situations co
000073C0  72 72 65 63 74 6C 79 20  77 69 74 68 6F 75 74 20  69 6D 70 61 63 74 69 6E  67 20 74 68 65 20 70 65  rrectly without impacting the pe
000073E0  72 66 6F 72 6D 61 6E 63  65 20 6F 6E 20 63 6F 6E  74 72 6F 6C 6C 65 72 73  20 77 68 65 72 65 20 74  rformance on controllers where t
00007400  68 69 73 20 69 73 20 6E  6F 74 20 61 6E 20 69 73  73 75 65 2E 20 54 68 69  73 20 69 73 20 61 6C 73  his is not an issue. This is als
00007420  6F 20 61 6E 20 69 73 73  75 65 20 74 68 61 74 20  6E 65 65 64 73 20 74 6F  20 62 65 20 73 6F 6C 76  o an issue that needs to be solv
00007440  65 64 20 6E 6F 77 2C 20  62 65 63 61 75 73 65 20  74 68 65 72 65 20 61 72  65 20 61 20 6E 75 6D 62  ed now, because there are a numb
00007460  65 72 20 6F 66 20 6E 65  77 20 67 72 61 70 68 69  63 73 20 63 6F 6E 74 72  6F 6C 6C 65 72 73 20 63  er of new graphics controllers c
00007480  6F 6D 69 6E 67 20 6F 75  74 20 74 68 61 74 20 68  61 76 65 20 6F 6E 6C 79  20 6D 65 6D 6F 72 79 20  oming out that have only memory 
000074A0  6D 61 70 70 65 64 20 72  65 67 69 73 74 65 72 73  2E 0D 4E 4F 54 45 3A 20  54 68 65 20 53 63 69 54  mapped registers.NOTE: The SciT
000074C0  65 63 68 20 4D 47 4C 20  41 50 49 20 69 6E 73 75  6C 61 74 65 73 20 64 65  76 65 6C 6F 70 65 72 73  ech MGL API insulates developers
000074E0  20 66 72 6F 6D 20 74 68  69 73 20 69 73 73 75 65  2E 0D 0D 18 00 A4 D0 2F  A5 E0 3D A6 A0 05 A7 A0   from this issue..ñ/Ñα=ªáºá
00007500  05 A8 A0 05 A9 A0 05 AA  00 00 AB 01 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ¿áá¬..½....................
00007520  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
00007540  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
00007560  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
00007580  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
000075A0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
000075C0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
000075E0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
00007600  00 03 00 00 FE 0C 00 00  FF 0C 00 00 17 0D 00 00  18 0D 00 00 19 0D 00 00  1A 0D 00 00 79 19 00 00  ..... ..........y..
00007620  7F 19 00 00 1E 2A 00 00  29 2A 00 00 54 2A 00 00  55 2A 00 00 75 2A 00 00  7D 2A 00 00 0A 2B 00 00  ..*..)*..T*..U*..u*..}*..+..
00007640  18 2B 00 00 A5 2C 00 00  B6 2C 00 00 65 2D 00 00  76 2D 00 00 39 2E 00 00  46 2E 00 00 F2 2F 00 00  +..Ñ,..,..e-..v-..9...F.../..
00007660  F6 2F 00 00 55 30 00 00  59 30 00 00 39 36 00 00  47 36 00 00 02 3C 00 00  0E 3C 00 00 13 3C 00 00  ÷/..U0..Y0..96..G6..<..<..<..
00007680  1D 3C 00 00 1B 3D 00 00  28 3D 00 00 A1 40 00 00  A8 40 00 00 BE 41 00 00  C2 41 00 00 12 47 00 00  <..=..(=..í@..¿@..A..A..G..
000076A0  16 47 00 00 79 47 00 00  84 47 00 00 18 48 00 00  25 48 00 00 26 49 00 00  2E 49 00 00 A0 49 00 00  G..yG..äG..H..%H..&I...I..áI..
000076C0  AC 49 00 00 B1 49 00 00  BB 49 00 00 05 4E 00 00  0D 4E 00 00 DE 4E 00 00  EA 4E 00 00 5F 4F 00 00  ¼I..I..I..N..N..N..ΩN.._O..
000076E0  67 4F 00 00 6C 4F 00 00  76 4F 00 00 55 50 00 00  65 50 00 00 B0 53 00 00  B6 53 00 00 D4 54 00 00  gO..lO..vO..UP..eP..S..S..T..
00007700  DA 54 00 00 D9 57 00 00  E1 57 00 00 48 59 00 00  4C 59 00 00 97 69 00 00  9C 69 00 00 FC 6D 00 00  T..W..ßW..HY..LY..ùi..£i..m..
00007720  01 6E 00 00 B2 74 00 00  B7 74 00 00 F3 74 00 00  0D 75 00 00 00 FB 00 FB  F9 FB 00 F7 00 F7 00 F7  n..t..t..t..u.......
00007740  00 F7 00 F7 00 F7 00 F7  00 F7 00 F7 00 F7 00 F7  00 F7 00 F7 00 F7 00 F7  00 F7 00 F7 00 F7 00 F7  ................
00007760  00 F7 00 F7 00 F7 00 F7  00 F7 00 F7 00 F7 00 F7  00 F7 00 F7 00 F7 00 F7  00 F4 00 F4 00 F4 00 F2  ................
00007780  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
000077A0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
000077C0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
000077E0  00 00 00 00 02 75 01 00  04 55 81 56 81 00 02 56  81 00 03 61 00 04 08 75  01 44 04 00 00 00 00 4C  ....u.UüVü.Vü.a.uD....L
00007800  00 03 00 00 17 03 00 00  D0 03 00 00 0F 05 00 00  31 05 00 00 19 07 00 00  D4 08 00 00 EC 08 00 00  .........1........
00007820  2C 0A 00 00 31 0A 00 00  39 0A 00 00 3A 0A 00 00  41 0A 00 00 5F 0A 00 00  60 0A 00 00 6A 0A 00 00  ,..1..9..:..A.._..`..j..
00007840  99 0A 00 00 9A 0A 00 00  A4 0A 00 00 D6 0A 00 00  D7 0A 00 00 DF 0A 00 00  0B 0B 00 00 0C 0B 00 00  Ö..Ü..ñ............
00007860  15 0B 00 00 4B 0B 00 00  4C 0B 00 00 58 0B 00 00  7B 0B 00 00 7C 0B 00 00  86 0B 00 00 C5 0B 00 00  §..K..L..X..{..|..å....
00007880  C6 0B 00 00 D3 0B 00 00  1F 0C 00 00 20 0C 00 00  2B 0C 00 00 5A 0C 00 00  5B 0C 00 00 67 0C 00 00  ...... ..+..Z..[..g..
000078A0  96 0C 00 00 FE 00 01 90  24 7E 02 FC 00 03 90 24  12 01 FC 00 04 90 24 12  01 FA 00 01 90 24 50 01  û...É$~.É$.É$·.É$P
000078C0  FC 00 06 90 24 12 01 FC  00 06 90 24 12 01 FA 00  01 90 24 50 01 FC 00 04  90 24 12 01 F6 00 01 04  .É$.É$·.É$P.É$÷.
000078E0  08 0D 01 F6 00 01 85 13  0D 01 E2 00 01 85 13 0D  01 DE 00 01 04 08 12 01  DE 00 01 85 13 12 01 E2  ÷.àΓ.à..àΓ
00007900  00 01 85 13 12 01 DE 00  01 04 08 12 01 DE 00 01  85 13 12 01 E2 00 01 85  13 12 01 DE 00 01 04 08  .à..àΓ.à.
00007920  12 01 DE 00 01 85 13 12  01 E2 00 01 85 13 12 01  DE 00 01 04 08 12 01 DE  00 01 85 13 12 01 E2 00  .àΓ.à..àΓ.
00007940  01 85 13 12 01 DE 00 01  04 08 12 01 DE 00 01 85  13 12 01 E2 00 01 85 13  12 01 DE 00 01 04 08 12  à..àΓ.à.
00007960  01 DE 00 01 85 13 12 01  E2 00 01 85 13 12 01 DE  00 01 04 08 12 01 DE 00  02 85 13 12 01 E2 00 02  .àΓ.à..àΓ.
00007980  85 13 12 01 DE 00 01 04  08 12 01 DE 00 02 85 13  12 01 E2 00 02 85 13 12  01 DE 00 01 04 08 12 01  à..àΓ.à.
000079A0  DE 00 01 85 13 12 01 E2  00 01 85 13 12 01 DE 00  01 04 08 12 01 DE 00 01  85 13 12 01 03 0F 00 08  .àΓ.à..à.
000079C0  01 18 01 00 13 00 00 18  01 19 01 B8 6C 00 C0 01  00 A7 00 BB 0A 00 0A 00  0A 00 0A 00 09 00 09 00  ...l..º.......
000079E0  BE 08 00 02 C5 02 A1 0B  FE 1F 00 00 03 10 00 08  01 18 01 00 01 02 00 00  01 11 00 00 01 01 00 28  .í.........(
00007A00  96 0C 00 00 97 0C 00 00  A2 0C 00 00 C6 0C 00 00  C7 0C 00 00 D3 0C 00 00  F7 0C 00 00 F8 0C 00 00  û..ù..ó..........°..
00007A20  1B 0D 00 00 AC 0D 00 00  D7 0D 00 00 A3 0F 00 00  23 11 00 00 61 12 00 00  8D 12 00 00 9E 14 00 00  ..¼....ú..#..a..ì....
00007A40  4B 17 00 00 F5 18 00 00  59 1B 00 00 7C 1B 00 00  DE 1C 00 00 A4 1E 00 00  D1 1E 00 00 EF 20 00 00  K....Y..|....ñ.... ..
00007A60  3D 22 00 00 5B 22 00 00  3A 24 00 00 F9 26 00 00  12 27 00 00 94 28 00 00  94 2B 00 00 BE 2E 00 00  ="..["..:$..&..'..ö(..ö+.....
00007A80  B3 2F 00 00 19 31 00 00  44 31 00 00 63 33 00 00  60 34 00 00 7B 34 00 00  CF 35 00 00 EB 35 00 00  /..1..D1..c3..`4..{4..5..δ5..
00007AA0  82 38 00 00 EC 00 01 85  13 12 01 E8 00 01 04 08  12 01 E8 00 01 85 13 12  01 EC 00 01 85 13 12 01  é8...àΦ.Φ.à.à
00007AC0  E8 00 01 04 08 12 01 E8  00 01 85 13 12 01 EC 00  01 85 13 12 01 E6 00 01  90 24 D8 00 E4 00 02 90  Φ.Φ.à.àµ.É$.Σ.É
00007AE0  24 12 01 E2 00 01 90 24  50 01 E4 00 06 90 24 12  01 E4 00 05 90 24 12 01  E4 00 04 90 24 12 01 E2  $Γ.É$PΣ.É$Σ.É$Σ.É$Γ
00007B00  00 01 90 24 50 01 E4 00  07 90 24 12 01 E4 00 09  90 24 12 01 E4 00 05 90  24 12 01 E4 00 08 90 24  .É$PΣ.É$Σ.É$Σ.É$Σ.É$
00007B20  12 01 E2 00 01 90 24 50  01 E4 00 05 90 24 12 01  E4 00 06 90 24 12 01 E2  00 01 90 24 50 01 E4 00  Γ.É$PΣ.É$Σ.É$Γ.É$PΣ.
00007B40  07 90 24 12 01 E4 00 04  90 24 12 01 E2 00 01 90  24 50 01 E4 00 06 90 24  12 01 E4 00 09 90 24 12  É$Σ.É$Γ.É$PΣ.É$Σ.É$
00007B60  01 E2 00 01 90 24 50 01  E4 00 05 90 24 12 01 E4  00 09 90 24 12 01 E4 00  0A 90 24 12 01 E4 00 03  Γ.É$PΣ.É$Σ.É$Σ.É$Σ.
00007B80  90 24 12 01 E4 00 05 90  24 12 01 E2 00 01 90 24  50 01 E4 00 07 90 24 12  01 E4 00 03 90 24 12 01  É$Σ.É$Γ.É$PΣ.É$Σ.É$
00007BA0  E2 00 01 90 24 50 01 E4  00 04 90 24 12 01 E2 00  01 90 24 50 01 E4 00 08  90 24 12 01 00 00 00 00  Γ.É$PΣ.É$Γ.É$PΣ.É$....
00007BC0  00 00 00 00 01 02 00 00  01 11 00 00 01 12 00 00  03 0F 00 08 01 18 01 00  13 00 00 18 01 19 01 B8  ..............
00007BE0  6C 00 C0 01 00 A7 00 BB  0A 00 0A 00 0A 00 0A 00  09 00 09 00 BE 08 00 02  C5 02 A1 0B FE 1F 00 28  l..º........í.(
00007C00  82 38 00 00 93 3B 00 00  87 3D 00 00 A6 3D 00 00  A4 3F 00 00 60 42 00 00  7C 43 00 00 96 43 00 00  é8..ô;..ç=..ª=..ñ?..`B..|C..ûC..
00007C20  E5 45 00 00 E1 4A 00 00  95 4F 00 00 B7 4F 00 00  F9 50 00 00 9D 53 00 00  AE 55 00 00 7B 56 00 00  σE..ßJ..òO..O..P..¥S..«U..{V..
00007C40  A2 56 00 00 E3 58 00 00  9D 5A 00 00 59 5C 00 00  79 5F 00 00 7A 5F 00 00  A0 5F 00 00 6F 61 00 00  óV..πX..¥Z..Y\..y_..z_..á_..oa..
00007C60  1B 63 00 00 55 63 00 00  65 63 00 00 7B 63 00 00  A9 63 00 00 C6 63 00 00  CE 63 00 00 D6 63 00 00  c..Uc..ec..{c..c..c..c..c..
00007C80  E8 63 00 00 00 64 00 00  11 64 00 00 12 64 00 00  8C 65 00 00 7D 67 00 00  97 69 00 00 D7 69 00 00  Φc...d..d..d..îe..}g..ùi..i..
00007CA0  13 6A 00 00 23 6A 00 00  39 6A 00 00 67 6A 00 00  84 6A 00 00 FE 00 0A 90  24 12 01 FE 00 06 90 24  j..#j..9j..gj..äj...É$.É$
00007CC0  12 01 FC 00 01 90 24 50  01 FE 00 06 90 24 12 01  FE 00 09 90 24 12 01 FE  00 04 90 24 12 01 FC 00  .É$P.É$.É$.É$.
00007CE0  01 90 24 50 01 FE 00 07  90 24 12 01 FE 00 0F 90  24 12 01 FE 00 0E 90 24  12 01 FC 00 01 90 24 50  É$P.É$.É$.É$.É$P
00007D00  01 FE 00 04 90 24 12 01  FE 00 08 90 24 12 01 FE  00 07 90 24 12 01 FE 00  03 90 24 12 01 FC 00 01  .É$.É$.É$.É$.
00007D20  90 24 50 01 FE 00 07 90  24 12 01 FE 00 06 90 24  12 01 FE 00 06 90 24 12  01 FE 00 0A 90 24 12 01  É$P.É$.É$.É$.É$
00007D40  FE 00 01 90 24 12 01 FA  00 00 00 00 00 00 FE 00  06 90 24 12 01 FE 00 05  90 24 12 01 FC 00 01 90  .É$·.......É$.É$.É
00007D60  24 50 01 F8 00 01 90 24  0A 01 F6 00 01 90 24 12  01 F6 00 01 90 24 12 01  F6 00 01 90 24 12 01 F6  $P°.É$÷.É$÷.É$÷.É$÷
00007D80  00 01 90 24 12 01 F6 00  01 90 24 12 01 F6 00 01  90 24 12 01 F6 00 01 90  24 12 01 F6 00 01 90 24  .É$÷.É$÷.É$÷.É$÷.É$
00007DA0  12 01 F6 00 01 90 24 12  01 FE 00 05 90 24 12 01  FE 00 06 90 24 12 01 FE  00 07 90 24 12 01 FE 00  ÷.É$.É$.É$.É$.
00007DC0  01 90 24 12 01 FC 00 01  90 24 50 01 F8 00 01 90  24 0A 01 F6 00 01 90 24  12 01 F6 00 01 90 24 12  É$.É$P°.É$÷.É$÷.É$
00007DE0  01 F6 00 01 90 24 12 01  00 00 00 00 01 14 00 00  01 13 00 00 01 01 00 00  01 02 00 00 01 11 00 2C  ÷.É$.............,
00007E00  84 6A 00 00 8C 6A 00 00  94 6A 00 00 A6 6A 00 00  BE 6A 00 00 CF 6A 00 00  D0 6A 00 00 5C 6C 00 00  äj..îj..öj..ªj..j..j..j..\l..
00007E20  FC 6D 00 00 3C 6E 00 00  76 6E 00 00 86 6E 00 00  A3 6E 00 00 BB 6E 00 00  CC 6E 00 00 CD 6E 00 00  m..<n..vn..ån..ún..n..n..n..
00007E40  A4 71 00 00 05 73 00 00  B2 74 00 00 F2 74 00 00  F3 74 00 00 FE 00 01 90  24 12 01 FE 00 01 90 24  ñq..s..t..t..t...É$.É$
00007E60  12 01 FE 00 01 90 24 12  01 FE 00 01 90 24 12 01  FE 00 01 90 24 12 01 FE  00 01 90 24 12 01 FC 00  .É$.É$.É$.É$.
00007E80  05 90 24 12 01 FC 00 06  90 24 12 01 FC 00 01 90  24 12 01 FA 00 01 90 24  50 01 F8 00 01 90 24 0A  É$.É$.É$·.É$P°.É$
00007EA0  01 FE 00 01 90 24 12 01  FE 00 01 90 24 12 01 FE  00 01 90 24 12 01 FE 00  01 90 24 12 01 FC 00 09  .É$.É$.É$.É$.
00007EC0  90 24 12 01 FC 00 05 90  24 12 01 FC 00 06 90 24  12 01 FC 00 01 90 24 12  01 FC 00 01 90 24 12 01  É$.É$.É$.É$.É$
00007EE0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
00007F00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
00007F20  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
00007F40  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
00007F60  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
00007F80  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
00007FA0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
00007FC0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
00007FE0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  01 13 00 00 01 02 00 00  01 11 00 00 01 14 00 14  .......................
00008000  0E 00 15 00 08 00 01 00  4B 00 0F 00 00 00 00 00  1A 00 00 40 F1 FF 02 00  1A 00 06 4E 6F 72 6D 61  .§...K........@± ..Norma
00008020  6C 00 02 00 00 00 03 00  61 09 04 00 34 00 01 40  01 00 12 01 34 00 09 48  65 61 64 69 6E 67 20 31  l.....a.4.@.4.Heading 1
00008040  00 00 0F 00 01 00 05 02  08 01 15 E0 01 16 E0 01  28 19 08 00 0B 00 56 81  5D 02 00 63 30 00 6B 1C  ....§αα(..Vü].c0.k
00008060  00 00 28 00 02 40 01 00  12 01 28 00 09 48 65 61  64 69 6E 67 20 32 00 00  0A 00 02 00 08 01 15 78  ..(.@.(.Heading 2....§x
00008080  00 16 F0 00 06 00 5D 02  00 63 1C 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 22 00 41 40 F2 FF  ...].c...............".A@ 
000080A0  A1 00 22 00 16 44 65 66  61 75 6C 74 20 50 61 72  61 67 72 61 70 68 20 46  6F 6E 74 00 00 00 00 00  í.".Default Paragraph Font.....
000080C0  00 00 00 00 00 00 20 00  FE 4F 01 00 F2 00 20 00  09 54 61 62 6C 65 54 65  78 74 00 00 02 00 0F 00  ...... .O.. .TableText....
000080E0  06 00 5D 03 00 63 16 00  2A 00 FE 4F 01 00 02 01  2A 00 11 53 74 72 75 63  54 61 62 6C 65 48 65 61  .].c.*.O.*.StrucTableHea
00008100  64 69 6E 67 00 00 02 00  10 00 08 00 55 81 5D 03  00 63 16 00 24 00 FE 4F  01 00 12 01 24 00 08 41  ding.....Uü].c.$.O.$.A
00008120  62 4E 6F 72 6D 61 6C 00  08 00 11 00 11 D0 02 16  DC 00 06 00 5D 03 00 63  16 00 2A 00 22 40 01 00  bNormal.....].c.*."@.
00008140  02 00 2A 00 07 43 61 70  74 69 6F 6E 00 00 0B 00  12 00 11 D0 02 15 78 00  16 78 00 00 08 00 55 81  .*.Caption....§x.x...Uü
00008160  5D 03 00 63 12 00 22 00  FE 4F 11 01 32 01 22 00  09 4C 69 73 74 54 69 74  6C 65 00 00 05 00 13 00  ].c.".O2".ListTitle....
00008180  16 00 00 00 04 00 55 81  56 81 2C 00 FE 4F 01 00  42 01 2C 00 11 53 69 6E  67 6C 65 53 70 61 63 65  ....UüVü,.O.B,.SingleSpace
000081A0  49 6E 64 65 6E 74 00 00  05 00 14 00 11 38 04 00  06 00 5D 03 00 63 16 00  00 00 00 00 F3 71 00 00  Indent....8..].c.....q..
000081C0  04 00 F3 74 00 00 00 00  FF FF FF FF 0C 00 04 21  FF FF 01 00 00 21 FF FF  02 00 04 20 FF FF 03 00  .t....    .!  ..!  .   .
000081E0  00 21 FF FF 04 00 04 20  FF FF 05 00 00 20 FF FF  06 00 04 20 FF FF 07 00  00 20 FF FF 08 00 04 20  .!  .   ..   .   ..   . 
00008200  FF FF 09 00 00 21 FF FF  0A 00 04 20 FF FF 0B 00  00 20 FF FF 0C 00 00 00  00 00 2C 07 00 00 DB 10    ..!  .   ..   .....,..
00008220  00 00 A4 1B 00 00 35 27  00 00 CF 32 00 00 60 3F  00 00 95 4C 00 00 42 58  00 00 7B 5C 00 00 73 65  ..ñ..5'..2..`?..òL..BX..{\..se
00008240  00 00 D1 6D 00 00 F3 71  00 00 00 00 99 01 00 00  01 00 C3 00 00 00 02 00  4B 02 00 00 03 00 5F 01  ..m..q....Ö.......K..._
00008260  00 00 04 00 1C 00 00 00  05 00 1C 01 00 00 06 00  22 00 00 00 07 00 17 01  00 00 08 00 25 00 00 00  ..........".......%...
00008280  09 00 24 01 00 00 0A 00  D3 00 00 00 0B 00 00 00  00 00 00 00 00 00 17 00  00 00 D0 00 00 00 0F 02  .$.....................
000082A0  00 00 31 02 00 00 19 04  00 00 D4 05 00 00 EC 05  00 00 2C 07 00 00 3A 07  00 00 60 07 00 00 9A 07  ..1........,..:..`..Ü
000082C0  00 00 D7 07 00 00 0C 08  00 00 4C 08 00 00 7C 08  00 00 C6 08 00 00 20 09  00 00 5B 09 00 00 97 09  ......L..|.... ..[..ù
000082E0  00 00 C7 09 00 00 F8 09  00 00 1B 0A 00 00 AC 0A  00 00 D7 0A 00 00 A3 0C  00 00 23 0E 00 00 61 0F  ....°....¼....ú..#..a
00008300  00 00 8D 0F 00 00 9E 11  00 00 4B 14 00 00 F5 15  00 00 59 18 00 00 7C 18  00 00 DE 19 00 00 A4 1B  ..ì....K..§..Y..|....ñ
00008320  00 00 D1 1B 00 00 EF 1D  00 00 3D 1F 00 00 5B 1F  00 00 3A 21 00 00 F9 23  00 00 12 24 00 00 94 25  ......=..[..:!..#..$..ö%
00008340  00 00 94 28 00 00 BE 2B  00 00 B3 2C 00 00 19 2E  00 00 44 2E 00 00 63 30  00 00 60 31 00 00 7B 31  ..ö(..+..,.....D...c0..`1..{1
00008360  00 00 CF 32 00 00 EB 32  00 00 82 35 00 00 93 38  00 00 87 3A 00 00 A6 3A  00 00 A4 3C 00 00 60 3F  ..2..δ2..é5..ô8..ç:..ª:..ñ<..`?
00008380  00 00 7C 40 00 00 96 40  00 00 E5 42 00 00 E1 47  00 00 95 4C 00 00 B7 4C  00 00 F9 4D 00 00 9D 50  ..|@..û@..σB..ßG..òL..L..M..¥P
000083A0  00 00 AE 52 00 00 7B 53  00 00 A2 53 00 00 E3 55  00 00 9D 57 00 00 59 59  00 00 F3 71 00 00 06 00  ..«R..{S..óS..πU..¥W..YY..q...
000083C0  01 00 9E 00 40 00 9E 00  40 00 16 00 02 00 9E 00  40 00 9E 00 40 00 16 00  02 00 9E 00 40 00 9F 00  ..@..@....@..@....@.ƒ.
000083E0  27 00 9F 00 24 00 9F 00  24 00 9F 00 24 00 9F 00  24 00 9F 00 24 00 9F 00  24 00 9F 00 24 00 9F 00  '.ƒ.$.ƒ.$.ƒ.$.ƒ.$.ƒ.$.ƒ.$.ƒ.$.ƒ.
00008400  24 00 9F 00 24 00 9F 00  24 00 9F 00 24 00 9F 00  24 00 9E 00 4E 00 9E 00  40 00 16 00 02 00 9E 00  $.ƒ.$.ƒ.$.ƒ.$.ƒ.$..N..@....
00008420  40 00 9E 00 40 00 9E 00  40 00 16 00 02 00 9E 00  40 00 9E 00 40 00 9E 00  40 00 9E 00 40 00 16 00  @..@..@....@..@..@..@..
00008440  02 00 9E 00 40 00 9E 00  40 00 16 00 02 00 9E 00  40 00 9E 00 40 00 16 00  02 00 9E 00 40 00 9E 00  ..@..@....@..@....@..
00008460  40 00 16 00 02 00 9E 00  40 00 9E 00 40 00 9E 00  40 00 9E 00 40 00 9E 00  40 00 16 00 02 00 9E 00  @....@..@..@..@..@....
00008480  40 00 9E 00 40 00 16 00  02 00 9E 00 40 00 16 00  02 00 9E 00 40 00 9E 00  40 00 9E 00 40 00 16 00  @..@....@....@..@..@..
000084A0  02 00 9E 00 40 00 9E 00  40 00 9E 00 40 00 16 00  02 00 9E 00 40 00 9E 00  40 00 9E 00 40 00 16 00  ..@..@..@....@..@..@..
000084C0  02 00 9E 00 40 00 9E 00  40 00 9E 00 40 00 9E 00  40 00 16 00 02 00 9E 00  40 00 9E 00 40 00 9E 00  ..@..@..@..@....@..@..
000084E0  40 00 06 00 00 00 00 03  00 00 0D 75 00 00 3B 00  00 03 00 00 96 0C 00 00  82 38 00 00 84 6A 00 00  @.......u..;....û..é8..äj..
00008500  F3 74 00 00 3C 00 3D 00  3E 00 3F 00 FE 09 00 00  17 0A 00 00 19 0A 00 00  F3 71 00 00 13 0C 14 FF  t..<.=.>.?.......q.. 
00008520  95 80 24 02 0D 5F 54 6F  63 33 34 38 38 38 30 35  35 39 0D 5F 54 6F 63 33  35 35 38 39 31 31 37 34  òÇ$_Toc348880559_Toc355891174
00008540  0D 5F 54 6F 63 33 37 30  37 32 30 32 35 39 0D 5F  54 6F 63 33 35 35 38 39  31 31 37 35 0D 5F 54 6F  _Toc370720259_Toc355891175_To
00008560  63 33 37 30 37 32 30 32  36 30 0D 5F 54 6F 63 33  35 35 38 39 31 31 37 36  0D 5F 54 6F 63 33 37 30  c370720260_Toc355891176_Toc370
00008580  37 32 30 32 36 31 0D 5F  54 6F 63 33 35 35 38 39  31 31 37 37 0D 5F 54 6F  63 33 37 30 37 32 30 32  720261_Toc355891177_Toc3707202
000085A0  36 32 0D 5F 54 6F 63 33  35 35 38 39 31 31 37 38  0D 5F 54 6F 63 33 37 30  37 32 30 32 36 33 0D 5F  62_Toc355891178_Toc370720263_
000085C0  54 6F 63 33 37 30 37 32  30 32 36 34 0D 5F 54 6F  63 33 37 30 37 32 30 32  36 35 0D 5F 54 6F 63 33  Toc370720264_Toc370720265_Toc3
000085E0  35 35 38 39 31 31 37 39  0D 5F 54 6F 63 33 37 30  37 32 30 32 36 36 0D 5F  54 6F 63 33 35 35 38 39  55891179_Toc370720266_Toc35589
00008600  31 31 38 30 0D 5F 54 6F  63 33 37 30 37 32 30 32  36 37 0D 5F 54 6F 63 33  35 35 38 39 31 31 38 31  1180_Toc370720267_Toc355891181
00008620  0D 5F 54 6F 63 33 37 30  37 32 30 32 36 38 0D 5F  54 6F 63 33 35 35 38 39  31 31 38 32 0D 5F 54 6F  _Toc370720268_Toc355891182_To
00008640  63 33 37 30 37 32 30 32  36 39 0D 5F 54 6F 63 33  35 35 38 39 31 31 38 33  0D 5F 54 6F 63 33 37 30  c370720269_Toc355891183_Toc370
00008660  37 32 30 32 37 30 0D 5F  54 6F 63 33 35 35 38 39  31 31 38 34 0D 5F 54 6F  63 33 37 30 37 32 30 32  720270_Toc355891184_Toc3707202
00008680  37 31 0D 5F 54 6F 63 33  35 35 38 39 31 31 38 35  0D 5F 54 6F 63 33 37 30  37 32 30 32 37 32 0D 5F  71_Toc355891185_Toc370720272_
000086A0  54 6F 63 33 34 38 38 38  30 35 36 30 0D 5F 54 6F  63 33 35 35 38 39 31 31  38 36 0D 5F 54 6F 63 33  Toc348880560_Toc355891186_Toc3
000086C0  37 30 37 32 30 32 37 33  0D 5F 54 6F 63 33 34 38  39 30 31 37 35 30 0D 5F  54 6F 63 33 35 35 38 39  70720273_Toc348901750_Toc35589
000086E0  31 32 31 39 0D 5F 54 6F  63 33 37 31 33 39 31 30  38 34 0D 5F 54 6F 63 33  34 38 39 30 31 37 35 31  1219_Toc371391084_Toc348901751
00008700  0D 5F 54 6F 63 33 35 35  38 39 31 32 32 30 0D 5F  54 6F 63 33 37 31 33 39  31 30 38 35 0D 5F 54 6F  _Toc355891220_Toc371391085_To
00008720  63 33 34 38 39 30 31 37  35 32 0D 5F 54 6F 63 33  35 35 38 39 31 32 32 31  0D 5F 54 6F 63 33 37 31  c348901752_Toc355891221_Toc371
00008740  33 39 31 30 38 36 17 00  00 00 0F 02 00 00 0F 02  00 00 D4 05 00 00 D4 05  00 00 AC 0A 00 00 AC 0A  391086...........¼..¼
00008760  00 00 61 0F 00 00 61 0F  00 00 59 18 00 00 59 18  00 00 A4 1B 00 00 3D 1F  00 00 F9 23 00 00 F9 23  ..a..a..Y..Y..ñ..=..#..#
00008780  00 00 19 2E 00 00 19 2E  00 00 60 31 00 00 60 31  00 00 CF 32 00 00 CF 32  00 00 87 3A 00 00 87 3A  ........`1..`1..2..2..ç:..ç:
000087A0  00 00 7C 40 00 00 7C 40  00 00 95 4C 00 00 95 4C  00 00 7B 53 00 00 7B 53  00 00 7B 53 00 00 1B 60  ..|@..|@..òL..òL..{S..{S..{S..`
000087C0  00 00 1B 60 00 00 1B 60  00 00 D7 66 00 00 D7 66  00 00 D7 66 00 00 FC 6A  00 00 FC 6A 00 00 3C 6B  ..`..`..f..f..f..j..j..<k
000087E0  00 00 F5 71 00 00 08 00  00 00 00 00 00 00 01 00  00 00 02 00 00 00 03 00  00 00 04 00 00 00 05 00  ..q......................
00008800  00 00 06 00 00 00 07 00  00 00 0B 00 00 00 09 00  00 00 0A 00 00 00 0C 00  00 00 0D 00 00 00 0E 00  ........................
00008820  00 00 0F 00 00 00 10 00  00 00 11 00 00 00 12 00  00 00 13 00 00 00 14 00  00 00 15 00 00 00 16 00  ....................§....
00008840  00 00 17 00 00 00 18 00  00 00 19 00 00 00 1A 00  00 00 1B 00 00 00 1C 00  00 00 1D 00 00 00 1E 00  ........................
00008860  00 00 1F 00 00 00 20 00  00 00 21 00 00 00 22 00  00 00 23 00 00 00 24 00  00 00 25 00 00 00 26 00  ..... ...!..."...#...$...%...&.
00008880  00 00 30 02 00 00 30 02  00 00 EB 05 00 00 EB 05  00 00 D6 0A 00 00 D6 0A  00 00 8C 0F 00 00 8C 0F  ..0..0..δ..δ......î..î
000088A0  00 00 59 18 00 00 7B 18  00 00 D0 1B 00 00 5A 1F  00 00 5A 1F 00 00 11 24  00 00 11 24 00 00 43 2E  ..Y..{....Z..Z..$..$..C.
000088C0  00 00 43 2E 00 00 7A 31  00 00 7A 31 00 00 EA 32  00 00 EA 32 00 00 A5 3A  00 00 A5 3A 00 00 95 40  ..C...z1..z1..Ω2..Ω2..Ñ:..Ñ:..ò@
000088E0  00 00 95 40 00 00 B6 4C  00 00 B6 4C 00 00 A1 53  00 00 A1 53 00 00 A1 53  00 00 54 60 00 00 54 60  ..ò@..L..L..íS..íS..íS..T`..T`
00008900  00 00 54 60 00 00 12 67  00 00 12 67 00 00 12 67  00 00 75 6B 00 00 75 6B  00 00 75 6B 00 00 F5 71  ..T`..g..g..g..uk..uk..uk..q
00008920  00 00 00 00 00 00 46 05  00 00 4E 05 00 00 FE 09  00 00 1A 0A 00 00 1D 19  00 00 29 19 00 00 7F 1D  ......F..N........)..
00008940  00 00 85 1D 00 00 7A 25  00 00 89 25 00 00 1E 27  00 00 28 27 00 00 A5 29  00 00 B6 29 00 00 65 2A  ..à..z%..ë%..'..('..Ñ)..)..e*
00008960  00 00 75 2A 00 00 39 2B  00 00 46 2B 00 00 0A 2D  00 00 1C 2D 00 00 39 33  00 00 47 33 00 00 B3 34  ..u*..9+..F+..-..-..93..G3..4
00008980  00 00 BC 34 00 00 9F 36  00 00 B1 36 00 00 B6 36  00 00 C9 36 00 00 02 39  00 00 0E 39 00 00 13 39  ..4..ƒ6..6..6..6..9..9..9
000089A0  00 00 1D 39 00 00 1B 3A  00 00 27 3A 00 00 26 46  00 00 2E 46 00 00 A0 46  00 00 AC 46 00 00 B1 46  ..9..:..':..&F...F..áF..¼F..F
000089C0  00 00 BB 46 00 00 9A 47  00 00 A5 47 00 00 05 4B  00 00 0D 4B 00 00 DE 4B  00 00 EA 4B 00 00 5F 4C  ..F..ÜG..ÑG..K..K..K..ΩK.._L
000089E0  00 00 67 4C 00 00 6C 4C  00 00 76 4C 00 00 55 4D  00 00 65 4D 00 00 D9 54  00 00 E1 54 00 00 BA 60  ..gL..lL..vL..UM..eM..T..ßT..`
00008A00  00 00 C0 60 00 00 D6 60  00 00 DC 60 00 00 DD 60  00 00 E6 60 00 00 D7 64  00 00 E4 64 00 00 78 67  ..`..`..`..`..µ`..d..Σd..xg
00008A20  00 00 7E 67 00 00 94 67  00 00 9A 67 00 00 9B 67  00 00 A4 67 00 00 8F 6B  00 00 98 6B 00 00 EB 6C  ..~g..ög..Üg..¢g..ñg..Åk..ÿk..δl
00008A40  00 00 F7 6C 00 00 C1 6E  00 00 C8 6E 00 00 33 70  00 00 3E 70 00 00 F5 71  00 00 07 00 1C 00 07 00  ..l..n..n..3p..>p..q.....
00008A60  07 00 07 00 1C 00 07 00  1C 00 07 00 1C 00 07 00  1C 00 07 00 1C 00 07 00  1C 00 07 00 1C 00 07 00  ................
00008A80  1C 00 07 00 1C 00 07 00  1C 00 07 00 1C 00 07 00  1C 00 07 00 1C 00 07 00  1C 00 07 00 1C 00 07 00  ................
00008AA0  1C 00 07 00 1C 00 07 00  1C 00 07 00 1C 00 07 00  1C 00 07 00 1C 00 07 00  1C 00 07 00 1C 00 07 00  ................
00008AC0  1C 00 07 00 1C 00 07 00  1C 00 07 00 1C 00 07 00  1C 00 07 00 1C 00 07 00  1C 00 07 00 1C 00 07 00  ................
00008AE0  1C 00 07 00 1C 00 07 00  1C 00 07 00 1C 00 07 00  1C 00 07 00 3F 00 09 52  6F 62 20 42 61 68 61 6D  ..........?.Rob Baham
00008B00  32 5C 5C 53 45 52 56 45  52 5C 41 44 4D 49 4E 5C  64 6F 63 73 5C 4D 47 4C  5C 55 73 69 6E 67 20 74  2\\SERVER\ADMIN\docs\MGL\Using t
00008B20  68 65 20 53 75 70 65 72  56 47 41 20 4B 69 74 2E  64 6F 63 FF 40 48 50 20  4C 61 73 65 72 4A 65 74  he SuperVGA Kit.doc @HP LaserJet
00008B40  20 34 4D 20 50 6C 75 73  00 5C 5C 48 50 5F 4E 65  74 77 6F 72 6B 5F 50 72  69 6E 74 65 72 73 5C 48   4M Plus.\\HP_Network_Printers\H
00008B60  50 4C 41 53 45 52 34 4D  00 48 50 50 43 4C 35 4D  53 00 48 50 20 4C 61 73  65 72 4A 65 74 20 34 4D  PLASER4M.HPPCL5MS.HP LaserJet 4M
00008B80  20 50 6C 75 73 00 48 50  20 4C 61 73 65 72 4A 65  74 20 34 4D 20 50 6C 75  73 00 00 00 00 00 00 00   Plus.HP LaserJet 4M Plus.......
00008BA0  00 00 00 00 00 00 00 04  01 04 94 00 40 00 03 67  00 06 01 00 01 00 00 00  00 00 00 00 01 00 09 01  .......ö.@.g..........
00008BC0  58 02 01 00 01 00 58 02  04 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  X..X.......................
00008BE0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
00008C00  00 00 00 00 00 00 00 00  00 00 06 01 00 00 02 00  00 00 00 00 00 00 00 00  00 00 01 00 40 00 4D 53  ........................@.MS
00008C20  55 44 4E 03 48 50 20 4C  61 73 65 72 4A 65 74 20  34 4D 20 50 6C 75 73 00  00 00 00 00 00 00 00 00  UDNHP LaserJet 4M Plus.........
00008C40  00 00 00 00 E4 01 00 00  00 00 00 00 3B 01 00 00  00 00 04 00 64 00 0A 00  00 00 48 50 20 4C 61 73  ....Σ......;.....d....HP Las
00008C60  65 72 4A 65 74 20 34 4D  20 50 6C 75 73 00 00 00  00 00 00 00 00 00 00 00  00 00 00 04 01 04 94 00  erJet 4M Plus..............ö.
00008C80  40 00 03 67 00 06 01 00  01 00 00 00 00 00 00 00  01 00 09 01 58 02 01 00  01 00 58 02 04 00 00 00  @.g..........X..X...
00008CA0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
00008CC0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 06 01  ..............................
00008CE0  00 00 02 00 00 00 00 00  00 00 00 00 00 00 01 00  40 00 4D 53 55 44 4E 03  48 50 20 4C 61 73 65 72  ..............@.MSUDNHP Laser
00008D00  4A 65 74 20 34 4D 20 50  6C 75 73 00 00 00 00 00  00 00 00 00 00 00 00 00  E4 01 00 00 00 00 00 00  Jet 4M Plus.............Σ......
00008D20  3B 01 00 00 00 00 04 00  64 00 0A 00 00 00 03 80  01 00 00 00 00 00 00 00  00 00 07 00 01 00 7D 01  ;.....d....Ç...........}
00008D40  00 00 00 00 00 00 00 00  00 00 00 00 44 00 15 16  90 01 00 00 54 69 6D 65  73 20 4E 65 77 20 52 6F  ............D.§É..Times New Ro
00008D60  6D 61 6E 00 0C 16 90 01  02 00 53 79 6D 62 6F 6C  00 0B 26 90 01 00 00 41  72 69 61 6C 00 12 16 90  man.É.Symbol.&É..Arial.É
00008D80  01 00 00 42 6F 6F 6B 20  41 6E 74 69 71 75 61 00  22 00 04 00 31 08 80 18  00 00 D0 02 00 00 68 01  ..Book Antiqua."..1Ç....h
00008DA0  00 00 00 00 8A FA 0A 86  E5 33 0B 66 00 00 00 00  04 00 02 00 00 00 7B 10  00 00 F5 5D 00 00 0C 00  ....è·åσ3f........{..]...
00008DC0  30 00 00 00 04 00 83 10  C8 00 00 00 00 00 00 00  00 00 00 00 0C 00 01 00  00 00 01 00 00 00 00 00  0....â....................
00008DE0  00 00 21 03 00 00 00 00  3C 00 00 00 16 55 73 69  6E 67 20 74 68 65 20 53  75 70 65 72 56 47 41 20  ..!....<...Using the SuperVGA 
00008E00  4B 69 74 00 00 00 09 52  6F 62 20 42 61 68 61 6D  09 52 6F 62 20 42 61 68  61 6D 00 00 00 00 00 00  Kit...Rob BahamRob Baham......
00008E20  00 00 00 00                                                                                         ....
[ RETURN TO DIRECTORY ]