]> 4ch.mooo.com Git - 16.git/commitdiff
added another library ^^
authorsparky4 <sparky4@cock.li>
Wed, 18 Nov 2015 19:16:36 +0000 (13:16 -0600)
committersparky4 <sparky4@cock.li>
Wed, 18 Nov 2015 19:16:36 +0000 (13:16 -0600)
51 files changed:
16/tauron/ASM_SRC/CLEAR.ASM [new file with mode: 0755]
16/tauron/ASM_SRC/DUAL.ASM [new file with mode: 0755]
16/tauron/ASM_SRC/FONT1.ASM [new file with mode: 0755]
16/tauron/ASM_SRC/FONT2.ASM [new file with mode: 0755]
16/tauron/ASM_SRC/MAIN.ASM [new file with mode: 0755]
16/tauron/ASM_SRC/MODES.ASM [new file with mode: 0755]
16/tauron/ASM_SRC/MODES.INC [new file with mode: 0755]
16/tauron/ASM_SRC/TESTS.ASM [new file with mode: 0755]
16/tauron/C_SRC/CLEAR.CPP [new file with mode: 0755]
16/tauron/C_SRC/DUAL.CPP [new file with mode: 0755]
16/tauron/C_SRC/FONT1.H [new file with mode: 0755]
16/tauron/C_SRC/FONT2.H [new file with mode: 0755]
16/tauron/C_SRC/MAINC.CPP [new file with mode: 0755]
16/tauron/C_SRC/MODES.CPP [new file with mode: 0755]
16/tauron/C_SRC/MODES_C.INC [new file with mode: 0755]
16/tauron/C_SRC/PALETTE.INC [new file with mode: 0755]
16/tauron/C_SRC/TAURON.H [new file with mode: 0755]
16/tauron/C_SRC/TESTS.CPP [new file with mode: 0755]
16/tauron/FEDIT.EXE [new file with mode: 0755]
16/tauron/FEDIT.TXT [new file with mode: 0755]
16/tauron/MAIN.EXE [new file with mode: 0755]
16/tauron/MAINC.EXE [new file with mode: 0755]
16/tauron/README.TXT [new file with mode: 0755]
16/tauron/USAGE.TXT [new file with mode: 0755]
16/tauron/WHATSNEW.TXT [new file with mode: 0755]
16/tauron/tauron30.zip [new file with mode: 0755]
16/tauron30/ASM_SRC/CLEAR.ASM [new file with mode: 0755]
16/tauron30/ASM_SRC/DUAL.ASM [new file with mode: 0755]
16/tauron30/ASM_SRC/FONT1.ASM [new file with mode: 0755]
16/tauron30/ASM_SRC/FONT2.ASM [new file with mode: 0755]
16/tauron30/ASM_SRC/MAIN.ASM [new file with mode: 0755]
16/tauron30/ASM_SRC/MODES.ASM [new file with mode: 0755]
16/tauron30/ASM_SRC/MODES.INC [new file with mode: 0755]
16/tauron30/ASM_SRC/TESTS.ASM [new file with mode: 0755]
16/tauron30/C_SRC/CLEAR.CPP [new file with mode: 0755]
16/tauron30/C_SRC/DUAL.CPP [new file with mode: 0755]
16/tauron30/C_SRC/FONT1.H [new file with mode: 0755]
16/tauron30/C_SRC/FONT2.H [new file with mode: 0755]
16/tauron30/C_SRC/MAINC.CPP [new file with mode: 0755]
16/tauron30/C_SRC/MODES.CPP [new file with mode: 0755]
16/tauron30/C_SRC/MODES_C.INC [new file with mode: 0755]
16/tauron30/C_SRC/PALETTE.INC [new file with mode: 0755]
16/tauron30/C_SRC/TAURON.H [new file with mode: 0755]
16/tauron30/C_SRC/TESTS.CPP [new file with mode: 0755]
16/tauron30/FEDIT.EXE [new file with mode: 0755]
16/tauron30/FEDIT.TXT [new file with mode: 0755]
16/tauron30/MAIN.EXE [new file with mode: 0755]
16/tauron30/MAINC.EXE [new file with mode: 0755]
16/tauron30/README.TXT [new file with mode: 0755]
16/tauron30/USAGE.TXT [new file with mode: 0755]
16/tauron30/WHATSNEW.TXT [new file with mode: 0755]

diff --git a/16/tauron/ASM_SRC/CLEAR.ASM b/16/tauron/ASM_SRC/CLEAR.ASM
new file mode 100755 (executable)
index 0000000..f7b4bbe
--- /dev/null
@@ -0,0 +1,241 @@
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=-                                                                         -=\r
+;=-                   Tauron VGA Utilities Version 3.0                      -=\r
+;=-                      Released September 20, 1998                        -=\r
+;=-                                                                         -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+;=- All Rights Reserved.                     =-= that you put my name some- -=\r
+;=-                                          =-= where in your credits.     -=\r
+;=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- I assume no responsibility whatsoever for any effect that this package, -=\r
+;=- the information contained therein or the use thereof has on you, your   -=\r
+;=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+;=- you or your existance. No warranty is provided nor implied with this    -=\r
+;=- source code.                                                            -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+TEXTCLEAR PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+\r
+   MOV AX,0B800H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV AH,byte ptr [bp+4]\r
+   MOV AL,' '\r
+   MOV CX,Mode.width_bytes\r
+   CLD\r
+   REP STOSW\r
+\r
+   POP BP\r
+   RET 2\r
+TEXTCLEAR ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+CLEAR_B8000H PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+   PUSHA\r
+\r
+   MOV AX,0B800H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV AX,WORD PTR [BP+4]\r
+   CLD\r
+   MOV CX,Mode.width_bytes\r
+   REP STOSW\r
+\r
+   POPA\r
+   POP BP\r
+   RET 2\r
+CLEAR_B8000H ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+; Mode 0Dh clear screen\r
+CLEAR0DH PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+\r
+   MOV AX,0A000H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV CX,2000H\r
+CLEAR_LOOP:\r
+   MOV DX,03CEH\r
+   MOV AX,0FF08H\r
+   OUT DX,AX\r
+\r
+   MOV EAX,0\r
+   XCHG DWORD PTR ES:[DI],EAX\r
+\r
+   MOV DX,03C4H\r
+   MOV AH,BYTE PTR [BP+4]\r
+   MOV AL,2\r
+   OUT DX,AX\r
+\r
+   MOV DWORD PTR ES:[DI],0FFFFFFFFH\r
+\r
+   MOV AX,0F02H\r
+   OUT DX,AX\r
+\r
+   MOV DX,03CEH\r
+   MOV AX,0FF08h\r
+   OUT DX,AX\r
+\r
+   ADD DI,4\r
+   LOOP CLEAR_LOOP\r
+\r
+   POP BP\r
+   RET 2\r
+CLEAR0DH ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+; Mode 0Eh clear screen\r
+CLEAR0EH PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+\r
+   MOV AX,0A000H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV CX,4000H\r
+CLEAR_LOOP2:\r
+   MOV DX,03CEH\r
+   MOV AX,0FF08H\r
+   OUT DX,AX\r
+\r
+   MOV EAX,0\r
+   XCHG DWORD PTR ES:[DI],EAX\r
+\r
+   MOV DX,03C4H\r
+   MOV AH,BYTE PTR [BP+4]\r
+   MOV AL,2\r
+   OUT DX,AX\r
+\r
+   MOV DWORD PTR ES:[DI],0FFFFFFFFH\r
+\r
+   MOV AX,0F02H\r
+   OUT DX,AX\r
+\r
+   MOV DX,03CEH\r
+   MOV AX,0FF08h\r
+   OUT DX,AX\r
+\r
+   ADD DI,4\r
+   LOOP CLEAR_LOOP2\r
+\r
+   POP BP\r
+   RET 2\r
+CLEAR0EH ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+CLEAR11H PROC\r
+   MOV AX,0A000H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV AX,0FFFFH\r
+   CLD\r
+   MOV CX,4B00H\r
+   REP STOSW\r
+   RET\r
+CLEAR11H ENDP\r
+\r
+; 0d 0e 11 have bytes /2\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+PLANARCLEAR PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+\r
+   MOV AX,0A000H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV CX,Mode.width_bytes\r
+   SHR CX,1\r
+CLEAR_LOOP3:\r
+\r
+   MOV DX,03CEH\r
+   MOV AX,0FF08H\r
+   OUT DX,AX\r
+\r
+   MOV AX,0\r
+   XCHG WORD PTR ES:[DI],AX\r
+\r
+   MOV DX,03C4H\r
+   MOV AH,byte ptr [bp+4]\r
+   MOV AL,2\r
+   OUT DX,AX\r
+\r
+   MOV WORD PTR ES:[DI],0FFFFH\r
+\r
+   MOV AX,0F02H\r
+   OUT DX,AX\r
+\r
+   MOV DX,03CEH\r
+   MOV AX,0FF08h\r
+   OUT DX,AX\r
+\r
+   ADD DI,2\r
+   LOOP CLEAR_LOOP3\r
+\r
+   POP BP\r
+   RET 2\r
+PLANARCLEAR ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+CLEAR13H PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+\r
+   MOV AX,0A000H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV AL,byte ptr [bp+4]\r
+   MOV AH,AL\r
+   CLD\r
+   MOV CX,8000H\r
+   REP STOSW\r
+\r
+   POP BP\r
+   RET 2\r
+CLEAR13H ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+UNCHAINEDCLEAR PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+\r
+   mov   dx, 03C4h         ; 03c4h\r
+   mov   al, 2             ; Map Mask Register\r
+   out   dx, al\r
+   inc   dx\r
+   mov   al,00001111B      ; Select all planes to write to\r
+   out   dx, al            ; Doing this to clear all planes at once\r
+\r
+   mov   ax,0A000H\r
+   mov   es, ax\r
+   XOR DI,DI               ; set es:di = Screen Mem\r
+   mov ah,byte ptr [bp+4]  ; move the color into ah\r
+   mov al,ah               ; copy the value to al\r
+   mov cx,Mode.width_bytes ; Number of words\r
+   SHR CX,1\r
+   cld\r
+   rep   stosw             ; clear it\r
+\r
+   POP BP\r
+   RET 2\r
+UNCHAINEDCLEAR ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
diff --git a/16/tauron/ASM_SRC/DUAL.ASM b/16/tauron/ASM_SRC/DUAL.ASM
new file mode 100755 (executable)
index 0000000..0ee3105
--- /dev/null
@@ -0,0 +1,275 @@
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=-                                                                         -=\r
+;=-                   Tauron VGA Utilities Version 3.0                      -=\r
+;=-                      Released September 20, 1998                        -=\r
+;=-                                                                         -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+;=- All Rights Reserved.                     =-= that you put my name some- -=\r
+;=-                                          =-= where in your credits.     -=\r
+;=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- I assume no responsibility whatsoever for any effect that this package, -=\r
+;=- the information contained therein or the use thereof has on you, your   -=\r
+;=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+;=- you or your existance. No warranty is provided nor implied with this    -=\r
+;=- source code.                                                            -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+; 3C4H, 03H\r
+; Bit positions for font maps:\r
+;\r
+; +--7--+--6--+--5--+--4--+--3--+--2--+--1--+--0--+\r
+; |     |     | SAH | SBH |    SA     |    SB     |\r
+; +-----+-----+-----+-----+-----+-----+-----+-----+\r
+;\r
+; SA  - bits 1, 0 of Character Map A\r
+; SAH - bit 2 (high order) of Charcter Map A\r
+;\r
+; SB  - bits 1, 0 of Character Map B\r
+; SBH - bit 2 (high order) of Charcter Map B\r
+;\r
+\r
+; Points to fonts for Map A              Memory Address\r
+DFM_MAPA_FONT1     EQU     00H          ;  0K\r
+DFM_MAPA_FONT2     EQU     04H          ; 16K\r
+DFM_MAPA_FONT3     EQU     08H          ; 32K\r
+DFM_MAPA_FONT4     EQU     0CH          ; 48K\r
+DFM_MAPA_FONT5     EQU     20H          ;  8K\r
+DFM_MAPA_FONT6     EQU     24H          ; 24K\r
+DFM_MAPA_FONT7     EQU     28H          ; 40K\r
+DFM_MAPA_FONT8     EQU     2CH          ; 56K\r
+\r
+; Points to fonts for Map B\r
+DFM_MAPB_FONT1     EQU     00H          ;  0K\r
+DFM_MAPB_FONT2     EQU     01H          ; 16K\r
+DFM_MAPB_FONT3     EQU     02H          ; 32K\r
+DFM_MAPB_FONT4     EQU     03H          ; 48K\r
+DFM_MAPB_FONT5     EQU     10H          ;  8K\r
+DFM_MAPB_FONT6     EQU     11H          ; 24K\r
+DFM_MAPB_FONT7     EQU     12H          ; 40K\r
+DFM_MAPB_FONT8     EQU     13H          ; 56K\r
+\r
+\r
+; To set dual font mode, just set the character map select register to point\r
+; to 2 different fonts.  There can be up to 8 fonts resident in memory at\r
+; once but only 2 can be active at a time.\r
+;\r
+; ** NOTE ** If you set both font maps the same you are no longer in dual font\r
+; mode.  But what this allows you to do is to put up to 8 fonts in VGA memory\r
+; and switch between them at any time.\r
+;\r
+; Both fonts were made with my font editor.  I just read the BIOS and \r
+; modified the second font so a solid line goes through the middle of it.\r
+;\r
+; This procedure sets up dual font mode and loads 2 fonts into video memory.\r
+SETDUAL PROC\r
+\r
+   ; Sequencer address\r
+   MOV DX,SEQ_ADDR\r
+\r
+   ; 2 different font maps\r
+   MOV AH,DFM_MAPA_FONT1\r
+   OR AH,DFM_MAPB_FONT5\r
+\r
+   ; Sequencer register\r
+   MOV AL,03H\r
+\r
+   ; Send it\r
+   OUT DX,AX\r
+\r
+   ; Load font 1 into 0K\r
+   PUSH 16                 ; Bytes per character\r
+   PUSH 0                  ; Offset of font in Video Memory\r
+   PUSH 0A000H\r
+   PUSH OFFSET FONT1       ; Offset of Font in our Data Segment\r
+   PUSH DS\r
+   CALL LOADFONT\r
+\r
+   ; Load font 2 into 8K\r
+   PUSH 16                 ; Bytes per character\r
+   PUSH 0                  ; Offset of font in Video Memory\r
+   PUSH 0A200H\r
+   PUSH OFFSET FONT2       ; Offset of Font in our Data Segment\r
+   PUSH DS\r
+   CALL LOADFONT\r
+\r
+   RET\r
+SETDUAL ENDP\r
+\r
+; This procedure reset the character map select register to point to only\r
+; one font.\r
+UNSETDUAL PROC\r
+\r
+   ; Set both fonts to point to font 1\r
+   MOV DX,SEQ_ADDR\r
+   MOV AX,0003H\r
+   OUT DX,AX\r
+\r
+   RET\r
+UNSETDUAL ENDP\r
+\r
+; In dual font modes, the palette is in effect half of what it is.  The \r
+; bottom 8 colors for the first font, and the top 8 colors for the second \r
+; font.\r
+;\r
+; What I do here is to set them to the same 8 colors.\r
+; Black, Blue, Green, Red, Purple, Yellow, Light Gray, and White\r
+;\r
+SETDUALPALETTE PROC\r
+\r
+   PUSH 0\r
+   PUSH 0\r
+   PUSH 0\r
+   PUSH 0\r
+   CALL SETPAL\r
+\r
+   PUSH 42\r
+   PUSH 0\r
+   PUSH 0\r
+   PUSH 1\r
+   CALL SETPAL\r
+\r
+   PUSH 0\r
+   PUSH 42\r
+   PUSH 0\r
+   PUSH 2\r
+   CALL SETPAL\r
+\r
+   PUSH 42\r
+   PUSH 42\r
+   PUSH 0\r
+   PUSH 3\r
+   CALL SETPAL\r
+\r
+   PUSH 0\r
+   PUSH 0\r
+   PUSH 42\r
+   PUSH 4\r
+   CALL SETPAL\r
+\r
+   PUSH 21\r
+   PUSH 63\r
+   PUSH 63\r
+   PUSH 5\r
+   CALL SETPAL\r
+\r
+   PUSH 42\r
+   PUSH 42\r
+   PUSH 42\r
+   PUSH 6\r
+   CALL SETPAL\r
+\r
+   PUSH 63\r
+   PUSH 63\r
+   PUSH 63\r
+   PUSH 7\r
+   CALL SETPAL\r
+\r
+   PUSH 0\r
+   PUSH 0\r
+   PUSH 0\r
+   PUSH 8\r
+   CALL SETPAL\r
+\r
+   PUSH 42\r
+   PUSH 0\r
+   PUSH 0\r
+   PUSH 9\r
+   CALL SETPAL\r
+\r
+   PUSH 0\r
+   PUSH 42\r
+   PUSH 0\r
+   PUSH 10\r
+   CALL SETPAL\r
+\r
+   PUSH 42\r
+   PUSH 42\r
+   PUSH 0\r
+   PUSH 11\r
+   CALL SETPAL\r
+\r
+   PUSH 0\r
+   PUSH 0\r
+   PUSH 42\r
+   PUSH 12\r
+   CALL SETPAL\r
+\r
+   PUSH 21\r
+   PUSH 63\r
+   PUSH 63\r
+   PUSH 13\r
+   CALL SETPAL\r
+\r
+   PUSH 42\r
+   PUSH 42\r
+   PUSH 42\r
+   PUSH 14\r
+   CALL SETPAL\r
+\r
+   PUSH 63\r
+   PUSH 63\r
+   PUSH 63\r
+   PUSH 15\r
+   CALL SETPAL\r
+\r
+   RET\r
+SETDUALPALETTE ENDP\r
+\r
+DUALTEST PROC\r
+\r
+   MOV SI,OFFSET MODE03H\r
+   CALL SETMODE\r
+\r
+   CALL SETDUAL\r
+   CALL SETDUALPALETTE\r
+\r
+   PUSH 1FH        \r
+   CALL TEXTCLEAR\r
+\r
+   ; Attribute to print text in.\r
+   ;\r
+   ; In dual font mode, attrubute bit 3 is the deciding factor as to which\r
+   ; font is printed.  0001X111B where X is 0 for font 1 or 1 for font 2.\r
+   ; The Charcter Map Select Register determines where font 1 and font 2\r
+   ; reside.\r
+   ; 00011111B - Font 2, Blue Background, with color 7 text.\r
+   MOV ATT, 1Fh    \r
+\r
+   MOV BX,5\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_D\r
+   CALL PRINTSTRING\r
+   MOV BX,6\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_E\r
+   CALL PRINTSTRING\r
+   MOV BX,7\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_F\r
+   CALL PRINTSTRING\r
+\r
+   ; 00010111B - Font 1, Blue Background, with color 7 text.\r
+   MOV ATT, 17h\r
+\r
+   MOV BX,0\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_D\r
+   CALL PRINTSTRING\r
+   MOV BX,1\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_E\r
+   CALL PRINTSTRING\r
+   MOV BX,2\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_F\r
+   CALL PRINTSTRING\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+\r
+   CALL UNSETDUAL\r
+   RET\r
+DUALTEST ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
diff --git a/16/tauron/ASM_SRC/FONT1.ASM b/16/tauron/ASM_SRC/FONT1.ASM
new file mode 100755 (executable)
index 0000000..772d612
--- /dev/null
@@ -0,0 +1,266 @@
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- Created with FEDIT written by Kinfira (Jeffrey Morgan)                  -=\r
+;=-                                                                         -=\r
+;=-                   Tauron VGA Utilities Version 1.0                      -=\r
+;=-                        Released June 14, 1998                           -=\r
+;=-                                                                         -=\r
+;=- Font Width:  8                                                          -=\r
+;=- Font Height: 16                                                         -=\r
+;=- Bytes per character:  16                                                -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,07EH,081H,0A5H,081H,081H,0BDH,099H,081H,081H,07EH,000H,000H,000H,000H\r
+DB 000H,000H,07EH,0FFH,0DBH,0FFH,0FFH,0C3H,0E7H,0FFH,0FFH,07EH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,06CH,0FEH,0FEH,0FEH,0FEH,07CH,038H,010H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,010H,038H,07CH,0FEH,07CH,038H,010H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,018H,03CH,03CH,0E7H,0E7H,0E7H,099H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,018H,03CH,07EH,0FFH,0FFH,07EH,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,018H,03CH,03CH,018H,000H,000H,000H,000H,000H,000H\r
+DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0E7H,0C3H,0C3H,0E7H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH\r
+DB 000H,000H,000H,000H,000H,03CH,066H,042H,042H,066H,03CH,000H,000H,000H,000H,000H\r
+DB 0FFH,0FFH,0FFH,0FFH,0FFH,0C3H,099H,0BDH,0BDH,099H,0C3H,0FFH,0FFH,0FFH,0FFH,0FFH\r
+DB 000H,000H,01EH,00EH,01AH,032H,078H,0CCH,0CCH,0CCH,0CCH,078H,000H,000H,000H,000H\r
+DB 000H,000H,03CH,066H,066H,066H,066H,03CH,018H,07EH,018H,018H,000H,000H,000H,000H\r
+DB 000H,000H,03FH,033H,03FH,030H,030H,030H,030H,070H,0F0H,0E0H,000H,000H,000H,000H\r
+DB 000H,000H,07FH,063H,07FH,063H,063H,063H,063H,067H,0E7H,0E6H,0C0H,000H,000H,000H\r
+DB 000H,000H,000H,018H,018H,0DBH,03CH,0E7H,03CH,0DBH,018H,018H,000H,000H,000H,000H\r
+DB 000H,080H,0C0H,0E0H,0F0H,0F8H,0FEH,0F8H,0F0H,0E0H,0C0H,080H,000H,000H,000H,000H\r
+DB 000H,002H,006H,00EH,01EH,03EH,0FEH,03EH,01EH,00EH,006H,002H,000H,000H,000H,000H\r
+DB 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,07EH,03CH,018H,000H,000H,000H,000H\r
+DB 000H,000H,066H,066H,066H,066H,066H,066H,066H,000H,066H,066H,000H,000H,000H,000H\r
+DB 000H,000H,07FH,0DBH,0DBH,0DBH,07BH,01BH,01BH,01BH,01BH,01BH,000H,000H,000H,000H\r
+DB 000H,07CH,0C6H,060H,038H,06CH,0C6H,0C6H,06CH,038H,00CH,0C6H,07CH,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,0FEH,0FEH,0FEH,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,07EH,03CH,018H,07EH,000H,000H,000H\r
+DB 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,018H,018H,018H,000H,000H,000H,000H\r
+DB 000H,000H,018H,018H,018H,018H,018H,018H,018H,07EH,03CH,018H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,018H,00CH,0FEH,00CH,018H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,030H,060H,0FEH,060H,030H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0C0H,0C0H,0C0H,0C0H,0FEH,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,028H,06CH,0FEH,06CH,028H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,010H,038H,038H,07CH,07CH,0FEH,0FEH,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,0FEH,0FEH,07CH,07CH,038H,038H,010H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,018H,03CH,03CH,03CH,018H,018H,018H,000H,018H,018H,000H,000H,000H,000H\r
+DB 000H,066H,066H,066H,024H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,06CH,06CH,0FEH,06CH,06CH,06CH,0FEH,06CH,06CH,000H,000H,000H,000H\r
+DB 018H,018H,07CH,0C6H,0C2H,0C0H,07CH,006H,086H,0C6H,07CH,018H,018H,000H,000H,000H\r
+DB 000H,000H,000H,000H,0C2H,0C6H,00CH,018H,030H,060H,0C6H,086H,000H,000H,000H,000H\r
+DB 000H,000H,038H,06CH,06CH,038H,076H,0DCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,030H,030H,030H,060H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,00CH,018H,030H,030H,030H,030H,030H,030H,018H,00CH,000H,000H,000H,000H\r
+DB 000H,000H,030H,018H,00CH,00CH,00CH,00CH,00CH,00CH,018H,030H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,066H,03CH,0FFH,03CH,066H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,018H,018H,07EH,018H,018H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,018H,018H,018H,030H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FEH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,018H,018H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,002H,006H,00CH,018H,030H,060H,0C0H,080H,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,0C6H,0CEH,0D6H,0D6H,0E6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,018H,038H,078H,018H,018H,018H,018H,018H,018H,07EH,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,006H,00CH,018H,030H,060H,0C0H,0C6H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,006H,006H,03CH,006H,006H,006H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,00CH,01CH,03CH,06CH,0CCH,0FEH,00CH,00CH,00CH,01EH,000H,000H,000H,000H\r
+DB 000H,000H,0FEH,0C0H,0C0H,0C0H,0FCH,00EH,006H,006H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,038H,060H,0C0H,0C0H,0FCH,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,0FEH,0C6H,006H,006H,00CH,018H,030H,030H,030H,030H,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,0C6H,0C6H,07CH,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,0C6H,0C6H,07EH,006H,006H,006H,00CH,078H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,018H,018H,000H,000H,000H,018H,018H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,018H,018H,000H,000H,000H,018H,018H,030H,000H,000H,000H,000H\r
+DB 000H,000H,000H,006H,00CH,018H,030H,060H,030H,018H,00CH,006H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,0FEH,000H,000H,0FEH,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,060H,030H,018H,00CH,006H,00CH,018H,030H,060H,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,0C6H,00CH,018H,018H,018H,000H,018H,018H,000H,000H,000H,000H\r
+DB 000H,000H,000H,07CH,0C6H,0C6H,0DEH,0DEH,0DEH,0DCH,0C0H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,010H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,0FCH,066H,066H,066H,07CH,066H,066H,066H,066H,0FCH,000H,000H,000H,000H\r
+DB 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0C0H,0C0H,0C2H,066H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,0F8H,06CH,066H,066H,066H,066H,066H,066H,06CH,0F8H,000H,000H,000H,000H\r
+DB 000H,000H,0FEH,066H,062H,068H,078H,068H,060H,062H,066H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,0FEH,066H,062H,068H,078H,068H,060H,060H,060H,0F0H,000H,000H,000H,000H\r
+DB 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0DEH,0C6H,0C6H,066H,03AH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,03CH,018H,018H,018H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,01EH,00CH,00CH,00CH,00CH,00CH,0CCH,0CCH,0CCH,078H,000H,000H,000H,000H\r
+DB 000H,000H,0E6H,066H,06CH,06CH,078H,078H,06CH,066H,066H,0E6H,000H,000H,000H,000H\r
+DB 000H,000H,0F0H,060H,060H,060H,060H,060H,060H,062H,066H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0EEH,0FEH,0FEH,0D6H,0C6H,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0E6H,0F6H,0FEH,0DEH,0CEH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,038H,06CH,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,06CH,038H,000H,000H,000H,000H\r
+DB 000H,000H,0FCH,066H,066H,066H,07CH,060H,060H,060H,060H,0F0H,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0D6H,0DEH,07CH,00CH,00EH,000H,000H\r
+DB 000H,000H,0FCH,066H,066H,066H,07CH,06CH,066H,066H,066H,0E6H,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,0C6H,060H,038H,00CH,006H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,07EH,07EH,05AH,018H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,06CH,038H,010H,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0D6H,0D6H,0FEH,06CH,06CH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,06CH,06CH,038H,038H,06CH,06CH,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,066H,066H,066H,066H,03CH,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,0FEH,0C6H,086H,00CH,018H,030H,060H,0C2H,0C6H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,03CH,030H,030H,030H,030H,030H,030H,030H,030H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,080H,0C0H,0E0H,070H,038H,01CH,00EH,006H,002H,000H,000H,000H,000H\r
+DB 000H,000H,03CH,00CH,00CH,00CH,00CH,00CH,00CH,00CH,00CH,03CH,000H,000H,000H,000H\r
+DB 010H,038H,06CH,0C6H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,0FFH,000H,000H\r
+DB 030H,030H,018H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,0E0H,060H,060H,078H,06CH,066H,066H,066H,066H,0DCH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,07CH,0C6H,0C0H,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,01CH,00CH,00CH,03CH,06CH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,038H,06CH,064H,060H,0F0H,060H,060H,060H,060H,0F0H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,076H,0CCH,0CCH,0CCH,0CCH,0CCH,07CH,00CH,0CCH,078H,000H\r
+DB 000H,000H,0E0H,060H,060H,06CH,076H,066H,066H,066H,066H,0E6H,000H,000H,000H,000H\r
+DB 000H,000H,018H,018H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,006H,006H,000H,00EH,006H,006H,006H,006H,006H,006H,066H,066H,03CH,000H\r
+DB 000H,000H,0E0H,060H,060H,066H,06CH,078H,078H,06CH,066H,0E6H,000H,000H,000H,000H\r
+DB 000H,000H,038H,018H,018H,018H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0ECH,0FEH,0D6H,0D6H,0D6H,0D6H,0D6H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0DCH,066H,066H,066H,066H,066H,066H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0DCH,066H,066H,066H,066H,066H,07CH,060H,060H,0F0H,000H\r
+DB 000H,000H,000H,000H,000H,076H,0CCH,0CCH,0CCH,0CCH,0CCH,07CH,00CH,00CH,01EH,000H\r
+DB 000H,000H,000H,000H,000H,0DCH,076H,062H,060H,060H,060H,0F0H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,07CH,0C6H,060H,038H,00CH,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,010H,030H,030H,0FCH,030H,030H,030H,030H,036H,01CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,066H,066H,066H,066H,066H,03CH,018H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0C6H,0C6H,0C6H,0D6H,0D6H,0FEH,06CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0C6H,06CH,038H,038H,038H,06CH,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07EH,006H,00CH,0F8H,000H\r
+DB 000H,000H,000H,000H,000H,0FEH,0CCH,018H,030H,060H,0C6H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,00EH,018H,018H,018H,070H,018H,018H,018H,018H,00EH,000H,000H,000H,000H\r
+DB 000H,000H,018H,018H,018H,018H,000H,018H,018H,018H,018H,018H,000H,000H,000H,000H\r
+DB 000H,000H,070H,018H,018H,018H,00EH,018H,018H,018H,018H,070H,000H,000H,000H,000H\r
+DB 000H,000H,076H,0DCH,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,010H,038H,06CH,0C6H,0C6H,0C6H,0FEH,000H,000H,000H,000H,000H\r
+DB 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0C0H,0C2H,066H,03CH,00CH,006H,07CH,000H,000H\r
+DB 000H,000H,0CCH,0CCH,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,00CH,018H,030H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,010H,038H,06CH,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,0CCH,0CCH,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,060H,030H,018H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,038H,06CH,038H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,03CH,066H,060H,060H,066H,03CH,00CH,006H,03CH,000H,000H,000H\r
+DB 000H,010H,038H,06CH,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,060H,030H,018H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,066H,066H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,018H,03CH,066H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,060H,030H,018H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,0C6H,0C6H,010H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 038H,06CH,038H,000H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 018H,030H,060H,000H,0FEH,066H,060H,07CH,060H,060H,066H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0CCH,076H,036H,07EH,0D8H,0D8H,06EH,000H,000H,000H,000H\r
+DB 000H,000H,03EH,06CH,0CCH,0CCH,0FEH,0CCH,0CCH,0CCH,0CCH,0CEH,000H,000H,000H,000H\r
+DB 000H,010H,038H,06CH,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,060H,030H,018H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,030H,078H,0CCH,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,060H,030H,018H,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07EH,006H,00CH,078H,000H\r
+DB 000H,0C6H,0C6H,000H,038H,06CH,0C6H,0C6H,0C6H,0C6H,06CH,038H,000H,000H,000H,000H\r
+DB 000H,0C6H,0C6H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,018H,018H,03CH,066H,060H,060H,060H,066H,03CH,018H,018H,000H,000H,000H,000H\r
+DB 000H,038H,06CH,064H,060H,0F0H,060H,060H,060H,060H,0E6H,0FCH,000H,000H,000H,000H\r
+DB 000H,000H,066H,066H,03CH,018H,07EH,018H,07EH,018H,018H,018H,000H,000H,000H,000H\r
+DB 000H,0F8H,0CCH,0CCH,0F8H,0C4H,0CCH,0DEH,0CCH,0CCH,0CCH,0C6H,000H,000H,000H,000H\r
+DB 000H,00EH,01BH,018H,018H,018H,07EH,018H,018H,018H,018H,018H,0D8H,070H,000H,000H\r
+DB 000H,018H,030H,060H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,00CH,018H,030H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,018H,030H,060H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,018H,030H,060H,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,076H,0DCH,000H,0DCH,066H,066H,066H,066H,066H,066H,000H,000H,000H,000H\r
+DB 076H,0DCH,000H,0C6H,0E6H,0F6H,0FEH,0DEH,0CEH,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,03CH,06CH,06CH,03EH,000H,07EH,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,038H,06CH,06CH,038H,000H,07CH,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,030H,030H,000H,030H,030H,060H,0C0H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,0FEH,0C0H,0C0H,0C0H,0C0H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,0FEH,006H,006H,006H,006H,000H,000H,000H,000H,000H\r
+DB 000H,0C0H,0C0H,0C2H,0C6H,0CCH,018H,030H,060H,0CEH,093H,006H,00CH,01FH,000H,000H\r
+DB 000H,0C0H,0C0H,0C2H,0C6H,0CCH,018H,030H,066H,0CEH,09AH,03FH,006H,00FH,000H,000H\r
+DB 000H,000H,018H,018H,000H,018H,018H,018H,03CH,03CH,03CH,018H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,033H,066H,0CCH,066H,033H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0CCH,066H,033H,066H,0CCH,000H,000H,000H,000H,000H,000H\r
+DB 011H,044H,011H,044H,011H,044H,011H,044H,011H,044H,011H,044H,011H,044H,011H,044H\r
+DB 055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH\r
+DB 0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H\r
+DB 018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,018H,018H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,0F8H,018H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 036H,036H,036H,036H,036H,036H,036H,0F6H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FEH,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 000H,000H,000H,000H,000H,0F8H,018H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 036H,036H,036H,036H,036H,0F6H,006H,0F6H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 000H,000H,000H,000H,000H,0FEH,006H,0F6H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,0F6H,006H,0FEH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 036H,036H,036H,036H,036H,036H,036H,0FEH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 018H,018H,018H,018H,018H,0F8H,018H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,018H,018H,01FH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 018H,018H,018H,018H,018H,018H,018H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,018H,018H,01FH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 018H,018H,018H,018H,018H,018H,018H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,01FH,018H,01FH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 036H,036H,036H,036H,036H,036H,036H,037H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,037H,030H,03FH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,03FH,030H,037H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,0F7H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0FFH,000H,0F7H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,037H,030H,037H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 000H,000H,000H,000H,000H,0FFH,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 036H,036H,036H,036H,036H,0F7H,000H,0F7H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 018H,018H,018H,018H,018H,0FFH,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 036H,036H,036H,036H,036H,036H,036H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0FFH,000H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FFH,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,036H,036H,03FH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 018H,018H,018H,018H,018H,01FH,018H,01FH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,01FH,018H,01FH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 000H,000H,000H,000H,000H,000H,000H,03FH,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,036H,036H,0FFH,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 018H,018H,018H,018H,018H,0FFH,018H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,018H,018H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,01FH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH\r
+DB 0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H\r
+DB 00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH\r
+DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,076H,0DCH,0D8H,0D8H,0D8H,0DCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0FCH,0C6H,0FCH,0C6H,0C6H,0FCH,0C0H,0C0H,0C0H,000H,000H\r
+DB 000H,000H,0FEH,0C6H,0C6H,0C0H,0C0H,0C0H,0C0H,0C0H,0C0H,0C0H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,080H,0FEH,06CH,06CH,06CH,06CH,06CH,06CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,0FEH,0C6H,060H,030H,018H,030H,060H,0C6H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,07EH,0D8H,0D8H,0D8H,0D8H,0D8H,070H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,066H,066H,066H,066H,066H,07CH,060H,060H,0C0H,000H,000H,000H\r
+DB 000H,000H,000H,000H,076H,0DCH,018H,018H,018H,018H,018H,018H,000H,000H,000H,000H\r
+DB 000H,000H,000H,07EH,018H,03CH,066H,066H,066H,03CH,018H,07EH,000H,000H,000H,000H\r
+DB 000H,000H,000H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,06CH,038H,000H,000H,000H,000H\r
+DB 000H,000H,038H,06CH,0C6H,0C6H,0C6H,06CH,06CH,06CH,06CH,0EEH,000H,000H,000H,000H\r
+DB 000H,000H,01EH,030H,018H,00CH,03EH,066H,066H,066H,066H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,07EH,0DBH,0DBH,0DBH,07EH,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,003H,006H,07EH,0CFH,0DBH,0F3H,07EH,060H,0C0H,000H,000H,000H,000H\r
+DB 000H,000H,01CH,030H,060H,060H,07CH,060H,060H,060H,030H,01CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,0FEH,000H,000H,0FEH,000H,000H,0FEH,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,018H,018H,07EH,018H,018H,000H,000H,0FFH,000H,000H,000H,000H\r
+DB 000H,000H,000H,030H,018H,00CH,006H,00CH,018H,030H,000H,07EH,000H,000H,000H,000H\r
+DB 000H,000H,000H,00CH,018H,030H,060H,030H,018H,00CH,000H,07EH,000H,000H,000H,000H\r
+DB 000H,000H,00EH,01BH,01BH,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,018H,018H,018H,0D8H,0D8H,0D8H,070H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,018H,018H,000H,07EH,000H,018H,018H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,076H,0DCH,000H,076H,0DCH,000H,000H,000H,000H,000H,000H\r
+DB 000H,038H,06CH,06CH,038H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,018H,018H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,018H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,00FH,00CH,00CH,00CH,00CH,00CH,0ECH,06CH,06CH,03CH,01CH,000H,000H,000H,000H\r
+DB 000H,0D8H,06CH,06CH,06CH,06CH,06CH,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,070H,098H,030H,060H,0C8H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,07CH,07CH,07CH,07CH,07CH,07CH,07CH,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
diff --git a/16/tauron/ASM_SRC/FONT2.ASM b/16/tauron/ASM_SRC/FONT2.ASM
new file mode 100755 (executable)
index 0000000..9c84bf9
--- /dev/null
@@ -0,0 +1,266 @@
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- Created with FEDIT written by Kinfira (Jeffrey Morgan)                  -=\r
+;=-                                                                         -=\r
+;=-                   Tauron VGA Utilities Version 1.0                      -=\r
+;=-                        Released June 14, 1998                           -=\r
+;=-                                                                         -=\r
+;=- Font Width:  8                                                          -=\r
+;=- Font Height: 16                                                         -=\r
+;=- Bytes per character:  16                                                -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,07EH,081H,0A5H,081H,081H,0BDH,099H,081H,081H,07EH,000H,000H,000H,000H\r
+DB 000H,000H,07EH,0FFH,0DBH,0FFH,0FFH,0C3H,0E7H,0FFH,0FFH,07EH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,06CH,0FEH,0FEH,0FEH,0FEH,07CH,038H,010H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,010H,038H,07CH,0FEH,07CH,038H,010H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,018H,03CH,03CH,0E7H,0E7H,0E7H,099H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,018H,03CH,07EH,0FFH,0FFH,07EH,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,018H,03CH,03CH,018H,000H,000H,000H,000H,000H,000H\r
+DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0E7H,0C3H,0C3H,0E7H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH\r
+DB 000H,000H,000H,000H,000H,03CH,066H,042H,042H,066H,03CH,000H,000H,000H,000H,000H\r
+DB 0FFH,0FFH,0FFH,0FFH,0FFH,0C3H,099H,0BDH,0BDH,099H,0C3H,0FFH,0FFH,0FFH,0FFH,0FFH\r
+DB 000H,000H,01EH,00EH,01AH,032H,078H,0CCH,0CCH,0CCH,0CCH,078H,000H,000H,000H,000H\r
+DB 000H,000H,03CH,066H,066H,066H,066H,03CH,018H,07EH,018H,018H,000H,000H,000H,000H\r
+DB 000H,000H,03FH,033H,03FH,030H,030H,030H,030H,070H,0F0H,0E0H,000H,000H,000H,000H\r
+DB 000H,000H,07FH,063H,07FH,063H,063H,063H,063H,067H,0E7H,0E6H,0C0H,000H,000H,000H\r
+DB 000H,000H,000H,018H,018H,0DBH,03CH,0E7H,03CH,0DBH,018H,018H,000H,000H,000H,000H\r
+DB 000H,080H,0C0H,0E0H,0F0H,0F8H,0FEH,0F8H,0F0H,0E0H,0C0H,080H,000H,000H,000H,000H\r
+DB 000H,002H,006H,00EH,01EH,03EH,0FEH,03EH,01EH,00EH,006H,002H,000H,000H,000H,000H\r
+DB 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,07EH,03CH,018H,000H,000H,000H,000H\r
+DB 000H,000H,066H,066H,066H,066H,066H,066H,066H,000H,066H,066H,000H,000H,000H,000H\r
+DB 000H,000H,07FH,0DBH,0DBH,0DBH,07BH,01BH,01BH,01BH,01BH,01BH,000H,000H,000H,000H\r
+DB 000H,07CH,0C6H,060H,038H,06CH,0C6H,0C6H,06CH,038H,00CH,0C6H,07CH,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,0FEH,0FEH,0FEH,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,07EH,03CH,018H,07EH,000H,000H,000H\r
+DB 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,018H,018H,018H,000H,000H,000H,000H\r
+DB 000H,000H,018H,018H,018H,018H,018H,018H,018H,07EH,03CH,018H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,018H,00CH,0FEH,00CH,018H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,030H,060H,0FEH,060H,030H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0C0H,0C0H,0C0H,0C0H,0FEH,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,028H,06CH,0FEH,06CH,028H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,010H,038H,038H,07CH,07CH,0FEH,0FEH,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,0FEH,0FEH,07CH,07CH,038H,038H,010H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,018H,03CH,03CH,03CH,018H,018H,018H,000H,018H,018H,000H,000H,000H,000H\r
+DB 000H,066H,066H,066H,024H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,06CH,06CH,0FEH,06CH,06CH,06CH,0FEH,06CH,06CH,000H,000H,000H,000H\r
+DB 018H,018H,07CH,0C6H,0C2H,0C0H,07CH,006H,086H,0C6H,07CH,018H,018H,000H,000H,000H\r
+DB 000H,000H,000H,000H,0C2H,0C6H,00CH,018H,030H,060H,0C6H,086H,000H,000H,000H,000H\r
+DB 000H,000H,038H,06CH,06CH,038H,076H,0DCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,030H,030H,030H,060H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,00CH,018H,030H,030H,030H,030H,030H,030H,018H,00CH,000H,000H,000H,000H\r
+DB 000H,000H,030H,018H,00CH,00CH,00CH,00CH,00CH,00CH,018H,030H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,066H,03CH,0FFH,03CH,066H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,018H,018H,07EH,018H,018H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,018H,018H,018H,030H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FEH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,018H,018H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,002H,006H,00CH,018H,030H,060H,0C0H,080H,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,0C6H,0CEH,0D6H,0D6H,0E6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,018H,038H,078H,018H,018H,018H,018H,018H,018H,07EH,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,006H,00CH,018H,030H,060H,0C0H,0C6H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,006H,006H,03CH,006H,006H,006H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,00CH,01CH,03CH,06CH,0CCH,0FEH,00CH,00CH,00CH,01EH,000H,000H,000H,000H\r
+DB 000H,000H,0FEH,0C0H,0C0H,0C0H,0FCH,00EH,006H,006H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,038H,060H,0C0H,0C0H,0FCH,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,0FEH,0C6H,006H,006H,00CH,018H,030H,030H,030H,030H,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,0C6H,0C6H,07CH,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,0C6H,0C6H,07EH,006H,006H,006H,00CH,078H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,018H,018H,000H,000H,000H,018H,018H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,018H,018H,000H,000H,000H,018H,018H,030H,000H,000H,000H,000H\r
+DB 000H,000H,000H,006H,00CH,018H,030H,060H,030H,018H,00CH,006H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,0FEH,000H,000H,0FEH,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,060H,030H,018H,00CH,006H,00CH,018H,030H,060H,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,0C6H,00CH,018H,018H,018H,000H,018H,018H,000H,000H,000H,000H\r
+DB 000H,000H,000H,07CH,0C6H,0C6H,0DEH,0DEH,0DEH,0DCH,0C0H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,010H,038H,06CH,0C6H,0C6H,0FFH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,0FCH,066H,066H,066H,07CH,0FFH,066H,066H,066H,0FCH,000H,000H,000H,000H\r
+DB 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0FFH,0C0H,0C2H,066H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,0F8H,06CH,066H,066H,066H,0FFH,066H,066H,06CH,0F8H,000H,000H,000H,000H\r
+DB 000H,000H,0FEH,066H,062H,068H,078H,0FFH,060H,062H,066H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,0FEH,066H,062H,068H,078H,0FFH,060H,060H,060H,0F0H,000H,000H,000H,000H\r
+DB 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0FFH,0C6H,0C6H,066H,03AH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0FEH,0FFH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,03CH,018H,018H,018H,018H,0FFH,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,01EH,00CH,00CH,00CH,00CH,0FFH,0CCH,0CCH,0CCH,078H,000H,000H,000H,000H\r
+DB 000H,000H,0E6H,066H,06CH,06CH,078H,0FFH,06CH,066H,066H,0E6H,000H,000H,000H,000H\r
+DB 000H,000H,0F0H,060H,060H,060H,060H,0FFH,060H,062H,066H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0EEH,0FEH,0FEH,0D6H,0FFH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0E6H,0F6H,0FEH,0DEH,0FFH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,038H,06CH,0C6H,0C6H,0C6H,0FFH,0C6H,0C6H,06CH,038H,000H,000H,000H,000H\r
+DB 000H,000H,0FCH,066H,066H,066H,07CH,0FFH,060H,060H,060H,0F0H,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0FFH,0C6H,0D6H,0DEH,07CH,00CH,00EH,000H,000H\r
+DB 000H,000H,0FCH,066H,066H,066H,07CH,0FFH,066H,066H,066H,0E6H,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,0C6H,060H,038H,0FFH,006H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,07EH,07EH,05AH,018H,018H,0FFH,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0FFH,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0FFH,0C6H,06CH,038H,010H,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0FFH,0D6H,0FEH,06CH,06CH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,06CH,06CH,038H,0FFH,06CH,06CH,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,066H,066H,066H,066H,03CH,0FFH,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,0FEH,0C6H,086H,00CH,018H,0FFH,060H,0C2H,0C6H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,03CH,030H,030H,030H,030H,0FFH,030H,030H,030H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,080H,0C0H,0E0H,070H,0FFH,01CH,00EH,006H,002H,000H,000H,000H,000H\r
+DB 000H,000H,03CH,00CH,00CH,00CH,00CH,0FFH,00CH,00CH,00CH,03CH,000H,000H,000H,000H\r
+DB 010H,038H,06CH,0C6H,000H,000H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FFH,000H,000H,000H,000H,000H,0FFH,000H,000H\r
+DB 030H,030H,018H,000H,000H,000H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,0E0H,060H,060H,078H,06CH,066H,066H,066H,066H,0DCH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,07CH,0C6H,0C0H,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,01CH,00CH,00CH,03CH,06CH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,038H,06CH,064H,060H,0F0H,060H,060H,060H,060H,0F0H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,076H,0CCH,0CCH,0CCH,0CCH,0CCH,07CH,00CH,0CCH,078H,000H\r
+DB 000H,000H,0E0H,060H,060H,06CH,076H,066H,066H,066H,066H,0E6H,000H,000H,000H,000H\r
+DB 000H,000H,018H,018H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,006H,006H,000H,00EH,006H,006H,006H,006H,006H,006H,066H,066H,03CH,000H\r
+DB 000H,000H,0E0H,060H,060H,066H,06CH,078H,078H,06CH,066H,0E6H,000H,000H,000H,000H\r
+DB 000H,000H,038H,018H,018H,018H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0ECH,0FEH,0D6H,0D6H,0D6H,0D6H,0D6H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0DCH,066H,066H,066H,066H,066H,066H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0DCH,066H,066H,066H,066H,066H,07CH,060H,060H,0F0H,000H\r
+DB 000H,000H,000H,000H,000H,076H,0CCH,0CCH,0CCH,0CCH,0CCH,07CH,00CH,00CH,01EH,000H\r
+DB 000H,000H,000H,000H,000H,0DCH,076H,062H,060H,060H,060H,0F0H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,07CH,0C6H,060H,038H,00CH,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,010H,030H,030H,0FCH,030H,030H,030H,030H,036H,01CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,066H,066H,066H,066H,066H,03CH,018H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0C6H,0C6H,0C6H,0D6H,0D6H,0FEH,06CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0C6H,06CH,038H,038H,038H,06CH,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07EH,006H,00CH,0F8H,000H\r
+DB 000H,000H,000H,000H,000H,0FEH,0CCH,018H,030H,060H,0C6H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,00EH,018H,018H,018H,070H,018H,018H,018H,018H,00EH,000H,000H,000H,000H\r
+DB 000H,000H,018H,018H,018H,018H,000H,018H,018H,018H,018H,018H,000H,000H,000H,000H\r
+DB 000H,000H,070H,018H,018H,018H,00EH,018H,018H,018H,018H,070H,000H,000H,000H,000H\r
+DB 000H,000H,076H,0DCH,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,010H,038H,06CH,0C6H,0C6H,0C6H,0FEH,000H,000H,000H,000H,000H\r
+DB 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0C0H,0C2H,066H,03CH,00CH,006H,07CH,000H,000H\r
+DB 000H,000H,0CCH,0CCH,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,00CH,018H,030H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,010H,038H,06CH,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,0CCH,0CCH,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,060H,030H,018H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,038H,06CH,038H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,03CH,066H,060H,060H,066H,03CH,00CH,006H,03CH,000H,000H,000H\r
+DB 000H,010H,038H,06CH,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,060H,030H,018H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,066H,066H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,018H,03CH,066H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,060H,030H,018H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,0C6H,0C6H,010H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 038H,06CH,038H,000H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 018H,030H,060H,000H,0FEH,066H,060H,07CH,060H,060H,066H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0CCH,076H,036H,07EH,0D8H,0D8H,06EH,000H,000H,000H,000H\r
+DB 000H,000H,03EH,06CH,0CCH,0CCH,0FEH,0CCH,0CCH,0CCH,0CCH,0CEH,000H,000H,000H,000H\r
+DB 000H,010H,038H,06CH,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,060H,030H,018H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,030H,078H,0CCH,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,060H,030H,018H,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07EH,006H,00CH,078H,000H\r
+DB 000H,0C6H,0C6H,000H,038H,06CH,0C6H,0C6H,0C6H,0C6H,06CH,038H,000H,000H,000H,000H\r
+DB 000H,0C6H,0C6H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,018H,018H,03CH,066H,060H,060H,060H,066H,03CH,018H,018H,000H,000H,000H,000H\r
+DB 000H,038H,06CH,064H,060H,0F0H,060H,060H,060H,060H,0E6H,0FCH,000H,000H,000H,000H\r
+DB 000H,000H,066H,066H,03CH,018H,07EH,018H,07EH,018H,018H,018H,000H,000H,000H,000H\r
+DB 000H,0F8H,0CCH,0CCH,0F8H,0C4H,0CCH,0DEH,0CCH,0CCH,0CCH,0C6H,000H,000H,000H,000H\r
+DB 000H,00EH,01BH,018H,018H,018H,07EH,018H,018H,018H,018H,018H,0D8H,070H,000H,000H\r
+DB 000H,018H,030H,060H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,00CH,018H,030H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,018H,030H,060H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,018H,030H,060H,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,076H,0DCH,000H,0DCH,066H,066H,066H,066H,066H,066H,000H,000H,000H,000H\r
+DB 076H,0DCH,000H,0C6H,0E6H,0F6H,0FEH,0DEH,0CEH,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,03CH,06CH,06CH,03EH,000H,07EH,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,038H,06CH,06CH,038H,000H,07CH,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,030H,030H,000H,030H,030H,060H,0C0H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,0FEH,0C0H,0C0H,0C0H,0C0H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,0FEH,006H,006H,006H,006H,000H,000H,000H,000H,000H\r
+DB 000H,0C0H,0C0H,0C2H,0C6H,0CCH,018H,030H,060H,0CEH,093H,006H,00CH,01FH,000H,000H\r
+DB 000H,0C0H,0C0H,0C2H,0C6H,0CCH,018H,030H,066H,0CEH,09AH,03FH,006H,00FH,000H,000H\r
+DB 000H,000H,018H,018H,000H,018H,018H,018H,03CH,03CH,03CH,018H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,033H,066H,0CCH,066H,033H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0CCH,066H,033H,066H,0CCH,000H,000H,000H,000H,000H,000H\r
+DB 011H,044H,011H,044H,011H,044H,011H,044H,011H,044H,011H,044H,011H,044H,011H,044H\r
+DB 055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH\r
+DB 0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H\r
+DB 018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,018H,018H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,0F8H,018H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 036H,036H,036H,036H,036H,036H,036H,0F6H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FEH,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 000H,000H,000H,000H,000H,0F8H,018H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 036H,036H,036H,036H,036H,0F6H,006H,0F6H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 000H,000H,000H,000H,000H,0FEH,006H,0F6H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,0F6H,006H,0FEH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 036H,036H,036H,036H,036H,036H,036H,0FEH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 018H,018H,018H,018H,018H,0F8H,018H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,018H,018H,01FH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 018H,018H,018H,018H,018H,018H,018H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,018H,018H,01FH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 018H,018H,018H,018H,018H,018H,018H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,01FH,018H,01FH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 036H,036H,036H,036H,036H,036H,036H,037H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,037H,030H,03FH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,03FH,030H,037H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,0F7H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0FFH,000H,0F7H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,037H,030H,037H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 000H,000H,000H,000H,000H,0FFH,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 036H,036H,036H,036H,036H,0F7H,000H,0F7H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 018H,018H,018H,018H,018H,0FFH,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 036H,036H,036H,036H,036H,036H,036H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0FFH,000H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FFH,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,036H,036H,03FH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 018H,018H,018H,018H,018H,01FH,018H,01FH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,01FH,018H,01FH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 000H,000H,000H,000H,000H,000H,000H,03FH,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,036H,036H,0FFH,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 018H,018H,018H,018H,018H,0FFH,018H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,018H,018H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,01FH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH\r
+DB 0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H\r
+DB 00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH\r
+DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,076H,0DCH,0D8H,0D8H,0D8H,0DCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0FCH,0C6H,0FCH,0C6H,0C6H,0FCH,0C0H,0C0H,0C0H,000H,000H\r
+DB 000H,000H,0FEH,0C6H,0C6H,0C0H,0C0H,0C0H,0C0H,0C0H,0C0H,0C0H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,080H,0FEH,06CH,06CH,06CH,06CH,06CH,06CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,0FEH,0C6H,060H,030H,018H,030H,060H,0C6H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,07EH,0D8H,0D8H,0D8H,0D8H,0D8H,070H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,066H,066H,066H,066H,066H,07CH,060H,060H,0C0H,000H,000H,000H\r
+DB 000H,000H,000H,000H,076H,0DCH,018H,018H,018H,018H,018H,018H,000H,000H,000H,000H\r
+DB 000H,000H,000H,07EH,018H,03CH,066H,066H,066H,03CH,018H,07EH,000H,000H,000H,000H\r
+DB 000H,000H,000H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,06CH,038H,000H,000H,000H,000H\r
+DB 000H,000H,038H,06CH,0C6H,0C6H,0C6H,06CH,06CH,06CH,06CH,0EEH,000H,000H,000H,000H\r
+DB 000H,000H,01EH,030H,018H,00CH,03EH,066H,066H,066H,066H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,07EH,0DBH,0DBH,0DBH,07EH,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,003H,006H,07EH,0CFH,0DBH,0F3H,07EH,060H,0C0H,000H,000H,000H,000H\r
+DB 000H,000H,01CH,030H,060H,060H,07CH,060H,060H,060H,030H,01CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,0FEH,000H,000H,0FEH,000H,000H,0FEH,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,018H,018H,07EH,018H,018H,000H,000H,0FFH,000H,000H,000H,000H\r
+DB 000H,000H,000H,030H,018H,00CH,006H,00CH,018H,030H,000H,07EH,000H,000H,000H,000H\r
+DB 000H,000H,000H,00CH,018H,030H,060H,030H,018H,00CH,000H,07EH,000H,000H,000H,000H\r
+DB 000H,000H,00EH,01BH,01BH,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,018H,018H,018H,0D8H,0D8H,0D8H,070H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,018H,018H,000H,07EH,000H,018H,018H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,076H,0DCH,000H,076H,0DCH,000H,000H,000H,000H,000H,000H\r
+DB 000H,038H,06CH,06CH,038H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,018H,018H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,018H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,00FH,00CH,00CH,00CH,00CH,00CH,0ECH,06CH,06CH,03CH,01CH,000H,000H,000H,000H\r
+DB 000H,0D8H,06CH,06CH,06CH,06CH,06CH,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,070H,098H,030H,060H,0C8H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,07CH,07CH,07CH,07CH,07CH,07CH,07CH,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
diff --git a/16/tauron/ASM_SRC/MAIN.ASM b/16/tauron/ASM_SRC/MAIN.ASM
new file mode 100755 (executable)
index 0000000..8bf81ce
--- /dev/null
@@ -0,0 +1,788 @@
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=-                                                                         -=\r
+;=-                   Tauron VGA Utilities Version 3.0                      -=\r
+;=-                      Released September 20, 1998                        -=\r
+;=-                                                                         -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+;=- All Rights Reserved.                     =-= that you put my name some- -=\r
+;=-                                          =-= where in your credits.     -=\r
+;=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- I assume no responsibility whatsoever for any effect that this package, -=\r
+;=- the information contained therein or the use thereof has on you, your   -=\r
+;=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+;=- you or your existance. No warranty is provided nor implied with this    -=\r
+;=- source code.                                                            -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+.MODEL  SMALL\r
+.386\r
+JUMPS\r
+LOCALS\r
+.STACK  200h\r
+.DATA\r
+\r
+ATTRCON_ADDR      EQU       03C0H\r
+MISC_ADDR         EQU       03C2H\r
+VGAENABLE_ADDR    EQU       03C3H\r
+SEQ_ADDR          EQU       03C4H\r
+GRACON_ADDR       EQU       03CEH\r
+CRTC_ADDR         EQU       03D4H\r
+STATUS_ADDR       EQU       03DAH\r
+\r
+; Videomode defines\r
+VMODE_00H         EQU       00H\r
+VMODE_01H         EQU       00H\r
+VMODE_02H         EQU       03H\r
+VMODE_03H         EQU       03H\r
+VMODE_04H         EQU       04H\r
+VMODE_05H         EQU       04H\r
+VMODE_06H         EQU       06H\r
+VMODE_07H         EQU       07H\r
+VMODE_0DH         EQU       0DH\r
+VMODE_0EH         EQU       0EH\r
+VMODE_0FH         EQU       0FH\r
+VMODE_10H         EQU       10H\r
+VMODE_11H         EQU       11H\r
+VMODE_12H         EQU       12H\r
+VMODE_13H         EQU       13H\r
+VMODE_CHAIN4      EQU       14H\r
+VMODE_MODE_X      EQU       15H\r
+VMODE_MODE_A      EQU       16H\r
+VMODE_MODE_B      EQU       17H\r
+VMODE_MODE_C      EQU       18H\r
+VMODE_MODE_D      EQU       19H\r
+VMODE_MODE_E      EQU       1AH\r
+VMODE_MODE_F      EQU       1BH\r
+VMODE_MODE_G      EQU       1CH\r
+VMODE_MODE_H      EQU       1DH\r
+VMODE_MODE_I      EQU       1EH\r
+VMODE_MODE_J      EQU       1FH\r
+VMODE_MODE_K      EQU       20H\r
+VMODE_MODE_L      EQU       21H\r
+VMODE_MODE_M      EQU       22H\r
+VMODE_MODE_N      EQU       23H\r
+\r
+;These next four lines must be included for the text mode stuff to work.\r
+oldmode db ?\r
+oldmisc db ?\r
+oldmask db ?\r
+oldmem db ?\r
+\r
+PALETTE LABEL BYTE\r
+DB  0,  0,  0,  0,  0, 42,  0, 42,  0,  0, 42, 42, 42,  0,  0, 42,  0, 42\r
+DB 42, 21,  0, 42, 42, 42, 21, 21, 21, 21, 21, 63, 21, 63, 21, 21, 63, 63\r
+DB 63, 21, 21, 63, 21, 63, 63, 63, 21, 63, 63, 63,  0,  0,  0,  5,  5,  5\r
+DB  8,  8,  8, 11, 11, 11, 14, 14, 14, 17, 17, 17, 20, 20, 20, 24, 24, 24\r
+DB 28, 28, 28, 32, 32, 32, 36, 36, 36, 40, 40, 40, 45, 45, 45, 50, 50, 50\r
+DB 56, 56, 56, 63, 63, 63,  0,  0, 63, 16,  0, 63, 31,  0, 63, 47,  0, 63\r
+DB 63,  0, 63, 63,  0, 47, 63,  0, 31, 63,  0, 16, 63,  0,  0, 63, 16,  0\r
+DB 63, 31,  0, 63, 47,  0, 63, 63,  0, 47, 63,  0, 31, 63,  0, 16, 63,  0\r
+DB  0, 63,  0,  0, 63, 16,  0, 63, 31,  0, 63, 47,  0, 63, 63,  0, 47, 63\r
+DB  0, 31, 63,  0, 16, 63, 31, 31, 63, 39, 31, 63, 47, 31, 63, 55, 31, 63\r
+DB 63, 31, 63, 63, 31, 55, 63, 31, 47, 63, 31, 39, 63, 31, 31, 63, 39, 31\r
+DB 63, 47, 31, 63, 55, 31, 63, 63, 31, 55, 63, 31, 47, 63, 31, 39, 63, 31\r
+DB 31, 63, 31, 31, 63, 39, 31, 63, 47, 31, 63, 55, 31, 63, 63, 31, 55, 63\r
+DB 31, 47, 63, 31, 39, 63, 45, 45, 63, 49, 45, 63, 54, 45, 63, 58, 45, 63\r
+DB 63, 45, 63, 63, 45, 58, 63, 45, 54, 63, 45, 49, 63, 45, 45, 63, 49, 45\r
+DB 63, 54, 45, 63, 58, 45, 63, 63, 45, 58, 63, 45, 54, 63, 45, 49, 63, 45\r
+DB 45, 63, 45, 45, 63, 49, 45, 63, 54, 45, 63, 58, 45, 63, 63, 45, 58, 63\r
+DB 45, 54, 63, 45, 49, 63,  0,  0, 28,  7,  0, 28, 14,  0, 28, 21,  0, 28\r
+DB 28,  0, 28, 28,  0, 21, 28,  0, 14, 28,  0,  7, 28,  0,  0, 28,  7,  0\r
+DB 28, 14,  0, 28, 21,  0, 28, 28,  0, 21, 28,  0, 14, 28,  0,  7, 28,  0\r
+DB  0, 28,  0,  0, 28,  7,  0, 28, 14,  0, 28, 21,  0, 28, 28,  0, 21, 28\r
+DB  0, 14, 28,  0,  7, 28, 14, 14, 28, 17, 14, 28, 21, 14, 28, 24, 14, 28\r
+DB 28, 14, 28, 28, 14, 24, 28, 14, 21, 28, 14, 17, 28, 14, 14, 28, 17, 14\r
+DB 28, 21, 14, 28, 24, 14, 28, 28, 14, 24, 28, 14, 21, 28, 14, 17, 28, 14\r
+DB 14, 28, 14, 14, 28, 17, 14, 28, 21, 14, 28, 24, 14, 28, 28, 14, 24, 28\r
+DB 14, 21, 28, 14, 17, 28, 20, 20, 28, 22, 20, 28, 24, 20, 28, 26, 20, 28\r
+DB 28, 20, 28, 28, 20, 26, 28, 20, 24, 28, 20, 22, 28, 20, 20, 28, 22, 20\r
+DB 28, 24, 20, 28, 26, 20, 28, 28, 20, 26, 28, 20, 24, 28, 20, 22, 28, 20\r
+DB 20, 28, 20, 20, 28, 22, 20, 28, 24, 20, 28, 26, 20, 28, 28, 20, 26, 28\r
+DB 20, 24, 28, 20, 22, 28,  0,  0, 16,  4,  0, 16,  8,  0, 16, 12,  0, 16\r
+DB 16,  0, 16, 16,  0, 12, 16,  0,  8, 16,  0,  4, 16,  0,  0, 16,  4,  0\r
+DB 16,  8,  0, 16, 12,  0, 16, 16,  0, 12, 16,  0,  8, 16,  0,  4, 16,  0\r
+DB  0, 16,  0,  0, 16,  4,  0, 16,  8,  0, 16, 12,  0, 16, 16,  0, 12, 16\r
+DB  0,  8, 16,  0,  4, 16,  8,  8, 16, 10,  8, 16, 12,  8, 16, 14,  8, 16\r
+DB 16,  8, 16, 16,  8, 14, 16,  8, 12, 16,  8, 10, 16,  8,  8, 16, 10,  8\r
+DB 16, 12,  8, 16, 14,  8, 16, 16,  8, 14, 16,  8, 12, 16,  8, 10, 16,  8\r
+DB  8, 16,  8,  8, 16, 10,  8, 16, 12,  8, 16, 14,  8, 16, 16,  8, 14, 16\r
+DB  8, 12, 16,  8, 10, 16, 11, 11, 16, 12, 11, 16, 13, 11, 16, 15, 11, 16\r
+DB 16, 11, 16, 16, 11, 15, 16, 11, 13, 16, 11, 12, 16, 11, 11, 16, 12, 11\r
+DB 16, 13, 11, 16, 15, 11, 16, 16, 11, 15, 16, 11, 13, 16, 11, 12, 16, 11\r
+DB 11, 16, 11, 11, 16, 12, 11, 16, 13, 11, 16, 15, 11, 16, 16, 11, 15, 16\r
+DB 11, 13, 16, 11, 12, 16,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0\r
+DB  0,  0,  0,  0,  0,  0,  0,  0,  0, 63, 63, 63\r
+\r
+; Must be included for any videomode to be set.\r
+include modes.inc\r
+\r
+MAIN_MSG LABEL BYTE\r
+DB 'Tauron VGA Utilities v3.0',13,10\r
+DB 'Copyright (c) 1998 Jeffrey Morgan.  All Rights Reserved.',13,10\r
+DB 'Select a video mode to test: (Modes with a ! are not implemented)',13,10\r
+DB 'Key              Videomode   (Modes with a % are unchained)',13,10\r
+DB '================================================================================'\r
+DB ' 0) 00H, 01H -- 40 x 25 x 16         %F) Mode D   --  360 x 200 x 256',13,10\r
+DB ' 1) Mode L   -- 40 x 43 x 16         %G) Mode E   --  360 x 240 x 256',13,10\r
+DB ' 2) Mode M   -- 40 x 50 x 16         %H) Mode F   --  360 x 350 x 256',13,10\r
+DB '!3) 07H      -- 80 x 25 x 2          %I) Mode G   --  360 x 400 x 256',13,10\r
+DB ' 4) 02H, 03H -- 80 x 25 x 16         %J) Mode H   --  360 x 480 x 256',13,10\r
+DB ' 5) Mode J   -- 80 x 43 x 16          K) 06H      -- 640 x 200 x 2',13,10\r
+DB ' 6) Mode K   -- 80 x 50 x 16         !L) 0FH      -- 640 x 350 x 2',13,10 \r
+DB ' 7) 04H, 05H -- 320 x 200 x 4         M) 11H      -- 640 x 480 x 2',13,10 \r
+DB ' 8) 0DH      -- 320 x 200 x 16        N) 0EH      -- 640 x 200 x 16',13,10\r
+DB ' 9) 13H      -- 320 x 200 x 256       O) 10H      -- 640 x 350 x 16',13,10\r
+DB '%A) Chain 4  --  320 x 200 x 256      P) Mode I   -- 640 x 400 x 16',13,10\r
+DB '%B) Mode X   --  320 x 240 x 256      Q) 12H      -- 640 x 480 x 16',13,10\r
+DB '%C) Mode A   --  320 x 350 x 256',13,10\r
+DB '%D) Mode B   --  320 x 400 x 256      R) Dual Font Test',13,10\r
+DB '%E) Mode C   --  320 x 480 x 256',13,10\r
+DB '===============================================================================',13,10\r
+DB 'Hit ',39,'ESC',39,' to exit.  Press a key [0-9 or A-O]>$'\r
+\r
+TEXTMSG_1 DB 218,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,191,0\r
+TEXTMSG_2 DB 179,'Text Mode: 00H        ',179,0 ; +13\r
+TEXTMSG_3 DB 179,'Width: 80   Height: 25',179,0 ; +8\r
+TEXTMSG_4 DB 179,'Bytes per screen: 4000',179,0 ; +19\r
+TEXTMSG_5 DB 179,'Number of pages: 8    ',179,0\r
+TEXTMSG_6 DB 192,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,217,0\r
+\r
+TEXTMSG_7 DB 218,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,191,0\r
+TEXTMSG_8 DB 179,'Text Mode J           ',179,0 ; +11\r
+TEXTMSG_9 DB 179,'Width: 80   Height: 43',179,0 ; +21, +22\r
+TEXTMSG_A DB 179,'Bytes per screen: 3440',179,0 ; +19, +20, +21, +22\r
+TEXTMSG_B DB 179,'Number of pages: 8    ',179,0\r
+TEXTMSG_C DB 192,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,217,0\r
+\r
+TEXTMSG_D DB 218,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,191,0\r
+TEXTMSG_E DB 179,' DUAL FONT MODE ',179,0 ;\r
+TEXTMSG_F DB 192,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,217,0\r
+\r
+FONT_8x8_OFF DW ?\r
+FONT_8x14_OFF DW ?\r
+\r
+; Attribute for text charcters\r
+ATT DB 1FH\r
+\r
+FONT1 LABEL BYTE\r
+include font1.asm\r
+FONT2 LABEL BYTE\r
+include font2.asm\r
+.CODE\r
+\r
+IODELAY MACRO\r
+   REPT 8\r
+      JMP $+2\r
+   ENDM\r
+ENDM\r
+\r
+Start:\r
+   MOV AX,@DATA\r
+   MOV DS,AX\r
+\r
+   ; This must be here to ensure that the fonts are properly found because\r
+   ; the location of the fonts in ROM is different on every VGA BIOS.\r
+   ; Get location of the fonts for Modes J and K\r
+   MOV AH,11h\r
+   MOV AL,30h\r
+   MOV BH,03h\r
+   INT 10H\r
+   MOV FONT_8x8_OFF,BP\r
+\r
+   ; Get location of the fonts for Modes 00H, 01H, 02H, 03H, and 07H\r
+   MOV AH,11h\r
+   MOV AL,30h\r
+   MOV BH,06h\r
+   INT 10H\r
+   MOV FONT_8x14_OFF,BP\r
+\r
+   ; Reset the mode and clear the screen\r
+   MOV AX,0003H\r
+   INT 10H\r
+\r
+   ; Print out the message\r
+   MOV DX,OFFSET MAIN_MSG\r
+   MOV AH,9\r
+   INT 21H\r
+\r
+MAIN_LOOP:\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+\r
+   CMP AL,27\r
+   JE QUIT_PROGRAM\r
+\r
+   CMP AL,'0'\r
+   JE MODE_00_TEST\r
+\r
+   CMP AL,'1'\r
+   JE MODE_L_TEST\r
+\r
+   CMP AL,'2'\r
+   JE MODE_M_TEST\r
+\r
+   CMP AL,'4'\r
+   JE MODE_03_TEST\r
+\r
+   CMP AL,'5'\r
+   JE MODE_J_TEST\r
+\r
+   CMP AL,'6'\r
+   JE MODE_K_TEST\r
+\r
+   CMP AL,'7'\r
+   JE MODE_04_TEST\r
+\r
+   CMP AL,'8'\r
+   JE MODE_0D_TEST\r
+\r
+   CMP AL,'9'\r
+   JE MODE_13_TEST\r
+\r
+   CMP AL,'a'\r
+   JE MODE_C4_TEST\r
+   CMP AL,'A'\r
+   JE MODE_C4_TEST\r
+\r
+   CMP AL,'b'\r
+   JE MODE_X_TEST\r
+   CMP AL,'B'\r
+   JE MODE_X_TEST\r
+\r
+   CMP AL,'c'\r
+   JE MODE_A_TEST\r
+   CMP AL,'C'\r
+   JE MODE_A_TEST\r
+\r
+   CMP AL,'d'\r
+   JE MODE_B_TEST\r
+   CMP AL,'D'\r
+   JE MODE_B_TEST\r
+\r
+   CMP AL,'e'\r
+   JE MODE_C_TEST\r
+   CMP AL,'E'\r
+   JE MODE_C_TEST\r
+\r
+   CMP AL,'f'\r
+   JE MODE_D_TEST\r
+   CMP AL,'F'\r
+   JE MODE_D_TEST\r
+\r
+   CMP AL,'g'\r
+   JE MODE_E_TEST\r
+   CMP AL,'G'\r
+   JE MODE_E_TEST\r
+\r
+   CMP AL,'h'\r
+   JE MODE_F_TEST\r
+   CMP AL,'H'\r
+   JE MODE_F_TEST\r
+\r
+   CMP AL,'i'\r
+   JE MODE_G_TEST\r
+   CMP AL,'I'\r
+   JE MODE_G_TEST\r
+\r
+   CMP AL,'j'\r
+   JE MODE_H_TEST\r
+   CMP AL,'J'\r
+   JE MODE_H_TEST\r
+\r
+   CMP AL,'k'\r
+   JE MODE_06_TEST\r
+   CMP AL,'K'\r
+   JE MODE_06_TEST\r
+\r
+   CMP AL,'m'\r
+   JE MODE_11_TEST\r
+   CMP AL,'M'\r
+   JE MODE_11_TEST\r
+\r
+   CMP AL,'n'\r
+   JE MODE_0E_TEST\r
+   CMP AL,'N'\r
+   JE MODE_0E_TEST\r
+\r
+   CMP AL,'o'\r
+   JE MODE_10_TEST\r
+   CMP AL,'O'\r
+   JE MODE_10_TEST\r
+\r
+   CMP AL,'p'\r
+   JE MODE_I_TEST\r
+   CMP AL,'P'\r
+   JE MODE_I_TEST\r
+\r
+   CMP AL,'q'\r
+   JE MODE_12_TEST\r
+   CMP AL,'Q'\r
+   JE MODE_12_TEST\r
+\r
+   CMP AL,'r'\r
+   JE DUAL_TEST\r
+   CMP AL,'R'\r
+   JE DUAL_TEST\r
+   JMP MAIN_LOOP\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_00_TEST:\r
+   PUSH VMODE_00H\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL TEXTTEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_03_TEST:\r
+   PUSH VMODE_03H\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL TEXTTEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_04_TEST:\r
+   PUSH VMODE_04H\r
+   CALL SETVIDEOMODE\r
+\r
+   PUSH 0AAAAH\r
+   CALL CLEAR_B8000H\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_06_TEST:\r
+   PUSH VMODE_06H\r
+   CALL SETVIDEOMODE\r
+\r
+   PUSH 0FFFFH\r
+   CALL CLEAR_B8000H\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_0D_TEST:\r
+   PUSH VMODE_0DH\r
+   CALL SETVIDEOMODE\r
+\r
+   PUSH 12\r
+   CALL CLEAR0DH\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_0E_TEST:\r
+   PUSH VMODE_0EH\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_10_TEST:\r
+   PUSH VMODE_10H\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_11_TEST:\r
+   PUSH VMODE_11H\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_12_TEST:\r
+   PUSH VMODE_12H\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_13_TEST:\r
+   PUSH VMODE_13H\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_I_TEST:\r
+   PUSH VMODE_MODE_I\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_C4_TEST:\r
+   PUSH VMODE_CHAIN4\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_X_TEST:\r
+   PUSH VMODE_MODE_X\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_A_TEST:\r
+   PUSH VMODE_MODE_A\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_B_TEST:\r
+   PUSH VMODE_MODE_B\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_C_TEST:\r
+   PUSH VMODE_MODE_C\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_D_TEST:\r
+   PUSH VMODE_MODE_D\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_E_TEST:\r
+   PUSH VMODE_MODE_E\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_F_TEST:\r
+   PUSH VMODE_MODE_F\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_G_TEST:\r
+   PUSH VMODE_MODE_G\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_H_TEST:\r
+   PUSH VMODE_MODE_H\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_J_TEST:\r
+   PUSH VMODE_MODE_J\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL TEXTTEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_K_TEST:\r
+   PUSH VMODE_MODE_K\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL TEXTTEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_L_TEST:\r
+   PUSH VMODE_MODE_L\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL TEXTTEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_M_TEST:\r
+   PUSH VMODE_MODE_M\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL TEXTTEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+DUAL_TEST:\r
+   CALL DUALTEST\r
+\r
+RESET:\r
+   ; Reset the mode and clear the screen\r
+   MOV AX,0003H\r
+   INT 10H\r
+\r
+   ; Print out the message\r
+   MOV DX,OFFSET MAIN_MSG\r
+   MOV AH,9\r
+   INT 21H\r
+   JMP MAIN_LOOP\r
+\r
+; ====================== New Video Mode ====================================\r
+QUIT_PROGRAM:\r
+   ; Set the BIOS mode 03h\r
+   MOV AX,0003H\r
+   INT 10H\r
+\r
+   ; Exit to DOS\r
+   MOV AX,4C00H\r
+   INT 21H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+LOADFONT PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+   PUSHA\r
+ mov dx,GRACON_ADDR                     ;get graphics port\r
+ mov al,5                               ;get write mode reg\r
+ out dx,al                              ;select the reg\r
+ IODELAY                                ;delay a bit\r
+ inc dx                                 ;change DX\r
+ in al,dx                               ;get value\r
+ IODELAY                                ;pause\r
+ mov [oldmode],al                       ;store it\r
+ dec dx                                 ;restore DX\r
+ mov al,6                               ;get misc reg\r
+ out dx,al                              ;select the reg\r
+ IODELAY                                ;delay a bit\r
+ inc dx                                 ;change DX\r
+ in al,dx                               ;get value\r
+ IODELAY                                ;pause\r
+ mov [oldmisc],al                       ;store it\r
+ dec dx                                 ;restore DX\r
+ mov dx,SEQ_ADDR                        ;get sequencer port\r
+ mov al,2                               ;get map mask reg\r
+ out dx,al                              ;select the reg\r
+ IODELAY                                ;delay a bit\r
+ inc dx                                 ;change DX\r
+ in al,dx                               ;get value\r
+ IODELAY                                ;pause\r
+ mov [oldmask],al                       ;store it\r
+ dec dx                                 ;restore DX\r
+ mov al,4                               ;get memory selector reg\r
+ out dx,al                              ;select the reg\r
+ IODELAY                                ;delay a bit\r
+ inc dx                                 ;change DX\r
+ in al,dx                               ;get value\r
+ IODELAY                                ;pause\r
+ mov [oldmem],al                        ;store it\r
+\r
+ mov dx,GRACON_ADDR                     ;select graphics port\r
+ mov al,5                               ;get write mode reg\r
+ mov ah,[oldmode]                       ;get old value\r
+ and ah,0fch                            ;mask it\r
+ out dx,ax                              ;set new value\r
+ IODELAY                                ;pause\r
+ mov al,6                               ;get misc reg\r
+ mov ah,[oldmisc]                       ;get old value\r
+ and ah,0f1h                            ;mask it\r
+ or ah,4                                ;set a flag\r
+ out dx,ax                              ;set it\r
+ IODELAY                                ;pause\r
+ mov dx,SEQ_ADDR                        ;select sequencer port\r
+ mov al,2                             ;get mask reg\r
+ mov ah,4                               ;get new value\r
+ out dx,ax                              ;set it\r
+ IODELAY                                ;pause\r
+ mov al,4                              ;get memory reg\r
+ mov ah,[oldmem]                        ;get old value\r
+ or ah,4                                ;set flag\r
+ out dx,ax                              ;set value\r
+ IODELAY                                ;pause\r
+\r
+   PUSH DS\r
+   PUSH ES\r
+\r
+   MOV AX,[BP+8]\r
+   MOV ES,AX\r
+   MOV DI,[BP+10]\r
+\r
+   MOV AX,[BP+4]\r
+   MOV DS,AX\r
+   MOV SI,[BP+6]\r
+\r
+@@LOOP1:\r
+   PUSH DI\r
+   MOV CL,[BP+12]\r
+@@LOOP2:\r
+   MOVSB\r
+   DEC CL\r
+   JNZ @@LOOP2\r
+\r
+   MOV CL,32\r
+   SUB CL,byte ptr [BP+12]\r
+@@LOOP3:\r
+   MOV AX,00H\r
+   STOSB\r
+   DEC CL\r
+   JNZ @@LOOP3\r
+\r
+   POP DI\r
+   ADD DI,32\r
+\r
+   DEC CH\r
+   JNZ @@LOOP1\r
+\r
+   POP ES\r
+   POP DS\r
+\r
+ mov dx,GRACON_ADDR                     ;get graphics port\r
+ mov al,5                               ;get 1st reg\r
+ mov ah,[oldmode]                       ;get old value\r
+ out dx,ax                              ;set it\r
+ IODELAY                                ;pause\r
+ mov al,6                               ;get 2nd reg\r
+ mov ah,[oldmisc]                       ;get old value\r
+ out dx,ax                              ;set it\r
+ IODELAY                                ;pause\r
+ mov dx,SEQ_ADDR                        ;get seq port\r
+ mov al,2                               ;get 3rd reg\r
+ mov ah,[oldmask]                       ;get old value\r
+ out dx,ax                              ;set it\r
+ IODELAY                                ;pause\r
+ mov al,4                               ;get 4th reg\r
+ mov ah,[oldmem]                        ;get old value\r
+ out dx,ax                              ;set it\r
+ IODELAY                                ;pause\r
+\r
+   POPA\r
+   POP BP\r
+   RET 10\r
+LOADFONT ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+include clear.asm\r
+include modes.asm\r
+include tests.asm\r
+include dual.asm\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+END Start\r
diff --git a/16/tauron/ASM_SRC/MODES.ASM b/16/tauron/ASM_SRC/MODES.ASM
new file mode 100755 (executable)
index 0000000..28e72a8
--- /dev/null
@@ -0,0 +1,1240 @@
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=-                                                                         -=\r
+;=-                   Tauron VGA Utilities Version 3.0                      -=\r
+;=-                      Released September 20, 1998                        -=\r
+;=-                                                                         -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+;=- All Rights Reserved.                     =-= that you put my name some- -=\r
+;=-                                          =-= where in your credits.     -=\r
+;=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- I assume no responsibility whatsoever for any effect that this package, -=\r
+;=- the information contained therein or the use thereof has on you, your   -=\r
+;=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+;=- you or your existance. No warranty is provided nor implied with this    -=\r
+;=- source code.                                                            -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+SETVIDEOMODE PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+\r
+   MOV AX,word ptr [BP+4]\r
+   MOV Mode.videomode, AX\r
+   CMP AX,VMODE_00H\r
+   JE SET00H\r
+   CMP AX,VMODE_03H\r
+   JE SET03H\r
+   CMP AX,VMODE_04H\r
+   JE SET04H\r
+   CMP AX,VMODE_06H\r
+   JE SET06H\r
+;   CMP AX,VMODE_07H\r
+;   JE SET07H\r
+   CMP AX,VMODE_0DH\r
+   JE SET0DH\r
+   CMP AX,VMODE_0EH\r
+   JE SET0EH\r
+;   CMP AX,VMODE_0FH\r
+;   JE SET0FH\r
+   CMP AX,VMODE_10H\r
+   JE SET10H\r
+   CMP AX,VMODE_11H\r
+   JE SET11H\r
+   CMP AX,VMODE_12H\r
+   JE SET12H\r
+   CMP AX,VMODE_13H\r
+   JE SET13H\r
+   CMP AX,VMODE_CHAIN4\r
+   JE SETCHAIN4\r
+   CMP AX,VMODE_MODE_X\r
+   JE SETMODE_X\r
+   CMP AX,VMODE_MODE_A\r
+   JE SETMODE_A\r
+   CMP AX,VMODE_MODE_B\r
+   JE SETMODE_B\r
+   CMP AX,VMODE_MODE_C\r
+   JE SETMODE_C\r
+   CMP AX,VMODE_MODE_D\r
+   JE SETMODE_D\r
+   CMP AX,VMODE_MODE_E\r
+   JE SETMODE_E\r
+   CMP AX,VMODE_MODE_F\r
+   JE SETMODE_F\r
+   CMP AX,VMODE_MODE_G\r
+   JE SETMODE_G\r
+   CMP AX,VMODE_MODE_H\r
+   JE SETMODE_H\r
+   CMP AX,VMODE_MODE_I\r
+   JE SETMODE_I\r
+   CMP AX,VMODE_MODE_J\r
+   JE SETMODE_J\r
+   CMP AX,VMODE_MODE_K\r
+   JE SETMODE_K\r
+   CMP AX,VMODE_MODE_L\r
+   JE SETMODE_L\r
+   CMP AX,VMODE_MODE_M\r
+   JE SETMODE_M\r
+   JMP SET_OUT\r
+\r
+SET00H:\r
+   MOV SI,OFFSET MODE00H\r
+   CALL SETMODE\r
+\r
+   PUSH 16                 ; Bytes per character\r
+   PUSH 0                  ; Offset of font in Video Memory\r
+   PUSH 0A000H\r
+   PUSH FONT_8x14_OFF      ; Offset of Font in BIOS\r
+   PUSH 0C000H\r
+   CALL LOADFONT\r
+   CALL SETPALETTE16\r
+   MOV Mode.mode_width,40;\r
+   MOV Mode.mode_height,25;\r
+   MOV Mode.width_bytes,1000;\r
+   MOV Mode.colors,16;\r
+   MOV Mode.attrib,TVU_TEXT;\r
+   JMP SET_OUT\r
+\r
+SET03H:\r
+   MOV SI,OFFSET MODE03H\r
+   CALL SETMODE\r
+\r
+   PUSH 16                ; Bytes per character\r
+   PUSH 0                  ; Offset of font in Video Memory\r
+   PUSH 0A000H\r
+   PUSH FONT_8x14_OFF      ; Offset of Font in BIOS\r
+   PUSH 0C000H\r
+   CALL LOADFONT\r
+;   CALL SETPALETTE16\r
+   MOV Mode.mode_width,80;\r
+   MOV Mode.mode_height,25;\r
+   MOV Mode.width_bytes,2000;\r
+   MOV Mode.colors,16;\r
+   MOV Mode.attrib,TVU_TEXT;\r
+   JMP SET_OUT\r
+\r
+SET04H:\r
+   MOV SI,OFFSET MODE04H\r
+   CALL SETMODE\r
+   CALL SETPALETTE4\r
+   MOV Mode.mode_width,320;\r
+   MOV Mode.mode_height,200;\r
+   MOV Mode.width_bytes,65535;\r
+   MOV Mode.colors,4;\r
+   MOV Mode.attrib,TVU_GRAPHICS;\r
+   OR Mode.attrib,TVU_B8000_ADDR\r
+   JMP SET_OUT\r
+\r
+SET06H:\r
+   MOV SI,OFFSET MODE06H\r
+   CALL SETMODE\r
+   CALL SETPALETTE4\r
+   MOV Mode.mode_width,640;\r
+   MOV Mode.mode_height,200;\r
+   MOV Mode.width_bytes,16384;\r
+   MOV Mode.colors,4;\r
+   MOV Mode.attrib,TVU_GRAPHICS;\r
+   OR Mode.attrib,TVU_B8000_ADDR\r
+   OR Mode.attrib,TVU_PLANAR\r
+   JMP SET_OUT\r
+\r
+SET07H:\r
+   MOV SI,OFFSET MODE07H\r
+   CALL SETMODE\r
+\r
+   PUSH 16                ; Bytes per character\r
+   PUSH 0                  ; Offset of font in Video Memory\r
+   PUSH 0A000H\r
+   PUSH FONT_8x14_OFF      ; Offset of Font in BIOS\r
+   PUSH 0C000H\r
+   CALL LOADFONT\r
+   MOV Mode.mode_width,80;\r
+   MOV Mode.mode_height,25;\r
+   MOV Mode.width_bytes,2000;\r
+   MOV Mode.colors,2;\r
+   MOV Mode.attrib,TVU_TEXT\r
+   OR Mode.attrib,TVU_MONOCHROME\r
+   JMP SET_OUT\r
+\r
+SET0DH:\r
+   MOV SI,OFFSET MODE0DH\r
+   CALL SETMODE\r
+   CALL SETPALETTE16\r
+   MOV Mode.mode_width,320;\r
+   MOV Mode.mode_height,200;\r
+   MOV Mode.width_bytes,8000;\r
+   MOV Mode.colors,16;\r
+   MOV Mode.attrib,TVU_GRAPHICS;\r
+   OR Mode.attrib,TVU_PLANAR\r
+   JMP SET_OUT\r
+\r
+SET0EH:\r
+   MOV SI,OFFSET MODE0EH\r
+   CALL SETMODE\r
+   CALL SETPALETTE16\r
+   MOV Mode.mode_width,640;\r
+   MOV Mode.mode_height,200;\r
+   MOV Mode.width_bytes,16000;\r
+   MOV Mode.colors,16;\r
+   MOV Mode.attrib,TVU_GRAPHICS;\r
+   OR Mode.attrib,TVU_PLANAR\r
+   JMP SET_OUT\r
+\r
+SET0FH:\r
+   MOV SI,OFFSET MODE0FH\r
+   CALL SETMODE\r
+   MOV Mode.mode_width,640;\r
+   MOV Mode.mode_height,350;\r
+   MOV Mode.width_bytes,28000;\r
+   MOV Mode.colors,2;\r
+   MOV Mode.attrib,TVU_GRAPHICS\r
+   OR Mode.attrib,TVU_MONOCHROME\r
+   JMP SET_OUT\r
+\r
+SET10H:\r
+   MOV SI,OFFSET MODE10H\r
+   CALL SETMODE\r
+   CALL SETPALETTE16\r
+   MOV Mode.mode_width,640;\r
+   MOV Mode.mode_height,350;\r
+   MOV Mode.width_bytes,28000;\r
+   MOV Mode.colors,16;\r
+   MOV Mode.attrib,TVU_GRAPHICS;\r
+   OR Mode.attrib,TVU_PLANAR\r
+   JMP SET_OUT\r
+\r
+SET11H:\r
+   MOV SI,OFFSET MODE11H\r
+   CALL SETMODE\r
+   CALL SETPALETTE16\r
+   MOV Mode.mode_width,640;\r
+   MOV Mode.mode_height,480;\r
+   MOV Mode.width_bytes,38400;\r
+   MOV Mode.colors,2;\r
+   MOV Mode.attrib,TVU_GRAPHICS;\r
+   OR Mode.attrib,TVU_PLANAR\r
+   JMP SET_OUT\r
+\r
+SET12H:\r
+   MOV SI,OFFSET MODE12H\r
+   CALL SETMODE\r
+   CALL SETPALETTE16\r
+   MOV Mode.mode_width,640\r
+   MOV Mode.mode_height,480\r
+   MOV Mode.width_bytes,38400\r
+   MOV Mode.colors,16\r
+   MOV Mode.attrib,TVU_GRAPHICS\r
+   OR Mode.attrib,TVU_PLANAR\r
+   JMP SET_OUT\r
+\r
+SET13H:\r
+   MOV SI,OFFSET MODE13H\r
+   CALL SETMODE\r
+   CALL SETPALETTE256\r
+   MOV Mode.mode_width,320;\r
+   MOV Mode.mode_height,200;\r
+   MOV Mode.width_bytes,64000;\r
+   MOV Mode.colors,256;\r
+   MOV Mode.attrib,TVU_GRAPHICS;\r
+   JMP SET_OUT\r
+\r
+SETCHAIN4:\r
+   MOV SI,OFFSET CHAIN4\r
+   CALL SETMODE\r
+   CALL SETPALETTE256\r
+   MOV Mode.mode_width,320;\r
+   MOV Mode.mode_height,200;\r
+   MOV Mode.width_bytes,16000;\r
+   MOV Mode.colors,256;\r
+   MOV Mode.attrib,TVU_GRAPHICS;\r
+   OR Mode.attrib,TVU_UNCHAINED\r
+   JMP SET_OUT\r
+\r
+SETMODE_X:\r
+   MOV SI,OFFSET CHAIN4\r
+   CALL SETMODE\r
+\r
+   MOV DX,MISC_ADDR\r
+   MOV AX,0E3H\r
+   OUT DX,AL\r
+\r
+   MOV DX,CRTC_ADDR\r
+\r
+   ; turn off write protect\r
+   MOV AX,02C11H\r
+   OUT DX,AX\r
+   ; vertical total\r
+   MOV AX,00D06H\r
+   OUT DX,AX\r
+   ; overflow register\r
+   MOV AX,03E07H\r
+   OUT DX,AX\r
+   ; vertical retrace start\r
+   MOV AX,0EA10H\r
+   OUT DX,AX\r
+   ; vertical retrace end AND wr.prot\r
+   MOV AX,0AC11H\r
+   OUT DX,AX\r
+   ; vertical display enable end\r
+   MOV AX,0DF12H\r
+   OUT DX,AX\r
+   ; start vertical blanking\r
+   MOV AX,0E715H\r
+   OUT DX,AX\r
+   ; end vertical blanking\r
+   MOV AX,00616H\r
+   OUT DX,AX\r
+\r
+   CALL SETPALETTE256\r
+   MOV Mode.mode_width,320;\r
+   MOV Mode.mode_height,240;\r
+   MOV Mode.width_bytes,19200;\r
+   MOV Mode.colors,256;\r
+   MOV Mode.attrib,TVU_GRAPHICS\r
+   OR Mode.attrib,TVU_UNCHAINED\r
+   JMP SET_OUT\r
+\r
+SETMODE_A:\r
+   MOV SI,OFFSET CHAIN4\r
+   CALL SETMODE\r
+\r
+   ; turn off double scanning mode\r
+   MOV DX,CRTC_ADDR\r
+   MOV AX,9\r
+   OUT DX,AL\r
+   INC DX\r
+   IN AL,DX\r
+   AND AL,0E0h\r
+   OUT DX,AL\r
+\r
+   ; change the vertical resolution flags to 350\r
+   MOV DX,03CCH\r
+   IN AL,DX\r
+   AND AL,02Fh\r
+   OR AL,80h\r
+   MOV DX,MISC_ADDR\r
+   OUT DX,AL\r
+\r
+   MOV DX,CRTC_ADDR\r
+   ; turn off write protect\r
+   MOV AX,02C11H\r
+   OUT DX,AX\r
+   ; vertical total\r
+   MOV AX,0BF06H\r
+   OUT DX,AX\r
+   ; overflow register\r
+   MOV AX,01F07H\r
+   OUT DX,AX\r
+   ; vertical retrace start\r
+   MOV AX,08310H\r
+   OUT DX,AX\r
+   ; vertical retrace end AND wr.prot\r
+   MOV AX,08511H\r
+   OUT DX,AX\r
+   ; vertical display enable end\r
+   MOV AX,05D12H\r
+   OUT DX,AX\r
+   ; start vertical blanking\r
+   MOV AX,06315H\r
+   OUT DX,AX\r
+   ; end vertical blanking\r
+   MOV AX,0BA16H\r
+   OUT DX,AX\r
+\r
+   CALL SETPALETTE256\r
+\r
+   MOV Mode.mode_width,320;\r
+   MOV Mode.mode_height,350;\r
+   MOV Mode.width_bytes,28000;\r
+   MOV Mode.colors,256;\r
+   MOV Mode.attrib,TVU_GRAPHICS\r
+   OR Mode.attrib,TVU_UNCHAINED\r
+   JMP SET_OUT\r
+\r
+SETMODE_B:\r
+   MOV SI,OFFSET CHAIN4\r
+   CALL SETMODE\r
+\r
+   ; turn off double scanning mode\r
+   MOV DX,CRTC_ADDR\r
+   MOV AX,9\r
+   OUT DX,AL\r
+   INC DX\r
+   IN AL,DX\r
+   AND AL,0E0h\r
+   OUT DX,AL\r
+\r
+   ; change the vertical resolution flags to 400\r
+   MOV DX,03CCH\r
+   IN AL,DX\r
+   AND AL,02Fh\r
+   OR AL,40h\r
+   MOV DX,MISC_ADDR\r
+   OUT DX,AL\r
+\r
+   CALL SETPALETTE256\r
+\r
+   MOV Mode.mode_width,320;\r
+   MOV Mode.mode_height,400;\r
+   MOV Mode.width_bytes,32000;\r
+   MOV Mode.colors,256;\r
+   MOV Mode.attrib,TVU_GRAPHICS\r
+   OR Mode.attrib,TVU_UNCHAINED\r
+   JMP SET_OUT\r
+\r
+SETMODE_C:\r
+   MOV SI,OFFSET CHAIN4\r
+   CALL SETMODE\r
+\r
+   ; turn off double scanning mode\r
+   MOV DX,CRTC_ADDR\r
+   MOV AX,9\r
+   OUT DX,AL\r
+   INC DX\r
+   IN AL,DX\r
+   AND AL,0E0h\r
+   OUT DX,AL\r
+\r
+   ; change the vertical resolution flags to 480\r
+   MOV DX,03CCH\r
+   IN AL,DX\r
+   AND AL,02Fh\r
+   OR AL,0C0h\r
+   MOV DX,MISC_ADDR\r
+   OUT DX,AL\r
+\r
+   MOV DX,CRTC_ADDR\r
+   ; turn off write protect\r
+   MOV AX,02C11H\r
+   OUT DX,AX\r
+   ; vertical total\r
+   MOV AX,00D06H\r
+   OUT DX,AX\r
+   ; overflow register\r
+   MOV AX,03E07H\r
+   OUT DX,AX\r
+   ; vertical retrace start\r
+   MOV AX,0EA10H\r
+   OUT DX,AX\r
+   ; vertical retrace end AND wr.prot\r
+   MOV AX,0AC11H\r
+   OUT DX,AX\r
+   ; vertical display enable end\r
+   MOV AX,0DF12H\r
+   OUT DX,AX\r
+   ; start vertical blanking\r
+   MOV AX,0E715H\r
+   OUT DX,AX\r
+   ; end vertical blanking\r
+   MOV AX,00616H\r
+   OUT DX,AX\r
+\r
+   CALL SETPALETTE256\r
+\r
+   MOV Mode.mode_width,320;\r
+   MOV Mode.mode_height,480;\r
+   MOV Mode.width_bytes,38400;\r
+   MOV Mode.colors,256;\r
+   MOV Mode.attrib,TVU_GRAPHICS\r
+   OR Mode.attrib,TVU_UNCHAINED\r
+   JMP SET_OUT\r
+\r
+SETMODE_D:\r
+   MOV SI,OFFSET MODE13H\r
+   CALL SETMODE\r
+\r
+   ; Turn off Chain 4\r
+   MOV DX,SEQ_ADDR\r
+   MOV AX,0604H\r
+   OUT DX,AX\r
+   ; Activate a synchronous reset\r
+   MOV AX,0100H\r
+   OUT DX,AX\r
+   ; Select 28 mhz pixel clock\r
+   MOV DX,MISC_ADDR\r
+   MOV AL,067H\r
+   OUT DX,AL\r
+   ; Release synchronous reset\r
+   MOV DX,SEQ_ADDR\r
+   MOV AX,0300H\r
+   OUT DX,AX\r
+\r
+   ; change the vertical resolution flags to 400\r
+   MOV DX,03CCH\r
+   IN AL,DX\r
+   AND AL,02Fh\r
+   OR AL,40h\r
+   MOV DX,MISC_ADDR\r
+   OUT DX,AL\r
+   CALL SETPALETTE256\r
+\r
+   MOV DX,CRTC_ADDR\r
+   ; turn off write protect\r
+   MOV AX,02C11H\r
+   OUT DX,AX\r
+\r
+   MOV AX,06B00H\r
+   OUT DX,AX\r
+   MOV AX,05901H\r
+   OUT DX,AX\r
+   MOV AX,05A02H\r
+   OUT DX,AX\r
+   MOV AX,08E03H\r
+   OUT DX,AX\r
+   MOV AX,05E04H\r
+   OUT DX,AX\r
+   MOV AX,08A05H\r
+   OUT DX,AX\r
+   MOV AX,00008H\r
+   OUT DX,AX\r
+   MOV AX,0C009H\r
+   OUT DX,AX\r
+   MOV AX,0000AH\r
+   OUT DX,AX\r
+   MOV AX,0000BH\r
+   OUT DX,AX\r
+   MOV AX,0000CH\r
+   OUT DX,AX\r
+   MOV AX,0000DH\r
+   OUT DX,AX\r
+   MOV AX,0000EH\r
+   OUT DX,AX\r
+   MOV AX,0000FH\r
+   OUT DX,AX\r
+   MOV AX,0AC11H\r
+   OUT DX,AX\r
+   MOV AX,02D13H\r
+   OUT DX,AX\r
+   MOV AX,00014H\r
+   OUT DX,AX\r
+   MOV AX,0E317H\r
+   OUT DX,AX\r
+   MOV AX,0FF18H\r
+   OUT DX,AX\r
+\r
+   CALL SETPALETTE256\r
+\r
+   MOV Mode.mode_width,360;\r
+   MOV Mode.mode_height,200;\r
+   MOV Mode.width_bytes,18000;\r
+   MOV Mode.colors,256;\r
+   MOV Mode.attrib,TVU_GRAPHICS\r
+   OR Mode.attrib,TVU_UNCHAINED\r
+   JMP SET_OUT\r
+\r
+\r
+SETMODE_E:\r
+   MOV SI,OFFSET MODE13H\r
+   CALL SETMODE\r
+\r
+   ; Turn off Chain 4\r
+   MOV DX,SEQ_ADDR\r
+   MOV AX,0604H\r
+   OUT DX,AX\r
+   ; Activate a synchronous reset\r
+   MOV AX,0100H\r
+   OUT DX,AX\r
+   ; Select 28 mhz pixel clock\r
+   MOV DX,MISC_ADDR\r
+   MOV AL,067H\r
+   OUT DX,AL\r
+   ; Release synchronous reset\r
+   MOV DX,SEQ_ADDR\r
+   MOV AX,0300H\r
+   OUT DX,AX\r
+\r
+   ; change the vertical resolution flags to 480\r
+   MOV DX,03CCH\r
+   IN AL,DX\r
+   AND AL,02Fh\r
+   OR AL,0C0h\r
+   MOV DX,MISC_ADDR\r
+   OUT DX,AL\r
+   CALL SETPALETTE256\r
+\r
+   MOV DX,CRTC_ADDR\r
+   ; turn off write protect\r
+   MOV AX,02C11H\r
+   OUT DX,AX\r
+\r
+   MOV AX,06B00H\r
+   OUT DX,AX\r
+   MOV AX,05901H\r
+   OUT DX,AX\r
+   MOV AX,05A02H\r
+   OUT DX,AX\r
+   MOV AX,08E03H\r
+   OUT DX,AX\r
+   MOV AX,05E04H\r
+   OUT DX,AX\r
+   MOV AX,08A05H\r
+   OUT DX,AX\r
+   MOV AX,00D06H\r
+   OUT DX,AX\r
+   MOV AX,03E07H\r
+   OUT DX,AX\r
+   MOV AX,00008H\r
+   OUT DX,AX\r
+   MOV AX,0C009H\r
+   OUT DX,AX\r
+   MOV AX,0000AH\r
+   OUT DX,AX\r
+   MOV AX,0000BH\r
+   OUT DX,AX\r
+   MOV AX,0000DH\r
+   OUT DX,AX\r
+   MOV AX,0000CH\r
+   OUT DX,AX\r
+   MOV AX,0000EH\r
+   OUT DX,AX\r
+   MOV AX,0000FH\r
+   OUT DX,AX\r
+   MOV AX,0EA10H\r
+   OUT DX,AX\r
+   MOV AX,0AC11H\r
+   OUT DX,AX\r
+   MOV AX,0DF12H\r
+   OUT DX,AX\r
+   MOV AX,02D13H\r
+   OUT DX,AX\r
+   MOV AX,00014H\r
+   OUT DX,AX\r
+   MOV AX,0E715H\r
+   OUT DX,AX\r
+   MOV AX,00616H\r
+   OUT DX,AX\r
+   MOV AX,0E317H\r
+   OUT DX,AX\r
+   MOV AX,0FF18H\r
+   OUT DX,AX\r
+\r
+   CALL SETPALETTE256\r
+\r
+   MOV Mode.mode_width,360;\r
+   MOV Mode.mode_height,240;\r
+   MOV Mode.width_bytes,21600;\r
+   MOV Mode.colors,256;\r
+   MOV Mode.attrib,TVU_GRAPHICS\r
+   OR Mode.attrib,TVU_UNCHAINED\r
+   JMP SET_OUT\r
+\r
+SETMODE_F:\r
+   MOV SI,OFFSET MODE13H\r
+   CALL SETMODE\r
+\r
+   ; Turn off Chain 4\r
+   MOV DX,SEQ_ADDR\r
+   MOV AX,0604H\r
+   OUT DX,AX\r
+   ; Activate a synchronous reset\r
+   MOV AX,0100H\r
+   OUT DX,AX\r
+   ; Select 28 mhz pixel clock\r
+   MOV DX,MISC_ADDR\r
+   MOV AL,067H\r
+   OUT DX,AL\r
+   ; Release synchronous reset\r
+   MOV DX,SEQ_ADDR\r
+   MOV AX,0300H\r
+   OUT DX,AX\r
+\r
+   ; change the vertical resolution flags to 350\r
+   MOV DX,03CCH\r
+   IN AL,DX\r
+   AND AL,02Fh\r
+   OR AL,080h\r
+   MOV DX,MISC_ADDR\r
+   OUT DX,AL\r
+   CALL SETPALETTE256\r
+\r
+   MOV DX,CRTC_ADDR\r
+   ; turn off write protect\r
+   MOV AX,02C11H\r
+   OUT DX,AX\r
+\r
+   MOV AX,06B00H\r
+   OUT DX,AX\r
+   MOV AX,05901H\r
+   OUT DX,AX\r
+   MOV AX,05A02H\r
+   OUT DX,AX\r
+   MOV AX,08E03H\r
+   OUT DX,AX\r
+   MOV AX,05E04H\r
+   OUT DX,AX\r
+   MOV AX,08A05H\r
+   OUT DX,AX\r
+   MOV AX,0BF06H\r
+   OUT DX,AX\r
+   MOV AX,01F07H\r
+   OUT DX,AX\r
+   MOV AX,00008H\r
+   OUT DX,AX\r
+   MOV AX,04009H\r
+   OUT DX,AX\r
+   MOV AX,0000AH\r
+   OUT DX,AX\r
+   MOV AX,0000BH\r
+   OUT DX,AX\r
+   MOV AX,0000DH\r
+   OUT DX,AX\r
+   MOV AX,0000CH\r
+   OUT DX,AX\r
+   MOV AX,0000EH\r
+   OUT DX,AX\r
+   MOV AX,0000FH\r
+   OUT DX,AX\r
+   MOV AX,08310H\r
+   OUT DX,AX\r
+   MOV AX,08511H\r
+   OUT DX,AX\r
+   MOV AX,05D12H\r
+   OUT DX,AX\r
+   MOV AX,02D13H\r
+   OUT DX,AX\r
+   MOV AX,00014H\r
+   OUT DX,AX\r
+   MOV AX,06315H\r
+   OUT DX,AX\r
+   MOV AX,0BA16H\r
+   OUT DX,AX\r
+   MOV AX,0E317H\r
+   OUT DX,AX\r
+   MOV AX,0FF18H\r
+   OUT DX,AX\r
+\r
+   CALL SETPALETTE256\r
+\r
+   MOV Mode.mode_width,360;\r
+   MOV Mode.mode_height,350;\r
+   MOV Mode.width_bytes,31500;\r
+   MOV Mode.colors,256;\r
+   MOV Mode.attrib,TVU_GRAPHICS\r
+   OR Mode.attrib,TVU_UNCHAINED\r
+   JMP SET_OUT\r
+\r
+SETMODE_G:\r
+   MOV SI,OFFSET MODE13H\r
+   CALL SETMODE\r
+\r
+   ; Turn off Chain 4\r
+   MOV DX,SEQ_ADDR\r
+   MOV AX,0604H\r
+   OUT DX,AX\r
+   ; Activate a synchronous reset\r
+   MOV AX,0100H\r
+   OUT DX,AX\r
+   ; Select 28 mhz pixel clock\r
+   MOV DX,MISC_ADDR\r
+   MOV AL,067H\r
+   OUT DX,AL\r
+   ; Release synchronous reset\r
+   MOV DX,SEQ_ADDR\r
+   MOV AX,0300H\r
+   OUT DX,AX\r
+\r
+   ; change the vertical resolution flags to 400\r
+   MOV DX,03CCH\r
+   IN AL,DX\r
+   AND AL,02Fh\r
+   OR AL,040h\r
+   MOV DX,MISC_ADDR\r
+   OUT DX,AL\r
+\r
+   MOV DX,CRTC_ADDR\r
+   ; turn off write protect\r
+   MOV AX,02C11H\r
+   OUT DX,AX\r
+\r
+   MOV AX,06B00H\r
+   OUT DX,AX\r
+   MOV AX,05901H\r
+   OUT DX,AX\r
+   MOV AX,05A02H\r
+   OUT DX,AX\r
+   MOV AX,08E03H\r
+   OUT DX,AX\r
+   MOV AX,05E04H\r
+   OUT DX,AX\r
+   MOV AX,08A05H\r
+   OUT DX,AX\r
+   MOV AX,00008H\r
+   OUT DX,AX\r
+   MOV AX,04009H\r
+   OUT DX,AX\r
+   MOV AX,0000AH\r
+   OUT DX,AX\r
+   MOV AX,0000BH\r
+   OUT DX,AX\r
+   MOV AX,0000DH\r
+   OUT DX,AX\r
+   MOV AX,0000CH\r
+   OUT DX,AX\r
+   MOV AX,0000EH\r
+   OUT DX,AX\r
+   MOV AX,0000FH\r
+   OUT DX,AX\r
+   MOV AX,0AC11H\r
+   OUT DX,AX\r
+   MOV AX,02D13H\r
+   OUT DX,AX\r
+   MOV AX,00014H\r
+   OUT DX,AX\r
+   MOV AX,0E317H\r
+   OUT DX,AX\r
+   MOV AX,0FF18H\r
+   OUT DX,AX\r
+\r
+   CALL SETPALETTE256\r
+\r
+   MOV Mode.mode_width,360;\r
+   MOV Mode.mode_height,400;\r
+   MOV Mode.width_bytes,36000;\r
+   MOV Mode.colors,256;\r
+   MOV Mode.attrib,TVU_GRAPHICS\r
+   OR Mode.attrib,TVU_UNCHAINED\r
+   JMP SET_OUT\r
+\r
+SETMODE_H:\r
+\r
+   MOV SI,OFFSET MODE13H\r
+   CALL SETMODE\r
+\r
+   ; Turn off Chain4\r
+   MOV DX,SEQ_ADDR\r
+   MOV AX,0604H\r
+   OUT DX,AX\r
+\r
+   ; Activate a synchronous reset\r
+   MOV AX,0100H\r
+   OUT DX,AX\r
+\r
+   ; Select 28 mhz pixel clock\r
+   MOV DX,MISC_ADDR\r
+   MOV AL,067H\r
+   OUT DX,AL\r
+\r
+   ; Release synchronous reset\r
+   MOV DX,SEQ_ADDR\r
+   MOV AX,0300H\r
+   OUT DX,AX\r
+\r
+   ; change the vertical resolution flags to 480\r
+   MOV DX,03CCH\r
+   IN AL,DX\r
+   AND AL,02Fh\r
+   OR AL,0C0h\r
+   MOV DX,MISC_ADDR\r
+   OUT DX,AL\r
+\r
+\r
+   MOV DX,CRTC_ADDR\r
+   ; turn off write protect\r
+   MOV AX,02C11H\r
+   OUT DX,AX\r
+\r
+   MOV AX,06B00H\r
+   OUT DX,AX\r
+   MOV AX,05901H\r
+   OUT DX,AX\r
+   MOV AX,05A02H\r
+   OUT DX,AX\r
+   MOV AX,08E03H\r
+   OUT DX,AX\r
+   MOV AX,05E04H\r
+   OUT DX,AX\r
+   MOV AX,08A05H\r
+   OUT DX,AX\r
+   MOV AX,00D06H\r
+   OUT DX,AX\r
+   MOV AX,03E07H\r
+   OUT DX,AX\r
+   MOV AX,00008H\r
+   OUT DX,AX\r
+   MOV AX,04009H\r
+   OUT DX,AX\r
+   MOV AX,0000AH\r
+   OUT DX,AX\r
+   MOV AX,0000BH\r
+   OUT DX,AX\r
+   MOV AX,0000DH\r
+   OUT DX,AX\r
+   MOV AX,0000CH\r
+   OUT DX,AX\r
+   MOV AX,0000EH\r
+   OUT DX,AX\r
+   MOV AX,0000FH\r
+   OUT DX,AX\r
+   MOV AX,0EA10H\r
+   OUT DX,AX\r
+   MOV AX,0AC11H\r
+   OUT DX,AX\r
+   MOV AX,0DF12H\r
+   OUT DX,AX\r
+   MOV AX,02D13H\r
+   OUT DX,AX\r
+   MOV AX,00014H\r
+   OUT DX,AX\r
+   MOV AX,0E715H\r
+   OUT DX,AX\r
+   MOV AX,00616H\r
+   OUT DX,AX\r
+   MOV AX,0E317H\r
+   OUT DX,AX\r
+   MOV AX,0FF18H\r
+   OUT DX,AX\r
+\r
+   CALL SETPALETTE256\r
+\r
+   MOV Mode.mode_width,360;\r
+   MOV Mode.mode_height,480;\r
+   MOV Mode.width_bytes,43200;\r
+   MOV Mode.colors,256;\r
+   MOV Mode.attrib,TVU_GRAPHICS\r
+   OR Mode.attrib,TVU_UNCHAINED\r
+   JMP SET_OUT\r
+\r
+SETMODE_I:\r
+   MOV SI,OFFSET MODE10H\r
+   CALL SETMODE\r
+\r
+   MOV DX,03CCH\r
+   IN AL,DX\r
+   AND AL,03FH\r
+   OR AL,40H\r
+\r
+   MOV DX,03C2H\r
+   OUT DX,AL\r
+\r
+   MOV DX,CRTC_ADDR\r
+   MOV AX,9C10H\r
+   OUT DX,AX\r
+   IODELAY\r
+\r
+   MOV AX,8311H\r
+   OUT DX,AX\r
+   IODELAY\r
+\r
+   MOV AX,8F12H\r
+   OUT DX,AX\r
+   IODELAY\r
+\r
+   MOV AX,9615H\r
+   OUT DX,AX\r
+   IODELAY\r
+\r
+   MOV AX,0B916H\r
+   OUT DX,AX\r
+   IODELAY\r
+\r
+   CALL SETPALETTE16\r
+   MOV Mode.mode_width,640;\r
+   MOV Mode.mode_height,400;\r
+   MOV Mode.width_bytes,32000;\r
+   MOV Mode.colors,16;\r
+   MOV Mode.attrib,TVU_GRAPHICS\r
+   OR Mode.attrib,TVU_PLANAR\r
+   JMP SET_OUT\r
+\r
+SETMODE_J:\r
+   MOV SI,OFFSET MODEJ\r
+   CALL SETMODE\r
+   CALL SETPALETTE16\r
+\r
+   PUSH 8                 ; Bytes per character\r
+   PUSH 0                  ; Offset of font in Video Memory\r
+   PUSH 0A000H\r
+   PUSH FONT_8x8_OFF      ; Offset of Font in BIOS\r
+   PUSH 0C000H\r
+   CALL LOADFONT\r
+\r
+   MOV Mode.mode_width,80;\r
+   MOV Mode.mode_height,43;\r
+   MOV Mode.width_bytes,3440;\r
+   MOV Mode.colors,16;\r
+   MOV Mode.attrib,TVU_TEXT\r
+   JMP SET_OUT\r
+\r
+SETMODE_K:\r
+   MOV SI,OFFSET MODEK\r
+   CALL SETMODE\r
+   CALL SETPALETTE16\r
+\r
+   PUSH 8                 ; Bytes per character\r
+   PUSH 0                  ; Offset of font in Video Memory\r
+   PUSH 0A000H\r
+   PUSH FONT_8x8_OFF      ; Offset of Font in BIOS\r
+   PUSH 0C000H\r
+   CALL LOADFONT\r
+\r
+   MOV Mode.mode_width,80;\r
+   MOV Mode.mode_height,50;\r
+   MOV Mode.width_bytes,4000;\r
+   MOV Mode.colors,16;\r
+   MOV Mode.attrib,TVU_TEXT\r
+   JMP SET_OUT\r
+\r
+SETMODE_L:\r
+   MOV SI,OFFSET MODE_L\r
+   CALL SETMODE\r
+   CALL SETPALETTE16\r
+\r
+   PUSH 8                 ; Bytes per character\r
+   PUSH 0                  ; Offset of font in Video Memory\r
+   PUSH 0A000H\r
+   PUSH FONT_8x8_OFF      ; Offset of Font in BIOS\r
+   PUSH 0C000H\r
+   CALL LOADFONT\r
+\r
+   MOV Mode.mode_width,40;\r
+   MOV Mode.mode_height,43;\r
+   MOV Mode.width_bytes,3440;\r
+   MOV Mode.colors,16;\r
+   MOV Mode.attrib,TVU_TEXT\r
+   JMP SET_OUT\r
+\r
+SETMODE_M:\r
+   MOV SI,OFFSET MODEM\r
+   CALL SETMODE\r
+   CALL SETPALETTE16\r
+\r
+   PUSH 8                 ; Bytes per character\r
+   PUSH 0                  ; Offset of font in Video Memory\r
+   PUSH 0A000H\r
+   PUSH FONT_8x8_OFF      ; Offset of Font in BIOS\r
+   PUSH 0C000H\r
+   CALL LOADFONT\r
+\r
+   MOV Mode.mode_width,40;\r
+   MOV Mode.mode_height,50;\r
+   MOV Mode.width_bytes,4000;\r
+   MOV Mode.colors,16;\r
+   MOV Mode.attrib,TVU_TEXT\r
+\r
+SET_OUT:\r
+\r
+   POP BP\r
+   RET 2\r
+SETVIDEOMODE ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+   PUBLIC SETMODE\r
+SETMODE PROC\r
+\r
+   ; Send MISC regs\r
+   MOV DX,MISC_ADDR\r
+   MOV AL,[SI]\r
+   OUT DX,AL\r
+   IODELAY\r
+   INC SI\r
+\r
+   MOV DX,STATUS_ADDR\r
+   MOV AL,[SI]\r
+   OUT DX,AL\r
+   IODELAY\r
+   INC SI\r
+\r
+   ; Send SEQ regs\r
+   MOV CX,0\r
+REG_LOOP:\r
+   MOV DX,SEQ_ADDR\r
+   MOV AL,CL\r
+   OUT DX,AL\r
+   IODELAY\r
+\r
+   MOV DX,SEQ_ADDR\r
+   INC DX\r
+   MOV AL,[SI]\r
+   OUT DX,AL\r
+   IODELAY\r
+   INC SI\r
+   INC CX\r
+   CMP CL,5\r
+   JL REG_LOOP\r
+\r
+   ; Clear Protection bits\r
+   MOV AH,0EH\r
+   MOV AL,11H\r
+   AND AH,7FH\r
+   MOV DX,CRTC_ADDR\r
+   OUT DX,AX\r
+   IODELAY\r
+\r
+   ; Send CRTC regs\r
+   MOV CX,0\r
+REG_LOOP2:\r
+   MOV DX,CRTC_ADDR\r
+   MOV AL,CL\r
+   OUT DX,AL\r
+   IODELAY\r
+\r
+   MOV DX,CRTC_ADDR\r
+   INC DX\r
+   MOV AL,[SI]\r
+   OUT DX,AL\r
+   IODELAY\r
+\r
+   INC SI\r
+   INC CX\r
+   CMP CL,25\r
+   JL REG_LOOP2\r
+\r
+   ; Send GRAPHICS regs\r
+   MOV CX,0\r
+REG_LOOP3:\r
+   MOV DX,GRACON_ADDR\r
+   MOV AL,CL\r
+   OUT DX,AL\r
+   IODELAY\r
+\r
+   MOV DX,GRACON_ADDR\r
+   INC DX\r
+   MOV AL,[SI]\r
+   OUT DX,AL\r
+   IODELAY\r
+\r
+   INC SI\r
+   INC CX\r
+   CMP CL,9\r
+   JL REG_LOOP3\r
+\r
+   MOV DX,STATUS_ADDR\r
+   IN AL,DX\r
+   IODELAY\r
+\r
+   ; Send ATTRCON regs\r
+   MOV CX,0\r
+REG_LOOP4:\r
+   MOV DX,ATTRCON_ADDR\r
+   IN AX,DX\r
+\r
+   MOV AL,CL\r
+   OUT DX,AL\r
+   IODELAY\r
+\r
+   MOV AL,[SI]\r
+   OUT DX,AL\r
+   IODELAY\r
+\r
+   INC SI\r
+   INC CX\r
+   CMP CL,21\r
+   JL REG_LOOP4\r
+\r
+   MOV AL,20H\r
+   OUT DX,AL\r
+   IODELAY\r
+\r
+   RET\r
+SETMODE ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+; Assumes [bp+4] = color\r
+; Assumes [bp+6] = r value\r
+; Assumes [bp+8] = g value\r
+; Assumes [bp+10] = b value\r
+   PUBLIC SETPAL\r
+SETPAL PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+   PUSHA\r
+\r
+   MOV AX,WORD PTR [BP+4]\r
+   ; Send color\r
+   MOV DX,03C8H\r
+   OUT DX,AL\r
+\r
+   ; Write R value\r
+   MOV DX,03C9H\r
+   MOV AL,BYTE PTR [BP+6]\r
+   OUT DX,AL\r
+\r
+   ; Write G value\r
+   MOV DX,03C9H\r
+   MOV AL,BYTE PTR [BP+8]\r
+   OUT DX,AL\r
+\r
+   ; Write B value\r
+   MOV DX,03C9H\r
+   MOV AL,BYTE PTR [BP+10]\r
+   OUT DX,AL\r
+\r
+   POPA\r
+   POP BP\r
+   RET 8\r
+SETPAL ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+SETPALETTE4 PROC\r
+   PUSH 0\r
+   PUSH 0\r
+   PUSH 0\r
+   PUSH 0\r
+   CALL SETPAL\r
+\r
+   PUSH 42\r
+   PUSH 42\r
+   PUSH 0\r
+   PUSH 1\r
+   CALL SETPAL\r
+\r
+   PUSH 42\r
+   PUSH 0\r
+   PUSH 42\r
+   PUSH 2\r
+   CALL SETPAL\r
+\r
+   PUSH 63\r
+   PUSH 63\r
+   PUSH 63\r
+   PUSH 3\r
+   CALL SETPAL\r
+\r
+   RET\r
+SETPALETTE4 ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+SETPALETTE16 PROC\r
+\r
+   MOV SI,OFFSET PALETTE\r
+   MOV CX,16\r
+   MOV DX,0\r
+PAL_LOOP:\r
+   PUSH WORD PTR [SI+2]\r
+   PUSH WORD PTR [SI+1]\r
+   PUSH WORD PTR [SI]\r
+   PUSH DX\r
+   CALL SETPAL\r
+\r
+   INC DX\r
+   ADD SI,3\r
+   LOOP PAL_LOOP\r
+\r
+   RET\r
+SETPALETTE16 ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+SETPALETTE256 PROC\r
+\r
+   MOV SI,OFFSET PALETTE\r
+   MOV CX,256\r
+   MOV DX,0\r
+PAL_LOOP2:\r
+   PUSH WORD PTR [SI+2]\r
+   PUSH WORD PTR [SI+1]\r
+   PUSH WORD PTR [SI]\r
+   PUSH DX\r
+   CALL SETPAL\r
+\r
+   INC DX\r
+   ADD SI,3\r
+   LOOP PAL_LOOP2\r
+\r
+   RET\r
+SETPALETTE256 ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
diff --git a/16/tauron/ASM_SRC/MODES.INC b/16/tauron/ASM_SRC/MODES.INC
new file mode 100755 (executable)
index 0000000..3c8a84a
--- /dev/null
@@ -0,0 +1,196 @@
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=-                                                                         -=\r
+;=-                   Tauron VGA Utilities Version 3.0                      -=\r
+;=-                      Released September 20, 1998                        -=\r
+;=-                                                                         -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+;=- All Rights Reserved.                     =-= that you put my name some- -=\r
+;=-                                          =-= where in your credits.     -=\r
+;=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- I assume no responsibility whatsoever for any effect that this package, -=\r
+;=- the information contained therein or the use thereof has on you, your   -=\r
+;=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+;=- you or your existance. No warranty is provided nor implied with this    -=\r
+;=- source code.                                                            -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- VGA register variables for the various videomodes                       -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+; Same as Mode 01H\r
+MODE00H DB 67H, 00H,  03H,08H,03H,00H,02H\r
+        DB 2DH,27H,28H,90H,2BH,0A0H,0BFH,1FH,00H,4FH,06H,07H,00H,00H,00H,31H\r
+        DB 9CH,8EH,8FH,14H,1FH,96H,0B9H,0A3H,0FFH\r
+        DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH\r
+        DB 00H,01H,02H,03H,04H,05H,14H,07H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH\r
+        DB 0CH,00H,0FH,08H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+; Same as Mode 02H\r
+MODE03H DB 67H, 00H,  03H,00H,03H,00H,02H\r
+        DB 5FH,4FH,50H,82H,55H,81H,0BFH,1FH,00H,4FH,0EH,0FH,00H,00H,00H,00H\r
+        DB 9CH,0EH,8FH,28H,01H,96H,0B9H,0A3H,0FFH\r
+        DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH\r
+        DB 00H,01H,02H,03H,04H,05H,14H,07H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH\r
+        DB 0CH,00H,0FH,08H,00H\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+; Same as Mode 05H\r
+MODE04H DB 63H, 00H,  03H,09H,03H,00H,02H\r
+        DB 2DH,27H,28H,90H,2BH,80H,0BFH,1FH,00H,0C1H,00H,00H,00H,00H,00H,31H\r
+        DB 9CH,8EH,8FH,14H,00H,96H,0B9H,0A2H,0FFH\r
+        DB 00H,00H,00H,00H,00H,30H,0FH,00H,0FFH\r
+        DB 00H,3BH,3DH,3FH,02H,04H,06H,07H,10H,11H,12H,13H,14H,15H,16H,17H\r
+        DB 01H,00H,03H,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODE06H DB 63H, 00H,  03H,01H,01H,00H,06H\r
+        DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,0C1H,00H,00H,00H,00H,00H,00H\r
+        DB 9CH,8EH,8FH,28H,00H,96H,0B9H,0C2H,0FFH\r
+        DB 00H,00H,00H,00H,00H,00H,0DH,00H,0FFH\r
+        DB 00H,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH\r
+        DB 01H,00H,01H,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODE07H DB 066H, 00H,  03H,00H,03H,00H,02H\r
+        DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH\r
+        DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH\r
+        DB 00H,00H,00H,00H,00H,10H,0AH,00H,0FFH\r
+        DB 00H,08H,08H,08H,08H,08H,08H,08H,10H,18H,18H,18H,18H,18H,18H,18H\r
+        DB 0EH,00H,0FH,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODE0DH DB 063H, 00H,  03H,09H,0FH,00H,06H\r
+        DB 2DH,27H,28H,90H,2BH,80H,0BFH,1FH,00H,0C0H,00H,00H,00H,00H,00H,31H\r
+        DB 9CH,8EH,8FH,14H,00H,96H,0B9H,0E3H,0FFH\r
+        DB 00H,00H,00H,00H,00H,10H,05H,00H,0FFH\r
+        DB 00H,01H,02H,03H,04H,05H,14H,07H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH\r
+        DB 01H,00H,0FH,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODE0EH DB 63H, 00H,  03H,01H,0FH,00H,06H\r
+        DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,0C0H,00H,00H,00H,00H,00H,59H\r
+        DB 9CH,8EH,8FH,28H,00H,96H,0B9H,0E3H,0FFH\r
+        DB 00H,00H,00H,00H,00H,00H,05H,0FH,0FFH\r
+        DB 00H,01H,02H,03H,04H,05H,14H,07H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH\r
+        DB 01H,00H,0FH,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODE0FH DB 0A2H, 00H,  03H,01H,0FH,00H,06H\r
+        DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH\r
+        DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH\r
+        DB 00H,00H,00H,00H,00H,00H,05H,05H,0FFH\r
+        DB 00H,08H,00H,00H,18H,18H,00H,00H,00H,08H,00H,00H,00H,18H,00H,00H\r
+        DB 0BH,00H,05H,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODE10H DB 0A3H, 00H,  03H,01H,0FH,00H,06H\r
+        DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,40H,00H,00H,00H,00H,00H,00H\r
+        DB 83H,85H,5DH,28H,0FH,63H,0BAH,0E3H,0FFH\r
+        DB 00H,00H,00H,00H,00H,00H,05H,0FH,0FFH\r
+        DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH\r
+        DB 01H,00H,0FH,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODE11H DB 063H, 00H,  03H,01H,0FH,00H,06H\r
+        DB 5FH,4FH,50H,82H,54H,80H,0BH,3EH,00H,40H,00H,00H,00H,00H,00H,59H\r
+        DB 0EAH,8CH,0DFH,28H,0FH,0E7H,004H,0C3H,0FFH\r
+        DB 00H,00H,00H,00H,00H,00H,05H,05H,0FFH\r
+        DB 00H,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH\r
+        DB 01H,00H,0FH,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODE12H DB 063H, 00H,  03H,01H,0FH,00H,06H\r
+        DB 5FH,4FH,50H,82H,54H,80H,0BH,3EH,00H,40H,00H,00H,00H,00H,00H,59H\r
+        DB 0EAH,8CH,0DFH,28H,00H,0E7H,04H,0E3H,0FFH\r
+        DB 00H,00H,00H,00H,00H,00H,05H,0FH,0FFH\r
+        DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH\r
+        DB 01H,00H,0FH,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODE13H DB 63H, 00H,  03H,01H,0FH,00H,0EH\r
+        DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,41H,00H,00H,00H,00H,00H,00H\r
+        DB 9CH,0EH,8FH,28H,40H,96H,0B9H,0A3H,0FFH\r
+        DB 00H,00H,00H,00H,00H,40H,05H,0FH,0FFH\r
+        DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH\r
+        DB 41H,00H,0FH,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+CHAIN4 DB 63H, 00H,  03H,01H,0FH,00H,06H\r
+       DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,41H,00H,00H,00H,00H,00H,00H\r
+       DB 9CH,0EH,8FH,28H,00H,96H,0B9H,0E3H,0FFH\r
+       DB 00H,00H,00H,00H,00H,40H,05H,0FH,0FFH\r
+       DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH\r
+       DB 41H,00H,0FH,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODEJ DB 63H, 00H, 03H,01H,03H,00H,02H\r
+      DB 5FH,4FH,50H,82H,55H,81H,0BFH,1FH,00H,47H,06H,07H,00H,00H,00H\r
+      DB 00H,83H,85H,57H,28H,1FH,60H,0B8H,0A3H,0FFH\r
+      DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH\r
+      DB 00H,01H,02H,03H,04H,05H,14H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH\r
+      DB 0CH,00H,0FH,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODEK DB 63H, 00H, 03H,01H,03H,00H,02H\r
+      DB 5FH,4FH,50H,82H,55H,81H,0BFH,1FH,00H,47H,06H,07H,00H,00H,00H\r
+      DB 00H,9CH,8EH,8FH,28H,1FH,96H,0B9H,0A3H,0FFH\r
+      DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH\r
+      DB 00H,01H,02H,03H,04H,05H,14H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH\r
+      DB 0CH,00H,0FH,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+\r
+MODE_L DB 67H, 00H, 03H,08H,03H,00H,02H\r
+       DB 2DH,27H,28H,90H,2BH,0A0H,0BFH,1FH,00H,47H,06H,07H,00H,00H,00H\r
+       DB 31H,83H,85H,57H,14H,1FH,60H,0B8H,0A3H,0FFH\r
+       DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH\r
+       DB 00H,01H,02H,03H,04H,05H,14H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH\r
+       DB 0CH,00H,0FH,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODEM DB 67H, 00H,  03H,08H,03H,00H,02H\r
+      DB 2DH,27H,28H,90H,2BH,0A0H,0BFH,1FH,00H,47H,06H,07H,00H,00H,00H,31H\r
+      DB 9CH,8EH,8FH,14H,1FH,96H,0B9H,0A3H,0FFH\r
+      DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH\r
+      DB 00H,01H,02H,03H,04H,05H,14H,07H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH\r
+      DB 0CH,00H,0FH,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+; Videomode Structure Definition\r
+VMODE STRUC\r
+   videomode      DW ?   ; Videomode Number\r
+   mode_width     DW ?   ; Width in pixels\r
+   mode_height    DW ?   ; height in pixels\r
+   width_bytes    DW ?   ; Number of bytes per screen\r
+   colors         DW ?   ; Number of colors\r
+   attrib         DW ?   ; Videomode attributes\r
+VMODE ENDS\r
+\r
+; Videomode attributes\r
+TVU_TEXT           EQU        0001h\r
+TVU_GRAPHICS       EQU        0002h\r
+TVU_MONOCHROME     EQU        0004h\r
+TVU_PLANAR         EQU        0008h\r
+TVU_UNCHAINED      EQU        0010h\r
+TVU_B8000_ADDR     EQU        0020h\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+; Videomode Info Structure\r
+MODE VMODE <MODE03H, 80, 25, 2000, 16, TVU_TEXT>\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
diff --git a/16/tauron/ASM_SRC/TESTS.ASM b/16/tauron/ASM_SRC/TESTS.ASM
new file mode 100755 (executable)
index 0000000..7401c0e
--- /dev/null
@@ -0,0 +1,676 @@
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=-                                                                         -=\r
+;=-                   Tauron VGA Utilities Version 3.0                      -=\r
+;=-                      Released September 20, 1998                        -=\r
+;=-                                                                         -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+;=- All Rights Reserved.                     =-= that you put my name some- -=\r
+;=-                                          =-= where in your credits.     -=\r
+;=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- I assume no responsibility whatsoever for any effect that this package, -=\r
+;=- the information contained therein or the use thereof has on you, your   -=\r
+;=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+;=- you or your existance. No warranty is provided nor implied with this    -=\r
+;=- source code.                                                            -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+PIXEL PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+   PUSHA\r
+\r
+   TEST Mode.attrib,TVU_PLANAR\r
+   JNZ PLANAR_PIXEL\r
+   CMP Mode.videomode,VMODE_13H\r
+   JE MODE_13H_PIXEL\r
+\r
+; Unchained Modes Pixel\r
+   MOV AX,0A000H   ;    video memory segment number\r
+   MOV ES,AX       ;    place it in es\r
+\r
+   MOV DX,03C4H\r
+   MOV AL,2\r
+   OUT DX,AL\r
+   INC DX\r
+\r
+   MOV AL,1\r
+   MOV CX,word ptr [bp+4]\r
+   AND CX,3\r
+   SHL AL,CL\r
+   OUT DX,AL\r
+\r
+   XOR DI,DI\r
+\r
+; Calculate the Offset\r
+   mov ax,Mode.mode_width  ; width / 4\r
+   SHR AX,2\r
+   mul word ptr [bp+6]         ; (Y * (width / 4))\r
+   mov bx,word ptr [bp+4]      ; (X / 4) + (Y * (width / 4))\r
+   shr bx,2\r
+   add ax,bx\r
+; Done!\r
+\r
+   ADD DI,AX\r
+   mov ah,byte ptr [bp+8]   ;    move the Color into ah\r
+   mov es:[di],ah ;    move the value to the screen\r
+   JMP PIXEL_OUT\r
+\r
+PLANAR_PIXEL:\r
+   MOV AX,0A000H   ;    video memory segment number\r
+   MOV ES,AX       ;    place it in es\r
+\r
+   MOV BX,word ptr [bp+4]        ;    X Value\r
+   MOV CX,BX\r
+   MOV AX,word ptr [bp+6]        ;    Y Value\r
+   MOV SI,80\r
+   MUL SI\r
+   SHR BX,3        ;    /8\r
+   ADD AX,BX\r
+   MOV DI,AX\r
+\r
+   AND CL,7\r
+   XOR CL,7\r
+   MOV AH,1\r
+\r
+   SHL AH,CL\r
+\r
+   MOV DX,03CEH\r
+   MOV AL,8\r
+   OUT DX,AX\r
+\r
+   MOV AL,0\r
+   XCHG ES:[DI],AL\r
+\r
+   MOV DX,03C4H\r
+   MOV AH,byte ptr [bp+8]\r
+   MOV AL,2\r
+   OUT DX,AX\r
+\r
+   MOV BYTE PTR ES:[DI],0FFh\r
+\r
+   MOV AX,0F02H\r
+   OUT DX,AX\r
+\r
+   MOV DX,03CEH\r
+   MOV AX,0FF08h\r
+   OUT DX,AX\r
+   JMP PIXEL_OUT\r
+\r
+MODE_13H_PIXEL:\r
+\r
+   MOV AX,0A000H   ;    video memory segment number\r
+   MOV ES,AX       ;    place it in es\r
+   XOR DI,DI\r
+\r
+; Calculate the Offset\r
+   mov ax,Mode.mode_width      ; width\r
+   mul word ptr [bp+6]         ; (Y * width))\r
+   mov bx,word ptr [bp+4]      ; (X + (Y * width))\r
+   add ax,bx\r
+; Done!\r
+\r
+   ADD DI,AX\r
+   mov ah,byte ptr [bp+8]   ;    move the Color into ah\r
+   mov es:[di],ah ;    move the value to the screen\r
+\r
+PIXEL_OUT:\r
+\r
+   POPA\r
+   POP BP\r
+   RET 6\r
+PIXEL ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+HLINE PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+   PUSHA\r
+\r
+   MOV CX,WORD PTR [BP+4]\r
+HLINE_LOOP:\r
+   PUSH WORD PTR [BP+10]   ; Color\r
+   PUSH WORD PTR [BP+8]    ; Y value\r
+   PUSH CX                 ; X value\r
+   CALL PIXEL\r
+   INC CX\r
+   CMP CX,WORD PTR [BP+6]\r
+   JLE HLINE_LOOP\r
+\r
+   POPA\r
+   POP BP\r
+   RET 8\r
+HLINE ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+VLINE PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+   PUSHA\r
+\r
+   MOV CX,WORD PTR [BP+4]\r
+VLINE_LOOP:\r
+   PUSH WORD PTR [BP+10]   ; Color\r
+   PUSH CX                 ; Y value\r
+   PUSH WORD PTR [BP+8]    ; X value\r
+   CALL PIXEL\r
+   INC CX\r
+   CMP CX,WORD PTR [BP+6]\r
+   JLE VLINE_LOOP\r
+\r
+   POPA\r
+   POP BP\r
+   RET 8\r
+VLINE ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+DRAWRECT PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+\r
+   PUSH WORD PTR [BP+12]\r
+   PUSH WORD PTR [BP+6]\r
+   PUSH WORD PTR [BP+8]\r
+   PUSH WORD PTR [BP+4]\r
+   CALL HLINE\r
+\r
+   PUSH WORD PTR [BP+12]\r
+   PUSH WORD PTR [BP+10]\r
+   PUSH WORD PTR [BP+8]\r
+   PUSH WORD PTR [BP+4]\r
+   CALL HLINE\r
+\r
+   PUSH WORD PTR [BP+12]\r
+   PUSH WORD PTR [BP+4]\r
+   PUSH WORD PTR [BP+10]\r
+   PUSH WORD PTR [BP+6]\r
+   CALL VLINE\r
+\r
+   PUSH WORD PTR [BP+12]\r
+   PUSH WORD PTR [BP+8]\r
+   PUSH WORD PTR [BP+10]\r
+   PUSH WORD PTR [BP+6]\r
+   CALL VLINE\r
+\r
+   POP BP\r
+   RET 10\r
+DRAWRECT ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+FILLRECT PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+   PUSHA\r
+\r
+   MOV CX,WORD PTR [BP+6]\r
+HLINE_LOOP2:\r
+   PUSH WORD PTR [BP+12]   ; Color\r
+   PUSH CX                 ; Y1 value\r
+   PUSH WORD PTR [BP+8]    ; X2 value\r
+   PUSH WORD PTR [BP+4]    ; X1 value\r
+   CALL HLINE\r
+\r
+   INC CX\r
+   CMP CX,WORD PTR [BP+10] ; Y2 value\r
+   JLE HLINE_LOOP2\r
+\r
+   POPA\r
+   POP BP\r
+   RET 10\r
+FILLRECT ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODETEST PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+   SUB SP,2\r
+\r
+   TEST Mode.attrib,TVU_PLANAR\r
+   JNZ PLANAR_CLEAR\r
+   CMP Mode.videomode,VMODE_13H\r
+   JNE UNCHAINED_CLEAR\r
+\r
+   PUSH 0\r
+   CALL CLEAR13H\r
+   JMP CLEAROUT\r
+\r
+PLANAR_CLEAR:\r
+   PUSH 0\r
+   CALL PLANARCLEAR\r
+   JMP CLEAROUT\r
+\r
+UNCHAINED_CLEAR:\r
+   PUSH 0\r
+   CALL UNCHAINEDCLEAR\r
+\r
+CLEAROUT:\r
+\r
+   PUSH 15\r
+\r
+   MOV AX,Mode.mode_height\r
+   DEC AX\r
+   PUSH AX\r
+\r
+   MOV AX,Mode.mode_width\r
+   DEC AX\r
+   PUSH AX\r
+\r
+   PUSH 0\r
+   PUSH 0\r
+   CALL DRAWRECT\r
+\r
+   MOV CX,50\r
+LINE_LOOP:\r
+   PUSH 15\r
+   PUSH CX\r
+   PUSH 10\r
+   PUSH 0\r
+   CALL HLINE\r
+   ADD CX,50\r
+\r
+   PUSH 15\r
+   PUSH CX\r
+   PUSH 25\r
+   PUSH 0\r
+   CALL HLINE\r
+   ADD CX,50\r
+\r
+   CMP CX,Mode.mode_height\r
+   JLE LINE_LOOP\r
+\r
+   MOV CX,40\r
+LINE_LOOP2:\r
+   PUSH 15\r
+   PUSH CX\r
+   PUSH 15\r
+   PUSH 0\r
+   CALL VLINE\r
+   ADD CX,40\r
+\r
+   PUSH 15\r
+   PUSH CX\r
+   PUSH 30\r
+   PUSH 0\r
+   CALL VLINE\r
+   ADD CX,40\r
+\r
+   CMP CX,Mode.mode_width\r
+   JLE LINE_LOOP2\r
+\r
+   CMP Mode.colors,16\r
+   JE SETBLOCK16\r
+   CMP Mode.colors,256\r
+   JE SETBLOCK256\r
+\r
+   MOV AX,Mode.mode_width\r
+   SUB AX,420\r
+   MOV DI,AX\r
+   ADD DI,200\r
+   MOV BX,Mode.mode_height\r
+   SUB BX,220\r
+   MOV SI,BX\r
+   ADD SI,200\r
+\r
+   PUSH 0    ; Color\r
+   PUSH SI    ; Y2\r
+   PUSH DI    ; X2\r
+   PUSH BX    ; Y1\r
+   PUSH AX    ; X1\r
+   CALL FILLRECT\r
+   ADD AX,200\r
+   ADD DI,200\r
+   PUSH 15    ; Color\r
+   PUSH SI    ; Y2\r
+   PUSH DI    ; X2\r
+   PUSH BX    ; Y1\r
+   PUSH AX    ; X1\r
+   CALL FILLRECT\r
+\r
+   MOV AX,Mode.mode_width\r
+   SUB AX,420\r
+   MOV DI,AX\r
+   ADD DI,400\r
+   MOV BX,Mode.mode_height\r
+   SUB BX,220\r
+   MOV SI,BX\r
+   ADD SI,200\r
+\r
+   PUSH 15    ; Color\r
+   PUSH SI    ; Y2\r
+   PUSH DI    ; X2\r
+   PUSH BX    ; Y1\r
+   PUSH AX    ; X1\r
+   CALL DRAWRECT\r
+\r
+   JMP BLOCKOUT\r
+SETBLOCK16:\r
+\r
+   MOV AX,Mode.mode_width\r
+   SUB AX,522\r
+   MOV DI,AX\r
+   ADD DI,64\r
+\r
+   MOV BX,Mode.mode_height\r
+   SUB BX,135\r
+   MOV SI,BX\r
+   ADD SI,64\r
+   MOV CX,0\r
+   MOV DX,0\r
+LINE1_LOOP1:\r
+\r
+   PUSH DX    ; Color\r
+   PUSH SI    ; Y2\r
+   PUSH DI    ; X2\r
+   PUSH BX    ; Y1\r
+   PUSH AX    ; X1\r
+   CALL FILLRECT\r
+   ADD AX,64\r
+   ADD DI,64\r
+   INC CX\r
+   INC DX\r
+   CMP CX,8\r
+   JL LINE1_LOOP1\r
+\r
+   MOV AX,Mode.mode_width\r
+   SUB AX,522\r
+   MOV DI,AX\r
+   ADD DI,64\r
+   ADD SI,64\r
+   ADD BX,64\r
+   MOV CX,0\r
+LINE1_LOOP2:\r
+\r
+   PUSH DX    ; Color\r
+   PUSH SI    ; Y2\r
+   PUSH DI    ; X2\r
+   PUSH BX    ; Y1\r
+   PUSH AX    ; X1\r
+   CALL FILLRECT\r
+   ADD AX,64\r
+   ADD DI,64\r
+   INC CX\r
+   INC DX\r
+   CMP CX,8\r
+   JL LINE1_LOOP2\r
+\r
+   MOV AX,Mode.mode_width\r
+   SUB AX,522\r
+   MOV DI,Mode.mode_width\r
+   SUB DI,10\r
+   MOV BX,Mode.mode_height\r
+   SUB BX,135\r
+   MOV SI,Mode.mode_height\r
+   SUB SI,7\r
+   PUSH 15    ; Color\r
+   PUSH SI    ; Y2\r
+   PUSH DI    ; X2\r
+   PUSH BX    ; Y1\r
+   PUSH AX    ; X1\r
+   CALL DRAWRECT\r
+   JMP BLOCKOUT\r
+\r
+SETBLOCK256:\r
+\r
+   MOV WORD PTR [BP-2],0\r
+   MOV BX,Mode.mode_height\r
+   SUB BX,165\r
+   MOV SI,BX\r
+   ADD SI,10\r
+   MOV DX,0\r
+LINE2_LOOP2:\r
+\r
+   MOV AX,Mode.mode_width\r
+   SUB AX,165\r
+   MOV DI,Mode.mode_width\r
+   SUB DI,155\r
+\r
+   MOV CX,0\r
+LINE2_LOOP1:\r
+\r
+   PUSH DX    ; Color\r
+   PUSH SI    ; Y2\r
+   PUSH DI    ; X2\r
+   PUSH BX    ; Y1\r
+   PUSH AX    ; X1\r
+   CALL FILLRECT\r
+   ADD AX,10\r
+   ADD DI,10\r
+   INC CX\r
+   INC DX\r
+   CMP CX,16\r
+   JL LINE2_LOOP1\r
+\r
+   ADD BX,10\r
+   ADD SI,10\r
+   INC WORD PTR [BP-2]\r
+   CMP WORD PTR [BP-2],16\r
+   JL LINE2_LOOP2\r
+\r
+   MOV AX,Mode.mode_width\r
+   SUB AX,165\r
+   MOV DI,Mode.mode_width\r
+   SUB DI,5\r
+   MOV BX,Mode.mode_height\r
+   SUB BX,165\r
+   MOV SI,Mode.mode_height\r
+   SUB SI,5\r
+   PUSH 15    ; Color\r
+   PUSH SI    ; Y2\r
+   PUSH DI    ; X2\r
+   PUSH BX    ; Y1\r
+   PUSH AX    ; X1\r
+   CALL DRAWRECT\r
+\r
+BLOCKOUT:\r
+   ADD SP,2\r
+   POP BP\r
+   RET\r
+MODETEST ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+PUTCHAR PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+   SUB SP,2\r
+   PUSHA\r
+\r
+   CMP Mode.videomode,VMODE_00H\r
+   JE SET2\r
+   CMP Mode.videomode,VMODE_MODE_L\r
+   JE SET2\r
+   CMP Mode.videomode,VMODE_MODE_M\r
+   JE SET2\r
+   MOV BYTE PTR [BP-2],160\r
+   JMP NOSET2\r
+SET2:\r
+   MOV BYTE PTR [BP-2],80\r
+   JMP NOSET2\r
+NOSET2:\r
+\r
+   MOV AX,0B800h\r
+   MOV ES,AX\r
+\r
+   MOV AX,WORD PTR [BP+6] ; Y value\r
+   MOV BL,BYTE PTR [BP-2]\r
+   MUL BL\r
+   SHL WORD PTR [BP+4],1\r
+   ADD AX,WORD PTR [BP+4] ; X value\r
+   MOV DI,AX\r
+   MOV AH,ATT\r
+   MOV AL,BYTE PTR [BP+8] ; character\r
+   CLD\r
+   STOSW\r
+\r
+   POPA\r
+   ADD SP,2\r
+   POP BP\r
+   RET 6\r
+PUTCHAR ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+PRINTSTRING PROC\r
+\r
+TEXT_LOOP:\r
+   XOR DX,DX\r
+   MOV DL,BYTE PTR [SI]\r
+   PUSH DX\r
+   PUSH BX\r
+   PUSH AX\r
+   CALL PUTCHAR\r
+\r
+   INC AX\r
+   INC SI\r
+   CMP BYTE PTR [SI],0\r
+   JNE TEXT_LOOP\r
+   RET\r
+PRINTSTRING ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+TEXTTEST PROC\r
+   PUSH 1FH\r
+   CALL TEXTCLEAR\r
+\r
+   MOV AH,2h\r
+   MOV BH,0\r
+   MOV DX,Mode.mode_height\r
+   MOV DH,DL\r
+   MOV DL,0\r
+   INT 10h\r
+\r
+   CMP Mode.videomode,VMODE_00H\r
+   JE SET_TEXT1\r
+   CMP Mode.videomode,VMODE_MODE_J\r
+   JE SET_TEXT2\r
+   CMP Mode.videomode,VMODE_MODE_K\r
+   JE SET_TEXT3\r
+   CMP Mode.videomode,VMODE_MODE_L\r
+   JE SET_TEXT4\r
+   CMP Mode.videomode,VMODE_MODE_M\r
+   JE SET_TEXT5\r
+   ; Mode 03h\r
+   MOV TEXTMSG_2+13,'3'\r
+   MOV TEXTMSG_3+8,'8'\r
+   MOV TEXTMSG_4+19,'4'\r
+   JMP NOSET\r
+SET_TEXT1:\r
+   ; Mode 00h\r
+   MOV TEXTMSG_2+13,'0'\r
+   MOV TEXTMSG_3+8,'4'\r
+   MOV TEXTMSG_4+19,'2'\r
+   JMP NOSET\r
+SET_TEXT2:\r
+   ; Mode J\r
+   MOV TEXTMSG_8+11,'J'\r
+   MOV TEXTMSG_9+21,'4'\r
+   MOV TEXTMSG_9+22,'3'\r
+   MOV TEXTMSG_A+19,'3'\r
+   MOV TEXTMSG_A+20,'4'\r
+   MOV TEXTMSG_A+21,'4'\r
+   MOV TEXTMSG_A+22,'0'\r
+   JMP NOSET\r
+SET_TEXT3:\r
+   ; Mode K\r
+   MOV TEXTMSG_8+11,'K'\r
+   MOV TEXTMSG_9+21,'5'\r
+   MOV TEXTMSG_9+22,'0'\r
+   MOV TEXTMSG_A+19,'4'\r
+   MOV TEXTMSG_A+20,'0'\r
+   MOV TEXTMSG_A+21,'0'\r
+   MOV TEXTMSG_A+22,'0'\r
+   JMP NOSET\r
+SET_TEXT4:\r
+   ; Mode L\r
+   MOV TEXTMSG_8+11,'L'\r
+   MOV TEXTMSG_9+8,'4'\r
+   MOV TEXTMSG_9+21,'4'\r
+   MOV TEXTMSG_9+22,'3'\r
+   MOV TEXTMSG_A+19,'3'\r
+   MOV TEXTMSG_A+20,'4'\r
+   MOV TEXTMSG_A+21,'4'\r
+   MOV TEXTMSG_A+22,'0'\r
+   JMP NOSET\r
+SET_TEXT5:\r
+   ; Mode M\r
+   MOV TEXTMSG_8+11,'M'\r
+   MOV TEXTMSG_9+8,'4'\r
+   MOV TEXTMSG_9+21,'5'\r
+   MOV TEXTMSG_9+22,'0'\r
+   MOV TEXTMSG_A+19,'4'\r
+   MOV TEXTMSG_A+20,'0'\r
+   MOV TEXTMSG_A+21,'0'\r
+   MOV TEXTMSG_A+22,'0'\r
+NOSET:\r
+\r
+   CMP Mode.videomode,VMODE_00H\r
+   JE WRITE1\r
+   CMP Mode.videomode,VMODE_03H\r
+   JE WRITE1\r
+   CMP Mode.videomode,VMODE_MODE_J\r
+   JE WRITE2\r
+   JMP WRITE2\r
+\r
+WRITE1:\r
+   MOV BX,0\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_1\r
+   CALL PRINTSTRING\r
+   MOV BX,1\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_2\r
+   CALL PRINTSTRING\r
+   MOV BX,2\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_3\r
+   CALL PRINTSTRING\r
+   MOV BX,3\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_4\r
+   CALL PRINTSTRING\r
+   MOV BX,4\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_5\r
+   CALL PRINTSTRING\r
+   MOV BX,5\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_6\r
+   CALL PRINTSTRING\r
+   JMP WRITEOUT\r
+\r
+WRITE2:\r
+   MOV BX,0\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_7\r
+   CALL PRINTSTRING\r
+   MOV BX,1\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_8\r
+   CALL PRINTSTRING\r
+   MOV BX,2\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_9\r
+   CALL PRINTSTRING\r
+   MOV BX,3\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_A\r
+   CALL PRINTSTRING\r
+   MOV BX,4\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_B\r
+   CALL PRINTSTRING\r
+   MOV BX,5\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_C\r
+   CALL PRINTSTRING\r
+WRITEOUT:\r
+   RET\r
+TEXTTEST ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
diff --git a/16/tauron/C_SRC/CLEAR.CPP b/16/tauron/C_SRC/CLEAR.CPP
new file mode 100755 (executable)
index 0000000..e201a05
--- /dev/null
@@ -0,0 +1,180 @@
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=-                                                                         -=\r
+//=-                   Tauron VGA Utilities Version 3.0                      -=\r
+//=-                      Released September 20, 1998                        -=\r
+//=-                                                                         -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+//=- All Rights Reserved.                     =-= that you put my name some- -=\r
+//=-                                          =-= where in your credits.     -=\r
+//=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- I assume no responsibility whatsoever for any effect that this package, -=\r
+//=- the information contained therein or the use thereof has on you, your   -=\r
+//=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+//=- you or your existance. No warranty is provided nor implied with this    -=\r
+//=- source code.                                                            -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+#include <stdlib.h>\r
+#include <stdio.h>\r
+#include <conio.h>\r
+#include <dos.h>\r
+#include "tauron.h"\r
+\r
+void TextClear(char attrib)\r
+{\r
+   unsigned int bytes = Mode.width_bytes;\r
+   asm {\r
+   MOV AX,0B800H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV AH,attrib\r
+   MOV AL,' '\r
+   MOV CX,bytes\r
+   CLD\r
+   REP STOSW\r
+   }\r
+}\r
+\r
+void Clear04H()\r
+{\r
+   unsigned int bytes = Mode.width_bytes;\r
+   asm {\r
+   MOV AX,0B800H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV AX,0AAAAH\r
+   CLD\r
+   MOV CX,bytes\r
+   REP STOSW\r
+   }\r
+}\r
+\r
+void Clear06H()\r
+{\r
+   unsigned int bytes = Mode.width_bytes;\r
+   asm {\r
+   MOV AX,0B800H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV AX,0FFFFH\r
+   CLD\r
+   MOV CX,bytes\r
+   REP STOSW\r
+   }\r
+}\r
+\r
+void Clear0DH(char color)\r
+{\r
+   unsigned int bytes = Mode.width_bytes/2;\r
+   asm {\r
+   MOV AX,0A000H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV CX,bytes\r
+   }\r
+CLEAR_LOOP:\r
+   asm {\r
+   MOV DX,03CEH\r
+   MOV AX,0FF08H\r
+   OUT DX,AX\r
+\r
+   MOV AX,0\r
+   XCHG WORD PTR ES:[DI],AX\r
+\r
+   MOV DX,03C4H\r
+   MOV AH,color\r
+   MOV AL,2\r
+   OUT DX,AX\r
+\r
+   MOV WORD PTR ES:[DI],0FFFFH\r
+\r
+   MOV AX,0F02H\r
+   OUT DX,AX\r
+\r
+   MOV DX,03CEH\r
+   MOV AX,0FF08h\r
+   OUT DX,AX\r
+\r
+   ADD DI,2\r
+   LOOP CLEAR_LOOP\r
+   }\r
+}\r
+\r
+void PlanarClear(char Color)\r
+{\r
+   unsigned int bytes = Mode.width_bytes/2;\r
+   asm {\r
+   MOV AX,0A000H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV CX,bytes\r
+   }\r
+CLEAR_LOOP:\r
+   asm {\r
+   MOV DX,03CEH\r
+   MOV AX,0FF08H\r
+   OUT DX,AX\r
+\r
+   MOV AX,0\r
+   XCHG WORD PTR ES:[DI],AX\r
+\r
+   MOV DX,03C4H\r
+   MOV AH,Color\r
+   MOV AL,2\r
+   OUT DX,AX\r
+\r
+   MOV WORD PTR ES:[DI],0FFFFH\r
+\r
+   MOV AX,0F02H\r
+   OUT DX,AX\r
+\r
+   MOV DX,03CEH\r
+   MOV AX,0FF08h\r
+   OUT DX,AX\r
+\r
+   ADD DI,2\r
+   LOOP CLEAR_LOOP\r
+   }\r
+}\r
+\r
+void Clear13H(char Color)\r
+{\r
+   asm {\r
+   MOV AX,0A000H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV AL,Color\r
+   MOV AH,AL\r
+   CLD\r
+   MOV CX,8000H\r
+   REP STOSW\r
+   }\r
+}\r
+\r
+void UnchainedClear(char Color)\r
+{\r
+   unsigned int bytes = Mode.width_bytes/2;\r
+   asm {\r
+   mov   dx, 03C4h         // 03c4h\r
+   mov   al, 2             // Map Mask Register\r
+   out   dx, al\r
+   inc   dx\r
+   mov   al,00001111B      // Select all planes to write to\r
+   out   dx, al            // Doing this to clear all planes at once\r
+\r
+   mov   ax,0A000H\r
+   mov   es, ax\r
+   XOR DI,DI               // set es:di = Screen Mem\r
+   mov ah,Color            // move the color into ah\r
+   mov al,ah               // copy the value to al\r
+   mov   cx,bytes          // Number of words\r
+   cld\r
+   rep   stosw             // clear it\r
+   }\r
+}\r
diff --git a/16/tauron/C_SRC/DUAL.CPP b/16/tauron/C_SRC/DUAL.CPP
new file mode 100755 (executable)
index 0000000..e60d1fb
--- /dev/null
@@ -0,0 +1,236 @@
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=-                                                                         -=\r
+//=-                   Tauron VGA Utilities Version 3.0                      -=\r
+//=-                      Released September 20, 1998                        -=\r
+//=-                                                                         -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+//=- All Rights Reserved.                     =-= that you put my name some- -=\r
+//=-                                          =-= where in your credits.     -=\r
+//=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- I assume no responsibility whatsoever for any effect that this package, -=\r
+//=- the information contained therein or the use thereof has on you, your   -=\r
+//=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+//=- you or your existance. No warranty is provided nor implied with this    -=\r
+//=- source code.                                                            -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+// 3C4H, 03H\r
+// Bit positions for font maps:\r
+//\r
+// +--7--+--6--+--5--+--4--+--3--+--2--+--1--+--0--+\r
+// |     |     | SAH | SBH |    SA     |    SB     |\r
+// +-----+-----+-----+-----+-----+-----+-----+-----+\r
+//\r
+// SA  - bits 1, 0 of Character Map A\r
+// SAH - bit 2 (high order) of Charcter Map A\r
+//\r
+// SB  - bits 1, 0 of Character Map B\r
+// SBH - bit 2 (high order) of Charcter Map B\r
+//\r
+#include <string.h>\r
+#include <stdlib.h>\r
+#include <stdio.h>\r
+#include <conio.h>\r
+#include <dos.h>\r
+#include "tauron.h"\r
+#include "font1.h"\r
+#include "font2.h"\r
+extern unsigned char mode03h[62];\r
+void LoadFonts();\r
+\r
+// Points to fonts for Map A              Memory Address\r
+#define DFM_MAPA_FONT1     0x00          //  0K\r
+#define DFM_MAPA_FONT2     0x04          // 16K\r
+#define DFM_MAPA_FONT3     0x08          // 32K\r
+#define DFM_MAPA_FONT4     0x0C          // 48K\r
+#define DFM_MAPA_FONT5     0x20          //  8K\r
+#define DFM_MAPA_FONT6     0x24          // 24K\r
+#define DFM_MAPA_FONT7     0x28          // 40K\r
+#define DFM_MAPA_FONT8     0x2C          // 56K\r
+\r
+// Points to fonts for Map B\r
+#define DFM_MAPB_FONT1     0x00          //  0K\r
+#define DFM_MAPB_FONT2     0x01          // 16K\r
+#define DFM_MAPB_FONT3     0x02          // 32K\r
+#define DFM_MAPB_FONT4     0x03          // 48K\r
+#define DFM_MAPB_FONT5     0x10          //  8K\r
+#define DFM_MAPB_FONT6     0x11          // 24K\r
+#define DFM_MAPB_FONT7     0x12          // 40K\r
+#define DFM_MAPB_FONT8     0x13          // 56K\r
+\r
+\r
+// To set dual font mode, just set the character map select register to point\r
+// to 2 different fonts.  There can be up to 8 fonts resident in memory at\r
+// once but only 2 can be active at a time.\r
+//\r
+// ** NOTE ** If you set both font maps the same you are no longer in dual font\r
+// mode.  But what this allows you to do is to put up to 8 fonts in VGA memory\r
+// and switch between them at any time.\r
+//\r
+// Both fonts were made with my font editor.  I just read the BIOS and\r
+// modified the second font so a solid line goes through the middle of it.\r
+//\r
+// This procedure sets up dual font mode and loads 2 fonts into video memory.\r
+void SetDual()\r
+{\r
+   outport(SEQ_ADDR, ((DFM_MAPA_FONT1 | DFM_MAPB_FONT5) << 8) | 0x03);\r
+\r
+   // Load font 1 into 0K and font 2 into 8K\r
+       LoadFonts();\r
+}\r
+\r
+// This procedure reset the character map select register to point to only\r
+// one font.\r
+void UnSetDual()\r
+{\r
+   outport(0x3C4,0x0003);\r
+}\r
+\r
+// In dual font modes, the palette is in effect half of what it is.  The \r
+// bottom 8 colors for the first font, and the top 8 colors for the second \r
+// font.\r
+//\r
+// What I do here is to set them to the same 8 colors.\r
+// Black, Blue, Green, Red, Purple, Yellow, Light Gray, and White\r
+//\r
+void SetDualPalette()\r
+{\r
+       // Font 1\r
+   setpal( 0,  0,  0,  0);\r
+   setpal( 1,  0,  0, 42);\r
+   setpal( 2,  0, 42,  0);\r
+   setpal( 3,  0, 42, 42);\r
+   setpal( 4, 42,  0,  0);\r
+   setpal( 5, 63, 63, 21);\r
+   setpal( 6, 42, 42, 42);\r
+   setpal( 7, 63, 63, 63);\r
+   // Font 2\r
+   setpal( 8,  0,  0,  0);\r
+   setpal( 9,  0,  0, 42);\r
+   setpal(10,  0, 42,  0);\r
+   setpal(11,  0, 42, 42);\r
+   setpal(12, 42,  0,  0);\r
+   setpal(13, 63, 63, 21);\r
+   setpal(14, 42, 42, 42);\r
+   setpal(15, 63, 63, 63);\r
+}\r
+\r
+void pchar(int x, int y, char c, char att)\r
+{\r
+   char far *vidmem;\r
+   int off;\r
+\r
+   // Make a pointer to the font\r
+   vidmem = (char far *)MK_FP( 0xB800, 0x0000);\r
+   off = y * 160 + x * 2;\r
+   vidmem += off;\r
+   *vidmem++ = c;\r
+   *vidmem = att;\r
+}\r
+\r
+void print(int x, int y, char *Text, char attrib)\r
+{\r
+       for (int i = 0; i < strlen(Text); i++)\r
+       pchar(x++,y,Text[i],attrib);\r
+}\r
+\r
+void DualTest()\r
+{\r
+       SetMode((unsigned int)&mode03h);\r
+   TextClear(0x1F);\r
+   SetDual();\r
+   SetDualPalette();\r
+\r
+   /* ** NOTE ** when trying to print text on the screen, do not use the printf\r
+    * text functions.  For some reason they do not select the proper VGA font.\r
+    */\r
+\r
+       print(0,0,"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿",0x17);\r
+   print(0,1,"³ DUAL FONT MODE ³",0x17);\r
+   print(0,2,"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ",0x17);\r
+\r
+       print(0,4,"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿",0x1F);\r
+   print(0,5,"³ DUAL FONT MODE ³",0x1F);\r
+   print(0,6,"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ",0x1F);\r
+\r
+   getch();\r
+   UnSetDual();\r
+   textcolor(7);\r
+   textbackground(0);\r
+}\r
+\r
+\r
+void LoadFonts()\r
+{\r
+   char far *vidmem;\r
+   int l = 0;\r
+   unsigned char oldmode,oldmisc,oldmem,oldmask;\r
+   unsigned char newmode,newmisc,newmem;\r
+\r
+   // Make a pointer to the font\r
+   vidmem = (char far *)MK_FP( 0xA000, 0x0000);\r
+\r
+   // Store the OLD 'Mode Register' value\r
+   outportb(GRACON_ADDR,5);\r
+   oldmode = inportb(GRACON_ADDR+1);\r
+   // Store the OLD 'Miscellaneous Register' value\r
+   outportb(GRACON_ADDR,6);\r
+   oldmisc = inportb(GRACON_ADDR+1);\r
+   // Store the OLD 'Mask Map' value\r
+   outportb(SEQ_ADDR,2);\r
+   oldmask = inportb(SEQ_ADDR+1);\r
+   // Store the OLD 'Memory Mode' value\r
+   outportb(SEQ_ADDR,4);\r
+   oldmem = inportb(SEQ_ADDR+1);\r
+\r
+   // Write the NEW 'Mode Register' value\r
+   newmode = (oldmode & 0xFC);\r
+   outport(GRACON_ADDR, (newmode << 8) | 0x05);\r
+   // Write the NEW 'Miscellaneous Register' value\r
+   newmisc = ((oldmisc & 0xF1)|4);\r
+   outport(GRACON_ADDR, (newmisc << 8) | 0x06);\r
+   // Write the NEW 'Mask Map' value\r
+   outport(SEQ_ADDR, 0x0402);\r
+   // Write the NEW 'Memory Mode' value\r
+   newmem = (oldmem | 4);\r
+   outport(SEQ_ADDR, (newmem << 8) | 0x04);\r
+\r
+   // Copy the font from BIOS\r
+   l = 0;\r
+   for (int i = 0; i < 256; i++)\r
+   {\r
+      for (int j = 0; j < 16; j++)\r
+      {\r
+         *vidmem++ = Font1[l++];\r
+      }\r
+      for (int k = 0; k < 16; k++)\r
+      {\r
+         *vidmem++ = 0x00;\r
+      }\r
+   }\r
+\r
+   vidmem = (char far *)MK_FP( 0xA000, 0x2000);\r
+   l = 0;\r
+   for (int i = 0; i < 256; i++)\r
+   {\r
+      for (int j = 0; j < 16; j++)\r
+      {\r
+         *vidmem++ = Font2[l++];\r
+      }\r
+      for (int k = 0; k < 16; k++)\r
+      {\r
+         *vidmem++ = 0x00;\r
+      }\r
+   }\r
+\r
+   // Write the OLD 'Mode Register' value\r
+   outport(GRACON_ADDR, (oldmode << 8) | 0x05);\r
+   // Write the OLD 'Miscellaneous Register' value\r
+   outport(GRACON_ADDR, (oldmisc << 8) | 0x06);\r
+   // Write the OLD 'Mask Map' value\r
+   outport(SEQ_ADDR,(oldmask << 8) | 0x02);\r
+   // Write the OLD 'Memory Mode' value\r
+   outport(SEQ_ADDR, (oldmem << 8) | 0x04);\r
+}\r
+\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
\ No newline at end of file
diff --git a/16/tauron/C_SRC/FONT1.H b/16/tauron/C_SRC/FONT1.H
new file mode 100755 (executable)
index 0000000..ae20aa2
--- /dev/null
@@ -0,0 +1,268 @@
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- Created with FEDIT written by Kinfira (Jeffrey Morgan)                  -=\r
+//=-                                                                         -=\r
+//=-                   Tauron VGA Utilities Version 1.0                      -=\r
+//=-                        Released June 14, 1998                           -=\r
+//=-                                                                         -=\r
+//=- Font Width:  8                                                          -=\r
+//=- Font Height: 16                                                         -=\r
+//=- Bytes per character:  16                                                -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+char Font1[] = {\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07E,0x081,0x0A5,0x081,0x081,0x0BD,0x099,0x081,0x081,0x07E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07E,0x0FF,0x0DB,0x0FF,0x0FF,0x0C3,0x0E7,0x0FF,0x0FF,0x07E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x06C,0x0FE,0x0FE,0x0FE,0x0FE,0x07C,0x038,0x010,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x010,0x038,0x07C,0x0FE,0x07C,0x038,0x010,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x018,0x03C,0x03C,0x0E7,0x0E7,0x0E7,0x099,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x018,0x03C,0x07E,0x0FF,0x0FF,0x07E,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x03C,0x03C,0x018,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0E7,0x0C3,0x0C3,0x0E7,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,\r
+0x000,0x000,0x000,0x000,0x000,0x03C,0x066,0x042,0x042,0x066,0x03C,0x000,0x000,0x000,0x000,0x000,\r
+0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0C3,0x099,0x0BD,0x0BD,0x099,0x0C3,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,\r
+0x000,0x000,0x01E,0x00E,0x01A,0x032,0x078,0x0CC,0x0CC,0x0CC,0x0CC,0x078,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x066,0x066,0x066,0x066,0x03C,0x018,0x07E,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03F,0x033,0x03F,0x030,0x030,0x030,0x030,0x070,0x0F0,0x0E0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07F,0x063,0x07F,0x063,0x063,0x063,0x063,0x067,0x0E7,0x0E6,0x0C0,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x018,0x018,0x0DB,0x03C,0x0E7,0x03C,0x0DB,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x080,0x0C0,0x0E0,0x0F0,0x0F8,0x0FE,0x0F8,0x0F0,0x0E0,0x0C0,0x080,0x000,0x000,0x000,0x000,\r
+0x000,0x002,0x006,0x00E,0x01E,0x03E,0x0FE,0x03E,0x01E,0x00E,0x006,0x002,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x03C,0x07E,0x018,0x018,0x018,0x018,0x07E,0x03C,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x066,0x066,0x066,0x066,0x066,0x066,0x066,0x000,0x066,0x066,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07F,0x0DB,0x0DB,0x0DB,0x07B,0x01B,0x01B,0x01B,0x01B,0x01B,0x000,0x000,0x000,0x000,\r
+0x000,0x07C,0x0C6,0x060,0x038,0x06C,0x0C6,0x0C6,0x06C,0x038,0x00C,0x0C6,0x07C,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x0FE,0x0FE,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x03C,0x07E,0x018,0x018,0x018,0x018,0x07E,0x03C,0x018,0x07E,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x03C,0x07E,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x07E,0x03C,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x018,0x00C,0x0FE,0x00C,0x018,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x030,0x060,0x0FE,0x060,0x030,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0C0,0x0C0,0x0C0,0x0C0,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x028,0x06C,0x0FE,0x06C,0x028,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x010,0x038,0x038,0x07C,0x07C,0x0FE,0x0FE,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x0FE,0x0FE,0x07C,0x07C,0x038,0x038,0x010,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x03C,0x03C,0x03C,0x018,0x018,0x018,0x000,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x066,0x066,0x066,0x024,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x06C,0x06C,0x0FE,0x06C,0x06C,0x06C,0x0FE,0x06C,0x06C,0x000,0x000,0x000,0x000,\r
+0x018,0x018,0x07C,0x0C6,0x0C2,0x0C0,0x07C,0x006,0x086,0x0C6,0x07C,0x018,0x018,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x0C2,0x0C6,0x00C,0x018,0x030,0x060,0x0C6,0x086,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x038,0x06C,0x06C,0x038,0x076,0x0DC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x030,0x030,0x030,0x060,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x00C,0x018,0x030,0x030,0x030,0x030,0x030,0x030,0x018,0x00C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x030,0x018,0x00C,0x00C,0x00C,0x00C,0x00C,0x00C,0x018,0x030,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x066,0x03C,0x0FF,0x03C,0x066,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x07E,0x018,0x018,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x018,0x030,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x002,0x006,0x00C,0x018,0x030,0x060,0x0C0,0x080,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x0C6,0x0CE,0x0D6,0x0D6,0x0E6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x038,0x078,0x018,0x018,0x018,0x018,0x018,0x018,0x07E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x006,0x00C,0x018,0x030,0x060,0x0C0,0x0C6,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x006,0x006,0x03C,0x006,0x006,0x006,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x00C,0x01C,0x03C,0x06C,0x0CC,0x0FE,0x00C,0x00C,0x00C,0x01E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FE,0x0C0,0x0C0,0x0C0,0x0FC,0x00E,0x006,0x006,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x038,0x060,0x0C0,0x0C0,0x0FC,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FE,0x0C6,0x006,0x006,0x00C,0x018,0x030,0x030,0x030,0x030,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x07E,0x006,0x006,0x006,0x00C,0x078,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x018,0x018,0x030,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x006,0x00C,0x018,0x030,0x060,0x030,0x018,0x00C,0x006,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x000,0x000,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x060,0x030,0x018,0x00C,0x006,0x00C,0x018,0x030,0x060,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x0C6,0x00C,0x018,0x018,0x018,0x000,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x07C,0x0C6,0x0C6,0x0DE,0x0DE,0x0DE,0x0DC,0x0C0,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x010,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FC,0x066,0x066,0x066,0x07C,0x066,0x066,0x066,0x066,0x0FC,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x066,0x0C2,0x0C0,0x0C0,0x0C0,0x0C0,0x0C2,0x066,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0F8,0x06C,0x066,0x066,0x066,0x066,0x066,0x066,0x06C,0x0F8,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FE,0x066,0x062,0x068,0x078,0x068,0x060,0x062,0x066,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FE,0x066,0x062,0x068,0x078,0x068,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x066,0x0C2,0x0C0,0x0C0,0x0DE,0x0C6,0x0C6,0x066,0x03A,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x01E,0x00C,0x00C,0x00C,0x00C,0x00C,0x0CC,0x0CC,0x0CC,0x078,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0E6,0x066,0x06C,0x06C,0x078,0x078,0x06C,0x066,0x066,0x0E6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0F0,0x060,0x060,0x060,0x060,0x060,0x060,0x062,0x066,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0EE,0x0FE,0x0FE,0x0D6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0E6,0x0F6,0x0FE,0x0DE,0x0CE,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x06C,0x038,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FC,0x066,0x066,0x066,0x07C,0x060,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0D6,0x0DE,0x07C,0x00C,0x00E,0x000,0x000,\r
+0x000,0x000,0x0FC,0x066,0x066,0x066,0x07C,0x06C,0x066,0x066,0x066,0x0E6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x0C6,0x060,0x038,0x00C,0x006,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07E,0x07E,0x05A,0x018,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x06C,0x038,0x010,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0D6,0x0D6,0x0FE,0x06C,0x06C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x06C,0x06C,0x038,0x038,0x06C,0x06C,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x066,0x066,0x066,0x066,0x03C,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FE,0x0C6,0x086,0x00C,0x018,0x030,0x060,0x0C2,0x0C6,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x030,0x030,0x030,0x030,0x030,0x030,0x030,0x030,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x080,0x0C0,0x0E0,0x070,0x038,0x01C,0x00E,0x006,0x002,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x00C,0x00C,0x00C,0x00C,0x00C,0x00C,0x00C,0x00C,0x03C,0x000,0x000,0x000,0x000,\r
+0x010,0x038,0x06C,0x0C6,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x000,\r
+0x030,0x030,0x018,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0E0,0x060,0x060,0x078,0x06C,0x066,0x066,0x066,0x066,0x0DC,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x0C0,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x01C,0x00C,0x00C,0x03C,0x06C,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x038,0x06C,0x064,0x060,0x0F0,0x060,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x076,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x07C,0x00C,0x0CC,0x078,0x000,\r
+0x000,0x000,0x0E0,0x060,0x060,0x06C,0x076,0x066,0x066,0x066,0x066,0x0E6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x018,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x006,0x006,0x000,0x00E,0x006,0x006,0x006,0x006,0x006,0x006,0x066,0x066,0x03C,0x000,\r
+0x000,0x000,0x0E0,0x060,0x060,0x066,0x06C,0x078,0x078,0x06C,0x066,0x0E6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0EC,0x0FE,0x0D6,0x0D6,0x0D6,0x0D6,0x0D6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0DC,0x066,0x066,0x066,0x066,0x066,0x066,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0DC,0x066,0x066,0x066,0x066,0x066,0x07C,0x060,0x060,0x0F0,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x076,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x07C,0x00C,0x00C,0x01E,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0DC,0x076,0x062,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x060,0x038,0x00C,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x010,0x030,0x030,0x0FC,0x030,0x030,0x030,0x030,0x036,0x01C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x066,0x066,0x066,0x066,0x066,0x03C,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0C6,0x0C6,0x0C6,0x0D6,0x0D6,0x0FE,0x06C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0C6,0x06C,0x038,0x038,0x038,0x06C,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07E,0x006,0x00C,0x0F8,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0FE,0x0CC,0x018,0x030,0x060,0x0C6,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x00E,0x018,0x018,0x018,0x070,0x018,0x018,0x018,0x018,0x00E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x018,0x018,0x018,0x000,0x018,0x018,0x018,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x070,0x018,0x018,0x018,0x00E,0x018,0x018,0x018,0x018,0x070,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x076,0x0DC,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x010,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x0FE,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x066,0x0C2,0x0C0,0x0C0,0x0C0,0x0C2,0x066,0x03C,0x00C,0x006,0x07C,0x000,0x000,\r
+0x000,0x000,0x0CC,0x0CC,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x00C,0x018,0x030,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x010,0x038,0x06C,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0CC,0x0CC,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x060,0x030,0x018,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x038,0x06C,0x038,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x03C,0x066,0x060,0x060,0x066,0x03C,0x00C,0x006,0x03C,0x000,0x000,0x000,\r
+0x000,0x010,0x038,0x06C,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x060,0x030,0x018,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x066,0x066,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x018,0x03C,0x066,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x060,0x030,0x018,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x0C6,0x0C6,0x010,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x038,0x06C,0x038,0x000,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x018,0x030,0x060,0x000,0x0FE,0x066,0x060,0x07C,0x060,0x060,0x066,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0CC,0x076,0x036,0x07E,0x0D8,0x0D8,0x06E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03E,0x06C,0x0CC,0x0CC,0x0FE,0x0CC,0x0CC,0x0CC,0x0CC,0x0CE,0x000,0x000,0x000,0x000,\r
+0x000,0x010,0x038,0x06C,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x060,0x030,0x018,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x030,0x078,0x0CC,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x060,0x030,0x018,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07E,0x006,0x00C,0x078,0x000,\r
+0x000,0x0C6,0x0C6,0x000,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x0C6,0x06C,0x038,0x000,0x000,0x000,0x000,\r
+0x000,0x0C6,0x0C6,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x018,0x018,0x03C,0x066,0x060,0x060,0x060,0x066,0x03C,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x038,0x06C,0x064,0x060,0x0F0,0x060,0x060,0x060,0x060,0x0E6,0x0FC,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x066,0x066,0x03C,0x018,0x07E,0x018,0x07E,0x018,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x0F8,0x0CC,0x0CC,0x0F8,0x0C4,0x0CC,0x0DE,0x0CC,0x0CC,0x0CC,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x00E,0x01B,0x018,0x018,0x018,0x07E,0x018,0x018,0x018,0x018,0x018,0x0D8,0x070,0x000,0x000,\r
+0x000,0x018,0x030,0x060,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x00C,0x018,0x030,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x018,0x030,0x060,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x018,0x030,0x060,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x076,0x0DC,0x000,0x0DC,0x066,0x066,0x066,0x066,0x066,0x066,0x000,0x000,0x000,0x000,\r
+0x076,0x0DC,0x000,0x0C6,0x0E6,0x0F6,0x0FE,0x0DE,0x0CE,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x03C,0x06C,0x06C,0x03E,0x000,0x07E,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x038,0x06C,0x06C,0x038,0x000,0x07C,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x030,0x030,0x000,0x030,0x030,0x060,0x0C0,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x0C0,0x0C0,0x0C0,0x0C0,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x006,0x006,0x006,0x006,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x0C0,0x0C0,0x0C2,0x0C6,0x0CC,0x018,0x030,0x060,0x0CE,0x093,0x006,0x00C,0x01F,0x000,0x000,\r
+0x000,0x0C0,0x0C0,0x0C2,0x0C6,0x0CC,0x018,0x030,0x066,0x0CE,0x09A,0x03F,0x006,0x00F,0x000,0x000,\r
+0x000,0x000,0x018,0x018,0x000,0x018,0x018,0x018,0x03C,0x03C,0x03C,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x033,0x066,0x0CC,0x066,0x033,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0CC,0x066,0x033,0x066,0x0CC,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,\r
+0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,\r
+0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x0F8,0x018,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0F6,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x000,0x000,0x000,0x000,0x000,0x0F8,0x018,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x036,0x036,0x036,0x036,0x036,0x0F6,0x006,0x0F6,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x000,0x000,0x000,0x000,0x000,0x0FE,0x006,0x0F6,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x0F6,0x006,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x018,0x018,0x018,0x018,0x018,0x0F8,0x018,0x0F8,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x01F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x01F,0x018,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x037,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x037,0x030,0x03F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x03F,0x030,0x037,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x0F7,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x0F7,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x037,0x030,0x037,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x036,0x036,0x036,0x036,0x036,0x0F7,0x000,0x0F7,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x018,0x018,0x018,0x018,0x018,0x0FF,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x03F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x018,0x018,0x018,0x018,0x018,0x01F,0x018,0x01F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x01F,0x018,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x03F,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0FF,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x018,0x018,0x018,0x018,0x018,0x0FF,0x018,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0F8,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,\r
+0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,\r
+0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,\r
+0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x076,0x0DC,0x0D8,0x0D8,0x0D8,0x0DC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0FC,0x0C6,0x0FC,0x0C6,0x0C6,0x0FC,0x0C0,0x0C0,0x0C0,0x000,0x000,\r
+0x000,0x000,0x0FE,0x0C6,0x0C6,0x0C0,0x0C0,0x0C0,0x0C0,0x0C0,0x0C0,0x0C0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x080,0x0FE,0x06C,0x06C,0x06C,0x06C,0x06C,0x06C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x0FE,0x0C6,0x060,0x030,0x018,0x030,0x060,0x0C6,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x07E,0x0D8,0x0D8,0x0D8,0x0D8,0x0D8,0x070,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x066,0x066,0x066,0x066,0x066,0x07C,0x060,0x060,0x0C0,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x076,0x0DC,0x018,0x018,0x018,0x018,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x07E,0x018,0x03C,0x066,0x066,0x066,0x03C,0x018,0x07E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x06C,0x038,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x06C,0x06C,0x06C,0x06C,0x0EE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x01E,0x030,0x018,0x00C,0x03E,0x066,0x066,0x066,0x066,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x07E,0x0DB,0x0DB,0x0DB,0x07E,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x003,0x006,0x07E,0x0CF,0x0DB,0x0F3,0x07E,0x060,0x0C0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x01C,0x030,0x060,0x060,0x07C,0x060,0x060,0x060,0x030,0x01C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x0FE,0x000,0x000,0x0FE,0x000,0x000,0x0FE,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x018,0x018,0x07E,0x018,0x018,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x030,0x018,0x00C,0x006,0x00C,0x018,0x030,0x000,0x07E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x00C,0x018,0x030,0x060,0x030,0x018,0x00C,0x000,0x07E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x00E,0x01B,0x01B,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0D8,0x0D8,0x0D8,0x070,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x07E,0x000,0x018,0x018,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x076,0x0DC,0x000,0x076,0x0DC,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x038,0x06C,0x06C,0x038,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x00F,0x00C,0x00C,0x00C,0x00C,0x00C,0x0EC,0x06C,0x06C,0x03C,0x01C,0x000,0x000,0x000,0x000,\r
+0x000,0x0D8,0x06C,0x06C,0x06C,0x06C,0x06C,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x070,0x098,0x030,0x060,0x0C8,0x0F8,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x07C,0x07C,0x07C,0x07C,0x07C,0x07C,0x07C,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000\r
+};                                                                                              \r
diff --git a/16/tauron/C_SRC/FONT2.H b/16/tauron/C_SRC/FONT2.H
new file mode 100755 (executable)
index 0000000..1a2a516
--- /dev/null
@@ -0,0 +1,268 @@
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- Created with FEDIT written by Kinfira (Jeffrey Morgan)                  -=\r
+//=-                                                                         -=\r
+//=-                   Tauron VGA Utilities Version 1.0                      -=\r
+//=-                        Released June 14, 1998                           -=\r
+//=-                                                                         -=\r
+//=- Font Width:  8                                                          -=\r
+//=- Font Height: 16                                                         -=\r
+//=- Bytes per character:  16                                                -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+char Font2[] = {\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07E,0x081,0x0A5,0x081,0x081,0x0BD,0x099,0x081,0x081,0x07E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07E,0x0FF,0x0DB,0x0FF,0x0FF,0x0C3,0x0E7,0x0FF,0x0FF,0x07E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x06C,0x0FE,0x0FE,0x0FE,0x0FE,0x07C,0x038,0x010,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x010,0x038,0x07C,0x0FE,0x07C,0x038,0x010,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x018,0x03C,0x03C,0x0E7,0x0E7,0x0E7,0x099,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x018,0x03C,0x07E,0x0FF,0x0FF,0x07E,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x03C,0x03C,0x018,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0E7,0x0C3,0x0C3,0x0E7,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,\r
+0x000,0x000,0x000,0x000,0x000,0x03C,0x066,0x042,0x042,0x066,0x03C,0x000,0x000,0x000,0x000,0x000,\r
+0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0C3,0x099,0x0BD,0x0BD,0x099,0x0C3,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,\r
+0x000,0x000,0x01E,0x00E,0x01A,0x032,0x078,0x0CC,0x0CC,0x0CC,0x0CC,0x078,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x066,0x066,0x066,0x066,0x03C,0x018,0x07E,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03F,0x033,0x03F,0x030,0x030,0x030,0x030,0x070,0x0F0,0x0E0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07F,0x063,0x07F,0x063,0x063,0x063,0x063,0x067,0x0E7,0x0E6,0x0C0,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x018,0x018,0x0DB,0x03C,0x0E7,0x03C,0x0DB,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x080,0x0C0,0x0E0,0x0F0,0x0F8,0x0FE,0x0F8,0x0F0,0x0E0,0x0C0,0x080,0x000,0x000,0x000,0x000,\r
+0x000,0x002,0x006,0x00E,0x01E,0x03E,0x0FE,0x03E,0x01E,0x00E,0x006,0x002,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x03C,0x07E,0x018,0x018,0x018,0x018,0x07E,0x03C,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x066,0x066,0x066,0x066,0x066,0x066,0x066,0x000,0x066,0x066,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07F,0x0DB,0x0DB,0x0DB,0x07B,0x01B,0x01B,0x01B,0x01B,0x01B,0x000,0x000,0x000,0x000,\r
+0x000,0x07C,0x0C6,0x060,0x038,0x06C,0x0C6,0x0C6,0x06C,0x038,0x00C,0x0C6,0x07C,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x0FE,0x0FE,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x03C,0x07E,0x018,0x018,0x018,0x018,0x07E,0x03C,0x018,0x07E,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x03C,0x07E,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x07E,0x03C,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x018,0x00C,0x0FE,0x00C,0x018,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x030,0x060,0x0FE,0x060,0x030,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0C0,0x0C0,0x0C0,0x0C0,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x028,0x06C,0x0FE,0x06C,0x028,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x010,0x038,0x038,0x07C,0x07C,0x0FE,0x0FE,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x0FE,0x0FE,0x07C,0x07C,0x038,0x038,0x010,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x03C,0x03C,0x03C,0x018,0x018,0x018,0x000,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x066,0x066,0x066,0x024,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x06C,0x06C,0x0FE,0x06C,0x06C,0x06C,0x0FE,0x06C,0x06C,0x000,0x000,0x000,0x000,\r
+0x018,0x018,0x07C,0x0C6,0x0C2,0x0C0,0x07C,0x006,0x086,0x0C6,0x07C,0x018,0x018,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x0C2,0x0C6,0x00C,0x018,0x030,0x060,0x0C6,0x086,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x038,0x06C,0x06C,0x038,0x076,0x0DC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x030,0x030,0x030,0x060,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x00C,0x018,0x030,0x030,0x030,0x030,0x030,0x030,0x018,0x00C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x030,0x018,0x00C,0x00C,0x00C,0x00C,0x00C,0x00C,0x018,0x030,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x066,0x03C,0x0FF,0x03C,0x066,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x07E,0x018,0x018,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x018,0x030,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x002,0x006,0x00C,0x018,0x030,0x060,0x0C0,0x080,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x0C6,0x0CE,0x0D6,0x0D6,0x0E6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x038,0x078,0x018,0x018,0x018,0x018,0x018,0x018,0x07E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x006,0x00C,0x018,0x030,0x060,0x0C0,0x0C6,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x006,0x006,0x03C,0x006,0x006,0x006,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x00C,0x01C,0x03C,0x06C,0x0CC,0x0FE,0x00C,0x00C,0x00C,0x01E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FE,0x0C0,0x0C0,0x0C0,0x0FC,0x00E,0x006,0x006,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x038,0x060,0x0C0,0x0C0,0x0FC,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FE,0x0C6,0x006,0x006,0x00C,0x018,0x030,0x030,0x030,0x030,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x07E,0x006,0x006,0x006,0x00C,0x078,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x018,0x018,0x030,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x006,0x00C,0x018,0x030,0x060,0x030,0x018,0x00C,0x006,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x000,0x000,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x060,0x030,0x018,0x00C,0x006,0x00C,0x018,0x030,0x060,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x0C6,0x00C,0x018,0x018,0x018,0x000,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x07C,0x0C6,0x0C6,0x0DE,0x0DE,0x0DE,0x0DC,0x0C0,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x010,0x038,0x06C,0x0C6,0x0C6,0x0FF,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FC,0x066,0x066,0x066,0x07C,0x0FF,0x066,0x066,0x066,0x0FC,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x066,0x0C2,0x0C0,0x0C0,0x0FF,0x0C0,0x0C2,0x066,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0F8,0x06C,0x066,0x066,0x066,0x0FF,0x066,0x066,0x06C,0x0F8,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FE,0x066,0x062,0x068,0x078,0x0FF,0x060,0x062,0x066,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FE,0x066,0x062,0x068,0x078,0x0FF,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x066,0x0C2,0x0C0,0x0C0,0x0FF,0x0C6,0x0C6,0x066,0x03A,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0FE,0x0FF,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x018,0x018,0x018,0x018,0x0FF,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x01E,0x00C,0x00C,0x00C,0x00C,0x0FF,0x0CC,0x0CC,0x0CC,0x078,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0E6,0x066,0x06C,0x06C,0x078,0x0FF,0x06C,0x066,0x066,0x0E6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0F0,0x060,0x060,0x060,0x060,0x0FF,0x060,0x062,0x066,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0EE,0x0FE,0x0FE,0x0D6,0x0FF,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0E6,0x0F6,0x0FE,0x0DE,0x0FF,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x0FF,0x0C6,0x0C6,0x06C,0x038,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FC,0x066,0x066,0x066,0x07C,0x0FF,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0FF,0x0C6,0x0D6,0x0DE,0x07C,0x00C,0x00E,0x000,0x000,\r
+0x000,0x000,0x0FC,0x066,0x066,0x066,0x07C,0x0FF,0x066,0x066,0x066,0x0E6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x0C6,0x060,0x038,0x0FF,0x006,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07E,0x07E,0x05A,0x018,0x018,0x0FF,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0FF,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0FF,0x0C6,0x06C,0x038,0x010,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0FF,0x0D6,0x0FE,0x06C,0x06C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x06C,0x06C,0x038,0x0FF,0x06C,0x06C,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x066,0x066,0x066,0x066,0x03C,0x0FF,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FE,0x0C6,0x086,0x00C,0x018,0x0FF,0x060,0x0C2,0x0C6,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x030,0x030,0x030,0x030,0x0FF,0x030,0x030,0x030,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x080,0x0C0,0x0E0,0x070,0x0FF,0x01C,0x00E,0x006,0x002,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x00C,0x00C,0x00C,0x00C,0x0FF,0x00C,0x00C,0x00C,0x03C,0x000,0x000,0x000,0x000,\r
+0x010,0x038,0x06C,0x0C6,0x000,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x000,\r
+0x030,0x030,0x018,0x000,0x000,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0E0,0x060,0x060,0x078,0x06C,0x066,0x066,0x066,0x066,0x0DC,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x0C0,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x01C,0x00C,0x00C,0x03C,0x06C,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x038,0x06C,0x064,0x060,0x0F0,0x060,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x076,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x07C,0x00C,0x0CC,0x078,0x000,\r
+0x000,0x000,0x0E0,0x060,0x060,0x06C,0x076,0x066,0x066,0x066,0x066,0x0E6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x018,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x006,0x006,0x000,0x00E,0x006,0x006,0x006,0x006,0x006,0x006,0x066,0x066,0x03C,0x000,\r
+0x000,0x000,0x0E0,0x060,0x060,0x066,0x06C,0x078,0x078,0x06C,0x066,0x0E6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0EC,0x0FE,0x0D6,0x0D6,0x0D6,0x0D6,0x0D6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0DC,0x066,0x066,0x066,0x066,0x066,0x066,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0DC,0x066,0x066,0x066,0x066,0x066,0x07C,0x060,0x060,0x0F0,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x076,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x07C,0x00C,0x00C,0x01E,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0DC,0x076,0x062,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x060,0x038,0x00C,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x010,0x030,0x030,0x0FC,0x030,0x030,0x030,0x030,0x036,0x01C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x066,0x066,0x066,0x066,0x066,0x03C,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0C6,0x0C6,0x0C6,0x0D6,0x0D6,0x0FE,0x06C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0C6,0x06C,0x038,0x038,0x038,0x06C,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07E,0x006,0x00C,0x0F8,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0FE,0x0CC,0x018,0x030,0x060,0x0C6,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x00E,0x018,0x018,0x018,0x070,0x018,0x018,0x018,0x018,0x00E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x018,0x018,0x018,0x000,0x018,0x018,0x018,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x070,0x018,0x018,0x018,0x00E,0x018,0x018,0x018,0x018,0x070,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x076,0x0DC,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x010,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x0FE,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x066,0x0C2,0x0C0,0x0C0,0x0C0,0x0C2,0x066,0x03C,0x00C,0x006,0x07C,0x000,0x000,\r
+0x000,0x000,0x0CC,0x0CC,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x00C,0x018,0x030,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x010,0x038,0x06C,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0CC,0x0CC,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x060,0x030,0x018,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x038,0x06C,0x038,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x03C,0x066,0x060,0x060,0x066,0x03C,0x00C,0x006,0x03C,0x000,0x000,0x000,\r
+0x000,0x010,0x038,0x06C,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x060,0x030,0x018,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x066,0x066,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x018,0x03C,0x066,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x060,0x030,0x018,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x0C6,0x0C6,0x010,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x038,0x06C,0x038,0x000,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x018,0x030,0x060,0x000,0x0FE,0x066,0x060,0x07C,0x060,0x060,0x066,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0CC,0x076,0x036,0x07E,0x0D8,0x0D8,0x06E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03E,0x06C,0x0CC,0x0CC,0x0FE,0x0CC,0x0CC,0x0CC,0x0CC,0x0CE,0x000,0x000,0x000,0x000,\r
+0x000,0x010,0x038,0x06C,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x060,0x030,0x018,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x030,0x078,0x0CC,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x060,0x030,0x018,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07E,0x006,0x00C,0x078,0x000,\r
+0x000,0x0C6,0x0C6,0x000,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x0C6,0x06C,0x038,0x000,0x000,0x000,0x000,\r
+0x000,0x0C6,0x0C6,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x018,0x018,0x03C,0x066,0x060,0x060,0x060,0x066,0x03C,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x038,0x06C,0x064,0x060,0x0F0,0x060,0x060,0x060,0x060,0x0E6,0x0FC,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x066,0x066,0x03C,0x018,0x07E,0x018,0x07E,0x018,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x0F8,0x0CC,0x0CC,0x0F8,0x0C4,0x0CC,0x0DE,0x0CC,0x0CC,0x0CC,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x00E,0x01B,0x018,0x018,0x018,0x07E,0x018,0x018,0x018,0x018,0x018,0x0D8,0x070,0x000,0x000,\r
+0x000,0x018,0x030,0x060,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x00C,0x018,0x030,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x018,0x030,0x060,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x018,0x030,0x060,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x076,0x0DC,0x000,0x0DC,0x066,0x066,0x066,0x066,0x066,0x066,0x000,0x000,0x000,0x000,\r
+0x076,0x0DC,0x000,0x0C6,0x0E6,0x0F6,0x0FE,0x0DE,0x0CE,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x03C,0x06C,0x06C,0x03E,0x000,0x07E,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x038,0x06C,0x06C,0x038,0x000,0x07C,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x030,0x030,0x000,0x030,0x030,0x060,0x0C0,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x0C0,0x0C0,0x0C0,0x0C0,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x006,0x006,0x006,0x006,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x0C0,0x0C0,0x0C2,0x0C6,0x0CC,0x018,0x030,0x060,0x0CE,0x093,0x006,0x00C,0x01F,0x000,0x000,\r
+0x000,0x0C0,0x0C0,0x0C2,0x0C6,0x0CC,0x018,0x030,0x066,0x0CE,0x09A,0x03F,0x006,0x00F,0x000,0x000,\r
+0x000,0x000,0x018,0x018,0x000,0x018,0x018,0x018,0x03C,0x03C,0x03C,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x033,0x066,0x0CC,0x066,0x033,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0CC,0x066,0x033,0x066,0x0CC,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,\r
+0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,\r
+0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x0F8,0x018,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0F6,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x000,0x000,0x000,0x000,0x000,0x0F8,0x018,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x036,0x036,0x036,0x036,0x036,0x0F6,0x006,0x0F6,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x000,0x000,0x000,0x000,0x000,0x0FE,0x006,0x0F6,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x0F6,0x006,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x018,0x018,0x018,0x018,0x018,0x0F8,0x018,0x0F8,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x01F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x01F,0x018,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x037,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x037,0x030,0x03F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x03F,0x030,0x037,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x0F7,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x0F7,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x037,0x030,0x037,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x036,0x036,0x036,0x036,0x036,0x0F7,0x000,0x0F7,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x018,0x018,0x018,0x018,0x018,0x0FF,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x03F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x018,0x018,0x018,0x018,0x018,0x01F,0x018,0x01F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x01F,0x018,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x03F,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0FF,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x018,0x018,0x018,0x018,0x018,0x0FF,0x018,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0F8,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,\r
+0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,\r
+0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,\r
+0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x076,0x0DC,0x0D8,0x0D8,0x0D8,0x0DC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0FC,0x0C6,0x0FC,0x0C6,0x0C6,0x0FC,0x0C0,0x0C0,0x0C0,0x000,0x000,\r
+0x000,0x000,0x0FE,0x0C6,0x0C6,0x0C0,0x0C0,0x0C0,0x0C0,0x0C0,0x0C0,0x0C0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x080,0x0FE,0x06C,0x06C,0x06C,0x06C,0x06C,0x06C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x0FE,0x0C6,0x060,0x030,0x018,0x030,0x060,0x0C6,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x07E,0x0D8,0x0D8,0x0D8,0x0D8,0x0D8,0x070,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x066,0x066,0x066,0x066,0x066,0x07C,0x060,0x060,0x0C0,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x076,0x0DC,0x018,0x018,0x018,0x018,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x07E,0x018,0x03C,0x066,0x066,0x066,0x03C,0x018,0x07E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x06C,0x038,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x06C,0x06C,0x06C,0x06C,0x0EE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x01E,0x030,0x018,0x00C,0x03E,0x066,0x066,0x066,0x066,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x07E,0x0DB,0x0DB,0x0DB,0x07E,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x003,0x006,0x07E,0x0CF,0x0DB,0x0F3,0x07E,0x060,0x0C0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x01C,0x030,0x060,0x060,0x07C,0x060,0x060,0x060,0x030,0x01C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x0FE,0x000,0x000,0x0FE,0x000,0x000,0x0FE,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x018,0x018,0x07E,0x018,0x018,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x030,0x018,0x00C,0x006,0x00C,0x018,0x030,0x000,0x07E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x00C,0x018,0x030,0x060,0x030,0x018,0x00C,0x000,0x07E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x00E,0x01B,0x01B,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0D8,0x0D8,0x0D8,0x070,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x07E,0x000,0x018,0x018,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x076,0x0DC,0x000,0x076,0x0DC,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x038,0x06C,0x06C,0x038,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x00F,0x00C,0x00C,0x00C,0x00C,0x00C,0x0EC,0x06C,0x06C,0x03C,0x01C,0x000,0x000,0x000,0x000,\r
+0x000,0x0D8,0x06C,0x06C,0x06C,0x06C,0x06C,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x070,0x098,0x030,0x060,0x0C8,0x0F8,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x07C,0x07C,0x07C,0x07C,0x07C,0x07C,0x07C,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000\r
+};\r
diff --git a/16/tauron/C_SRC/MAINC.CPP b/16/tauron/C_SRC/MAINC.CPP
new file mode 100755 (executable)
index 0000000..34a1247
--- /dev/null
@@ -0,0 +1,181 @@
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=-                                                                         -=\r
+//=-                   Tauron VGA Utilities Version 3.0                      -=\r
+//=-                      Released September 20, 1998                        -=\r
+//=-                                                                         -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+//=- All Rights Reserved.                     =-= that you put my name some- -=\r
+//=-                                          =-= where in your credits.     -=\r
+//=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- I assume no responsibility whatsoever for any effect that this package, -=\r
+//=- the information contained therein or the use thereof has on you, your   -=\r
+//=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+//=- you or your existance. No warranty is provided nor implied with this    -=\r
+//=- source code.                                                            -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+#include <stdlib.h>\r
+#include <stdio.h>\r
+#include <conio.h>\r
+#include <dos.h>\r
+#include "tauron.h"\r
+\r
+void MainScreen()\r
+{\r
+   clrscr();\r
+   printf("Tauron VGA Utilities v3.0\n"\r
+          "Copyright (c) 1998 Jeffrey Morgan.  All Rights Reserved.\n");\r
+   textcolor(12);\r
+   cprintf("Modes with a ! are not implemented      Modes with a % are unchained\r\n");\r
+   textcolor(7);\r
+   printf("Select a video mode to test:\n"\r
+          "Key              Videomode          Key              Videomode\n"\r
+          "================================================================================"\r
+          " 0) 00H, 01H -- 40 x 25 x 16         %F) Mode D   -- 360 x 200 x 256\n"\r
+          " 1) Mode L   -- 40 x 43 x 16         %G) Mode E   -- 360 x 240 x 256\n"\r
+          " 2) Mode M   -- 40 x 50 x 16         %H) Mode F   -- 360 x 350 x 256\n"\r
+          "!3) 07H      -- 80 x 25 x 2          %I) Mode G   -- 360 x 400 x 256\n"\r
+          " 4) 02H, 03H -- 80 x 25 x 16         %J) Mode H   -- 360 x 480 x 256\n"\r
+          " 5) Mode J   -- 80 x 43 x 16          K) 06H      -- 640 x 200 x 2\n"\r
+          " 6) Mode K   -- 80 x 50 x 16         !L) 0FH      -- 640 x 350 x 2\n"\r
+          " 7) 04H, 05H -- 320 x 200 x 4         M) 11H      -- 640 x 480 x 2\n"\r
+          " 8) 0DH      -- 320 x 200 x 16        N) 0EH      -- 640 x 200 x 16\n"\r
+          " 9) 13H      -- 320 x 200 x 256       O) 10H      -- 640 x 350 x 16\n"\r
+          "%A) Chain 4  -- 320 x 200 x 256       P) Mode I   -- 640 x 400 x 16\n"\r
+          "%B) Mode X   -- 320 x 240 x 256       Q) 12H      -- 640 x 480 x 16\n"\r
+          "%C) Mode A   -- 320 x 350 x 256\n"\r
+          "%D) Mode B   -- 320 x 400 x 256       R) Dual Font Test\n"\r
+          "%E) Mode C   -- 320 x 480 x 256\n"\r
+          "===============================================================================\n"\r
+          "Hit 'ESC' to exit.  Press a key [0-9 or A-O]>");\r
+}\r
+\r
+void SetMode03h()\r
+{\r
+   asm MOV AX,0003H\r
+   asm INT 10H\r
+}\r
+\r
+void main()\r
+{\r
+   int ok, key;\r
+   ok = 1;\r
+   MainScreen();\r
+   while (ok)\r
+   {\r
+      if( (key = getch()) == 0 )\r
+         key = 256 * getch();\r
+      switch( key )\r
+      {\r
+         case Escape : ok = 0; break;\r
+\r
+         case '0'          :\r
+            SetVideoMode(MODE00H); TextTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case '1':\r
+            SetVideoMode(MODE_L); TextTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case '2':\r
+            SetVideoMode(MODE_M); TextTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case '4'          :\r
+            SetVideoMode(MODE03H); TextTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case '5':\r
+            SetVideoMode(MODE_J); TextTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case '6':\r
+            SetVideoMode(MODE_K); TextTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case '7':\r
+            SetVideoMode(MODE04H); Clear04H(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case '8'          :\r
+            SetVideoMode(MODE0DH); Clear0DH(12); /*ModeTest();*/ getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case '9':\r
+            SetVideoMode(MODE13H); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'a': case 'A':\r
+            SetVideoMode(CHAIN4); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'b': case 'B':\r
+            SetVideoMode(MODE_X); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'c': case 'C':\r
+            SetVideoMode(MODE_A); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'd': case 'D':\r
+            SetVideoMode(MODE_B); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'e': case 'E':\r
+            SetVideoMode(MODE_C); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'f': case 'F':\r
+            SetVideoMode(MODE_D); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'g': case 'G':\r
+            SetVideoMode(MODE_E); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'h': case 'H':\r
+            SetVideoMode(MODE_F); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'i': case 'I':\r
+            SetVideoMode(MODE_G); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'j': case 'J':\r
+            SetVideoMode(MODE_H); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'k': case 'K':\r
+            SetVideoMode(MODE06H); Clear06H(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'm': case 'M':\r
+            SetVideoMode(MODE11H); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'n': case 'N':\r
+            SetVideoMode(MODE0EH); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'o': case 'O':\r
+            SetVideoMode(MODE10H); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'p': case 'P':\r
+            SetVideoMode(MODE_I); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'q': case 'Q':\r
+            SetVideoMode(MODE12H); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'r': case 'R':\r
+            SetVideoMode(MODE03H); DualTest();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         default     : break;\r
+      }\r
+   }\r
+   asm MOV AX,0003h\r
+   asm int 10h\r
+}\r
diff --git a/16/tauron/C_SRC/MODES.CPP b/16/tauron/C_SRC/MODES.CPP
new file mode 100755 (executable)
index 0000000..72e11c9
--- /dev/null
@@ -0,0 +1,833 @@
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=-                                                                         -=\r
+//=-                   Tauron VGA Utilities Version 3.0                      -=\r
+//=-                      Released September 20, 1998                        -=\r
+//=-                                                                         -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+//=- All Rights Reserved.                     =-= that you put my name some- -=\r
+//=-                                          =-= where in your credits.     -=\r
+//=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- I assume no responsibility whatsoever for any effect that this package, -=\r
+//=- the information contained therein or the use thereof has on you, your   -=\r
+//=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+//=- you or your existance. No warranty is provided nor implied with this    -=\r
+//=- source code.                                                            -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+#include <stdlib.h>\r
+#include <stdio.h>\r
+#include <conio.h>\r
+#include <dos.h>\r
+#include "tauron.h"\r
+#include "modes_c.inc"\r
+#include "palette.inc"\r
+\r
+void setpalette4();\r
+void setpalette16();\r
+void setpalette256();\r
+Vmode Mode;\r
+\r
+#define SEQ_ADDR                               0x03C4\r
+#define GRACON_ADDR                    0x03CE\r
+#define CRTC_ADDR                      0x03D4\r
+\r
+void ReadBIOSfont(int fontnum, int bytesperchar)\r
+{\r
+   char far *biosfont,*vidmem;\r
+   struct REGPACK reg;\r
+   unsigned char oldmode,oldmisc,oldmem,oldmask;\r
+   unsigned char newmode,newmisc,newmem;\r
+\r
+   // get the location of the font stroed in BIOS\r
+   reg.r_ax = 0x1130;\r
+   reg.r_bx = fontnum << 8;\r
+   intr(0x10, &reg);\r
+\r
+   // Make a pointer to the font\r
+   biosfont = (char far *)MK_FP( reg.r_es, reg.r_bp);\r
+   vidmem = (char far *)MK_FP( 0xA000, 0x0000);\r
+\r
+   // Store the OLD 'Mode Register' value\r
+   outportb(GRACON_ADDR,5);\r
+   oldmode = inportb(GRACON_ADDR+1);\r
+   // Store the OLD 'Miscellaneous Register' value\r
+   outportb(GRACON_ADDR,6);\r
+   oldmisc = inportb(GRACON_ADDR+1);\r
+   // Store the OLD 'Mask Map' value\r
+   outportb(SEQ_ADDR,2);\r
+   oldmask = inportb(SEQ_ADDR+1);\r
+   // Store the OLD 'Memory Mode' value\r
+   outportb(SEQ_ADDR,4);\r
+   oldmem = inportb(SEQ_ADDR+1);\r
+\r
+   // Write the NEW 'Mode Register' value\r
+   newmode = (oldmode & 0xFC);\r
+   outport(GRACON_ADDR, (newmode << 8) | 0x05);\r
+   // Write the NEW 'Miscellaneous Register' value\r
+   newmisc = ((oldmisc & 0xF1)|4);\r
+   outport(GRACON_ADDR, (newmisc << 8) | 0x06);\r
+   // Write the NEW 'Mask Map' value\r
+   outport(SEQ_ADDR, 0x0402);\r
+   // Write the NEW 'Memory Mode' value\r
+   newmem = (oldmem | 4);\r
+   outport(SEQ_ADDR, (newmem << 8) | 0x04);\r
+\r
+   // Copy the font from BIOS\r
+   for (int i = 0; i < 256; i++)\r
+   {\r
+      for (int j = 0; j < bytesperchar; j++)\r
+      {\r
+         *vidmem++ = *biosfont++;\r
+      }\r
+      for (int k = 0; k < 32-bytesperchar; k++)\r
+      {\r
+         *vidmem++ = 0x00;\r
+      }\r
+   }\r
+\r
+   // Write the OLD 'Mode Register' value\r
+   outport(GRACON_ADDR, (oldmode << 8) | 0x05);\r
+   // Write the OLD 'Miscellaneous Register' value\r
+   outport(GRACON_ADDR, (oldmisc << 8) | 0x06);\r
+   // Write the OLD 'Mask Map' value\r
+   outport(SEQ_ADDR,(oldmask << 8) | 0x02);\r
+   // Write the OLD 'Memory Mode' value\r
+   outport(SEQ_ADDR, (oldmem << 8) | 0x04);\r
+}\r
+\r
+void SetMode(unsigned int regs)\r
+{\r
+   asm {\r
+   MOV SI, regs\r
+\r
+   // Send MISC regs\r
+   MOV DX,MISC_ADDR\r
+   MOV AL,[SI]\r
+   OUT DX,AL\r
+   INC SI\r
+\r
+   MOV DX,STATUS_ADDR\r
+   MOV AL,[SI]\r
+   OUT DX,AL\r
+   INC SI\r
+\r
+   // Send SEQ regs\r
+   MOV CX,0\r
+REG_LOOP:\r
+   MOV DX,SEQ_ADDR\r
+   MOV AL,CL\r
+   OUT DX,AL\r
+\r
+   MOV DX,SEQ_ADDR\r
+   INC DX\r
+   MOV AL,[SI]\r
+   OUT DX,AL\r
+\r
+   INC SI\r
+   INC CX\r
+   CMP CL,5\r
+   JL REG_LOOP\r
+\r
+   // Clear Protection bits\r
+   MOV AH,0EH\r
+   MOV AL,11H\r
+   AND AH,7FH\r
+   MOV DX,CRTC_ADDR\r
+   OUT DX,AX\r
+\r
+   // Send CRTC regs\r
+   MOV CX,0\r
+REG_LOOP2:\r
+   MOV DX,CRTC_ADDR\r
+   MOV AL,CL\r
+   OUT DX,AL\r
+\r
+   MOV DX,CRTC_ADDR\r
+   INC DX\r
+   MOV AL,[SI]\r
+   OUT DX,AL\r
+\r
+   INC SI\r
+   INC CX\r
+   CMP CL,25\r
+   JL REG_LOOP2\r
+\r
+   // Send GRAPHICS regs\r
+   MOV CX,0\r
+REG_LOOP3:\r
+   MOV DX,GRACON_ADDR\r
+   MOV AL,CL\r
+   OUT DX,AL\r
+\r
+   MOV DX,GRACON_ADDR\r
+   INC DX\r
+   MOV AL,[SI]\r
+   OUT DX,AL\r
+\r
+   INC SI\r
+   INC CX\r
+   CMP CL,9\r
+   JL REG_LOOP3\r
+\r
+   MOV DX,STATUS_ADDR\r
+   IN AL,DX\r
+\r
+   // Send ATTRCON regs\r
+   MOV CX,0\r
+REG_LOOP4:\r
+   MOV DX,ATTRCON_ADDR\r
+   IN AX,DX\r
+\r
+   MOV AL,CL\r
+   OUT DX,AL\r
+\r
+   MOV AL,[SI]\r
+   OUT DX,AL\r
+\r
+   INC SI\r
+   INC CX\r
+   CMP CL,21\r
+   JL REG_LOOP4\r
+\r
+   MOV AL,20H\r
+   OUT DX,AL\r
+   }\r
+}\r
+\r
+void SetVideoMode(int mode)\r
+{\r
+   Mode.mode = mode;\r
+   if (mode == MODE00H)                        // 40 x 25 x 16\r
+   {\r
+      SetMode((unsigned int)&mode00h);\r
+      setpalette16();\r
+      ReadBIOSfont(6,16);\r
+\r
+      Mode.width = 40;\r
+      Mode.height = 25;\r
+      Mode.width_bytes = 1000;\r
+      Mode.colors = 16;\r
+      Mode.attrib = TVU_TEXT;\r
+   }\r
+   else if (mode == MODE03H)                   // 80 x 25 x 16\r
+   {\r
+      SetMode((unsigned int)&mode03h);\r
+      setpalette16();\r
+      ReadBIOSfont(6,16);\r
+\r
+      Mode.width = 80;\r
+      Mode.height = 25;\r
+      Mode.width_bytes = 2000;\r
+      Mode.colors = 16;\r
+      Mode.attrib = TVU_TEXT;\r
+   }\r
+   else if (mode == MODE04H)                   // 320 x 200 x 4\r
+   {\r
+      SetMode((unsigned int)&mode04h);\r
+      setpalette4();\r
+\r
+      Mode.width = 320;\r
+      Mode.height = 200;\r
+      Mode.width_bytes = 8192;\r
+      Mode.colors = 4;\r
+      Mode.attrib = TVU_GRAPHICS;\r
+   }\r
+   else if (mode == MODE06H)                    // 640 x 200 x 2\r
+   {\r
+      SetMode((unsigned int)&mode06h);\r
+\r
+      Mode.width = 640;\r
+      Mode.height = 200;\r
+      Mode.width_bytes = 8192;\r
+      Mode.colors = 2;\r
+      Mode.attrib = TVU_GRAPHICS;\r
+   }\r
+   else if (mode == MODE07H)                    // 80 x 25 x 2\r
+   {\r
+      SetMode((unsigned int)&mode07h);\r
+\r
+      Mode.width = 80;\r
+      Mode.height = 25;\r
+      Mode.width_bytes = 2000;\r
+      Mode.colors = 2;\r
+      Mode.attrib = TVU_TEXT | TVU_MONOCHROME;\r
+   }\r
+   else if (mode == MODE0DH)                    // 320 x 200 x 16\r
+   {\r
+      SetMode((unsigned int)&mode0Dh);\r
+      setpalette16();\r
+\r
+      Mode.width = 320;\r
+      Mode.height = 200;\r
+      Mode.width_bytes = 8000;\r
+      Mode.colors = 16;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_PLANAR;\r
+   }\r
+   else if (mode == MODE0EH)                    // 640 x 200 x 16\r
+   {\r
+      SetMode((unsigned int)&mode0Eh);\r
+      setpalette16();\r
+\r
+      Mode.width = 640;\r
+      Mode.height = 200;\r
+      Mode.width_bytes = 16000;\r
+      Mode.colors = 16;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_PLANAR;\r
+   }\r
+   else if (mode == MODE0FH)                    // 640 x 350 x 2\r
+   {\r
+      SetMode((unsigned int)&mode0Fh);\r
+\r
+      Mode.width = 640;\r
+      Mode.height = 350;\r
+      Mode.width_bytes = 28000;\r
+      Mode.colors = 2;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_MONOCHROME;\r
+   }\r
+   else if (mode == MODE10H)                    // 640 x 350 x 16\r
+   {\r
+      SetMode((unsigned int)&mode10h);\r
+      setpalette16();\r
+\r
+      Mode.width = 640;\r
+      Mode.height = 350;\r
+      Mode.width_bytes = 28000;\r
+      Mode.colors = 16;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_PLANAR;\r
+   }\r
+   else if (mode == MODE11H)                    // 640 x 480 x 2\r
+   {\r
+      SetMode((unsigned int)&mode11h);\r
+\r
+      Mode.width = 640;\r
+      Mode.height = 480;\r
+      Mode.width_bytes = 38400u;\r
+      Mode.colors = 2;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_PLANAR;\r
+   }\r
+   else if (mode == MODE12H)                    // 640 x 480 x 16\r
+   {\r
+      SetMode((unsigned int)&mode12h);\r
+      setpalette16();\r
+\r
+      Mode.width = 640;\r
+      Mode.height = 480;\r
+      Mode.width_bytes = 38400u;\r
+      Mode.colors = 16;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_PLANAR;\r
+   }\r
+   else if (mode == MODE13H)                    // 320 x 200 x 256\r
+   {\r
+      SetMode((unsigned int)&mode13h);\r
+      setpalette256();\r
+\r
+      Mode.width = 320;\r
+      Mode.height = 200;\r
+      Mode.width_bytes = 64000u;\r
+      Mode.colors = 256;\r
+      Mode.attrib = TVU_GRAPHICS;\r
+   }\r
+   else if (mode == CHAIN4)                     // unchained 320 x 200 x 256\r
+   {\r
+      SetMode((unsigned int)&modeC4);\r
+      setpalette256();\r
+\r
+      Mode.width = 320;\r
+      Mode.height = 200;\r
+      Mode.width_bytes = 16000;\r
+      Mode.colors = 256;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED;\r
+   }\r
+   else if (mode == MODE_X)                     // unchained 320 x 240 x 256\r
+   {\r
+      SetMode((unsigned int)&modeC4);\r
+\r
+      outportb(MISC_ADDR,0xE3);\r
+      // turn off write protect\r
+      outport(CRTC_ADDR,0x2C11);\r
+      // vertical total\r
+      outport(CRTC_ADDR,0x0D06);\r
+      // overflow register\r
+      outport(CRTC_ADDR,0x3E07);\r
+      // vertical retrace start\r
+      outport(CRTC_ADDR,0xEA10);\r
+      // vertical retrace end AND wr.prot\r
+      outport(CRTC_ADDR,0xAC11);\r
+      // vertical display enable end\r
+      outport(CRTC_ADDR,0xDF12);\r
+      // start vertical blanking\r
+      outport(CRTC_ADDR,0xE715);\r
+      // end vertical blanking\r
+      outport(CRTC_ADDR,0x0616);\r
+\r
+      setpalette256();\r
+      Mode.width = 320;\r
+      Mode.height = 240;\r
+      Mode.width_bytes = 19200;\r
+      Mode.colors = 256;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED;\r
+   }\r
+   else if (mode == MODE_A)                     // unchained 320 x 350 x 256\r
+   {\r
+      SetMode((unsigned int)&modeC4);\r
+\r
+      // turn off double scanning mode\r
+      outportb(CRTC_ADDR,9);\r
+      outportb(CRTC_ADDR+1,inportb(CRTC_ADDR+1) & ~0x1F);\r
+      // change the vertical resolution flags to 350\r
+      outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0x80);\r
+      // turn off write protect\r
+      outport(CRTC_ADDR,0x2C11);\r
+      // vertical total\r
+      outport(CRTC_ADDR,0xBF06);\r
+      // overflow register\r
+      outport(CRTC_ADDR,0x1F07);\r
+      // vertical retrace start\r
+      outport(CRTC_ADDR,0x8310);\r
+      // vertical retrace end AND wr.prot\r
+      outport(CRTC_ADDR,0x8511);\r
+      // vertical display enable end\r
+      outport(CRTC_ADDR,0x5D12);\r
+      // start vertical blanking\r
+      outport(CRTC_ADDR,0x6315);\r
+      // end vertical blanking\r
+      outport(CRTC_ADDR,0xBA16);\r
+\r
+      setpalette256();\r
+      Mode.width = 320;\r
+      Mode.height = 350;\r
+      Mode.width_bytes = 28000u;\r
+      Mode.colors = 256;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED;\r
+   }\r
+   else if (mode == MODE_B)                     // unchained 320 x 400 x 256\r
+   {\r
+      SetMode((unsigned int)&modeC4);\r
+      // turn off double scanning mode\r
+      outportb(CRTC_ADDR,9);\r
+      outportb(CRTC_ADDR+1,inportb(CRTC_ADDR+1) & ~0x1F);\r
+      // change the vertical resolution flags to 400\r
+      outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0x40);\r
+\r
+      setpalette256();\r
+      Mode.width = 320;\r
+      Mode.height = 400;\r
+      Mode.width_bytes = 32000;\r
+      Mode.colors = 256;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED;\r
+   }\r
+   else if (mode == MODE_C)                     // unchained 320 x 480 x 256\r
+   {\r
+      SetMode((unsigned int)&modeC4);\r
+\r
+      // turn off double scanning mode\r
+      outportb(CRTC_ADDR,9);\r
+      outportb(CRTC_ADDR+1,inportb(CRTC_ADDR+1) & ~0x1F);\r
+      // change the vertical resolution flags to 480\r
+      outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0xC0);\r
+      // turn off write protect\r
+      outport(CRTC_ADDR,0x2C11);\r
+      // vertical total\r
+      outport(CRTC_ADDR,0x0D06);\r
+      // overflow register\r
+      outport(CRTC_ADDR,0x3E07);\r
+      // vertical retrace start\r
+      outport(CRTC_ADDR,0xEA10);\r
+      // vertical retrace end AND wr.prot\r
+      outport(CRTC_ADDR,0xAC11);\r
+      // vertical display enable end\r
+      outport(CRTC_ADDR,0xDF12);\r
+      // start vertical blanking\r
+      outport(CRTC_ADDR,0xE715);\r
+      // end vertical blanking\r
+      outport(CRTC_ADDR,0x0616);\r
+\r
+      setpalette256();\r
+      Mode.width = 320;\r
+      Mode.height = 480;\r
+      Mode.width_bytes = 38400u;\r
+      Mode.colors = 256;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED;\r
+   }\r
+   else if (mode == MODE_D)                     // unchained 360 x 200 x 256\r
+   {\r
+      SetMode((unsigned int)&mode13h);\r
+\r
+      // Turn off Chain 4\r
+      outport(SEQ_ADDR,0x0604);\r
+      // Activate a synchronous reset\r
+      outport(SEQ_ADDR,0x0100);\r
+      // Select 28 mhz pixel clock\r
+      outportb(MISC_ADDR,0xE7);\r
+      // Release synchronous reset\r
+      outport(SEQ_ADDR,0x0300);\r
+\r
+      // change the vertical resolution flags to 400\r
+      outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0x40);\r
+\r
+      // turn off write protect\r
+      outport(CRTC_ADDR,0x2C11);\r
+\r
+      outport(CRTC_ADDR,0x6B00);\r
+      outport(CRTC_ADDR,0x5901);\r
+      outport(CRTC_ADDR,0x5A02);\r
+      outport(CRTC_ADDR,0x8E03);\r
+      outport(CRTC_ADDR,0x5E04);\r
+      outport(CRTC_ADDR,0x8A05);\r
+      outport(CRTC_ADDR,0x0008);\r
+      outport(CRTC_ADDR,0xC009);\r
+      outport(CRTC_ADDR,0x000A);\r
+      outport(CRTC_ADDR,0x000B);\r
+      outport(CRTC_ADDR,0x000C);\r
+      outport(CRTC_ADDR,0x000D);\r
+      outport(CRTC_ADDR,0x000E);\r
+      outport(CRTC_ADDR,0x000F);\r
+      outport(CRTC_ADDR,0xAC11);\r
+      outport(CRTC_ADDR,0x2D13);\r
+      outport(CRTC_ADDR,0x0014);\r
+      outport(CRTC_ADDR,0xE317);\r
+      outport(CRTC_ADDR,0xFF18);\r
+\r
+      setpalette256();\r
+      Mode.width = 360;\r
+      Mode.height = 200;\r
+      Mode.width_bytes = 18000u;\r
+      Mode.colors = 256;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED;\r
+   }\r
+   else if (mode == MODE_E)                     // unchained 360 x 240 x 256\r
+   {\r
+      SetMode((unsigned int)&mode13h);\r
+\r
+      // Turn off Chain 4\r
+      outport(SEQ_ADDR,0x0604);\r
+      // Activate a synchronous reset\r
+      outport(SEQ_ADDR,0x0100);\r
+      // Select 28 mhz pixel clock\r
+      outportb(MISC_ADDR,0xE7);\r
+      // Release synchronous reset\r
+      outport(SEQ_ADDR,0x0300);\r
+\r
+      // change the vertical resolution flags to 480\r
+      outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0xC0);\r
+\r
+      // turn off write protect\r
+      outport(CRTC_ADDR,0x2C11);\r
+\r
+      outport(CRTC_ADDR,0x6B00);\r
+      outport(CRTC_ADDR,0x5901);\r
+      outport(CRTC_ADDR,0x5A02);\r
+      outport(CRTC_ADDR,0x8E03);\r
+      outport(CRTC_ADDR,0x5E04);\r
+      outport(CRTC_ADDR,0x8A05);\r
+      outport(CRTC_ADDR,0x0D06);\r
+      outport(CRTC_ADDR,0x3E07);\r
+      outport(CRTC_ADDR,0x0008);\r
+      outport(CRTC_ADDR,0xC009);\r
+      outport(CRTC_ADDR,0x000A);\r
+      outport(CRTC_ADDR,0x000B);\r
+      outport(CRTC_ADDR,0x000C);\r
+      outport(CRTC_ADDR,0x000D);\r
+      outport(CRTC_ADDR,0x000E);\r
+      outport(CRTC_ADDR,0x000F);\r
+      outport(CRTC_ADDR,0xEA10);\r
+      outport(CRTC_ADDR,0xAC11);\r
+      outport(CRTC_ADDR,0xDF12);\r
+      outport(CRTC_ADDR,0x2D13);\r
+      outport(CRTC_ADDR,0x0014);\r
+      outport(CRTC_ADDR,0xE715);\r
+      outport(CRTC_ADDR,0x0616);\r
+      outport(CRTC_ADDR,0xE317);\r
+      outport(CRTC_ADDR,0xFF18);\r
+\r
+      setpalette256();\r
+      Mode.width = 360;\r
+      Mode.height = 240;\r
+      Mode.width_bytes = 21600;\r
+      Mode.colors = 256;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED;\r
+   }\r
+   else if (mode == MODE_F)                     // unchained 360 x 350 x 256\r
+   {\r
+      SetMode((unsigned int)&mode13h);\r
+\r
+      // Turn off Chain 4\r
+      outport(SEQ_ADDR,0x0604);\r
+      // Activate a synchronous reset\r
+      outport(SEQ_ADDR,0x0100);\r
+      // Select 28 mhz pixel clock\r
+      outportb(MISC_ADDR,0xE7);\r
+      // Release synchronous reset\r
+      outport(SEQ_ADDR,0x0300);\r
+\r
+      // change the vertical resolution flags to 350\r
+      outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0x80);\r
+\r
+      // turn off write protect\r
+      outport(CRTC_ADDR,0x2C11);\r
+\r
+      outport(CRTC_ADDR,0x6B00);\r
+      outport(CRTC_ADDR,0x5901);\r
+      outport(CRTC_ADDR,0x5A02);\r
+      outport(CRTC_ADDR,0x8E03);\r
+      outport(CRTC_ADDR,0x5E04);\r
+      outport(CRTC_ADDR,0x8A05);\r
+      outport(CRTC_ADDR,0xBF06);\r
+      outport(CRTC_ADDR,0x1F07);\r
+      outport(CRTC_ADDR,0x0008);\r
+      outport(CRTC_ADDR,0x4009);\r
+      outport(CRTC_ADDR,0x000A);\r
+      outport(CRTC_ADDR,0x000B);\r
+      outport(CRTC_ADDR,0x000C);\r
+      outport(CRTC_ADDR,0x000D);\r
+      outport(CRTC_ADDR,0x000E);\r
+      outport(CRTC_ADDR,0x000F);\r
+      outport(CRTC_ADDR,0x8310);\r
+      outport(CRTC_ADDR,0x8511);\r
+      outport(CRTC_ADDR,0x5D12);\r
+      outport(CRTC_ADDR,0x2D13);\r
+      outport(CRTC_ADDR,0x0014);\r
+      outport(CRTC_ADDR,0x6315);\r
+      outport(CRTC_ADDR,0xBA16);\r
+      outport(CRTC_ADDR,0xE317);\r
+      outport(CRTC_ADDR,0xFF18);\r
+\r
+      setpalette256();\r
+      Mode.width = 360;\r
+      Mode.height = 350;\r
+      Mode.width_bytes = 31500;\r
+      Mode.colors = 256;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED;\r
+   }\r
+   else if (mode == MODE_G)                     // unchained 360 x 400 x 256\r
+   {\r
+      SetMode((unsigned int)&mode13h);\r
+\r
+      // Turn off Chain 4\r
+      outport(SEQ_ADDR,0x0604);\r
+      // Activate a synchronous reset\r
+      outport(SEQ_ADDR,0x0100);\r
+      // Select 28 mhz pixel clock\r
+      outportb(MISC_ADDR,0xE7);\r
+      // Release synchronous reset\r
+      outport(SEQ_ADDR,0x0300);\r
+\r
+      // change the vertical resolution flags to 400\r
+      outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0x40);\r
+\r
+      // turn off write protect\r
+      outport(CRTC_ADDR,0x2C11);\r
+\r
+      outport(CRTC_ADDR,0x6B00);\r
+      outport(CRTC_ADDR,0x5901);\r
+      outport(CRTC_ADDR,0x5A02);\r
+      outport(CRTC_ADDR,0x8E03);\r
+      outport(CRTC_ADDR,0x5E04);\r
+      outport(CRTC_ADDR,0x8A05);\r
+      outport(CRTC_ADDR,0x0008);\r
+      outport(CRTC_ADDR,0x4009);\r
+      outport(CRTC_ADDR,0x000A);\r
+      outport(CRTC_ADDR,0x000B);\r
+      outport(CRTC_ADDR,0x000C);\r
+      outport(CRTC_ADDR,0x000D);\r
+      outport(CRTC_ADDR,0x000E);\r
+      outport(CRTC_ADDR,0x000F);\r
+      outport(CRTC_ADDR,0xAC11);\r
+      outport(CRTC_ADDR,0x2D13);\r
+      outport(CRTC_ADDR,0x0014);\r
+      outport(CRTC_ADDR,0xE317);\r
+      outport(CRTC_ADDR,0xFF18);\r
+\r
+      setpalette256();\r
+      Mode.width = 360;\r
+      Mode.height = 400;\r
+      Mode.width_bytes = 36000u;\r
+      Mode.colors = 256;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED;\r
+   }\r
+   else if (mode == MODE_H)                     // unchained 360 x 480 x 256\r
+   {\r
+      SetMode((unsigned int)&mode13h);\r
+\r
+      // Turn off Chain 4\r
+      outport(SEQ_ADDR,0x0604);\r
+      // Activate a synchronous reset\r
+      outport(SEQ_ADDR,0x0100);\r
+      // Select 28 mhz pixel clock\r
+      outportb(MISC_ADDR,0xE7);\r
+      // Release synchronous reset\r
+      outport(SEQ_ADDR,0x0300);\r
+\r
+      // change the vertical resolution flags to 480\r
+      outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0xC0);\r
+\r
+      // turn off write protect\r
+      outport(CRTC_ADDR,0x2C11);\r
+\r
+      outport(CRTC_ADDR,0x6B00);\r
+      outport(CRTC_ADDR,0x5901);\r
+      outport(CRTC_ADDR,0x5A02);\r
+      outport(CRTC_ADDR,0x8E03);\r
+      outport(CRTC_ADDR,0x5E04);\r
+      outport(CRTC_ADDR,0x8A05);\r
+      outport(CRTC_ADDR,0x0D06);\r
+      outport(CRTC_ADDR,0x3E07);\r
+      outport(CRTC_ADDR,0x0008);\r
+      outport(CRTC_ADDR,0x4009);\r
+      outport(CRTC_ADDR,0x000A);\r
+      outport(CRTC_ADDR,0x000B);\r
+      outport(CRTC_ADDR,0x000C);\r
+      outport(CRTC_ADDR,0x000D);\r
+      outport(CRTC_ADDR,0x000E);\r
+      outport(CRTC_ADDR,0x000F);\r
+      outport(CRTC_ADDR,0xEA10);\r
+      outport(CRTC_ADDR,0xAC11);\r
+      outport(CRTC_ADDR,0xDF12);\r
+      outport(CRTC_ADDR,0x2D13);\r
+      outport(CRTC_ADDR,0x0014);\r
+      outport(CRTC_ADDR,0xE715);\r
+      outport(CRTC_ADDR,0x0616);\r
+      outport(CRTC_ADDR,0xE317);\r
+      outport(CRTC_ADDR,0xFF18);\r
+\r
+      setpalette256();\r
+      Mode.width = 360;\r
+      Mode.height = 480;\r
+      Mode.width_bytes = 43200u;\r
+      Mode.colors = 256;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED;\r
+   }\r
+   else if (mode == MODE_I)                     // 640 x 400 x 16\r
+   {\r
+      SetMode((unsigned int)&mode10h);\r
+      asm {\r
+\r
+         MOV DX,03CCH\r
+         IN AL,DX\r
+         AND AL,03FH\r
+         OR AL,40H\r
+\r
+         MOV DX,03C2H\r
+         OUT DX,AL\r
+\r
+         MOV DX,CRTC_ADDR\r
+         MOV AX,9C10H\r
+         OUT DX,AX\r
+\r
+         MOV AX,8311H\r
+         OUT DX,AX\r
+\r
+         MOV AX,8F12H\r
+         OUT DX,AX\r
+\r
+         MOV AX,9615H\r
+         OUT DX,AX\r
+\r
+         MOV AX,0B916H\r
+         OUT DX,AX\r
+      }\r
+      setpalette16();\r
+      Mode.width = 640;\r
+      Mode.height = 400;\r
+      Mode.width_bytes = 32000;\r
+      Mode.colors = 16;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_PLANAR;\r
+   }\r
+   else if (mode == MODE_J)                    // 80 x 43 x 16\r
+   {\r
+      SetMode((unsigned int)&modeJ);\r
+      ReadBIOSfont(3,8);\r
+\r
+      Mode.width = 80;\r
+      Mode.height = 43;\r
+      Mode.width_bytes = 3440;\r
+      Mode.colors = 16;\r
+      Mode.attrib = TVU_TEXT;\r
+   }\r
+   else if (mode == MODE_K)                    // 80 x 50 x 16\r
+   {\r
+      SetMode((unsigned int)&modeK);\r
+      ReadBIOSfont(3,8);\r
+\r
+      Mode.width = 80;\r
+      Mode.height = 50;\r
+      Mode.width_bytes = 4000;\r
+      Mode.colors = 16;\r
+      Mode.attrib = TVU_TEXT;\r
+   }\r
+   else if (mode == MODE_L)                    // 40 x 43 x 16\r
+   {\r
+      SetMode((unsigned int)&modeL);\r
+      ReadBIOSfont(3,8);\r
+\r
+      Mode.width = 40;\r
+      Mode.height = 43;\r
+      Mode.width_bytes = 4000;\r
+      Mode.colors = 16;\r
+      Mode.attrib = TVU_TEXT;\r
+   }\r
+   else if (mode == MODE_M)                    // 40 x 50 x 16\r
+   {\r
+      SetMode((unsigned int)&modeM);\r
+      ReadBIOSfont(3,8);\r
+\r
+      Mode.width = 40;\r
+      Mode.height = 50;\r
+      Mode.width_bytes = 4000;\r
+      Mode.colors = 16;\r
+      Mode.attrib = TVU_TEXT;\r
+   }\r
+}\r
+\r
+void setpal(int color, char r, char g, char b)\r
+{\r
+   asm {\r
+   // Send color\r
+   MOV AX,color\r
+   MOV DX,03C8H\r
+   OUT DX,AL\r
+\r
+   // Write R value\r
+   MOV DX,03C9H\r
+   MOV AL,r\r
+   OUT DX,AL\r
+\r
+   // Write G value\r
+   MOV DX,03C9H\r
+   MOV AL,g\r
+   OUT DX,AL\r
+\r
+   // Write B value\r
+   MOV DX,03C9H\r
+   MOV AL,b\r
+   OUT DX,AL\r
+   }\r
+}\r
+\r
+void setpalette4()\r
+{\r
+   setpal( 0,  0,  0,  0);\r
+   setpal( 1,  0, 42, 42);\r
+   setpal( 2, 42,  0, 42);\r
+   setpal( 3, 63, 63, 63);\r
+}\r
+\r
+void setpalette16()\r
+{\r
+   int j = 0;\r
+   for (int i = 0; i < 48; i+=3)\r
+   {\r
+      setpal(j, Pal[i], Pal[i+1], Pal[i+2]);\r
+      j++;\r
+   }\r
+}\r
+\r
+void setpalette256()\r
+{\r
+   int j = 0;\r
+   for (int i = 0; i < 768; i+=3)\r
+   {\r
+      setpal(j, Pal[i], Pal[i+1], Pal[i+2]);\r
+      j++;\r
+   }\r
+}\r
diff --git a/16/tauron/C_SRC/MODES_C.INC b/16/tauron/C_SRC/MODES_C.INC
new file mode 100755 (executable)
index 0000000..585af88
--- /dev/null
@@ -0,0 +1,262 @@
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=-                                                                         -=\r
+//=-                   Tauron VGA Utilities Version 3.0                      -=\r
+//=-                      Released September 20, 1998                        -=\r
+//=-                                                                         -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+//=- All Rights Reserved.                     =-= that you put my name some- -=\r
+//=-                                          =-= where in your credits.     -=\r
+//=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- I assume no responsibility whatsoever for any effect that this package, -=\r
+//=- the information contained therein or the use thereof has on you, your   -=\r
+//=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+//=- you or your existance. No warranty is provided nor implied with this    -=\r
+//=- source code.                                                            -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- VGA register variables for the various videomodes                       -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+// Same as Mode 01H\r
+unsigned char mode00h[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0x67,      0x00,          0x03,0x08,0x03,0x00,0x02,\r
+// CRTC regs\r
+0x2D,0x27,0x28,0x90,0x2B,0xA0,0xBF,0x1F,0x00,0x4F,0x06,0x07,0x00,0x00,0x00,\r
+0x31,0x9C,0x8E,0x8F,0x14,0x1F,0x96,0xB9,0xA3,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x10,0x0E,0x00,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x10,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,\r
+0x0C,0x00,0x0F,0x08,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+\r
+// Same as Mode 02H\r
+unsigned char mode03h[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0x67,      0x00,          0x03,0x00,0x03,0x00,0x02,\r
+// CRTC regs\r
+0x5F,0x4F,0x50,0x82,0x55,0x81,0xBF,0x1F,0x00,0x4F,0x0E,0x0F,0x00,0x00,0x00,\r
+0x00,0x9C,0x0E,0x8F,0x28,0x01,0x96,0xB9,0xA3,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x10,0x0E,0x00,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x10,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,\r
+0x0C,0x00,0x0F,0x08,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+// Same as Mode 05,\r
+unsigned char mode04h[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0x63,      0x00,          0x03,0x09,0x03,0x00,0x02,\r
+// CRTC regs\r
+0x2D,0x27,0x28,0x90,0x2B,0x80,0x0BF,0x1F,0x00,0x0C1,0x00,0x00,0x00,0x00,0x00,\r
+0x31,0x9C,0x8E,0x8F,0x14,0x00,0x96,0xB9,0x0A2,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x30,0x0F,0x00,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x3B,0x3D,0x3F,0x02,0x04,0x06,0x07,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,\r
+0x01,0x00,0x03,0x00,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char mode06h[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0x63,      0x00,          0x03,0x01,0x01,0x00,0x06,\r
+// CRTC regs\r
+0x5F,0x4F,0x50,0x82,0x54,0x80,0x0BF,0x1F,0x00,0x0C1,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x9C,0x8E,0x8F,0x28,0x00,0x96,0xB9,0x0C2,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0x00,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,\r
+0x01,0x00,0x01,0x00,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char mode07h[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0x066,     0x00,          0x03,0x00,0x03,0x00,0x02,\r
+// CRTC regs\r
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x10,0x0A,0x00,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x10,0x18,0x18,0x18,0x18,0x18,0x18,0x18,\r
+0x0E,0x00,0x0F,0x00,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char mode0Dh[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0x063,     0x00,          0x03,0x09,0x0F,0x00,0x06,\r
+// CRTC regs\r
+0x2D,0x27,0x28,0x90,0x2B,0x80,0x0BF,0x1F,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,\r
+0x31,0x9C,0x8E,0x8F,0x14,0x00,0x96,0xB9,0xE3,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x10,0x05,0x00,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x10,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,\r
+0x01,0x00,0x0F,0x00,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char mode0Eh[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0x63,      0x00,          0x03,0x01,0x0F,0x00,0x06,\r
+// CRTC regs\r
+0x5F,0x4F,0x50,0x82,0x54,0x80,0x0BF,0x1F,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,\r
+0x59,0x9C,0x8E,0x8F,0x28,0x00,0x96,0xB9,0xE3,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0F,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x08,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,\r
+0x01,0x00,0x0F,0x00,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char mode0Fh[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0x0A2,     0x00,          0x03,0x01,0x0F,0x00,0x06,\r
+// CRTC regs\r
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x05,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x08,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x18,0x00,0x00,\r
+0x0B,0x00,0x05,0x00,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char mode10h[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0x0A3,     0x00,          0x03,0x01,0x0F,0x00,0x06,\r
+// CRTC regs\r
+0x5F,0x4F,0x50,0x82,0x54,0x80,0x0BF,0x1F,0x00,0x40,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x83,0x85,0x5D,0x28,0x0F,0x63,0x0BA,0xE3,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0F,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,\r
+0x01,0x00,0x0F,0x00,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char mode11h[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0xE3,     0x00,          0x03,0x01,0x0F,0x00,0x06,\r
+// CRTC regs\r
+0x5F,0x4F,0x50,0x82,0x54,0x80,0x0B,0x3E,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x59,\r
+0xEA,0x8C,0x0DF,0x28,0x0F,0x0E7,0x004,0x0C3,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x05,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x08,0x3F,0x3F,0x18,0x18,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,\r
+0x01,0x00,0x0F,0x00,0x00\r
+\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char mode12h[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0xE3,     0x00,          0x03,0x01,0x0F,0x00,0x06,\r
+// CRTC regs\r
+0x5F,0x4F,0x50,0x82,0x54,0x80,0x0B,0x3E,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x59,\r
+0xEA,0x8C,0x0DF,0x28,0x00,0x0E7,0x04,0xE3,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0F,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,\r
+0x01,0x00,0x0F,0x00,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char mode13h[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0x63,      0x00,          0x03,0x01,0x0F,0x00,0x0E,\r
+// CRTC regs\r
+0x5F,0x4F,0x50,0x82,0x54,0x80,0x0BF,0x1F,0x00,0x41,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x9C,0x0E,0x8F,0x28,0x40,0x96,0xB9,0x0A3,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,\r
+0x41,0x00,0x0F,0x00,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char modeC4[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0x63,      0x00,          0x03,0x01,0x0F,0x00,0x06,\r
+// CRTC regs\r
+0x5F,0x4F,0x50,0x82,0x54,0x80,0x0BF,0x1F,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x9C,0x0E,0x8F,0x28,0x00,0x96,0xB9,0xE3,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,\r
+0x41,0x00,0x0F,0x00,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char modeJ[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0xa3,      0x00,          0x03,0x01,0x03,0x00,0x02,\r
+// CRTC regs\r
+0x5F,0x4F,0x50,0x82,0x55,0x81,0xBF,0x1F,0x00,0x47,0x0E,0x0F,0x00,0x00,0x00,\r
+0x00,0x83,0x85,0x57,0x28,0x1F,0x60,0xB8,0xA3,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x10,0x0E,0x00,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x10,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,\r
+0x0C,0x00,0x0F,0x00,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char modeK[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0x63,      0x00,          0x03,0x01,0x03,0x00,0x02,\r
+// CRTC regs\r
+0x5F,0x4F,0x50,0x82,0x55,0x81,0xBF,0x1F,0x00,0x47,0x0E,0x0F,0x00,0x00,0x00,\r
+0x00,0x9C,0x8E,0x8F,0x28,0x1F,0x96,0xB9,0xA3,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x10,0x0E,0x00,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x10,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,\r
+0x0C,0x00,0x0F,0x00,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char modeL[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+0x67,0x00,0x03,0x08,0x03,0x00,0x02,\r
+// CRTC regs\r
+0x2D,0x27,0x28,0x90,0x2B,0x0A0,0x0BF,0x1F,0x00,0x47,0x06,0x07,0x00,0x00,0x00,\r
+0x31,0x83,0x85,0x57,0x14,0x1F,0x60,0x0B8,0x0A3,0x0FF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x10,0x0E,0x00,0x0FF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x10,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,\r
+0x0C,0x00,0x0F,0x00,0x00,\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+\r
+unsigned char modeM[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+0x67,0x00,0x03,0x08,0x03,0x00,0x02,\r
+// CRTC regs\r
+0x2D,0x27,0x28,0x90,0x2B,0x0A0,0x0BF,0x1F,0x00,0x47,0x06,0x07,0x00,0x00,0x00,0x31,\r
+0x9C,0x8E,0x8F,0x14,0x1F,0x96,0x0B9,0x0A3,0x0FF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x10,0x0E,0x00,0x0FF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,\r
+0x0C,0x00,0x0F,0x00,0x00,\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
diff --git a/16/tauron/C_SRC/PALETTE.INC b/16/tauron/C_SRC/PALETTE.INC
new file mode 100755 (executable)
index 0000000..a89ce79
--- /dev/null
@@ -0,0 +1,62 @@
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=-                                                                         -=\r
+//=-                   Tauron VGA Utilities Version 3.0                      -=\r
+//=-                      Released September 20, 1998                        -=\r
+//=-                                                                         -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+//=- All Rights Reserved.                     =-= that you put my name some- -=\r
+//=-                                          =-= where in your credits.     -=\r
+//=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- I assume no responsibility whatsoever for any effect that this package, -=\r
+//=- the information contained therein or the use thereof has on you, your   -=\r
+//=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+//=- you or your existance. No warranty is provided nor implied with this    -=\r
+//=- source code.                                                            -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+char Pal[768] = {\r
+ 0,  0,  0,  0,  0, 42,  0, 42,  0,  0, 42, 42, 42,  0,  0, 42,  0, 42,\r
+42, 21,  0, 42, 42, 42, 21, 21, 21, 21, 21, 63, 21, 63, 21, 21, 63, 63,\r
+63, 21, 21, 63, 21, 63, 63, 63, 21, 63, 63, 63,  0,  0,  0,  5,  5,  5,\r
+ 8,  8,  8, 11, 11, 11, 14, 14, 14, 17, 17, 17, 20, 20, 20, 24, 24, 24,\r
+28, 28, 28, 32, 32, 32, 36, 36, 36, 40, 40, 40, 45, 45, 45, 50, 50, 50,\r
+56, 56, 56, 63, 63, 63,  0,  0, 63, 16,  0, 63, 31,  0, 63, 47,  0, 63,\r
+63,  0, 63, 63,  0, 47, 63,  0, 31, 63,  0, 16, 63,  0,  0, 63, 16,  0,\r
+63, 31,  0, 63, 47,  0, 63, 63,  0, 47, 63,  0, 31, 63,  0, 16, 63,  0,\r
+ 0, 63,  0,  0, 63, 16,  0, 63, 31,  0, 63, 47,  0, 63, 63,  0, 47, 63,\r
+ 0, 31, 63,  0, 16, 63, 31, 31, 63, 39, 31, 63, 47, 31, 63, 55, 31, 63,\r
+63, 31, 63, 63, 31, 55, 63, 31, 47, 63, 31, 39, 63, 31, 31, 63, 39, 31,\r
+63, 47, 31, 63, 55, 31, 63, 63, 31, 55, 63, 31, 47, 63, 31, 39, 63, 31,\r
+31, 63, 31, 31, 63, 39, 31, 63, 47, 31, 63, 55, 31, 63, 63, 31, 55, 63,\r
+31, 47, 63, 31, 39, 63, 45, 45, 63, 49, 45, 63, 54, 45, 63, 58, 45, 63,\r
+63, 45, 63, 63, 45, 58, 63, 45, 54, 63, 45, 49, 63, 45, 45, 63, 49, 45,\r
+63, 54, 45, 63, 58, 45, 63, 63, 45, 58, 63, 45, 54, 63, 45, 49, 63, 45,\r
+45, 63, 45, 45, 63, 49, 45, 63, 54, 45, 63, 58, 45, 63, 63, 45, 58, 63,\r
+45, 54, 63, 45, 49, 63,  0,  0, 28,  7,  0, 28, 14,  0, 28, 21,  0, 28,\r
+28,  0, 28, 28,  0, 21, 28,  0, 14, 28,  0,  7, 28,  0,  0, 28,  7,  0,\r
+28, 14,  0, 28, 21,  0, 28, 28,  0, 21, 28,  0, 14, 28,  0,  7, 28,  0,\r
+ 0, 28,  0,  0, 28,  7,  0, 28, 14,  0, 28, 21,  0, 28, 28,  0, 21, 28,\r
+ 0, 14, 28,  0,  7, 28, 14, 14, 28, 17, 14, 28, 21, 14, 28, 24, 14, 28,\r
+28, 14, 28, 28, 14, 24, 28, 14, 21, 28, 14, 17, 28, 14, 14, 28, 17, 14,\r
+28, 21, 14, 28, 24, 14, 28, 28, 14, 24, 28, 14, 21, 28, 14, 17, 28, 14,\r
+14, 28, 14, 14, 28, 17, 14, 28, 21, 14, 28, 24, 14, 28, 28, 14, 24, 28,\r
+14, 21, 28, 14, 17, 28, 20, 20, 28, 22, 20, 28, 24, 20, 28, 26, 20, 28,\r
+28, 20, 28, 28, 20, 26, 28, 20, 24, 28, 20, 22, 28, 20, 20, 28, 22, 20,\r
+28, 24, 20, 28, 26, 20, 28, 28, 20, 26, 28, 20, 24, 28, 20, 22, 28, 20,\r
+20, 28, 20, 20, 28, 22, 20, 28, 24, 20, 28, 26, 20, 28, 28, 20, 26, 28,\r
+20, 24, 28, 20, 22, 28,  0,  0, 16,  4,  0, 16,  8,  0, 16, 12,  0, 16,\r
+16,  0, 16, 16,  0, 12, 16,  0,  8, 16,  0,  4, 16,  0,  0, 16,  4,  0,\r
+16,  8,  0, 16, 12,  0, 16, 16,  0, 12, 16,  0,  8, 16,  0,  4, 16,  0,\r
+ 0, 16,  0,  0, 16,  4,  0, 16,  8,  0, 16, 12,  0, 16, 16,  0, 12, 16,\r
+ 0,  8, 16,  0,  4, 16,  8,  8, 16, 10,  8, 16, 12,  8, 16, 14,  8, 16,\r
+16,  8, 16, 16,  8, 14, 16,  8, 12, 16,  8, 10, 16,  8,  8, 16, 10,  8,\r
+16, 12,  8, 16, 14,  8, 16, 16,  8, 14, 16,  8, 12, 16,  8, 10, 16,  8,\r
+ 8, 16,  8,  8, 16, 10,  8, 16, 12,  8, 16, 14,  8, 16, 16,  8, 14, 16,\r
+ 8, 12, 16,  8, 10, 16, 11, 11, 16, 12, 11, 16, 13, 11, 16, 15, 11, 16,\r
+16, 11, 16, 16, 11, 15, 16, 11, 13, 16, 11, 12, 16, 11, 11, 16, 12, 11,\r
+16, 13, 11, 16, 15, 11, 16, 16, 11, 15, 16, 11, 13, 16, 11, 12, 16, 11,\r
+11, 16, 11, 11, 16, 12, 11, 16, 13, 11, 16, 15, 11, 16, 16, 11, 15, 16,\r
+11, 13, 16, 11, 12, 16,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,\r
+ 0,  0,  0,  0,  0,  0,  0,  0,  0, 63, 63, 63\r
+};\r
diff --git a/16/tauron/C_SRC/TAURON.H b/16/tauron/C_SRC/TAURON.H
new file mode 100755 (executable)
index 0000000..f14f312
--- /dev/null
@@ -0,0 +1,105 @@
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=-                                                                         -=\r
+//=-                   Tauron VGA Utilities Version 3.0                      -=\r
+//=-                      Released September 20, 1998                        -=\r
+//=-                                                                         -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+//=- All Rights Reserved.                     =-= that you put my name some- -=\r
+//=-                                          =-= where in your credits.     -=\r
+//=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- I assume no responsibility whatsoever for any effect that this package, -=\r
+//=- the information contained therein or the use thereof has on you, your   -=\r
+//=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+//=- you or your existance. No warranty is provided nor implied with this    -=\r
+//=- source code.                                                            -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+#ifndef __TAURON_H__\r
+#define __TAURON_H__\r
+\r
+// VGA register port addresses\r
+#define ATTRCON_ADDR                                   0x03C0\r
+#define MISC_ADDR                0x03C2\r
+#define VGAENABLE_ADDR           0x03C3\r
+#define SEQ_ADDR                 0x03C4\r
+#define GRACON_ADDR              0x03CE\r
+#define CRTC_ADDR                0x03D4\r
+#define STATUS_ADDR              0x03DA\r
+\r
+// Video mode numbers\r
+#define MODE00H                                                0x00\r
+#define MODE01H                                                0x00\r
+#define MODE02H                                                0x03\r
+#define MODE03H                                                0x03\r
+#define MODE04H                                                0x04\r
+#define MODE05H                                                0x05\r
+#define MODE06H                                                0x06\r
+#define MODE07H                                                0x07\r
+#define MODE0DH                                                0x0D\r
+#define MODE0EH                                                0x0E\r
+#define MODE0FH                                                0x0F\r
+#define MODE10H                                                0x10\r
+#define MODE11H                                                0x11\r
+#define MODE12H                                                0x12\r
+#define MODE13H                                                0x13\r
+#define CHAIN4                                                 0x14\r
+#define MODE_X                                                 0x15\r
+#define MODE_A                                                 0x16\r
+#define MODE_B                                                 0x17\r
+#define MODE_C                                                 0x18\r
+#define MODE_D                                                 0x19\r
+#define MODE_E                                                 0x1A\r
+#define MODE_F                                                 0x1B\r
+#define MODE_G                                                 0x1C\r
+#define MODE_H                                                 0x1D\r
+#define MODE_I                                                 0x1E\r
+#define MODE_J                                                 0x1F\r
+#define MODE_K                                                 0x20\r
+#define MODE_L                                                 0x21\r
+#define MODE_M                                                 0x22\r
+\r
+// Keypresses\r
+#define Escape                                                 0x001b\r
+\r
+// Videomode attributes\r
+#define TVU_TEXT                                               0x0001\r
+#define TVU_GRAPHICS                                   0x0002\r
+#define TVU_MONOCHROME                         0x0004\r
+#define TVU_PLANAR                                     0x0008\r
+#define TVU_UNCHAINED                          0x0010\r
+\r
+// Videomode Info Structure\r
+struct Vmode {\r
+   int mode;                      // Videomode Number\r
+   int width;                     // Width in pixels\r
+   int height;                    // Height in pixels\r
+   unsigned int width_bytes;      // Number of bytes per screen\r
+   int colors;                    // Number of colors\r
+   int attrib;                    // Videomode attributes\r
+};\r
+\r
+extern Vmode Mode;\r
+\r
+// MODES.CPP Function Prototypes\r
+void SetVideoMode(int mode);\r
+void ReadBIOSfont(int fontnum, int bytesperchar);\r
+void SetMode(unsigned int regs);\r
+void setpal(int color, char r, char g, char b);\r
+\r
+// CLEAR.CPP Function Prototypes\r
+void TextClear(char attrib);\r
+void PlanarClear(char Color);\r
+void UnchainedClear(char Color);\r
+void Clear13H(char color);\r
+void Clear04H();\r
+void Clear06H();\r
+void Clear0DH(char color);\r
+\r
+// TESTS.CPP Function Prototypes\r
+void ModeTest();\r
+void TextTest();\r
+\r
+// DUAL.CPP Function Prototypes\r
+void DualTest();\r
+\r
+#endif
\ No newline at end of file
diff --git a/16/tauron/C_SRC/TESTS.CPP b/16/tauron/C_SRC/TESTS.CPP
new file mode 100755 (executable)
index 0000000..e89084f
--- /dev/null
@@ -0,0 +1,376 @@
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=-                                                                         -=\r
+//=-                   Tauron VGA Utilities Version 3.0                      -=\r
+//=-                      Released September 20, 1998                        -=\r
+//=-                                                                         -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+//=- All Rights Reserved.                     =-= that you put my name some- -=\r
+//=-                                          =-= where in your credits.     -=\r
+//=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- I assume no responsibility whatsoever for any effect that this package, -=\r
+//=- the information contained therein or the use thereof has on you, your   -=\r
+//=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+//=- you or your existance. No warranty is provided nor implied with this    -=\r
+//=- source code.                                                            -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+#include <stdlib.h>\r
+#include <stdio.h>\r
+#include <conio.h>\r
+#include "tauron.h"\r
+#define ABS(a)   ((a < 0) ? -a : a)\r
+#define SGN(a)   ((a < 0) ? -1 : 1)\r
+\r
+void Pixel13H(int x, int y, char color)\r
+{\r
+   int width = Mode.width;\r
+   asm {\r
+   MOV AX,0A000H   //    video memory segment number\r
+   MOV ES,AX       //    place it in es\r
+\r
+   MOV DX,03C4H\r
+   MOV AL,2\r
+   OUT DX,AL\r
+   INC DX\r
+\r
+   MOV AL,1\r
+   MOV CX,x\r
+   AND CX,3\r
+   SHL AL,CL\r
+   OUT DX,AL\r
+\r
+   XOR DI,DI\r
+\r
+// Calculate the Offset\r
+   mov ax,width  // width\r
+   mul y         // (Y * width))\r
+   mov bx,x      // (X + (Y * width))\r
+   add ax,bx\r
+// Done!\r
+\r
+   ADD DI,AX\r
+   mov ah,color   //    move the Color into ah\r
+   mov es:[di],ah //    move the value to the screen\r
+   }\r
+}\r
+\r
+void pixel(int x, int y, char color)\r
+{\r
+   int width = Mode.width;\r
+   if (Mode.mode == MODE13H)\r
+      Pixel13H(x,y,color);\r
+   else if (Mode.attrib & TVU_UNCHAINED) {\r
+   asm {\r
+   MOV AX,0A000H   //    video memory segment number\r
+   MOV ES,AX       //    place it in es\r
+\r
+   MOV DX,03C4H\r
+   MOV AL,2\r
+   OUT DX,AL\r
+   INC DX\r
+\r
+   MOV AL,1\r
+   MOV CX,x\r
+   AND CX,3\r
+   SHL AL,CL\r
+   OUT DX,AL\r
+\r
+   XOR DI,DI\r
+\r
+// Calculate the Offset\r
+   mov ax,width  // width / 4\r
+   SHR AX,2\r
+   mul y         // (Y * (width / 4))\r
+   mov bx,x      // (X / 4) + (Y * (width / 4))\r
+   shr bx,2\r
+   add ax,bx\r
+// Done!\r
+\r
+   ADD DI,AX\r
+   mov ah,color   //    move the Color into ah\r
+   mov es:[di],ah //    move the value to the screen\r
+   }}\r
+   else if (Mode.attrib & TVU_PLANAR)\r
+   {\r
+   asm {\r
+   MOV AX,0A000H   //    video memory segment number\r
+   MOV ES,AX       //    place it in es\r
+\r
+   MOV BX,x        //    X Value\r
+   MOV CX,BX\r
+   MOV AX,y        //    Y Value\r
+   MOV SI,80\r
+   MUL SI\r
+   SHR BX,3        //    /8\r
+   ADD AX,BX\r
+   MOV DI,AX\r
+\r
+   AND CL,7\r
+   XOR CL,7\r
+   MOV AH,1\r
+\r
+   SHL AH,CL\r
+\r
+   MOV DX,03CEH\r
+   MOV AL,8\r
+   OUT DX,AX\r
+\r
+   MOV AL,0\r
+   XCHG ES:[DI],AL\r
+\r
+   MOV DX,03C4H\r
+   MOV AH,color\r
+   MOV AL,2\r
+   OUT DX,AX\r
+\r
+   MOV BYTE PTR ES:[DI],0FFh\r
+\r
+   MOV AX,0F02H\r
+   OUT DX,AX\r
+\r
+   MOV DX,03CEH\r
+   MOV AX,0FF08h\r
+   OUT DX,AX\r
+   }}\r
+}\r
+\r
+// This is Bresenham's Line Drawing Algorithm\r
+void drawline(int x1, int y1, int x2, int y2, char col)\r
+{\r
+   int d, x, y, ax, ay, sx, sy, dx, dy;\r
+\r
+   dx = x2-x1;\r
+   ax = ABS(dx) << 1;\r
+   sx = SGN(dx);\r
+   dy = y2-y1;\r
+   ay = ABS(dy) << 1;\r
+   sy = SGN(dy);\r
+\r
+   x = x1;\r
+   y = y1;\r
+   if( ax > ay )\r
+   {\r
+      d = ay - (ax >> 1);\r
+      while( x != x2 )\r
+      {\r
+             pixel( x, y, col );\r
+             if( d >= 0 )\r
+             {\r
+                y += sy;\r
+                d -= ax;\r
+             }\r
+             x += sx;\r
+             d += ay;\r
+      }\r
+   }\r
+   else\r
+   {\r
+      d = ax - (ay >> 1);\r
+      while( y != y2 )\r
+      {\r
+             pixel( x, y, col );\r
+             if( d >= 0 )\r
+             {\r
+                x += sx;\r
+                d -= ay;\r
+             }\r
+             y += sy;\r
+             d += ax;\r
+      }\r
+   }\r
+   return;\r
+}\r
+\r
+void drawrect(int x1, int y1, int x2, int y2, char color)\r
+{\r
+   drawline(x1,y1,x2,y1,color);\r
+   drawline(x1,y2,x2,y2,color);\r
+   drawline(x1,y1,x1,y2,color);\r
+   drawline(x2,y1,x2,y2+1,color);\r
+}\r
+\r
+void hline(int x1, int x2, int y, char color)\r
+{\r
+   drawline(x1,y,x2,y,color);\r
+}\r
+\r
+void vline(int y1, int y2, int x, char color)\r
+{\r
+   drawline(x,y1,x,y2,color);\r
+}\r
+\r
+void fillrect(int x1, int y1, int x2, int y2, char color)\r
+{\r
+   for (int i = y1; i < y2; i++)\r
+      hline(x1,x2,i,color);\r
+}\r
+\r
+void ModeTest()\r
+{\r
+   if (Mode.mode == MODE13H)\r
+   {\r
+      Clear13H(0);\r
+   }\r
+   else if (Mode.attrib & TVU_PLANAR)\r
+   {\r
+      PlanarClear(0);\r
+   }\r
+   else if (Mode.attrib & TVU_UNCHAINED)\r
+   {\r
+      UnchainedClear(0);\r
+   }\r
+\r
+   /* Print mode stats\r
+    *\r
+    */\r
+\r
+   drawrect(0,0,Mode.width-1,Mode.height-1,15);\r
+   for (int i = 50; i < Mode.height; i += 100)\r
+   {\r
+      hline(0,10,i,15);\r
+      hline(0,25,i+50,15);\r
+   }\r
+\r
+   for (int i = 40; i < Mode.width; i += 80)\r
+   {\r
+      vline(0,15,i,15);\r
+      vline(0,30,i+40,15);\r
+   }\r
+\r
+   if (Mode.colors == 2)\r
+   {\r
+      int x,y;\r
+      x = Mode.width - 420;\r
+      y = Mode.height - 220;\r
+      fillrect(x,y,x+200,y+200,0);\r
+      x+=200;\r
+      fillrect(x,y,x+200,y+200,15);\r
+      drawrect(x-200,y,x+200,y+200,15);\r
+   }\r
+   else if (Mode.colors == 16)\r
+   {\r
+      int x,y;\r
+      x = Mode.width - 522;\r
+      y = Mode.height - 135;\r
+      for (int i = 0; i < 8; i++)\r
+      {\r
+         fillrect(x,y,x+64,y+64,i);\r
+         x+=64;\r
+      }\r
+      x = Mode.width - 522;\r
+      y += 64;\r
+      for (int i = 8; i < 16; i++)\r
+      {\r
+         fillrect(x,y,x+64,y+64,i);\r
+         x+=64;\r
+      }\r
+      drawrect(x-512,y-64,x,y+64,15);\r
+   }\r
+   else if (Mode.colors == 256)\r
+   {\r
+      int x,y,k;\r
+      x = Mode.width - 165;\r
+      y = Mode.height - 165;\r
+      k = 0;\r
+      for (int i = 0; i < 16; i++)\r
+      {\r
+         for (int j = 0; j < 16; j++)\r
+         {\r
+            fillrect(x,y,x+10,y+10,k);\r
+            x+=10;\r
+            k++;\r
+         }\r
+         x = Mode.width - 165;\r
+         y += 10;\r
+      }\r
+      drawrect(Mode.width - 165,Mode.height - 165,Mode.width -5,Mode.height - 5,15);\r
+   }\r
+}\r
+\r
+void TextTest()\r
+{\r
+   TextClear(0x1F);\r
+   gotoxy(1,1);\r
+   if (Mode.mode == MODE00H)\r
+   {\r
+      // ** NOTE ** the gotoxy's here are a hack so that i could use the\r
+      // standard C functions to program this mode.  Normally you would just\r
+      // calculate the proper address and display the text but since DOS still\r
+      // thinks we are in mode 03h (it checks the BIOS), this is necessary.\r
+      gotoxy(1,1);\r
+      printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n");\r
+      gotoxy(41,1);\r
+      printf("³Text Mode: 00H        ³\n");\r
+      gotoxy(1,2);\r
+      printf("³Width: 40   Height: 25³\n");\r
+      gotoxy(41,2);\r
+      printf("³Bytes per screen: 2000³\n");\r
+      gotoxy(1,3);\r
+      printf("³Number of pages: 8    ³\n");\r
+      gotoxy(41,3);\r
+      printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n");\r
+   }\r
+   else if (Mode.mode == MODE03H)\r
+   {\r
+      printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n");\r
+      printf("³Text Mode: 03H        ³\n");\r
+      printf("³Width: 80   Height: 25³\n");\r
+      printf("³Bytes per screen: 4000³\n");\r
+      printf("³Number of pages: 8    ³\n");\r
+      printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n");\r
+   }\r
+   else if (Mode.mode == MODE_J)\r
+   {\r
+      printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n");\r
+      printf("³Text Mode K           ³\n");\r
+      printf("³Width: 80   Height: 43³\n");\r
+      printf("³Bytes per screen: 3440³\n");\r
+      printf("³Number of pages: 8    ³\n");\r
+      printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n");\r
+   }\r
+   else if (Mode.mode == MODE_K)\r
+   {\r
+      printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n");\r
+      printf("³Text Mode K           ³\n");\r
+      printf("³Width: 80   Height: 50³\n");\r
+      printf("³Bytes per screen: 4000³\n");\r
+      printf("³Number of pages: 8    ³\n");\r
+      printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n");\r
+   }\r
+   else if (Mode.mode == MODE_L)\r
+   {\r
+      // ** NOTE ** the gotoxy's here are a hack so that i could use the\r
+      // standard C functions to program this mode.  Normally you would just\r
+      // calculate the proper address and display the text but since DOS still\r
+      // thinks we are in mode 03h (it checks the BIOS), this is necessary.\r
+      printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n");\r
+      gotoxy(41,1);\r
+      printf("³Text Mode L           ³\n");\r
+      gotoxy(1,2);\r
+      printf("³Width: 40   Height: 43³\n");\r
+      gotoxy(41,2);\r
+      printf("³Bytes per screen: 3440³\n");\r
+      gotoxy(1,3);\r
+      printf("³Number of pages: 8    ³\n");\r
+      gotoxy(41,3);\r
+      printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n");\r
+   }\r
+   else if (Mode.mode == MODE_M)\r
+   {\r
+      // ** NOTE ** the gotoxy's here are a hack so that i could use the\r
+      // standard C functions to program this mode.  Normally you would just\r
+      // calculate the proper address and display the text but since DOS still\r
+      // thinks we are in mode 03h (it checks the BIOS), this is necessary.\r
+      printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n");\r
+      gotoxy(41,1);\r
+      printf("³Text Mode K           ³\n");\r
+      printf("³Width: 40   Height: 50³\n");\r
+      gotoxy(1,2);\r
+      gotoxy(41,2);\r
+      printf("³Bytes per screen: 4000³\n");\r
+      gotoxy(1,3);\r
+      printf("³Number of pages: 8    ³\n");\r
+      gotoxy(41,3);\r
+      printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n");\r
+   }\r
+}\r
diff --git a/16/tauron/FEDIT.EXE b/16/tauron/FEDIT.EXE
new file mode 100755 (executable)
index 0000000..98d5c46
Binary files /dev/null and b/16/tauron/FEDIT.EXE differ
diff --git a/16/tauron/FEDIT.TXT b/16/tauron/FEDIT.TXT
new file mode 100755 (executable)
index 0000000..42883ec
--- /dev/null
@@ -0,0 +1,93 @@
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=-                                                                         -=\r
+=-                   Tauron VGA Utilities Version 3.0                      -=\r
+=-                      Released September 20, 1998                        -=\r
+=-                           Font Editor Docs                              -=\r
+=-                                                                         -=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+=- All Rights Reserved.                     =-= that you put my name some- -=\r
+=-                                          =-= where in your credits.     -=\r
+=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=- I assume no responsibility whatsoever for any effect that this package, -=\r
+=- the information contained therein or the use thereof has on you, your   -=\r
+=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+=- you or your existance. No warranty is provided nor implied with this    -=\r
+=- source code.                                                            -=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+A mouse is required to run this program.\r
+\r
+On the main screen is a blue box with a white solid line surrounding it.\r
+This is the MAIN EDIT BOX.  Inside of this box is where the font is created.\r
+Left click with the mouse to turn a bit on, right click with the mouse to\r
+turn a bit off.\r
+\r
+In the bottom left corner there is the ACTIONS box.  Inside is all of the\r
+options that you have available.  **NOTE** The delete this character action\r
+is not operational.\r
+\r
+   Update this character -- This action puts the curently edited character\r
+   into its final  font position.  There is a charcter buffer and a character\r
+   list.  When editing you are editing the buffer.  If you don't want to keep\r
+   the current changes, then don't hit update character.  But if you do want to\r
+   keep the changes, then hit update character before hitting anything else.  If\r
+   you don't the cnages will be lost.\r
+\r
+   Display next character -- Hit the left or right arrows to go up or down the\r
+   list character list.  As you display each character, it is editable and you\r
+   must hit update character if you want to save the changes.\r
+\r
+   Goto character -- Goes to a certain character in the list.\r
+\r
+   Read font from BIOS -- Read in a font from the BIOS which can now be\r
+   edited.\r
+\r
+   Add a character -- Adds a charcter to the end of the list.  No more than\r
+   256 characters can be added.\r
+\r
+   Delete a character -- Not operational\r
+\r
+   Dump font to FONT.ASM -- This dumps the font to a text file ready to be\r
+   assembled with an assembler.\r
+\r
+\r
+Along the bottom of the screen is a menu bar with choices:\r
+Alt+N New     This creates a new font with dimensions you specify.\r
+\r
+Alt+O Open    Opens a file.  Careful using the dialog as it may no be\r
+              intuitive at first glance.\r
+\r
+Alt+S Save    Savess a file.  Careful using the dialog as it may no be\r
+              intuitive at first glance.\r
+\r
+Alt+A About   Opens a window containing information about the program.\r
+              Also has contact information\r
+\r
+Alt+X Exit    Exits the program.  This does not prompt you to save the file\r
+              you are working on so be careful.\r
+\r
+\r
+\r
+Here is the structure for the files saved in binary :\r
+Header                 7 bytes 'KINFIRA'\r
+Width                  Word\r
+Height                 Word\r
+Number of characters   Word\r
+Bytes per character    Word\r
+\r
+The rest of the file is the font saved in bitwise form.\r
+For example:     This is a partial text dump from an 8x14 font from BIOS\r
+Every byte (8 bits) is one scanline. Notice there are 14 bytes per character\r
+DB 000H,000H,07EH,081H,0A5H,081H,081H,0BDH,099H,081H,07EH,000H,000H,000H\r
+\r
+If this font was say a 16x14 font, every word (16 bits) would be a scanline.\r
+Take the same line as above, represented as a 16 bit wide font:\r
+\r
+DB 000H,000H,                 <====== First scanline\r
+   000H,000H,                 <====== Second scanline\r
+   000H,07EH,\r
+   000H,081H,\r
+   000H,0A5H,\r
+   and so on...\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
diff --git a/16/tauron/MAIN.EXE b/16/tauron/MAIN.EXE
new file mode 100755 (executable)
index 0000000..f8caffe
Binary files /dev/null and b/16/tauron/MAIN.EXE differ
diff --git a/16/tauron/MAINC.EXE b/16/tauron/MAINC.EXE
new file mode 100755 (executable)
index 0000000..2668a90
Binary files /dev/null and b/16/tauron/MAINC.EXE differ
diff --git a/16/tauron/README.TXT b/16/tauron/README.TXT
new file mode 100755 (executable)
index 0000000..06cdfc7
--- /dev/null
@@ -0,0 +1,226 @@
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=-                                                                         -=\r
+=-                   Tauron VGA Utilities Version 3.0                      -=\r
+=-                      Released September 20, 1998                        -=\r
+=-                                                                         -=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+=- All Rights Reserved.                     =-= that you put my name some- -=\r
+=-                                          =-= where in your credits.     -=\r
+=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=- I assume no responsibility whatsoever for any effect that this package, -=\r
+=- the information contained therein or the use thereof has on you, your   -=\r
+=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+=- you or your existance. No warranty is provided nor implied with this    -=\r
+=- source code.                                                            -=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+The code in this package will switch video modes on any standard VGA video\r
+card.  This is accomplished by programming the VGA Registers directly.\r
+\r
+##############################################################################\r
+####          Mode 07H and Mode 0FH are still being worked on.            ####\r
+##############################################################################\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=- Files included in this package: -=                      -=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=                      -=\r
+=-  Assembly version compiles with TASM 4.1 and TLINK 7.0  -=\r
+=-  C version compiles with Borland C++ 5.01               -=\r
+=-                                                         -=\r
+=-   README.TXT       You are reading it.                  -=\r
+=-   WHATSNEW.TXT     Whats new in this version            -=\r
+=-   USAGE.TXT        How to use these routines.  Also     -=\r
+=-                    contains a complete list of the      -=\r
+=-                    videomodes supported.                -=\r
+=-                                                         -=\r
+=-   MAIN.EXE         Assembly version executable demo     -=\r
+=-   MAINC.EXE        C version executable demo            -=\r
+=-   FEDIT.EXE        Font editor                          -=\r
+=-   FEDIT.TXT        Docs for the font editor             -=\r
+=-                                                         -=\r
+=-   ASM_SRC          The assembly source directory        -=\r
+=-    +->MAIN.ASM     The Main source file                 -=\r
+=-    +->MODES.ASM    The mode switching file              -=\r
+=-    +->CLEAR.ASM    The clear screen routines            -=\r
+=-    +->TESTS.ASM    The videomode tests                  -=\r
+=-    +->DUAL.ASM     The dual font setup and test         -=\r
+=-    +->FONT1.ASM    Font 1 for dual font test            -=\r
+=-    +->FONT2.ASM    Font 2 for dual font test            -=\r
+=-    +->MODES.INC    The includes for each videomode      -=\r
+=-                                                         -=\r
+=-   C_SRC            The C source directory               -=\r
+=-    +->MAINC.CPP    The main source file                 -=\r
+=-    +->MODES.CPP    The mode switching file              -=\r
+=-    +->CLEAR.CPP    The clear screen routines            -=\r
+=-    +->TESTS.CPP    The videomode tests                  -=\r
+=-    +->TAURON.H     The main header file                 -=\r
+=-    +->FONT1.H       Font 1 for dual font test           -=\r
+=-    +->FONT2.H      Font 2 for dual font test            -=\r
+=-    +->MODES_C.INC  The includes for each videomode      -=\r
+=-    +->PALETTE.INC  The standard palette                 -=\r
+=-                                                         -=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+When running the demo:\r
+\r
+   In graphics modes, there is a vertical line every 40 pixels with a longer\r
+   vertical line every 80 pixels.\r
+\r
+   I have not yet figured out how to program modes 04H, 05H, or 06H.  Once\r
+   the mode is set, I only clear the mode to a specified color.\r
+\r
+\r
+\r
+The VGA BIOS must be called once at the beginning of the routines so that we\r
+know where the fonts are stored.  Once this information is known we no longer\r
+need the BIOS.\r
+\r
+The reason for starting this package is that I am writing an Operating\r
+System. (There are a lot of us out there I know.)  I wanted to be able to\r
+program standard VGA cards for my OS.\r
+\r
+This is not a graphics library although there are some clear screen and pixel\r
+routines around.  It only sets the video mode. This works in real mode as\r
+well as protected mode.  To use it in protected mode you will have to modify\r
+it to suit your own needs.\r
+\r
+The use of the fonts stored in BIOS ROM is now included.  We are using what is\r
+already built into the VGA BIOS.\r
+\r
+\r
+E-mail:      kinfira@hotmail.com\r
+Homepage:    http://home.onestop.net/kinfira/\r
+\r
+Drop me a line if you find this package useful.\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=-= Credits:  =-=                                                         =-=\r
+=-=-=-=-=-=-=-=-=                                                         =-=\r
+=-= A great book: "Programmer's Guide to the EGA, VGA, and Super VGA      =-=\r
+=-= Cards" 3rd Edition   Richard F. Ferraro   ISBN 0-201-62490-7          =-=\r
+=-= Addison-Wesley Publishing Company.                                    =-=\r
+=-=                                                                       =-=\r
+=-= A very excellent book: "Programmer's Guide to the EGA & VGA Cards"    =-=\r
+=-= Richard F. Ferraro   ISBN 0-201-12692-3                               =-=\r
+=-= Addison-Wesley Publishing Company.                                    =-=\r
+=-=                                                                       =-=\r
+=-= Anthony A.J. Williams for writing MODES.ASM, which I used to help     =-=\r
+=-= write the Text Mode routine.  I specifically used the SetFont         =-=\r
+=-= procedure which was instrumental in getting the code for Mode 03h     =-=\r
+=-= working.                                                              =-=\r
+=-=                                                                       =-=\r
+=-= Boone (boone@ucsd.edu) for the docs on programming the VGA Registers. =-=\r
+=-=                                                                       =-=\r
+=-= I also used a really great program called TWEAK to get some of the    =-=\r
+=-= values for the non-standard modes.                                    =-=\r
+=-=                                                                       =-=\r
+=-= Denthor of ASPHYXIA for his trainer on Chain-4 Mode.                  =-=\r
+=-=                                                                       =-=\r
+=-= Robert Schmidt <robert@stud.unit.no> for the great doc in PCGPE 1.0   =-=\r
+=-= about Mode X.  This helped a great deal.                              =-=\r
+=-=                                                                       =-=\r
+=-= Michael Abrash for his super excellent VGA articles on everything,    =-=\r
+=-= plus all of his books and public domain code.                         =-=\r
+=-=                                                                       =-=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=\r
+=- Revision History: -=\r
+=-=-=-=-=-=-=-=-=-=-=-=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+Version 3.0 released September 20, 1998\r
+   I added 2 new text modes, 40x43 and 40x50.  Also I have added a new dual\r
+   font test which uses 2 of the VGA's 8 font maps.\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+Version 2.1 released July 5, 1998\r
+   The only change is that in the C version, the routine to read fronts from\r
+   BIOS is now working.  This routine reads a font from the BIOS and places\r
+   it in memory for use in a textmode.\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+Version 2.0 released June 22, 1998\r
+    I have added more videomodes.  I have also written a version of the\r
+    source in C.  So the routines are available in Assembly and C.  I have\r
+    also written some documentation for the font editor.  So now the only\r
+    modes that are not implemented are the monochrome modes which will still\r
+    be worked on.\r
+\r
+\r
+Tauron VGA Utilities\r
+Version 1.0 released June 14, 1998\r
+    I changed the name because that other was a little too long.  B->\r
+    I have packaged in a small font editor.  I have also rearranged the mode\r
+    numbers and added a few more video modes that will be implemented.\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+Source code for switching videomodes without using BIOS\r
+Version 4.1 released May 28, 1998\r
+\r
+New in this version:\r
+    We call a BIOS function to find out where in memory the fonts are stored.\r
+    Since this is different on every cards' VGA BIOS, it is absolutely\r
+    necessary so that in text modes, the proper fonts are displayed.\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+Version 4.0 released March 5, 1998\r
+\r
+New in this version:\r
+    All VGA Modes are supported! Plus Chain-4 Mode, ModeX, ModeA,\r
+    ModeB and ModeC.  Modes 07H and 0FH are still being worked on.\r
+\r
+    Use of Fonts stored in ROM.\r
+    Custom Font data stored in system memory is no longer needed.\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+Version 3.0 released January 2, 1998\r
+    Includes Modes 03h, 10h, 12h, and 13h plus Chain-4 Mode, ModeX, ModeA,\r
+    ModeB and ModeC.\r
+\r
+New in this version: Mode 10h (640x350x16), Mode C (640x400x16)\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+Version 2.5 not released\r
+    Includes Modes 03h, 12h, and 13h plus Chain-4 Mode, ModeX, ModeA, and\r
+    ModeB.\r
+\r
+New in this version: VGA register data takes up less space.\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+Version 2.1 released Nov. 21, 1997\r
+    Includes Modes 03h, 12h, and 13h plus Chain-4 Mode, ModeX, ModeA, and\r
+    ModeB.\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+Version 2.0 released Nov. 10, 1997\r
+    Includes Modes 03h, 12h, and 13h plus Chain-4 Mode and ModeX.\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+Version 1.5 released late Oct. 1997\r
+    Includes Modes 03h, 12h, and 13h.  Fully functional\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+Version 1.1 released in Oct. 12, 1997\r
+   Includes Mode 13h, Mode 03h finally works. Realized that I needed to reset\r
+   the text mode font.\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+Version 1.0 released in Oct. 7, 1997\r
+   Included Mode 13h, Mode 03h partially. (Did not have setfont routine)\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
diff --git a/16/tauron/USAGE.TXT b/16/tauron/USAGE.TXT
new file mode 100755 (executable)
index 0000000..939c2de
--- /dev/null
@@ -0,0 +1,118 @@
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=-                                                                         -=\r
+=-                   Tauron VGA Utilities Version 3.0                      -=\r
+=-                      Released September 20, 1998                        -=\r
+=-                                                                         -=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+=- All Rights Reserved.                     =-= that you put my name some- -=\r
+=-                                          =-= where in your credits.     -=\r
+=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=- I assume no responsibility whatsoever for any effect that this package, -=\r
+=- the information contained therein or the use thereof has on you, your   -=\r
+=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+=- you or your existance. No warranty is provided nor implied with this    -=\r
+=- source code.                                                            -=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+** Note ** This code does not update BIOS when in real mode.  So if you need\r
+that particular functionality, you will have to add this yourself.\r
+\r
+\r
+   Use MODE NUMBER to set the video mode with the procedure provided.\r
+\r
+   A star (*) next to the mode number indicates that it is not yet\r
+   implemented.\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=-   Currently supported Video Modes:    -= MODE NUMBER =-=   Type   -=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=-                                       -=             =-=          -=\r
+=- 00H,01H -- 40 x 25 x 16               -=   00H,01H   =-=     Text -=\r
+=-                                       -=             =-=          -=\r
+=- 02H,03H -- 80 x 25 x 16               -=   02H,03H   =-=     Text -=\r
+=-                                       -=             =-=          -=\r
+=- 04H,05H -- 320 x 200 x 4              -=   04H,05H   =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- 06H -- 640 x 200 x 2                  -=     06H     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- 07H -- 80 x 25 x 2 (Monochrome)       -=  *  07H     =-=     Text -=\r
+=-                                       -=             =-=          -=\r
+=- 0DH -- 320 x 200 x 16                 -=     0DH     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- 0EH -- 640 x 200 x 16                 -=     0EH     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- 0FH -- 640 x 350 x 2 (Monochrome)     -=  *  0FH     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- 10H -- 640 x 350 x 16                 -=     10H     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- 11H -- 640 x 480 x 2                  -=     11H     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- 12H -- 640 x 480 x 16                 -=     12H     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- 13H -- 320 x 200 x 256                -=     13H     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- Chain 4 -- unchained 320 x 200 x 256  -=     14H     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- Mode X -- unchained 320 x 240 x 256   -=     15H     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- Mode A -- unchained 320 x 350 x 256   -=     16H     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- Mode B -- unchained 320 x 400 x 256   -=     17H     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- Mode C -- unchained 320 x 480 x 256   -=     18H     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- Mode D -- unchained 360 x 200 x 256   -=     19H     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- Mode E -- unchained 360 x 240 x 256   -=     1AH     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- Mode F -- unchained 360 x 350 x 256   -=     1BH     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- Mode G -- unchained 360 x 400 x 256   -=     1CH     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- Mode H -- unchained 360 x 480 x 256   -=     1DH     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- Mode I -- 640 x 400 x 16              -=     1EH     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- Mode J -- 80 x 43 x 16                -=     1FH     =-=     Text -=\r
+=-                                       -=             =-=          -=\r
+=- Mode K -- 80 x 50 x 16                -=     20H     =-=     Text -=\r
+=-                                       -=             =-=          -=\r
+=- Mode K -- 40 x 43 x 16                -=     21H     =-=     Text -=\r
+=-                                       -=             =-=          -=\r
+=- Mode K -- 40 x 50 x 16                -=     22H     =-=     Text -=\r
+=-                                       -=             =-=          -=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+\r
+To set a video mode using the procedure I already have written:\r
+\r
+PUSH *VALUE*   ; Where value is the mode number\r
+CALL SETVIDEOMODE\r
+\r
+and thats it the videomode gets set.\r
+\r
+Once the video mode is set, you can program each video mode as normal.\r
+\r
+Just remember, you can't rely on BIOS so if you need the palette set to the\r
+proper values, you need to set them yourself.\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+If you want to use this code in your programs, all you need is which ever\r
+mode you want from MODES.INC and also the procedure SETMODE.\r
+\r
+Just\r
+\r
+MOV SI, OFFSET *MODE*    ; Where mode is the mode from MODES.INC\r
+CALL SETMODE\r
+\r
+If you want the unchained modes, you also need a bit of code from the\r
+SETVIDEOMODE procedure in MAIN.ASM.\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+I have also included some source for clearing the screen and plotting pixels.\r
+If you notice that since all of the chained modes use the same memory\r
+structure the same code can be used to program all with only a few\r
+modifications.  This also goes for the planar modes 10h, 12h, Mode C, etc.\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
diff --git a/16/tauron/WHATSNEW.TXT b/16/tauron/WHATSNEW.TXT
new file mode 100755 (executable)
index 0000000..72ab292
--- /dev/null
@@ -0,0 +1,32 @@
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=-                                                                         -=\r
+=-                   Tauron VGA Utilities Version 3.0                      -=\r
+=-                      Released September 20, 1998                        -=\r
+=-                                                                         -=\r
+=-                      What new with this release???                      -=\r
+=-                                                                         -=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+=- All Rights Reserved.                     =-= that you put my name some- -=\r
+=-                                          =-= where in your credits.     -=\r
+=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=- I assume no responsibility whatsoever for any effect that this package, -=\r
+=- the information contained therein or the use thereof has on you, your   -=\r
+=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+=- you or your existance. No warranty is provided nor implied with this    -=\r
+=- source code.                                                            -=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+   I added 2 new text modes, 40x43 and 40x50.\r
+\r
+   There is now a dual font test.  What this does is load 2 fonts into VGA\r
+   memory and display text from both fonts on the screen at the same time.\r
+   This is possible by reprogramming the charcter map select register.  You\r
+   can have up to 8 fonts present in memory at any time but can only use 2\r
+   at a time.\r
+\r
+   I was trying to add some more high-res video modes but so far they don't\r
+   quite work.  I'm shooting for 720x200 first just to see if I can make it\r
+   work.\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
diff --git a/16/tauron/tauron30.zip b/16/tauron/tauron30.zip
new file mode 100755 (executable)
index 0000000..05e65c0
Binary files /dev/null and b/16/tauron/tauron30.zip differ
diff --git a/16/tauron30/ASM_SRC/CLEAR.ASM b/16/tauron30/ASM_SRC/CLEAR.ASM
new file mode 100755 (executable)
index 0000000..f7b4bbe
--- /dev/null
@@ -0,0 +1,241 @@
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=-                                                                         -=\r
+;=-                   Tauron VGA Utilities Version 3.0                      -=\r
+;=-                      Released September 20, 1998                        -=\r
+;=-                                                                         -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+;=- All Rights Reserved.                     =-= that you put my name some- -=\r
+;=-                                          =-= where in your credits.     -=\r
+;=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- I assume no responsibility whatsoever for any effect that this package, -=\r
+;=- the information contained therein or the use thereof has on you, your   -=\r
+;=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+;=- you or your existance. No warranty is provided nor implied with this    -=\r
+;=- source code.                                                            -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+TEXTCLEAR PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+\r
+   MOV AX,0B800H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV AH,byte ptr [bp+4]\r
+   MOV AL,' '\r
+   MOV CX,Mode.width_bytes\r
+   CLD\r
+   REP STOSW\r
+\r
+   POP BP\r
+   RET 2\r
+TEXTCLEAR ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+CLEAR_B8000H PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+   PUSHA\r
+\r
+   MOV AX,0B800H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV AX,WORD PTR [BP+4]\r
+   CLD\r
+   MOV CX,Mode.width_bytes\r
+   REP STOSW\r
+\r
+   POPA\r
+   POP BP\r
+   RET 2\r
+CLEAR_B8000H ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+; Mode 0Dh clear screen\r
+CLEAR0DH PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+\r
+   MOV AX,0A000H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV CX,2000H\r
+CLEAR_LOOP:\r
+   MOV DX,03CEH\r
+   MOV AX,0FF08H\r
+   OUT DX,AX\r
+\r
+   MOV EAX,0\r
+   XCHG DWORD PTR ES:[DI],EAX\r
+\r
+   MOV DX,03C4H\r
+   MOV AH,BYTE PTR [BP+4]\r
+   MOV AL,2\r
+   OUT DX,AX\r
+\r
+   MOV DWORD PTR ES:[DI],0FFFFFFFFH\r
+\r
+   MOV AX,0F02H\r
+   OUT DX,AX\r
+\r
+   MOV DX,03CEH\r
+   MOV AX,0FF08h\r
+   OUT DX,AX\r
+\r
+   ADD DI,4\r
+   LOOP CLEAR_LOOP\r
+\r
+   POP BP\r
+   RET 2\r
+CLEAR0DH ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+; Mode 0Eh clear screen\r
+CLEAR0EH PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+\r
+   MOV AX,0A000H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV CX,4000H\r
+CLEAR_LOOP2:\r
+   MOV DX,03CEH\r
+   MOV AX,0FF08H\r
+   OUT DX,AX\r
+\r
+   MOV EAX,0\r
+   XCHG DWORD PTR ES:[DI],EAX\r
+\r
+   MOV DX,03C4H\r
+   MOV AH,BYTE PTR [BP+4]\r
+   MOV AL,2\r
+   OUT DX,AX\r
+\r
+   MOV DWORD PTR ES:[DI],0FFFFFFFFH\r
+\r
+   MOV AX,0F02H\r
+   OUT DX,AX\r
+\r
+   MOV DX,03CEH\r
+   MOV AX,0FF08h\r
+   OUT DX,AX\r
+\r
+   ADD DI,4\r
+   LOOP CLEAR_LOOP2\r
+\r
+   POP BP\r
+   RET 2\r
+CLEAR0EH ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+CLEAR11H PROC\r
+   MOV AX,0A000H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV AX,0FFFFH\r
+   CLD\r
+   MOV CX,4B00H\r
+   REP STOSW\r
+   RET\r
+CLEAR11H ENDP\r
+\r
+; 0d 0e 11 have bytes /2\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+PLANARCLEAR PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+\r
+   MOV AX,0A000H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV CX,Mode.width_bytes\r
+   SHR CX,1\r
+CLEAR_LOOP3:\r
+\r
+   MOV DX,03CEH\r
+   MOV AX,0FF08H\r
+   OUT DX,AX\r
+\r
+   MOV AX,0\r
+   XCHG WORD PTR ES:[DI],AX\r
+\r
+   MOV DX,03C4H\r
+   MOV AH,byte ptr [bp+4]\r
+   MOV AL,2\r
+   OUT DX,AX\r
+\r
+   MOV WORD PTR ES:[DI],0FFFFH\r
+\r
+   MOV AX,0F02H\r
+   OUT DX,AX\r
+\r
+   MOV DX,03CEH\r
+   MOV AX,0FF08h\r
+   OUT DX,AX\r
+\r
+   ADD DI,2\r
+   LOOP CLEAR_LOOP3\r
+\r
+   POP BP\r
+   RET 2\r
+PLANARCLEAR ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+CLEAR13H PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+\r
+   MOV AX,0A000H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV AL,byte ptr [bp+4]\r
+   MOV AH,AL\r
+   CLD\r
+   MOV CX,8000H\r
+   REP STOSW\r
+\r
+   POP BP\r
+   RET 2\r
+CLEAR13H ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+UNCHAINEDCLEAR PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+\r
+   mov   dx, 03C4h         ; 03c4h\r
+   mov   al, 2             ; Map Mask Register\r
+   out   dx, al\r
+   inc   dx\r
+   mov   al,00001111B      ; Select all planes to write to\r
+   out   dx, al            ; Doing this to clear all planes at once\r
+\r
+   mov   ax,0A000H\r
+   mov   es, ax\r
+   XOR DI,DI               ; set es:di = Screen Mem\r
+   mov ah,byte ptr [bp+4]  ; move the color into ah\r
+   mov al,ah               ; copy the value to al\r
+   mov cx,Mode.width_bytes ; Number of words\r
+   SHR CX,1\r
+   cld\r
+   rep   stosw             ; clear it\r
+\r
+   POP BP\r
+   RET 2\r
+UNCHAINEDCLEAR ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
diff --git a/16/tauron30/ASM_SRC/DUAL.ASM b/16/tauron30/ASM_SRC/DUAL.ASM
new file mode 100755 (executable)
index 0000000..0ee3105
--- /dev/null
@@ -0,0 +1,275 @@
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=-                                                                         -=\r
+;=-                   Tauron VGA Utilities Version 3.0                      -=\r
+;=-                      Released September 20, 1998                        -=\r
+;=-                                                                         -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+;=- All Rights Reserved.                     =-= that you put my name some- -=\r
+;=-                                          =-= where in your credits.     -=\r
+;=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- I assume no responsibility whatsoever for any effect that this package, -=\r
+;=- the information contained therein or the use thereof has on you, your   -=\r
+;=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+;=- you or your existance. No warranty is provided nor implied with this    -=\r
+;=- source code.                                                            -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+; 3C4H, 03H\r
+; Bit positions for font maps:\r
+;\r
+; +--7--+--6--+--5--+--4--+--3--+--2--+--1--+--0--+\r
+; |     |     | SAH | SBH |    SA     |    SB     |\r
+; +-----+-----+-----+-----+-----+-----+-----+-----+\r
+;\r
+; SA  - bits 1, 0 of Character Map A\r
+; SAH - bit 2 (high order) of Charcter Map A\r
+;\r
+; SB  - bits 1, 0 of Character Map B\r
+; SBH - bit 2 (high order) of Charcter Map B\r
+;\r
+\r
+; Points to fonts for Map A              Memory Address\r
+DFM_MAPA_FONT1     EQU     00H          ;  0K\r
+DFM_MAPA_FONT2     EQU     04H          ; 16K\r
+DFM_MAPA_FONT3     EQU     08H          ; 32K\r
+DFM_MAPA_FONT4     EQU     0CH          ; 48K\r
+DFM_MAPA_FONT5     EQU     20H          ;  8K\r
+DFM_MAPA_FONT6     EQU     24H          ; 24K\r
+DFM_MAPA_FONT7     EQU     28H          ; 40K\r
+DFM_MAPA_FONT8     EQU     2CH          ; 56K\r
+\r
+; Points to fonts for Map B\r
+DFM_MAPB_FONT1     EQU     00H          ;  0K\r
+DFM_MAPB_FONT2     EQU     01H          ; 16K\r
+DFM_MAPB_FONT3     EQU     02H          ; 32K\r
+DFM_MAPB_FONT4     EQU     03H          ; 48K\r
+DFM_MAPB_FONT5     EQU     10H          ;  8K\r
+DFM_MAPB_FONT6     EQU     11H          ; 24K\r
+DFM_MAPB_FONT7     EQU     12H          ; 40K\r
+DFM_MAPB_FONT8     EQU     13H          ; 56K\r
+\r
+\r
+; To set dual font mode, just set the character map select register to point\r
+; to 2 different fonts.  There can be up to 8 fonts resident in memory at\r
+; once but only 2 can be active at a time.\r
+;\r
+; ** NOTE ** If you set both font maps the same you are no longer in dual font\r
+; mode.  But what this allows you to do is to put up to 8 fonts in VGA memory\r
+; and switch between them at any time.\r
+;\r
+; Both fonts were made with my font editor.  I just read the BIOS and \r
+; modified the second font so a solid line goes through the middle of it.\r
+;\r
+; This procedure sets up dual font mode and loads 2 fonts into video memory.\r
+SETDUAL PROC\r
+\r
+   ; Sequencer address\r
+   MOV DX,SEQ_ADDR\r
+\r
+   ; 2 different font maps\r
+   MOV AH,DFM_MAPA_FONT1\r
+   OR AH,DFM_MAPB_FONT5\r
+\r
+   ; Sequencer register\r
+   MOV AL,03H\r
+\r
+   ; Send it\r
+   OUT DX,AX\r
+\r
+   ; Load font 1 into 0K\r
+   PUSH 16                 ; Bytes per character\r
+   PUSH 0                  ; Offset of font in Video Memory\r
+   PUSH 0A000H\r
+   PUSH OFFSET FONT1       ; Offset of Font in our Data Segment\r
+   PUSH DS\r
+   CALL LOADFONT\r
+\r
+   ; Load font 2 into 8K\r
+   PUSH 16                 ; Bytes per character\r
+   PUSH 0                  ; Offset of font in Video Memory\r
+   PUSH 0A200H\r
+   PUSH OFFSET FONT2       ; Offset of Font in our Data Segment\r
+   PUSH DS\r
+   CALL LOADFONT\r
+\r
+   RET\r
+SETDUAL ENDP\r
+\r
+; This procedure reset the character map select register to point to only\r
+; one font.\r
+UNSETDUAL PROC\r
+\r
+   ; Set both fonts to point to font 1\r
+   MOV DX,SEQ_ADDR\r
+   MOV AX,0003H\r
+   OUT DX,AX\r
+\r
+   RET\r
+UNSETDUAL ENDP\r
+\r
+; In dual font modes, the palette is in effect half of what it is.  The \r
+; bottom 8 colors for the first font, and the top 8 colors for the second \r
+; font.\r
+;\r
+; What I do here is to set them to the same 8 colors.\r
+; Black, Blue, Green, Red, Purple, Yellow, Light Gray, and White\r
+;\r
+SETDUALPALETTE PROC\r
+\r
+   PUSH 0\r
+   PUSH 0\r
+   PUSH 0\r
+   PUSH 0\r
+   CALL SETPAL\r
+\r
+   PUSH 42\r
+   PUSH 0\r
+   PUSH 0\r
+   PUSH 1\r
+   CALL SETPAL\r
+\r
+   PUSH 0\r
+   PUSH 42\r
+   PUSH 0\r
+   PUSH 2\r
+   CALL SETPAL\r
+\r
+   PUSH 42\r
+   PUSH 42\r
+   PUSH 0\r
+   PUSH 3\r
+   CALL SETPAL\r
+\r
+   PUSH 0\r
+   PUSH 0\r
+   PUSH 42\r
+   PUSH 4\r
+   CALL SETPAL\r
+\r
+   PUSH 21\r
+   PUSH 63\r
+   PUSH 63\r
+   PUSH 5\r
+   CALL SETPAL\r
+\r
+   PUSH 42\r
+   PUSH 42\r
+   PUSH 42\r
+   PUSH 6\r
+   CALL SETPAL\r
+\r
+   PUSH 63\r
+   PUSH 63\r
+   PUSH 63\r
+   PUSH 7\r
+   CALL SETPAL\r
+\r
+   PUSH 0\r
+   PUSH 0\r
+   PUSH 0\r
+   PUSH 8\r
+   CALL SETPAL\r
+\r
+   PUSH 42\r
+   PUSH 0\r
+   PUSH 0\r
+   PUSH 9\r
+   CALL SETPAL\r
+\r
+   PUSH 0\r
+   PUSH 42\r
+   PUSH 0\r
+   PUSH 10\r
+   CALL SETPAL\r
+\r
+   PUSH 42\r
+   PUSH 42\r
+   PUSH 0\r
+   PUSH 11\r
+   CALL SETPAL\r
+\r
+   PUSH 0\r
+   PUSH 0\r
+   PUSH 42\r
+   PUSH 12\r
+   CALL SETPAL\r
+\r
+   PUSH 21\r
+   PUSH 63\r
+   PUSH 63\r
+   PUSH 13\r
+   CALL SETPAL\r
+\r
+   PUSH 42\r
+   PUSH 42\r
+   PUSH 42\r
+   PUSH 14\r
+   CALL SETPAL\r
+\r
+   PUSH 63\r
+   PUSH 63\r
+   PUSH 63\r
+   PUSH 15\r
+   CALL SETPAL\r
+\r
+   RET\r
+SETDUALPALETTE ENDP\r
+\r
+DUALTEST PROC\r
+\r
+   MOV SI,OFFSET MODE03H\r
+   CALL SETMODE\r
+\r
+   CALL SETDUAL\r
+   CALL SETDUALPALETTE\r
+\r
+   PUSH 1FH        \r
+   CALL TEXTCLEAR\r
+\r
+   ; Attribute to print text in.\r
+   ;\r
+   ; In dual font mode, attrubute bit 3 is the deciding factor as to which\r
+   ; font is printed.  0001X111B where X is 0 for font 1 or 1 for font 2.\r
+   ; The Charcter Map Select Register determines where font 1 and font 2\r
+   ; reside.\r
+   ; 00011111B - Font 2, Blue Background, with color 7 text.\r
+   MOV ATT, 1Fh    \r
+\r
+   MOV BX,5\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_D\r
+   CALL PRINTSTRING\r
+   MOV BX,6\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_E\r
+   CALL PRINTSTRING\r
+   MOV BX,7\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_F\r
+   CALL PRINTSTRING\r
+\r
+   ; 00010111B - Font 1, Blue Background, with color 7 text.\r
+   MOV ATT, 17h\r
+\r
+   MOV BX,0\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_D\r
+   CALL PRINTSTRING\r
+   MOV BX,1\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_E\r
+   CALL PRINTSTRING\r
+   MOV BX,2\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_F\r
+   CALL PRINTSTRING\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+\r
+   CALL UNSETDUAL\r
+   RET\r
+DUALTEST ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
diff --git a/16/tauron30/ASM_SRC/FONT1.ASM b/16/tauron30/ASM_SRC/FONT1.ASM
new file mode 100755 (executable)
index 0000000..772d612
--- /dev/null
@@ -0,0 +1,266 @@
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- Created with FEDIT written by Kinfira (Jeffrey Morgan)                  -=\r
+;=-                                                                         -=\r
+;=-                   Tauron VGA Utilities Version 1.0                      -=\r
+;=-                        Released June 14, 1998                           -=\r
+;=-                                                                         -=\r
+;=- Font Width:  8                                                          -=\r
+;=- Font Height: 16                                                         -=\r
+;=- Bytes per character:  16                                                -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,07EH,081H,0A5H,081H,081H,0BDH,099H,081H,081H,07EH,000H,000H,000H,000H\r
+DB 000H,000H,07EH,0FFH,0DBH,0FFH,0FFH,0C3H,0E7H,0FFH,0FFH,07EH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,06CH,0FEH,0FEH,0FEH,0FEH,07CH,038H,010H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,010H,038H,07CH,0FEH,07CH,038H,010H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,018H,03CH,03CH,0E7H,0E7H,0E7H,099H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,018H,03CH,07EH,0FFH,0FFH,07EH,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,018H,03CH,03CH,018H,000H,000H,000H,000H,000H,000H\r
+DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0E7H,0C3H,0C3H,0E7H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH\r
+DB 000H,000H,000H,000H,000H,03CH,066H,042H,042H,066H,03CH,000H,000H,000H,000H,000H\r
+DB 0FFH,0FFH,0FFH,0FFH,0FFH,0C3H,099H,0BDH,0BDH,099H,0C3H,0FFH,0FFH,0FFH,0FFH,0FFH\r
+DB 000H,000H,01EH,00EH,01AH,032H,078H,0CCH,0CCH,0CCH,0CCH,078H,000H,000H,000H,000H\r
+DB 000H,000H,03CH,066H,066H,066H,066H,03CH,018H,07EH,018H,018H,000H,000H,000H,000H\r
+DB 000H,000H,03FH,033H,03FH,030H,030H,030H,030H,070H,0F0H,0E0H,000H,000H,000H,000H\r
+DB 000H,000H,07FH,063H,07FH,063H,063H,063H,063H,067H,0E7H,0E6H,0C0H,000H,000H,000H\r
+DB 000H,000H,000H,018H,018H,0DBH,03CH,0E7H,03CH,0DBH,018H,018H,000H,000H,000H,000H\r
+DB 000H,080H,0C0H,0E0H,0F0H,0F8H,0FEH,0F8H,0F0H,0E0H,0C0H,080H,000H,000H,000H,000H\r
+DB 000H,002H,006H,00EH,01EH,03EH,0FEH,03EH,01EH,00EH,006H,002H,000H,000H,000H,000H\r
+DB 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,07EH,03CH,018H,000H,000H,000H,000H\r
+DB 000H,000H,066H,066H,066H,066H,066H,066H,066H,000H,066H,066H,000H,000H,000H,000H\r
+DB 000H,000H,07FH,0DBH,0DBH,0DBH,07BH,01BH,01BH,01BH,01BH,01BH,000H,000H,000H,000H\r
+DB 000H,07CH,0C6H,060H,038H,06CH,0C6H,0C6H,06CH,038H,00CH,0C6H,07CH,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,0FEH,0FEH,0FEH,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,07EH,03CH,018H,07EH,000H,000H,000H\r
+DB 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,018H,018H,018H,000H,000H,000H,000H\r
+DB 000H,000H,018H,018H,018H,018H,018H,018H,018H,07EH,03CH,018H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,018H,00CH,0FEH,00CH,018H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,030H,060H,0FEH,060H,030H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0C0H,0C0H,0C0H,0C0H,0FEH,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,028H,06CH,0FEH,06CH,028H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,010H,038H,038H,07CH,07CH,0FEH,0FEH,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,0FEH,0FEH,07CH,07CH,038H,038H,010H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,018H,03CH,03CH,03CH,018H,018H,018H,000H,018H,018H,000H,000H,000H,000H\r
+DB 000H,066H,066H,066H,024H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,06CH,06CH,0FEH,06CH,06CH,06CH,0FEH,06CH,06CH,000H,000H,000H,000H\r
+DB 018H,018H,07CH,0C6H,0C2H,0C0H,07CH,006H,086H,0C6H,07CH,018H,018H,000H,000H,000H\r
+DB 000H,000H,000H,000H,0C2H,0C6H,00CH,018H,030H,060H,0C6H,086H,000H,000H,000H,000H\r
+DB 000H,000H,038H,06CH,06CH,038H,076H,0DCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,030H,030H,030H,060H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,00CH,018H,030H,030H,030H,030H,030H,030H,018H,00CH,000H,000H,000H,000H\r
+DB 000H,000H,030H,018H,00CH,00CH,00CH,00CH,00CH,00CH,018H,030H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,066H,03CH,0FFH,03CH,066H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,018H,018H,07EH,018H,018H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,018H,018H,018H,030H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FEH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,018H,018H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,002H,006H,00CH,018H,030H,060H,0C0H,080H,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,0C6H,0CEH,0D6H,0D6H,0E6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,018H,038H,078H,018H,018H,018H,018H,018H,018H,07EH,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,006H,00CH,018H,030H,060H,0C0H,0C6H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,006H,006H,03CH,006H,006H,006H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,00CH,01CH,03CH,06CH,0CCH,0FEH,00CH,00CH,00CH,01EH,000H,000H,000H,000H\r
+DB 000H,000H,0FEH,0C0H,0C0H,0C0H,0FCH,00EH,006H,006H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,038H,060H,0C0H,0C0H,0FCH,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,0FEH,0C6H,006H,006H,00CH,018H,030H,030H,030H,030H,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,0C6H,0C6H,07CH,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,0C6H,0C6H,07EH,006H,006H,006H,00CH,078H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,018H,018H,000H,000H,000H,018H,018H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,018H,018H,000H,000H,000H,018H,018H,030H,000H,000H,000H,000H\r
+DB 000H,000H,000H,006H,00CH,018H,030H,060H,030H,018H,00CH,006H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,0FEH,000H,000H,0FEH,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,060H,030H,018H,00CH,006H,00CH,018H,030H,060H,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,0C6H,00CH,018H,018H,018H,000H,018H,018H,000H,000H,000H,000H\r
+DB 000H,000H,000H,07CH,0C6H,0C6H,0DEH,0DEH,0DEH,0DCH,0C0H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,010H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,0FCH,066H,066H,066H,07CH,066H,066H,066H,066H,0FCH,000H,000H,000H,000H\r
+DB 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0C0H,0C0H,0C2H,066H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,0F8H,06CH,066H,066H,066H,066H,066H,066H,06CH,0F8H,000H,000H,000H,000H\r
+DB 000H,000H,0FEH,066H,062H,068H,078H,068H,060H,062H,066H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,0FEH,066H,062H,068H,078H,068H,060H,060H,060H,0F0H,000H,000H,000H,000H\r
+DB 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0DEH,0C6H,0C6H,066H,03AH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,03CH,018H,018H,018H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,01EH,00CH,00CH,00CH,00CH,00CH,0CCH,0CCH,0CCH,078H,000H,000H,000H,000H\r
+DB 000H,000H,0E6H,066H,06CH,06CH,078H,078H,06CH,066H,066H,0E6H,000H,000H,000H,000H\r
+DB 000H,000H,0F0H,060H,060H,060H,060H,060H,060H,062H,066H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0EEH,0FEH,0FEH,0D6H,0C6H,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0E6H,0F6H,0FEH,0DEH,0CEH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,038H,06CH,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,06CH,038H,000H,000H,000H,000H\r
+DB 000H,000H,0FCH,066H,066H,066H,07CH,060H,060H,060H,060H,0F0H,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0D6H,0DEH,07CH,00CH,00EH,000H,000H\r
+DB 000H,000H,0FCH,066H,066H,066H,07CH,06CH,066H,066H,066H,0E6H,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,0C6H,060H,038H,00CH,006H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,07EH,07EH,05AH,018H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,06CH,038H,010H,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0D6H,0D6H,0FEH,06CH,06CH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,06CH,06CH,038H,038H,06CH,06CH,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,066H,066H,066H,066H,03CH,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,0FEH,0C6H,086H,00CH,018H,030H,060H,0C2H,0C6H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,03CH,030H,030H,030H,030H,030H,030H,030H,030H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,080H,0C0H,0E0H,070H,038H,01CH,00EH,006H,002H,000H,000H,000H,000H\r
+DB 000H,000H,03CH,00CH,00CH,00CH,00CH,00CH,00CH,00CH,00CH,03CH,000H,000H,000H,000H\r
+DB 010H,038H,06CH,0C6H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,0FFH,000H,000H\r
+DB 030H,030H,018H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,0E0H,060H,060H,078H,06CH,066H,066H,066H,066H,0DCH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,07CH,0C6H,0C0H,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,01CH,00CH,00CH,03CH,06CH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,038H,06CH,064H,060H,0F0H,060H,060H,060H,060H,0F0H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,076H,0CCH,0CCH,0CCH,0CCH,0CCH,07CH,00CH,0CCH,078H,000H\r
+DB 000H,000H,0E0H,060H,060H,06CH,076H,066H,066H,066H,066H,0E6H,000H,000H,000H,000H\r
+DB 000H,000H,018H,018H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,006H,006H,000H,00EH,006H,006H,006H,006H,006H,006H,066H,066H,03CH,000H\r
+DB 000H,000H,0E0H,060H,060H,066H,06CH,078H,078H,06CH,066H,0E6H,000H,000H,000H,000H\r
+DB 000H,000H,038H,018H,018H,018H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0ECH,0FEH,0D6H,0D6H,0D6H,0D6H,0D6H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0DCH,066H,066H,066H,066H,066H,066H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0DCH,066H,066H,066H,066H,066H,07CH,060H,060H,0F0H,000H\r
+DB 000H,000H,000H,000H,000H,076H,0CCH,0CCH,0CCH,0CCH,0CCH,07CH,00CH,00CH,01EH,000H\r
+DB 000H,000H,000H,000H,000H,0DCH,076H,062H,060H,060H,060H,0F0H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,07CH,0C6H,060H,038H,00CH,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,010H,030H,030H,0FCH,030H,030H,030H,030H,036H,01CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,066H,066H,066H,066H,066H,03CH,018H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0C6H,0C6H,0C6H,0D6H,0D6H,0FEH,06CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0C6H,06CH,038H,038H,038H,06CH,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07EH,006H,00CH,0F8H,000H\r
+DB 000H,000H,000H,000H,000H,0FEH,0CCH,018H,030H,060H,0C6H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,00EH,018H,018H,018H,070H,018H,018H,018H,018H,00EH,000H,000H,000H,000H\r
+DB 000H,000H,018H,018H,018H,018H,000H,018H,018H,018H,018H,018H,000H,000H,000H,000H\r
+DB 000H,000H,070H,018H,018H,018H,00EH,018H,018H,018H,018H,070H,000H,000H,000H,000H\r
+DB 000H,000H,076H,0DCH,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,010H,038H,06CH,0C6H,0C6H,0C6H,0FEH,000H,000H,000H,000H,000H\r
+DB 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0C0H,0C2H,066H,03CH,00CH,006H,07CH,000H,000H\r
+DB 000H,000H,0CCH,0CCH,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,00CH,018H,030H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,010H,038H,06CH,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,0CCH,0CCH,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,060H,030H,018H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,038H,06CH,038H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,03CH,066H,060H,060H,066H,03CH,00CH,006H,03CH,000H,000H,000H\r
+DB 000H,010H,038H,06CH,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,060H,030H,018H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,066H,066H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,018H,03CH,066H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,060H,030H,018H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,0C6H,0C6H,010H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 038H,06CH,038H,000H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 018H,030H,060H,000H,0FEH,066H,060H,07CH,060H,060H,066H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0CCH,076H,036H,07EH,0D8H,0D8H,06EH,000H,000H,000H,000H\r
+DB 000H,000H,03EH,06CH,0CCH,0CCH,0FEH,0CCH,0CCH,0CCH,0CCH,0CEH,000H,000H,000H,000H\r
+DB 000H,010H,038H,06CH,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,060H,030H,018H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,030H,078H,0CCH,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,060H,030H,018H,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07EH,006H,00CH,078H,000H\r
+DB 000H,0C6H,0C6H,000H,038H,06CH,0C6H,0C6H,0C6H,0C6H,06CH,038H,000H,000H,000H,000H\r
+DB 000H,0C6H,0C6H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,018H,018H,03CH,066H,060H,060H,060H,066H,03CH,018H,018H,000H,000H,000H,000H\r
+DB 000H,038H,06CH,064H,060H,0F0H,060H,060H,060H,060H,0E6H,0FCH,000H,000H,000H,000H\r
+DB 000H,000H,066H,066H,03CH,018H,07EH,018H,07EH,018H,018H,018H,000H,000H,000H,000H\r
+DB 000H,0F8H,0CCH,0CCH,0F8H,0C4H,0CCH,0DEH,0CCH,0CCH,0CCH,0C6H,000H,000H,000H,000H\r
+DB 000H,00EH,01BH,018H,018H,018H,07EH,018H,018H,018H,018H,018H,0D8H,070H,000H,000H\r
+DB 000H,018H,030H,060H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,00CH,018H,030H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,018H,030H,060H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,018H,030H,060H,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,076H,0DCH,000H,0DCH,066H,066H,066H,066H,066H,066H,000H,000H,000H,000H\r
+DB 076H,0DCH,000H,0C6H,0E6H,0F6H,0FEH,0DEH,0CEH,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,03CH,06CH,06CH,03EH,000H,07EH,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,038H,06CH,06CH,038H,000H,07CH,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,030H,030H,000H,030H,030H,060H,0C0H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,0FEH,0C0H,0C0H,0C0H,0C0H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,0FEH,006H,006H,006H,006H,000H,000H,000H,000H,000H\r
+DB 000H,0C0H,0C0H,0C2H,0C6H,0CCH,018H,030H,060H,0CEH,093H,006H,00CH,01FH,000H,000H\r
+DB 000H,0C0H,0C0H,0C2H,0C6H,0CCH,018H,030H,066H,0CEH,09AH,03FH,006H,00FH,000H,000H\r
+DB 000H,000H,018H,018H,000H,018H,018H,018H,03CH,03CH,03CH,018H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,033H,066H,0CCH,066H,033H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0CCH,066H,033H,066H,0CCH,000H,000H,000H,000H,000H,000H\r
+DB 011H,044H,011H,044H,011H,044H,011H,044H,011H,044H,011H,044H,011H,044H,011H,044H\r
+DB 055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH\r
+DB 0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H\r
+DB 018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,018H,018H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,0F8H,018H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 036H,036H,036H,036H,036H,036H,036H,0F6H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FEH,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 000H,000H,000H,000H,000H,0F8H,018H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 036H,036H,036H,036H,036H,0F6H,006H,0F6H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 000H,000H,000H,000H,000H,0FEH,006H,0F6H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,0F6H,006H,0FEH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 036H,036H,036H,036H,036H,036H,036H,0FEH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 018H,018H,018H,018H,018H,0F8H,018H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,018H,018H,01FH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 018H,018H,018H,018H,018H,018H,018H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,018H,018H,01FH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 018H,018H,018H,018H,018H,018H,018H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,01FH,018H,01FH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 036H,036H,036H,036H,036H,036H,036H,037H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,037H,030H,03FH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,03FH,030H,037H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,0F7H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0FFH,000H,0F7H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,037H,030H,037H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 000H,000H,000H,000H,000H,0FFH,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 036H,036H,036H,036H,036H,0F7H,000H,0F7H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 018H,018H,018H,018H,018H,0FFH,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 036H,036H,036H,036H,036H,036H,036H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0FFH,000H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FFH,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,036H,036H,03FH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 018H,018H,018H,018H,018H,01FH,018H,01FH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,01FH,018H,01FH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 000H,000H,000H,000H,000H,000H,000H,03FH,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,036H,036H,0FFH,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 018H,018H,018H,018H,018H,0FFH,018H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,018H,018H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,01FH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH\r
+DB 0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H\r
+DB 00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH\r
+DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,076H,0DCH,0D8H,0D8H,0D8H,0DCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0FCH,0C6H,0FCH,0C6H,0C6H,0FCH,0C0H,0C0H,0C0H,000H,000H\r
+DB 000H,000H,0FEH,0C6H,0C6H,0C0H,0C0H,0C0H,0C0H,0C0H,0C0H,0C0H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,080H,0FEH,06CH,06CH,06CH,06CH,06CH,06CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,0FEH,0C6H,060H,030H,018H,030H,060H,0C6H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,07EH,0D8H,0D8H,0D8H,0D8H,0D8H,070H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,066H,066H,066H,066H,066H,07CH,060H,060H,0C0H,000H,000H,000H\r
+DB 000H,000H,000H,000H,076H,0DCH,018H,018H,018H,018H,018H,018H,000H,000H,000H,000H\r
+DB 000H,000H,000H,07EH,018H,03CH,066H,066H,066H,03CH,018H,07EH,000H,000H,000H,000H\r
+DB 000H,000H,000H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,06CH,038H,000H,000H,000H,000H\r
+DB 000H,000H,038H,06CH,0C6H,0C6H,0C6H,06CH,06CH,06CH,06CH,0EEH,000H,000H,000H,000H\r
+DB 000H,000H,01EH,030H,018H,00CH,03EH,066H,066H,066H,066H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,07EH,0DBH,0DBH,0DBH,07EH,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,003H,006H,07EH,0CFH,0DBH,0F3H,07EH,060H,0C0H,000H,000H,000H,000H\r
+DB 000H,000H,01CH,030H,060H,060H,07CH,060H,060H,060H,030H,01CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,0FEH,000H,000H,0FEH,000H,000H,0FEH,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,018H,018H,07EH,018H,018H,000H,000H,0FFH,000H,000H,000H,000H\r
+DB 000H,000H,000H,030H,018H,00CH,006H,00CH,018H,030H,000H,07EH,000H,000H,000H,000H\r
+DB 000H,000H,000H,00CH,018H,030H,060H,030H,018H,00CH,000H,07EH,000H,000H,000H,000H\r
+DB 000H,000H,00EH,01BH,01BH,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,018H,018H,018H,0D8H,0D8H,0D8H,070H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,018H,018H,000H,07EH,000H,018H,018H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,076H,0DCH,000H,076H,0DCH,000H,000H,000H,000H,000H,000H\r
+DB 000H,038H,06CH,06CH,038H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,018H,018H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,018H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,00FH,00CH,00CH,00CH,00CH,00CH,0ECH,06CH,06CH,03CH,01CH,000H,000H,000H,000H\r
+DB 000H,0D8H,06CH,06CH,06CH,06CH,06CH,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,070H,098H,030H,060H,0C8H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,07CH,07CH,07CH,07CH,07CH,07CH,07CH,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
diff --git a/16/tauron30/ASM_SRC/FONT2.ASM b/16/tauron30/ASM_SRC/FONT2.ASM
new file mode 100755 (executable)
index 0000000..9c84bf9
--- /dev/null
@@ -0,0 +1,266 @@
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- Created with FEDIT written by Kinfira (Jeffrey Morgan)                  -=\r
+;=-                                                                         -=\r
+;=-                   Tauron VGA Utilities Version 1.0                      -=\r
+;=-                        Released June 14, 1998                           -=\r
+;=-                                                                         -=\r
+;=- Font Width:  8                                                          -=\r
+;=- Font Height: 16                                                         -=\r
+;=- Bytes per character:  16                                                -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,07EH,081H,0A5H,081H,081H,0BDH,099H,081H,081H,07EH,000H,000H,000H,000H\r
+DB 000H,000H,07EH,0FFH,0DBH,0FFH,0FFH,0C3H,0E7H,0FFH,0FFH,07EH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,06CH,0FEH,0FEH,0FEH,0FEH,07CH,038H,010H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,010H,038H,07CH,0FEH,07CH,038H,010H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,018H,03CH,03CH,0E7H,0E7H,0E7H,099H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,018H,03CH,07EH,0FFH,0FFH,07EH,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,018H,03CH,03CH,018H,000H,000H,000H,000H,000H,000H\r
+DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0E7H,0C3H,0C3H,0E7H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH\r
+DB 000H,000H,000H,000H,000H,03CH,066H,042H,042H,066H,03CH,000H,000H,000H,000H,000H\r
+DB 0FFH,0FFH,0FFH,0FFH,0FFH,0C3H,099H,0BDH,0BDH,099H,0C3H,0FFH,0FFH,0FFH,0FFH,0FFH\r
+DB 000H,000H,01EH,00EH,01AH,032H,078H,0CCH,0CCH,0CCH,0CCH,078H,000H,000H,000H,000H\r
+DB 000H,000H,03CH,066H,066H,066H,066H,03CH,018H,07EH,018H,018H,000H,000H,000H,000H\r
+DB 000H,000H,03FH,033H,03FH,030H,030H,030H,030H,070H,0F0H,0E0H,000H,000H,000H,000H\r
+DB 000H,000H,07FH,063H,07FH,063H,063H,063H,063H,067H,0E7H,0E6H,0C0H,000H,000H,000H\r
+DB 000H,000H,000H,018H,018H,0DBH,03CH,0E7H,03CH,0DBH,018H,018H,000H,000H,000H,000H\r
+DB 000H,080H,0C0H,0E0H,0F0H,0F8H,0FEH,0F8H,0F0H,0E0H,0C0H,080H,000H,000H,000H,000H\r
+DB 000H,002H,006H,00EH,01EH,03EH,0FEH,03EH,01EH,00EH,006H,002H,000H,000H,000H,000H\r
+DB 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,07EH,03CH,018H,000H,000H,000H,000H\r
+DB 000H,000H,066H,066H,066H,066H,066H,066H,066H,000H,066H,066H,000H,000H,000H,000H\r
+DB 000H,000H,07FH,0DBH,0DBH,0DBH,07BH,01BH,01BH,01BH,01BH,01BH,000H,000H,000H,000H\r
+DB 000H,07CH,0C6H,060H,038H,06CH,0C6H,0C6H,06CH,038H,00CH,0C6H,07CH,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,0FEH,0FEH,0FEH,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,07EH,03CH,018H,07EH,000H,000H,000H\r
+DB 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,018H,018H,018H,000H,000H,000H,000H\r
+DB 000H,000H,018H,018H,018H,018H,018H,018H,018H,07EH,03CH,018H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,018H,00CH,0FEH,00CH,018H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,030H,060H,0FEH,060H,030H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0C0H,0C0H,0C0H,0C0H,0FEH,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,028H,06CH,0FEH,06CH,028H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,010H,038H,038H,07CH,07CH,0FEH,0FEH,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,0FEH,0FEH,07CH,07CH,038H,038H,010H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,018H,03CH,03CH,03CH,018H,018H,018H,000H,018H,018H,000H,000H,000H,000H\r
+DB 000H,066H,066H,066H,024H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,06CH,06CH,0FEH,06CH,06CH,06CH,0FEH,06CH,06CH,000H,000H,000H,000H\r
+DB 018H,018H,07CH,0C6H,0C2H,0C0H,07CH,006H,086H,0C6H,07CH,018H,018H,000H,000H,000H\r
+DB 000H,000H,000H,000H,0C2H,0C6H,00CH,018H,030H,060H,0C6H,086H,000H,000H,000H,000H\r
+DB 000H,000H,038H,06CH,06CH,038H,076H,0DCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,030H,030H,030H,060H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,00CH,018H,030H,030H,030H,030H,030H,030H,018H,00CH,000H,000H,000H,000H\r
+DB 000H,000H,030H,018H,00CH,00CH,00CH,00CH,00CH,00CH,018H,030H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,066H,03CH,0FFH,03CH,066H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,018H,018H,07EH,018H,018H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,018H,018H,018H,030H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FEH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,018H,018H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,002H,006H,00CH,018H,030H,060H,0C0H,080H,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,0C6H,0CEH,0D6H,0D6H,0E6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,018H,038H,078H,018H,018H,018H,018H,018H,018H,07EH,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,006H,00CH,018H,030H,060H,0C0H,0C6H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,006H,006H,03CH,006H,006H,006H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,00CH,01CH,03CH,06CH,0CCH,0FEH,00CH,00CH,00CH,01EH,000H,000H,000H,000H\r
+DB 000H,000H,0FEH,0C0H,0C0H,0C0H,0FCH,00EH,006H,006H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,038H,060H,0C0H,0C0H,0FCH,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,0FEH,0C6H,006H,006H,00CH,018H,030H,030H,030H,030H,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,0C6H,0C6H,07CH,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,0C6H,0C6H,07EH,006H,006H,006H,00CH,078H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,018H,018H,000H,000H,000H,018H,018H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,018H,018H,000H,000H,000H,018H,018H,030H,000H,000H,000H,000H\r
+DB 000H,000H,000H,006H,00CH,018H,030H,060H,030H,018H,00CH,006H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,0FEH,000H,000H,0FEH,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,060H,030H,018H,00CH,006H,00CH,018H,030H,060H,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,0C6H,00CH,018H,018H,018H,000H,018H,018H,000H,000H,000H,000H\r
+DB 000H,000H,000H,07CH,0C6H,0C6H,0DEH,0DEH,0DEH,0DCH,0C0H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,010H,038H,06CH,0C6H,0C6H,0FFH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,0FCH,066H,066H,066H,07CH,0FFH,066H,066H,066H,0FCH,000H,000H,000H,000H\r
+DB 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0FFH,0C0H,0C2H,066H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,0F8H,06CH,066H,066H,066H,0FFH,066H,066H,06CH,0F8H,000H,000H,000H,000H\r
+DB 000H,000H,0FEH,066H,062H,068H,078H,0FFH,060H,062H,066H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,0FEH,066H,062H,068H,078H,0FFH,060H,060H,060H,0F0H,000H,000H,000H,000H\r
+DB 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0FFH,0C6H,0C6H,066H,03AH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0FEH,0FFH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,03CH,018H,018H,018H,018H,0FFH,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,01EH,00CH,00CH,00CH,00CH,0FFH,0CCH,0CCH,0CCH,078H,000H,000H,000H,000H\r
+DB 000H,000H,0E6H,066H,06CH,06CH,078H,0FFH,06CH,066H,066H,0E6H,000H,000H,000H,000H\r
+DB 000H,000H,0F0H,060H,060H,060H,060H,0FFH,060H,062H,066H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0EEH,0FEH,0FEH,0D6H,0FFH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0E6H,0F6H,0FEH,0DEH,0FFH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,038H,06CH,0C6H,0C6H,0C6H,0FFH,0C6H,0C6H,06CH,038H,000H,000H,000H,000H\r
+DB 000H,000H,0FCH,066H,066H,066H,07CH,0FFH,060H,060H,060H,0F0H,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0FFH,0C6H,0D6H,0DEH,07CH,00CH,00EH,000H,000H\r
+DB 000H,000H,0FCH,066H,066H,066H,07CH,0FFH,066H,066H,066H,0E6H,000H,000H,000H,000H\r
+DB 000H,000H,07CH,0C6H,0C6H,060H,038H,0FFH,006H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,07EH,07EH,05AH,018H,018H,0FFH,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0FFH,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0FFH,0C6H,06CH,038H,010H,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0FFH,0D6H,0FEH,06CH,06CH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,06CH,06CH,038H,0FFH,06CH,06CH,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,066H,066H,066H,066H,03CH,0FFH,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,0FEH,0C6H,086H,00CH,018H,0FFH,060H,0C2H,0C6H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,03CH,030H,030H,030H,030H,0FFH,030H,030H,030H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,080H,0C0H,0E0H,070H,0FFH,01CH,00EH,006H,002H,000H,000H,000H,000H\r
+DB 000H,000H,03CH,00CH,00CH,00CH,00CH,0FFH,00CH,00CH,00CH,03CH,000H,000H,000H,000H\r
+DB 010H,038H,06CH,0C6H,000H,000H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FFH,000H,000H,000H,000H,000H,0FFH,000H,000H\r
+DB 030H,030H,018H,000H,000H,000H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,0E0H,060H,060H,078H,06CH,066H,066H,066H,066H,0DCH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,07CH,0C6H,0C0H,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,01CH,00CH,00CH,03CH,06CH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,038H,06CH,064H,060H,0F0H,060H,060H,060H,060H,0F0H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,076H,0CCH,0CCH,0CCH,0CCH,0CCH,07CH,00CH,0CCH,078H,000H\r
+DB 000H,000H,0E0H,060H,060H,06CH,076H,066H,066H,066H,066H,0E6H,000H,000H,000H,000H\r
+DB 000H,000H,018H,018H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,006H,006H,000H,00EH,006H,006H,006H,006H,006H,006H,066H,066H,03CH,000H\r
+DB 000H,000H,0E0H,060H,060H,066H,06CH,078H,078H,06CH,066H,0E6H,000H,000H,000H,000H\r
+DB 000H,000H,038H,018H,018H,018H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0ECH,0FEH,0D6H,0D6H,0D6H,0D6H,0D6H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0DCH,066H,066H,066H,066H,066H,066H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0DCH,066H,066H,066H,066H,066H,07CH,060H,060H,0F0H,000H\r
+DB 000H,000H,000H,000H,000H,076H,0CCH,0CCH,0CCH,0CCH,0CCH,07CH,00CH,00CH,01EH,000H\r
+DB 000H,000H,000H,000H,000H,0DCH,076H,062H,060H,060H,060H,0F0H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,07CH,0C6H,060H,038H,00CH,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,010H,030H,030H,0FCH,030H,030H,030H,030H,036H,01CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,066H,066H,066H,066H,066H,03CH,018H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0C6H,0C6H,0C6H,0D6H,0D6H,0FEH,06CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0C6H,06CH,038H,038H,038H,06CH,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07EH,006H,00CH,0F8H,000H\r
+DB 000H,000H,000H,000H,000H,0FEH,0CCH,018H,030H,060H,0C6H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,00EH,018H,018H,018H,070H,018H,018H,018H,018H,00EH,000H,000H,000H,000H\r
+DB 000H,000H,018H,018H,018H,018H,000H,018H,018H,018H,018H,018H,000H,000H,000H,000H\r
+DB 000H,000H,070H,018H,018H,018H,00EH,018H,018H,018H,018H,070H,000H,000H,000H,000H\r
+DB 000H,000H,076H,0DCH,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,010H,038H,06CH,0C6H,0C6H,0C6H,0FEH,000H,000H,000H,000H,000H\r
+DB 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0C0H,0C2H,066H,03CH,00CH,006H,07CH,000H,000H\r
+DB 000H,000H,0CCH,0CCH,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,00CH,018H,030H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,010H,038H,06CH,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,0CCH,0CCH,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,060H,030H,018H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,038H,06CH,038H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,03CH,066H,060H,060H,066H,03CH,00CH,006H,03CH,000H,000H,000H\r
+DB 000H,010H,038H,06CH,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,060H,030H,018H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,066H,066H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,018H,03CH,066H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,060H,030H,018H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,0C6H,0C6H,010H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 038H,06CH,038H,000H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 018H,030H,060H,000H,0FEH,066H,060H,07CH,060H,060H,066H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0CCH,076H,036H,07EH,0D8H,0D8H,06EH,000H,000H,000H,000H\r
+DB 000H,000H,03EH,06CH,0CCH,0CCH,0FEH,0CCH,0CCH,0CCH,0CCH,0CEH,000H,000H,000H,000H\r
+DB 000H,010H,038H,06CH,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,060H,030H,018H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,030H,078H,0CCH,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,060H,030H,018H,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,0C6H,0C6H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07EH,006H,00CH,078H,000H\r
+DB 000H,0C6H,0C6H,000H,038H,06CH,0C6H,0C6H,0C6H,0C6H,06CH,038H,000H,000H,000H,000H\r
+DB 000H,0C6H,0C6H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,018H,018H,03CH,066H,060H,060H,060H,066H,03CH,018H,018H,000H,000H,000H,000H\r
+DB 000H,038H,06CH,064H,060H,0F0H,060H,060H,060H,060H,0E6H,0FCH,000H,000H,000H,000H\r
+DB 000H,000H,066H,066H,03CH,018H,07EH,018H,07EH,018H,018H,018H,000H,000H,000H,000H\r
+DB 000H,0F8H,0CCH,0CCH,0F8H,0C4H,0CCH,0DEH,0CCH,0CCH,0CCH,0C6H,000H,000H,000H,000H\r
+DB 000H,00EH,01BH,018H,018H,018H,07EH,018H,018H,018H,018H,018H,0D8H,070H,000H,000H\r
+DB 000H,018H,030H,060H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,00CH,018H,030H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H\r
+DB 000H,018H,030H,060H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,018H,030H,060H,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,076H,0DCH,000H,0DCH,066H,066H,066H,066H,066H,066H,000H,000H,000H,000H\r
+DB 076H,0DCH,000H,0C6H,0E6H,0F6H,0FEH,0DEH,0CEH,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,03CH,06CH,06CH,03EH,000H,07EH,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,038H,06CH,06CH,038H,000H,07CH,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,030H,030H,000H,030H,030H,060H,0C0H,0C6H,0C6H,07CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,0FEH,0C0H,0C0H,0C0H,0C0H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,0FEH,006H,006H,006H,006H,000H,000H,000H,000H,000H\r
+DB 000H,0C0H,0C0H,0C2H,0C6H,0CCH,018H,030H,060H,0CEH,093H,006H,00CH,01FH,000H,000H\r
+DB 000H,0C0H,0C0H,0C2H,0C6H,0CCH,018H,030H,066H,0CEH,09AH,03FH,006H,00FH,000H,000H\r
+DB 000H,000H,018H,018H,000H,018H,018H,018H,03CH,03CH,03CH,018H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,033H,066H,0CCH,066H,033H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0CCH,066H,033H,066H,0CCH,000H,000H,000H,000H,000H,000H\r
+DB 011H,044H,011H,044H,011H,044H,011H,044H,011H,044H,011H,044H,011H,044H,011H,044H\r
+DB 055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH\r
+DB 0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H\r
+DB 018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,018H,018H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,0F8H,018H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 036H,036H,036H,036H,036H,036H,036H,0F6H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FEH,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 000H,000H,000H,000H,000H,0F8H,018H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 036H,036H,036H,036H,036H,0F6H,006H,0F6H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 000H,000H,000H,000H,000H,0FEH,006H,0F6H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,0F6H,006H,0FEH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 036H,036H,036H,036H,036H,036H,036H,0FEH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 018H,018H,018H,018H,018H,0F8H,018H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,018H,018H,01FH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 018H,018H,018H,018H,018H,018H,018H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,018H,018H,01FH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 018H,018H,018H,018H,018H,018H,018H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,01FH,018H,01FH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 036H,036H,036H,036H,036H,036H,036H,037H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,037H,030H,03FH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,03FH,030H,037H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,0F7H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0FFH,000H,0F7H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,037H,030H,037H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 000H,000H,000H,000H,000H,0FFH,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 036H,036H,036H,036H,036H,0F7H,000H,0F7H,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 018H,018H,018H,018H,018H,0FFH,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 036H,036H,036H,036H,036H,036H,036H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0FFH,000H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FFH,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,036H,036H,03FH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 018H,018H,018H,018H,018H,01FH,018H,01FH,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,01FH,018H,01FH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 000H,000H,000H,000H,000H,000H,000H,03FH,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 036H,036H,036H,036H,036H,036H,036H,0FFH,036H,036H,036H,036H,036H,036H,036H,036H\r
+DB 018H,018H,018H,018H,018H,0FFH,018H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,018H,018H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,01FH,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH\r
+DB 000H,000H,000H,000H,000H,000H,000H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH\r
+DB 0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H\r
+DB 00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH\r
+DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,076H,0DCH,0D8H,0D8H,0D8H,0DCH,076H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,0FCH,0C6H,0FCH,0C6H,0C6H,0FCH,0C0H,0C0H,0C0H,000H,000H\r
+DB 000H,000H,0FEH,0C6H,0C6H,0C0H,0C0H,0C0H,0C0H,0C0H,0C0H,0C0H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,080H,0FEH,06CH,06CH,06CH,06CH,06CH,06CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,0FEH,0C6H,060H,030H,018H,030H,060H,0C6H,0FEH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,07EH,0D8H,0D8H,0D8H,0D8H,0D8H,070H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,066H,066H,066H,066H,066H,07CH,060H,060H,0C0H,000H,000H,000H\r
+DB 000H,000H,000H,000H,076H,0DCH,018H,018H,018H,018H,018H,018H,000H,000H,000H,000H\r
+DB 000H,000H,000H,07EH,018H,03CH,066H,066H,066H,03CH,018H,07EH,000H,000H,000H,000H\r
+DB 000H,000H,000H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,06CH,038H,000H,000H,000H,000H\r
+DB 000H,000H,038H,06CH,0C6H,0C6H,0C6H,06CH,06CH,06CH,06CH,0EEH,000H,000H,000H,000H\r
+DB 000H,000H,01EH,030H,018H,00CH,03EH,066H,066H,066H,066H,03CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,07EH,0DBH,0DBH,0DBH,07EH,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,003H,006H,07EH,0CFH,0DBH,0F3H,07EH,060H,0C0H,000H,000H,000H,000H\r
+DB 000H,000H,01CH,030H,060H,060H,07CH,060H,060H,060H,030H,01CH,000H,000H,000H,000H\r
+DB 000H,000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,0FEH,000H,000H,0FEH,000H,000H,0FEH,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,018H,018H,07EH,018H,018H,000H,000H,0FFH,000H,000H,000H,000H\r
+DB 000H,000H,000H,030H,018H,00CH,006H,00CH,018H,030H,000H,07EH,000H,000H,000H,000H\r
+DB 000H,000H,000H,00CH,018H,030H,060H,030H,018H,00CH,000H,07EH,000H,000H,000H,000H\r
+DB 000H,000H,00EH,01BH,01BH,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H\r
+DB 018H,018H,018H,018H,018H,018H,018H,018H,0D8H,0D8H,0D8H,070H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,018H,018H,000H,07EH,000H,018H,018H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,076H,0DCH,000H,076H,0DCH,000H,000H,000H,000H,000H,000H\r
+DB 000H,038H,06CH,06CH,038H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,018H,018H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,018H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,00FH,00CH,00CH,00CH,00CH,00CH,0ECH,06CH,06CH,03CH,01CH,000H,000H,000H,000H\r
+DB 000H,0D8H,06CH,06CH,06CH,06CH,06CH,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,070H,098H,030H,060H,0C8H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,07CH,07CH,07CH,07CH,07CH,07CH,07CH,000H,000H,000H,000H,000H\r
+DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H\r
diff --git a/16/tauron30/ASM_SRC/MAIN.ASM b/16/tauron30/ASM_SRC/MAIN.ASM
new file mode 100755 (executable)
index 0000000..8bf81ce
--- /dev/null
@@ -0,0 +1,788 @@
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=-                                                                         -=\r
+;=-                   Tauron VGA Utilities Version 3.0                      -=\r
+;=-                      Released September 20, 1998                        -=\r
+;=-                                                                         -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+;=- All Rights Reserved.                     =-= that you put my name some- -=\r
+;=-                                          =-= where in your credits.     -=\r
+;=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- I assume no responsibility whatsoever for any effect that this package, -=\r
+;=- the information contained therein or the use thereof has on you, your   -=\r
+;=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+;=- you or your existance. No warranty is provided nor implied with this    -=\r
+;=- source code.                                                            -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+.MODEL  SMALL\r
+.386\r
+JUMPS\r
+LOCALS\r
+.STACK  200h\r
+.DATA\r
+\r
+ATTRCON_ADDR      EQU       03C0H\r
+MISC_ADDR         EQU       03C2H\r
+VGAENABLE_ADDR    EQU       03C3H\r
+SEQ_ADDR          EQU       03C4H\r
+GRACON_ADDR       EQU       03CEH\r
+CRTC_ADDR         EQU       03D4H\r
+STATUS_ADDR       EQU       03DAH\r
+\r
+; Videomode defines\r
+VMODE_00H         EQU       00H\r
+VMODE_01H         EQU       00H\r
+VMODE_02H         EQU       03H\r
+VMODE_03H         EQU       03H\r
+VMODE_04H         EQU       04H\r
+VMODE_05H         EQU       04H\r
+VMODE_06H         EQU       06H\r
+VMODE_07H         EQU       07H\r
+VMODE_0DH         EQU       0DH\r
+VMODE_0EH         EQU       0EH\r
+VMODE_0FH         EQU       0FH\r
+VMODE_10H         EQU       10H\r
+VMODE_11H         EQU       11H\r
+VMODE_12H         EQU       12H\r
+VMODE_13H         EQU       13H\r
+VMODE_CHAIN4      EQU       14H\r
+VMODE_MODE_X      EQU       15H\r
+VMODE_MODE_A      EQU       16H\r
+VMODE_MODE_B      EQU       17H\r
+VMODE_MODE_C      EQU       18H\r
+VMODE_MODE_D      EQU       19H\r
+VMODE_MODE_E      EQU       1AH\r
+VMODE_MODE_F      EQU       1BH\r
+VMODE_MODE_G      EQU       1CH\r
+VMODE_MODE_H      EQU       1DH\r
+VMODE_MODE_I      EQU       1EH\r
+VMODE_MODE_J      EQU       1FH\r
+VMODE_MODE_K      EQU       20H\r
+VMODE_MODE_L      EQU       21H\r
+VMODE_MODE_M      EQU       22H\r
+VMODE_MODE_N      EQU       23H\r
+\r
+;These next four lines must be included for the text mode stuff to work.\r
+oldmode db ?\r
+oldmisc db ?\r
+oldmask db ?\r
+oldmem db ?\r
+\r
+PALETTE LABEL BYTE\r
+DB  0,  0,  0,  0,  0, 42,  0, 42,  0,  0, 42, 42, 42,  0,  0, 42,  0, 42\r
+DB 42, 21,  0, 42, 42, 42, 21, 21, 21, 21, 21, 63, 21, 63, 21, 21, 63, 63\r
+DB 63, 21, 21, 63, 21, 63, 63, 63, 21, 63, 63, 63,  0,  0,  0,  5,  5,  5\r
+DB  8,  8,  8, 11, 11, 11, 14, 14, 14, 17, 17, 17, 20, 20, 20, 24, 24, 24\r
+DB 28, 28, 28, 32, 32, 32, 36, 36, 36, 40, 40, 40, 45, 45, 45, 50, 50, 50\r
+DB 56, 56, 56, 63, 63, 63,  0,  0, 63, 16,  0, 63, 31,  0, 63, 47,  0, 63\r
+DB 63,  0, 63, 63,  0, 47, 63,  0, 31, 63,  0, 16, 63,  0,  0, 63, 16,  0\r
+DB 63, 31,  0, 63, 47,  0, 63, 63,  0, 47, 63,  0, 31, 63,  0, 16, 63,  0\r
+DB  0, 63,  0,  0, 63, 16,  0, 63, 31,  0, 63, 47,  0, 63, 63,  0, 47, 63\r
+DB  0, 31, 63,  0, 16, 63, 31, 31, 63, 39, 31, 63, 47, 31, 63, 55, 31, 63\r
+DB 63, 31, 63, 63, 31, 55, 63, 31, 47, 63, 31, 39, 63, 31, 31, 63, 39, 31\r
+DB 63, 47, 31, 63, 55, 31, 63, 63, 31, 55, 63, 31, 47, 63, 31, 39, 63, 31\r
+DB 31, 63, 31, 31, 63, 39, 31, 63, 47, 31, 63, 55, 31, 63, 63, 31, 55, 63\r
+DB 31, 47, 63, 31, 39, 63, 45, 45, 63, 49, 45, 63, 54, 45, 63, 58, 45, 63\r
+DB 63, 45, 63, 63, 45, 58, 63, 45, 54, 63, 45, 49, 63, 45, 45, 63, 49, 45\r
+DB 63, 54, 45, 63, 58, 45, 63, 63, 45, 58, 63, 45, 54, 63, 45, 49, 63, 45\r
+DB 45, 63, 45, 45, 63, 49, 45, 63, 54, 45, 63, 58, 45, 63, 63, 45, 58, 63\r
+DB 45, 54, 63, 45, 49, 63,  0,  0, 28,  7,  0, 28, 14,  0, 28, 21,  0, 28\r
+DB 28,  0, 28, 28,  0, 21, 28,  0, 14, 28,  0,  7, 28,  0,  0, 28,  7,  0\r
+DB 28, 14,  0, 28, 21,  0, 28, 28,  0, 21, 28,  0, 14, 28,  0,  7, 28,  0\r
+DB  0, 28,  0,  0, 28,  7,  0, 28, 14,  0, 28, 21,  0, 28, 28,  0, 21, 28\r
+DB  0, 14, 28,  0,  7, 28, 14, 14, 28, 17, 14, 28, 21, 14, 28, 24, 14, 28\r
+DB 28, 14, 28, 28, 14, 24, 28, 14, 21, 28, 14, 17, 28, 14, 14, 28, 17, 14\r
+DB 28, 21, 14, 28, 24, 14, 28, 28, 14, 24, 28, 14, 21, 28, 14, 17, 28, 14\r
+DB 14, 28, 14, 14, 28, 17, 14, 28, 21, 14, 28, 24, 14, 28, 28, 14, 24, 28\r
+DB 14, 21, 28, 14, 17, 28, 20, 20, 28, 22, 20, 28, 24, 20, 28, 26, 20, 28\r
+DB 28, 20, 28, 28, 20, 26, 28, 20, 24, 28, 20, 22, 28, 20, 20, 28, 22, 20\r
+DB 28, 24, 20, 28, 26, 20, 28, 28, 20, 26, 28, 20, 24, 28, 20, 22, 28, 20\r
+DB 20, 28, 20, 20, 28, 22, 20, 28, 24, 20, 28, 26, 20, 28, 28, 20, 26, 28\r
+DB 20, 24, 28, 20, 22, 28,  0,  0, 16,  4,  0, 16,  8,  0, 16, 12,  0, 16\r
+DB 16,  0, 16, 16,  0, 12, 16,  0,  8, 16,  0,  4, 16,  0,  0, 16,  4,  0\r
+DB 16,  8,  0, 16, 12,  0, 16, 16,  0, 12, 16,  0,  8, 16,  0,  4, 16,  0\r
+DB  0, 16,  0,  0, 16,  4,  0, 16,  8,  0, 16, 12,  0, 16, 16,  0, 12, 16\r
+DB  0,  8, 16,  0,  4, 16,  8,  8, 16, 10,  8, 16, 12,  8, 16, 14,  8, 16\r
+DB 16,  8, 16, 16,  8, 14, 16,  8, 12, 16,  8, 10, 16,  8,  8, 16, 10,  8\r
+DB 16, 12,  8, 16, 14,  8, 16, 16,  8, 14, 16,  8, 12, 16,  8, 10, 16,  8\r
+DB  8, 16,  8,  8, 16, 10,  8, 16, 12,  8, 16, 14,  8, 16, 16,  8, 14, 16\r
+DB  8, 12, 16,  8, 10, 16, 11, 11, 16, 12, 11, 16, 13, 11, 16, 15, 11, 16\r
+DB 16, 11, 16, 16, 11, 15, 16, 11, 13, 16, 11, 12, 16, 11, 11, 16, 12, 11\r
+DB 16, 13, 11, 16, 15, 11, 16, 16, 11, 15, 16, 11, 13, 16, 11, 12, 16, 11\r
+DB 11, 16, 11, 11, 16, 12, 11, 16, 13, 11, 16, 15, 11, 16, 16, 11, 15, 16\r
+DB 11, 13, 16, 11, 12, 16,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0\r
+DB  0,  0,  0,  0,  0,  0,  0,  0,  0, 63, 63, 63\r
+\r
+; Must be included for any videomode to be set.\r
+include modes.inc\r
+\r
+MAIN_MSG LABEL BYTE\r
+DB 'Tauron VGA Utilities v3.0',13,10\r
+DB 'Copyright (c) 1998 Jeffrey Morgan.  All Rights Reserved.',13,10\r
+DB 'Select a video mode to test: (Modes with a ! are not implemented)',13,10\r
+DB 'Key              Videomode   (Modes with a % are unchained)',13,10\r
+DB '================================================================================'\r
+DB ' 0) 00H, 01H -- 40 x 25 x 16         %F) Mode D   --  360 x 200 x 256',13,10\r
+DB ' 1) Mode L   -- 40 x 43 x 16         %G) Mode E   --  360 x 240 x 256',13,10\r
+DB ' 2) Mode M   -- 40 x 50 x 16         %H) Mode F   --  360 x 350 x 256',13,10\r
+DB '!3) 07H      -- 80 x 25 x 2          %I) Mode G   --  360 x 400 x 256',13,10\r
+DB ' 4) 02H, 03H -- 80 x 25 x 16         %J) Mode H   --  360 x 480 x 256',13,10\r
+DB ' 5) Mode J   -- 80 x 43 x 16          K) 06H      -- 640 x 200 x 2',13,10\r
+DB ' 6) Mode K   -- 80 x 50 x 16         !L) 0FH      -- 640 x 350 x 2',13,10 \r
+DB ' 7) 04H, 05H -- 320 x 200 x 4         M) 11H      -- 640 x 480 x 2',13,10 \r
+DB ' 8) 0DH      -- 320 x 200 x 16        N) 0EH      -- 640 x 200 x 16',13,10\r
+DB ' 9) 13H      -- 320 x 200 x 256       O) 10H      -- 640 x 350 x 16',13,10\r
+DB '%A) Chain 4  --  320 x 200 x 256      P) Mode I   -- 640 x 400 x 16',13,10\r
+DB '%B) Mode X   --  320 x 240 x 256      Q) 12H      -- 640 x 480 x 16',13,10\r
+DB '%C) Mode A   --  320 x 350 x 256',13,10\r
+DB '%D) Mode B   --  320 x 400 x 256      R) Dual Font Test',13,10\r
+DB '%E) Mode C   --  320 x 480 x 256',13,10\r
+DB '===============================================================================',13,10\r
+DB 'Hit ',39,'ESC',39,' to exit.  Press a key [0-9 or A-O]>$'\r
+\r
+TEXTMSG_1 DB 218,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,191,0\r
+TEXTMSG_2 DB 179,'Text Mode: 00H        ',179,0 ; +13\r
+TEXTMSG_3 DB 179,'Width: 80   Height: 25',179,0 ; +8\r
+TEXTMSG_4 DB 179,'Bytes per screen: 4000',179,0 ; +19\r
+TEXTMSG_5 DB 179,'Number of pages: 8    ',179,0\r
+TEXTMSG_6 DB 192,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,217,0\r
+\r
+TEXTMSG_7 DB 218,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,191,0\r
+TEXTMSG_8 DB 179,'Text Mode J           ',179,0 ; +11\r
+TEXTMSG_9 DB 179,'Width: 80   Height: 43',179,0 ; +21, +22\r
+TEXTMSG_A DB 179,'Bytes per screen: 3440',179,0 ; +19, +20, +21, +22\r
+TEXTMSG_B DB 179,'Number of pages: 8    ',179,0\r
+TEXTMSG_C DB 192,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,217,0\r
+\r
+TEXTMSG_D DB 218,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,191,0\r
+TEXTMSG_E DB 179,' DUAL FONT MODE ',179,0 ;\r
+TEXTMSG_F DB 192,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,217,0\r
+\r
+FONT_8x8_OFF DW ?\r
+FONT_8x14_OFF DW ?\r
+\r
+; Attribute for text charcters\r
+ATT DB 1FH\r
+\r
+FONT1 LABEL BYTE\r
+include font1.asm\r
+FONT2 LABEL BYTE\r
+include font2.asm\r
+.CODE\r
+\r
+IODELAY MACRO\r
+   REPT 8\r
+      JMP $+2\r
+   ENDM\r
+ENDM\r
+\r
+Start:\r
+   MOV AX,@DATA\r
+   MOV DS,AX\r
+\r
+   ; This must be here to ensure that the fonts are properly found because\r
+   ; the location of the fonts in ROM is different on every VGA BIOS.\r
+   ; Get location of the fonts for Modes J and K\r
+   MOV AH,11h\r
+   MOV AL,30h\r
+   MOV BH,03h\r
+   INT 10H\r
+   MOV FONT_8x8_OFF,BP\r
+\r
+   ; Get location of the fonts for Modes 00H, 01H, 02H, 03H, and 07H\r
+   MOV AH,11h\r
+   MOV AL,30h\r
+   MOV BH,06h\r
+   INT 10H\r
+   MOV FONT_8x14_OFF,BP\r
+\r
+   ; Reset the mode and clear the screen\r
+   MOV AX,0003H\r
+   INT 10H\r
+\r
+   ; Print out the message\r
+   MOV DX,OFFSET MAIN_MSG\r
+   MOV AH,9\r
+   INT 21H\r
+\r
+MAIN_LOOP:\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+\r
+   CMP AL,27\r
+   JE QUIT_PROGRAM\r
+\r
+   CMP AL,'0'\r
+   JE MODE_00_TEST\r
+\r
+   CMP AL,'1'\r
+   JE MODE_L_TEST\r
+\r
+   CMP AL,'2'\r
+   JE MODE_M_TEST\r
+\r
+   CMP AL,'4'\r
+   JE MODE_03_TEST\r
+\r
+   CMP AL,'5'\r
+   JE MODE_J_TEST\r
+\r
+   CMP AL,'6'\r
+   JE MODE_K_TEST\r
+\r
+   CMP AL,'7'\r
+   JE MODE_04_TEST\r
+\r
+   CMP AL,'8'\r
+   JE MODE_0D_TEST\r
+\r
+   CMP AL,'9'\r
+   JE MODE_13_TEST\r
+\r
+   CMP AL,'a'\r
+   JE MODE_C4_TEST\r
+   CMP AL,'A'\r
+   JE MODE_C4_TEST\r
+\r
+   CMP AL,'b'\r
+   JE MODE_X_TEST\r
+   CMP AL,'B'\r
+   JE MODE_X_TEST\r
+\r
+   CMP AL,'c'\r
+   JE MODE_A_TEST\r
+   CMP AL,'C'\r
+   JE MODE_A_TEST\r
+\r
+   CMP AL,'d'\r
+   JE MODE_B_TEST\r
+   CMP AL,'D'\r
+   JE MODE_B_TEST\r
+\r
+   CMP AL,'e'\r
+   JE MODE_C_TEST\r
+   CMP AL,'E'\r
+   JE MODE_C_TEST\r
+\r
+   CMP AL,'f'\r
+   JE MODE_D_TEST\r
+   CMP AL,'F'\r
+   JE MODE_D_TEST\r
+\r
+   CMP AL,'g'\r
+   JE MODE_E_TEST\r
+   CMP AL,'G'\r
+   JE MODE_E_TEST\r
+\r
+   CMP AL,'h'\r
+   JE MODE_F_TEST\r
+   CMP AL,'H'\r
+   JE MODE_F_TEST\r
+\r
+   CMP AL,'i'\r
+   JE MODE_G_TEST\r
+   CMP AL,'I'\r
+   JE MODE_G_TEST\r
+\r
+   CMP AL,'j'\r
+   JE MODE_H_TEST\r
+   CMP AL,'J'\r
+   JE MODE_H_TEST\r
+\r
+   CMP AL,'k'\r
+   JE MODE_06_TEST\r
+   CMP AL,'K'\r
+   JE MODE_06_TEST\r
+\r
+   CMP AL,'m'\r
+   JE MODE_11_TEST\r
+   CMP AL,'M'\r
+   JE MODE_11_TEST\r
+\r
+   CMP AL,'n'\r
+   JE MODE_0E_TEST\r
+   CMP AL,'N'\r
+   JE MODE_0E_TEST\r
+\r
+   CMP AL,'o'\r
+   JE MODE_10_TEST\r
+   CMP AL,'O'\r
+   JE MODE_10_TEST\r
+\r
+   CMP AL,'p'\r
+   JE MODE_I_TEST\r
+   CMP AL,'P'\r
+   JE MODE_I_TEST\r
+\r
+   CMP AL,'q'\r
+   JE MODE_12_TEST\r
+   CMP AL,'Q'\r
+   JE MODE_12_TEST\r
+\r
+   CMP AL,'r'\r
+   JE DUAL_TEST\r
+   CMP AL,'R'\r
+   JE DUAL_TEST\r
+   JMP MAIN_LOOP\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_00_TEST:\r
+   PUSH VMODE_00H\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL TEXTTEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_03_TEST:\r
+   PUSH VMODE_03H\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL TEXTTEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_04_TEST:\r
+   PUSH VMODE_04H\r
+   CALL SETVIDEOMODE\r
+\r
+   PUSH 0AAAAH\r
+   CALL CLEAR_B8000H\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_06_TEST:\r
+   PUSH VMODE_06H\r
+   CALL SETVIDEOMODE\r
+\r
+   PUSH 0FFFFH\r
+   CALL CLEAR_B8000H\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_0D_TEST:\r
+   PUSH VMODE_0DH\r
+   CALL SETVIDEOMODE\r
+\r
+   PUSH 12\r
+   CALL CLEAR0DH\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_0E_TEST:\r
+   PUSH VMODE_0EH\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_10_TEST:\r
+   PUSH VMODE_10H\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_11_TEST:\r
+   PUSH VMODE_11H\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_12_TEST:\r
+   PUSH VMODE_12H\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_13_TEST:\r
+   PUSH VMODE_13H\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_I_TEST:\r
+   PUSH VMODE_MODE_I\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_C4_TEST:\r
+   PUSH VMODE_CHAIN4\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_X_TEST:\r
+   PUSH VMODE_MODE_X\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_A_TEST:\r
+   PUSH VMODE_MODE_A\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_B_TEST:\r
+   PUSH VMODE_MODE_B\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_C_TEST:\r
+   PUSH VMODE_MODE_C\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_D_TEST:\r
+   PUSH VMODE_MODE_D\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_E_TEST:\r
+   PUSH VMODE_MODE_E\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_F_TEST:\r
+   PUSH VMODE_MODE_F\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_G_TEST:\r
+   PUSH VMODE_MODE_G\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_H_TEST:\r
+   PUSH VMODE_MODE_H\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL MODETEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_J_TEST:\r
+   PUSH VMODE_MODE_J\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL TEXTTEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_K_TEST:\r
+   PUSH VMODE_MODE_K\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL TEXTTEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_L_TEST:\r
+   PUSH VMODE_MODE_L\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL TEXTTEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+MODE_M_TEST:\r
+   PUSH VMODE_MODE_M\r
+   CALL SETVIDEOMODE\r
+\r
+   CALL TEXTTEST\r
+\r
+   ; Wait for a keypress\r
+   MOV AH,0\r
+   INT 16H\r
+   JMP RESET\r
+\r
+; ====================== New Video Mode ====================================\r
+DUAL_TEST:\r
+   CALL DUALTEST\r
+\r
+RESET:\r
+   ; Reset the mode and clear the screen\r
+   MOV AX,0003H\r
+   INT 10H\r
+\r
+   ; Print out the message\r
+   MOV DX,OFFSET MAIN_MSG\r
+   MOV AH,9\r
+   INT 21H\r
+   JMP MAIN_LOOP\r
+\r
+; ====================== New Video Mode ====================================\r
+QUIT_PROGRAM:\r
+   ; Set the BIOS mode 03h\r
+   MOV AX,0003H\r
+   INT 10H\r
+\r
+   ; Exit to DOS\r
+   MOV AX,4C00H\r
+   INT 21H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+LOADFONT PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+   PUSHA\r
+ mov dx,GRACON_ADDR                     ;get graphics port\r
+ mov al,5                               ;get write mode reg\r
+ out dx,al                              ;select the reg\r
+ IODELAY                                ;delay a bit\r
+ inc dx                                 ;change DX\r
+ in al,dx                               ;get value\r
+ IODELAY                                ;pause\r
+ mov [oldmode],al                       ;store it\r
+ dec dx                                 ;restore DX\r
+ mov al,6                               ;get misc reg\r
+ out dx,al                              ;select the reg\r
+ IODELAY                                ;delay a bit\r
+ inc dx                                 ;change DX\r
+ in al,dx                               ;get value\r
+ IODELAY                                ;pause\r
+ mov [oldmisc],al                       ;store it\r
+ dec dx                                 ;restore DX\r
+ mov dx,SEQ_ADDR                        ;get sequencer port\r
+ mov al,2                               ;get map mask reg\r
+ out dx,al                              ;select the reg\r
+ IODELAY                                ;delay a bit\r
+ inc dx                                 ;change DX\r
+ in al,dx                               ;get value\r
+ IODELAY                                ;pause\r
+ mov [oldmask],al                       ;store it\r
+ dec dx                                 ;restore DX\r
+ mov al,4                               ;get memory selector reg\r
+ out dx,al                              ;select the reg\r
+ IODELAY                                ;delay a bit\r
+ inc dx                                 ;change DX\r
+ in al,dx                               ;get value\r
+ IODELAY                                ;pause\r
+ mov [oldmem],al                        ;store it\r
+\r
+ mov dx,GRACON_ADDR                     ;select graphics port\r
+ mov al,5                               ;get write mode reg\r
+ mov ah,[oldmode]                       ;get old value\r
+ and ah,0fch                            ;mask it\r
+ out dx,ax                              ;set new value\r
+ IODELAY                                ;pause\r
+ mov al,6                               ;get misc reg\r
+ mov ah,[oldmisc]                       ;get old value\r
+ and ah,0f1h                            ;mask it\r
+ or ah,4                                ;set a flag\r
+ out dx,ax                              ;set it\r
+ IODELAY                                ;pause\r
+ mov dx,SEQ_ADDR                        ;select sequencer port\r
+ mov al,2                             ;get mask reg\r
+ mov ah,4                               ;get new value\r
+ out dx,ax                              ;set it\r
+ IODELAY                                ;pause\r
+ mov al,4                              ;get memory reg\r
+ mov ah,[oldmem]                        ;get old value\r
+ or ah,4                                ;set flag\r
+ out dx,ax                              ;set value\r
+ IODELAY                                ;pause\r
+\r
+   PUSH DS\r
+   PUSH ES\r
+\r
+   MOV AX,[BP+8]\r
+   MOV ES,AX\r
+   MOV DI,[BP+10]\r
+\r
+   MOV AX,[BP+4]\r
+   MOV DS,AX\r
+   MOV SI,[BP+6]\r
+\r
+@@LOOP1:\r
+   PUSH DI\r
+   MOV CL,[BP+12]\r
+@@LOOP2:\r
+   MOVSB\r
+   DEC CL\r
+   JNZ @@LOOP2\r
+\r
+   MOV CL,32\r
+   SUB CL,byte ptr [BP+12]\r
+@@LOOP3:\r
+   MOV AX,00H\r
+   STOSB\r
+   DEC CL\r
+   JNZ @@LOOP3\r
+\r
+   POP DI\r
+   ADD DI,32\r
+\r
+   DEC CH\r
+   JNZ @@LOOP1\r
+\r
+   POP ES\r
+   POP DS\r
+\r
+ mov dx,GRACON_ADDR                     ;get graphics port\r
+ mov al,5                               ;get 1st reg\r
+ mov ah,[oldmode]                       ;get old value\r
+ out dx,ax                              ;set it\r
+ IODELAY                                ;pause\r
+ mov al,6                               ;get 2nd reg\r
+ mov ah,[oldmisc]                       ;get old value\r
+ out dx,ax                              ;set it\r
+ IODELAY                                ;pause\r
+ mov dx,SEQ_ADDR                        ;get seq port\r
+ mov al,2                               ;get 3rd reg\r
+ mov ah,[oldmask]                       ;get old value\r
+ out dx,ax                              ;set it\r
+ IODELAY                                ;pause\r
+ mov al,4                               ;get 4th reg\r
+ mov ah,[oldmem]                        ;get old value\r
+ out dx,ax                              ;set it\r
+ IODELAY                                ;pause\r
+\r
+   POPA\r
+   POP BP\r
+   RET 10\r
+LOADFONT ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+include clear.asm\r
+include modes.asm\r
+include tests.asm\r
+include dual.asm\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+END Start\r
diff --git a/16/tauron30/ASM_SRC/MODES.ASM b/16/tauron30/ASM_SRC/MODES.ASM
new file mode 100755 (executable)
index 0000000..28e72a8
--- /dev/null
@@ -0,0 +1,1240 @@
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=-                                                                         -=\r
+;=-                   Tauron VGA Utilities Version 3.0                      -=\r
+;=-                      Released September 20, 1998                        -=\r
+;=-                                                                         -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+;=- All Rights Reserved.                     =-= that you put my name some- -=\r
+;=-                                          =-= where in your credits.     -=\r
+;=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- I assume no responsibility whatsoever for any effect that this package, -=\r
+;=- the information contained therein or the use thereof has on you, your   -=\r
+;=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+;=- you or your existance. No warranty is provided nor implied with this    -=\r
+;=- source code.                                                            -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+SETVIDEOMODE PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+\r
+   MOV AX,word ptr [BP+4]\r
+   MOV Mode.videomode, AX\r
+   CMP AX,VMODE_00H\r
+   JE SET00H\r
+   CMP AX,VMODE_03H\r
+   JE SET03H\r
+   CMP AX,VMODE_04H\r
+   JE SET04H\r
+   CMP AX,VMODE_06H\r
+   JE SET06H\r
+;   CMP AX,VMODE_07H\r
+;   JE SET07H\r
+   CMP AX,VMODE_0DH\r
+   JE SET0DH\r
+   CMP AX,VMODE_0EH\r
+   JE SET0EH\r
+;   CMP AX,VMODE_0FH\r
+;   JE SET0FH\r
+   CMP AX,VMODE_10H\r
+   JE SET10H\r
+   CMP AX,VMODE_11H\r
+   JE SET11H\r
+   CMP AX,VMODE_12H\r
+   JE SET12H\r
+   CMP AX,VMODE_13H\r
+   JE SET13H\r
+   CMP AX,VMODE_CHAIN4\r
+   JE SETCHAIN4\r
+   CMP AX,VMODE_MODE_X\r
+   JE SETMODE_X\r
+   CMP AX,VMODE_MODE_A\r
+   JE SETMODE_A\r
+   CMP AX,VMODE_MODE_B\r
+   JE SETMODE_B\r
+   CMP AX,VMODE_MODE_C\r
+   JE SETMODE_C\r
+   CMP AX,VMODE_MODE_D\r
+   JE SETMODE_D\r
+   CMP AX,VMODE_MODE_E\r
+   JE SETMODE_E\r
+   CMP AX,VMODE_MODE_F\r
+   JE SETMODE_F\r
+   CMP AX,VMODE_MODE_G\r
+   JE SETMODE_G\r
+   CMP AX,VMODE_MODE_H\r
+   JE SETMODE_H\r
+   CMP AX,VMODE_MODE_I\r
+   JE SETMODE_I\r
+   CMP AX,VMODE_MODE_J\r
+   JE SETMODE_J\r
+   CMP AX,VMODE_MODE_K\r
+   JE SETMODE_K\r
+   CMP AX,VMODE_MODE_L\r
+   JE SETMODE_L\r
+   CMP AX,VMODE_MODE_M\r
+   JE SETMODE_M\r
+   JMP SET_OUT\r
+\r
+SET00H:\r
+   MOV SI,OFFSET MODE00H\r
+   CALL SETMODE\r
+\r
+   PUSH 16                 ; Bytes per character\r
+   PUSH 0                  ; Offset of font in Video Memory\r
+   PUSH 0A000H\r
+   PUSH FONT_8x14_OFF      ; Offset of Font in BIOS\r
+   PUSH 0C000H\r
+   CALL LOADFONT\r
+   CALL SETPALETTE16\r
+   MOV Mode.mode_width,40;\r
+   MOV Mode.mode_height,25;\r
+   MOV Mode.width_bytes,1000;\r
+   MOV Mode.colors,16;\r
+   MOV Mode.attrib,TVU_TEXT;\r
+   JMP SET_OUT\r
+\r
+SET03H:\r
+   MOV SI,OFFSET MODE03H\r
+   CALL SETMODE\r
+\r
+   PUSH 16                ; Bytes per character\r
+   PUSH 0                  ; Offset of font in Video Memory\r
+   PUSH 0A000H\r
+   PUSH FONT_8x14_OFF      ; Offset of Font in BIOS\r
+   PUSH 0C000H\r
+   CALL LOADFONT\r
+;   CALL SETPALETTE16\r
+   MOV Mode.mode_width,80;\r
+   MOV Mode.mode_height,25;\r
+   MOV Mode.width_bytes,2000;\r
+   MOV Mode.colors,16;\r
+   MOV Mode.attrib,TVU_TEXT;\r
+   JMP SET_OUT\r
+\r
+SET04H:\r
+   MOV SI,OFFSET MODE04H\r
+   CALL SETMODE\r
+   CALL SETPALETTE4\r
+   MOV Mode.mode_width,320;\r
+   MOV Mode.mode_height,200;\r
+   MOV Mode.width_bytes,65535;\r
+   MOV Mode.colors,4;\r
+   MOV Mode.attrib,TVU_GRAPHICS;\r
+   OR Mode.attrib,TVU_B8000_ADDR\r
+   JMP SET_OUT\r
+\r
+SET06H:\r
+   MOV SI,OFFSET MODE06H\r
+   CALL SETMODE\r
+   CALL SETPALETTE4\r
+   MOV Mode.mode_width,640;\r
+   MOV Mode.mode_height,200;\r
+   MOV Mode.width_bytes,16384;\r
+   MOV Mode.colors,4;\r
+   MOV Mode.attrib,TVU_GRAPHICS;\r
+   OR Mode.attrib,TVU_B8000_ADDR\r
+   OR Mode.attrib,TVU_PLANAR\r
+   JMP SET_OUT\r
+\r
+SET07H:\r
+   MOV SI,OFFSET MODE07H\r
+   CALL SETMODE\r
+\r
+   PUSH 16                ; Bytes per character\r
+   PUSH 0                  ; Offset of font in Video Memory\r
+   PUSH 0A000H\r
+   PUSH FONT_8x14_OFF      ; Offset of Font in BIOS\r
+   PUSH 0C000H\r
+   CALL LOADFONT\r
+   MOV Mode.mode_width,80;\r
+   MOV Mode.mode_height,25;\r
+   MOV Mode.width_bytes,2000;\r
+   MOV Mode.colors,2;\r
+   MOV Mode.attrib,TVU_TEXT\r
+   OR Mode.attrib,TVU_MONOCHROME\r
+   JMP SET_OUT\r
+\r
+SET0DH:\r
+   MOV SI,OFFSET MODE0DH\r
+   CALL SETMODE\r
+   CALL SETPALETTE16\r
+   MOV Mode.mode_width,320;\r
+   MOV Mode.mode_height,200;\r
+   MOV Mode.width_bytes,8000;\r
+   MOV Mode.colors,16;\r
+   MOV Mode.attrib,TVU_GRAPHICS;\r
+   OR Mode.attrib,TVU_PLANAR\r
+   JMP SET_OUT\r
+\r
+SET0EH:\r
+   MOV SI,OFFSET MODE0EH\r
+   CALL SETMODE\r
+   CALL SETPALETTE16\r
+   MOV Mode.mode_width,640;\r
+   MOV Mode.mode_height,200;\r
+   MOV Mode.width_bytes,16000;\r
+   MOV Mode.colors,16;\r
+   MOV Mode.attrib,TVU_GRAPHICS;\r
+   OR Mode.attrib,TVU_PLANAR\r
+   JMP SET_OUT\r
+\r
+SET0FH:\r
+   MOV SI,OFFSET MODE0FH\r
+   CALL SETMODE\r
+   MOV Mode.mode_width,640;\r
+   MOV Mode.mode_height,350;\r
+   MOV Mode.width_bytes,28000;\r
+   MOV Mode.colors,2;\r
+   MOV Mode.attrib,TVU_GRAPHICS\r
+   OR Mode.attrib,TVU_MONOCHROME\r
+   JMP SET_OUT\r
+\r
+SET10H:\r
+   MOV SI,OFFSET MODE10H\r
+   CALL SETMODE\r
+   CALL SETPALETTE16\r
+   MOV Mode.mode_width,640;\r
+   MOV Mode.mode_height,350;\r
+   MOV Mode.width_bytes,28000;\r
+   MOV Mode.colors,16;\r
+   MOV Mode.attrib,TVU_GRAPHICS;\r
+   OR Mode.attrib,TVU_PLANAR\r
+   JMP SET_OUT\r
+\r
+SET11H:\r
+   MOV SI,OFFSET MODE11H\r
+   CALL SETMODE\r
+   CALL SETPALETTE16\r
+   MOV Mode.mode_width,640;\r
+   MOV Mode.mode_height,480;\r
+   MOV Mode.width_bytes,38400;\r
+   MOV Mode.colors,2;\r
+   MOV Mode.attrib,TVU_GRAPHICS;\r
+   OR Mode.attrib,TVU_PLANAR\r
+   JMP SET_OUT\r
+\r
+SET12H:\r
+   MOV SI,OFFSET MODE12H\r
+   CALL SETMODE\r
+   CALL SETPALETTE16\r
+   MOV Mode.mode_width,640\r
+   MOV Mode.mode_height,480\r
+   MOV Mode.width_bytes,38400\r
+   MOV Mode.colors,16\r
+   MOV Mode.attrib,TVU_GRAPHICS\r
+   OR Mode.attrib,TVU_PLANAR\r
+   JMP SET_OUT\r
+\r
+SET13H:\r
+   MOV SI,OFFSET MODE13H\r
+   CALL SETMODE\r
+   CALL SETPALETTE256\r
+   MOV Mode.mode_width,320;\r
+   MOV Mode.mode_height,200;\r
+   MOV Mode.width_bytes,64000;\r
+   MOV Mode.colors,256;\r
+   MOV Mode.attrib,TVU_GRAPHICS;\r
+   JMP SET_OUT\r
+\r
+SETCHAIN4:\r
+   MOV SI,OFFSET CHAIN4\r
+   CALL SETMODE\r
+   CALL SETPALETTE256\r
+   MOV Mode.mode_width,320;\r
+   MOV Mode.mode_height,200;\r
+   MOV Mode.width_bytes,16000;\r
+   MOV Mode.colors,256;\r
+   MOV Mode.attrib,TVU_GRAPHICS;\r
+   OR Mode.attrib,TVU_UNCHAINED\r
+   JMP SET_OUT\r
+\r
+SETMODE_X:\r
+   MOV SI,OFFSET CHAIN4\r
+   CALL SETMODE\r
+\r
+   MOV DX,MISC_ADDR\r
+   MOV AX,0E3H\r
+   OUT DX,AL\r
+\r
+   MOV DX,CRTC_ADDR\r
+\r
+   ; turn off write protect\r
+   MOV AX,02C11H\r
+   OUT DX,AX\r
+   ; vertical total\r
+   MOV AX,00D06H\r
+   OUT DX,AX\r
+   ; overflow register\r
+   MOV AX,03E07H\r
+   OUT DX,AX\r
+   ; vertical retrace start\r
+   MOV AX,0EA10H\r
+   OUT DX,AX\r
+   ; vertical retrace end AND wr.prot\r
+   MOV AX,0AC11H\r
+   OUT DX,AX\r
+   ; vertical display enable end\r
+   MOV AX,0DF12H\r
+   OUT DX,AX\r
+   ; start vertical blanking\r
+   MOV AX,0E715H\r
+   OUT DX,AX\r
+   ; end vertical blanking\r
+   MOV AX,00616H\r
+   OUT DX,AX\r
+\r
+   CALL SETPALETTE256\r
+   MOV Mode.mode_width,320;\r
+   MOV Mode.mode_height,240;\r
+   MOV Mode.width_bytes,19200;\r
+   MOV Mode.colors,256;\r
+   MOV Mode.attrib,TVU_GRAPHICS\r
+   OR Mode.attrib,TVU_UNCHAINED\r
+   JMP SET_OUT\r
+\r
+SETMODE_A:\r
+   MOV SI,OFFSET CHAIN4\r
+   CALL SETMODE\r
+\r
+   ; turn off double scanning mode\r
+   MOV DX,CRTC_ADDR\r
+   MOV AX,9\r
+   OUT DX,AL\r
+   INC DX\r
+   IN AL,DX\r
+   AND AL,0E0h\r
+   OUT DX,AL\r
+\r
+   ; change the vertical resolution flags to 350\r
+   MOV DX,03CCH\r
+   IN AL,DX\r
+   AND AL,02Fh\r
+   OR AL,80h\r
+   MOV DX,MISC_ADDR\r
+   OUT DX,AL\r
+\r
+   MOV DX,CRTC_ADDR\r
+   ; turn off write protect\r
+   MOV AX,02C11H\r
+   OUT DX,AX\r
+   ; vertical total\r
+   MOV AX,0BF06H\r
+   OUT DX,AX\r
+   ; overflow register\r
+   MOV AX,01F07H\r
+   OUT DX,AX\r
+   ; vertical retrace start\r
+   MOV AX,08310H\r
+   OUT DX,AX\r
+   ; vertical retrace end AND wr.prot\r
+   MOV AX,08511H\r
+   OUT DX,AX\r
+   ; vertical display enable end\r
+   MOV AX,05D12H\r
+   OUT DX,AX\r
+   ; start vertical blanking\r
+   MOV AX,06315H\r
+   OUT DX,AX\r
+   ; end vertical blanking\r
+   MOV AX,0BA16H\r
+   OUT DX,AX\r
+\r
+   CALL SETPALETTE256\r
+\r
+   MOV Mode.mode_width,320;\r
+   MOV Mode.mode_height,350;\r
+   MOV Mode.width_bytes,28000;\r
+   MOV Mode.colors,256;\r
+   MOV Mode.attrib,TVU_GRAPHICS\r
+   OR Mode.attrib,TVU_UNCHAINED\r
+   JMP SET_OUT\r
+\r
+SETMODE_B:\r
+   MOV SI,OFFSET CHAIN4\r
+   CALL SETMODE\r
+\r
+   ; turn off double scanning mode\r
+   MOV DX,CRTC_ADDR\r
+   MOV AX,9\r
+   OUT DX,AL\r
+   INC DX\r
+   IN AL,DX\r
+   AND AL,0E0h\r
+   OUT DX,AL\r
+\r
+   ; change the vertical resolution flags to 400\r
+   MOV DX,03CCH\r
+   IN AL,DX\r
+   AND AL,02Fh\r
+   OR AL,40h\r
+   MOV DX,MISC_ADDR\r
+   OUT DX,AL\r
+\r
+   CALL SETPALETTE256\r
+\r
+   MOV Mode.mode_width,320;\r
+   MOV Mode.mode_height,400;\r
+   MOV Mode.width_bytes,32000;\r
+   MOV Mode.colors,256;\r
+   MOV Mode.attrib,TVU_GRAPHICS\r
+   OR Mode.attrib,TVU_UNCHAINED\r
+   JMP SET_OUT\r
+\r
+SETMODE_C:\r
+   MOV SI,OFFSET CHAIN4\r
+   CALL SETMODE\r
+\r
+   ; turn off double scanning mode\r
+   MOV DX,CRTC_ADDR\r
+   MOV AX,9\r
+   OUT DX,AL\r
+   INC DX\r
+   IN AL,DX\r
+   AND AL,0E0h\r
+   OUT DX,AL\r
+\r
+   ; change the vertical resolution flags to 480\r
+   MOV DX,03CCH\r
+   IN AL,DX\r
+   AND AL,02Fh\r
+   OR AL,0C0h\r
+   MOV DX,MISC_ADDR\r
+   OUT DX,AL\r
+\r
+   MOV DX,CRTC_ADDR\r
+   ; turn off write protect\r
+   MOV AX,02C11H\r
+   OUT DX,AX\r
+   ; vertical total\r
+   MOV AX,00D06H\r
+   OUT DX,AX\r
+   ; overflow register\r
+   MOV AX,03E07H\r
+   OUT DX,AX\r
+   ; vertical retrace start\r
+   MOV AX,0EA10H\r
+   OUT DX,AX\r
+   ; vertical retrace end AND wr.prot\r
+   MOV AX,0AC11H\r
+   OUT DX,AX\r
+   ; vertical display enable end\r
+   MOV AX,0DF12H\r
+   OUT DX,AX\r
+   ; start vertical blanking\r
+   MOV AX,0E715H\r
+   OUT DX,AX\r
+   ; end vertical blanking\r
+   MOV AX,00616H\r
+   OUT DX,AX\r
+\r
+   CALL SETPALETTE256\r
+\r
+   MOV Mode.mode_width,320;\r
+   MOV Mode.mode_height,480;\r
+   MOV Mode.width_bytes,38400;\r
+   MOV Mode.colors,256;\r
+   MOV Mode.attrib,TVU_GRAPHICS\r
+   OR Mode.attrib,TVU_UNCHAINED\r
+   JMP SET_OUT\r
+\r
+SETMODE_D:\r
+   MOV SI,OFFSET MODE13H\r
+   CALL SETMODE\r
+\r
+   ; Turn off Chain 4\r
+   MOV DX,SEQ_ADDR\r
+   MOV AX,0604H\r
+   OUT DX,AX\r
+   ; Activate a synchronous reset\r
+   MOV AX,0100H\r
+   OUT DX,AX\r
+   ; Select 28 mhz pixel clock\r
+   MOV DX,MISC_ADDR\r
+   MOV AL,067H\r
+   OUT DX,AL\r
+   ; Release synchronous reset\r
+   MOV DX,SEQ_ADDR\r
+   MOV AX,0300H\r
+   OUT DX,AX\r
+\r
+   ; change the vertical resolution flags to 400\r
+   MOV DX,03CCH\r
+   IN AL,DX\r
+   AND AL,02Fh\r
+   OR AL,40h\r
+   MOV DX,MISC_ADDR\r
+   OUT DX,AL\r
+   CALL SETPALETTE256\r
+\r
+   MOV DX,CRTC_ADDR\r
+   ; turn off write protect\r
+   MOV AX,02C11H\r
+   OUT DX,AX\r
+\r
+   MOV AX,06B00H\r
+   OUT DX,AX\r
+   MOV AX,05901H\r
+   OUT DX,AX\r
+   MOV AX,05A02H\r
+   OUT DX,AX\r
+   MOV AX,08E03H\r
+   OUT DX,AX\r
+   MOV AX,05E04H\r
+   OUT DX,AX\r
+   MOV AX,08A05H\r
+   OUT DX,AX\r
+   MOV AX,00008H\r
+   OUT DX,AX\r
+   MOV AX,0C009H\r
+   OUT DX,AX\r
+   MOV AX,0000AH\r
+   OUT DX,AX\r
+   MOV AX,0000BH\r
+   OUT DX,AX\r
+   MOV AX,0000CH\r
+   OUT DX,AX\r
+   MOV AX,0000DH\r
+   OUT DX,AX\r
+   MOV AX,0000EH\r
+   OUT DX,AX\r
+   MOV AX,0000FH\r
+   OUT DX,AX\r
+   MOV AX,0AC11H\r
+   OUT DX,AX\r
+   MOV AX,02D13H\r
+   OUT DX,AX\r
+   MOV AX,00014H\r
+   OUT DX,AX\r
+   MOV AX,0E317H\r
+   OUT DX,AX\r
+   MOV AX,0FF18H\r
+   OUT DX,AX\r
+\r
+   CALL SETPALETTE256\r
+\r
+   MOV Mode.mode_width,360;\r
+   MOV Mode.mode_height,200;\r
+   MOV Mode.width_bytes,18000;\r
+   MOV Mode.colors,256;\r
+   MOV Mode.attrib,TVU_GRAPHICS\r
+   OR Mode.attrib,TVU_UNCHAINED\r
+   JMP SET_OUT\r
+\r
+\r
+SETMODE_E:\r
+   MOV SI,OFFSET MODE13H\r
+   CALL SETMODE\r
+\r
+   ; Turn off Chain 4\r
+   MOV DX,SEQ_ADDR\r
+   MOV AX,0604H\r
+   OUT DX,AX\r
+   ; Activate a synchronous reset\r
+   MOV AX,0100H\r
+   OUT DX,AX\r
+   ; Select 28 mhz pixel clock\r
+   MOV DX,MISC_ADDR\r
+   MOV AL,067H\r
+   OUT DX,AL\r
+   ; Release synchronous reset\r
+   MOV DX,SEQ_ADDR\r
+   MOV AX,0300H\r
+   OUT DX,AX\r
+\r
+   ; change the vertical resolution flags to 480\r
+   MOV DX,03CCH\r
+   IN AL,DX\r
+   AND AL,02Fh\r
+   OR AL,0C0h\r
+   MOV DX,MISC_ADDR\r
+   OUT DX,AL\r
+   CALL SETPALETTE256\r
+\r
+   MOV DX,CRTC_ADDR\r
+   ; turn off write protect\r
+   MOV AX,02C11H\r
+   OUT DX,AX\r
+\r
+   MOV AX,06B00H\r
+   OUT DX,AX\r
+   MOV AX,05901H\r
+   OUT DX,AX\r
+   MOV AX,05A02H\r
+   OUT DX,AX\r
+   MOV AX,08E03H\r
+   OUT DX,AX\r
+   MOV AX,05E04H\r
+   OUT DX,AX\r
+   MOV AX,08A05H\r
+   OUT DX,AX\r
+   MOV AX,00D06H\r
+   OUT DX,AX\r
+   MOV AX,03E07H\r
+   OUT DX,AX\r
+   MOV AX,00008H\r
+   OUT DX,AX\r
+   MOV AX,0C009H\r
+   OUT DX,AX\r
+   MOV AX,0000AH\r
+   OUT DX,AX\r
+   MOV AX,0000BH\r
+   OUT DX,AX\r
+   MOV AX,0000DH\r
+   OUT DX,AX\r
+   MOV AX,0000CH\r
+   OUT DX,AX\r
+   MOV AX,0000EH\r
+   OUT DX,AX\r
+   MOV AX,0000FH\r
+   OUT DX,AX\r
+   MOV AX,0EA10H\r
+   OUT DX,AX\r
+   MOV AX,0AC11H\r
+   OUT DX,AX\r
+   MOV AX,0DF12H\r
+   OUT DX,AX\r
+   MOV AX,02D13H\r
+   OUT DX,AX\r
+   MOV AX,00014H\r
+   OUT DX,AX\r
+   MOV AX,0E715H\r
+   OUT DX,AX\r
+   MOV AX,00616H\r
+   OUT DX,AX\r
+   MOV AX,0E317H\r
+   OUT DX,AX\r
+   MOV AX,0FF18H\r
+   OUT DX,AX\r
+\r
+   CALL SETPALETTE256\r
+\r
+   MOV Mode.mode_width,360;\r
+   MOV Mode.mode_height,240;\r
+   MOV Mode.width_bytes,21600;\r
+   MOV Mode.colors,256;\r
+   MOV Mode.attrib,TVU_GRAPHICS\r
+   OR Mode.attrib,TVU_UNCHAINED\r
+   JMP SET_OUT\r
+\r
+SETMODE_F:\r
+   MOV SI,OFFSET MODE13H\r
+   CALL SETMODE\r
+\r
+   ; Turn off Chain 4\r
+   MOV DX,SEQ_ADDR\r
+   MOV AX,0604H\r
+   OUT DX,AX\r
+   ; Activate a synchronous reset\r
+   MOV AX,0100H\r
+   OUT DX,AX\r
+   ; Select 28 mhz pixel clock\r
+   MOV DX,MISC_ADDR\r
+   MOV AL,067H\r
+   OUT DX,AL\r
+   ; Release synchronous reset\r
+   MOV DX,SEQ_ADDR\r
+   MOV AX,0300H\r
+   OUT DX,AX\r
+\r
+   ; change the vertical resolution flags to 350\r
+   MOV DX,03CCH\r
+   IN AL,DX\r
+   AND AL,02Fh\r
+   OR AL,080h\r
+   MOV DX,MISC_ADDR\r
+   OUT DX,AL\r
+   CALL SETPALETTE256\r
+\r
+   MOV DX,CRTC_ADDR\r
+   ; turn off write protect\r
+   MOV AX,02C11H\r
+   OUT DX,AX\r
+\r
+   MOV AX,06B00H\r
+   OUT DX,AX\r
+   MOV AX,05901H\r
+   OUT DX,AX\r
+   MOV AX,05A02H\r
+   OUT DX,AX\r
+   MOV AX,08E03H\r
+   OUT DX,AX\r
+   MOV AX,05E04H\r
+   OUT DX,AX\r
+   MOV AX,08A05H\r
+   OUT DX,AX\r
+   MOV AX,0BF06H\r
+   OUT DX,AX\r
+   MOV AX,01F07H\r
+   OUT DX,AX\r
+   MOV AX,00008H\r
+   OUT DX,AX\r
+   MOV AX,04009H\r
+   OUT DX,AX\r
+   MOV AX,0000AH\r
+   OUT DX,AX\r
+   MOV AX,0000BH\r
+   OUT DX,AX\r
+   MOV AX,0000DH\r
+   OUT DX,AX\r
+   MOV AX,0000CH\r
+   OUT DX,AX\r
+   MOV AX,0000EH\r
+   OUT DX,AX\r
+   MOV AX,0000FH\r
+   OUT DX,AX\r
+   MOV AX,08310H\r
+   OUT DX,AX\r
+   MOV AX,08511H\r
+   OUT DX,AX\r
+   MOV AX,05D12H\r
+   OUT DX,AX\r
+   MOV AX,02D13H\r
+   OUT DX,AX\r
+   MOV AX,00014H\r
+   OUT DX,AX\r
+   MOV AX,06315H\r
+   OUT DX,AX\r
+   MOV AX,0BA16H\r
+   OUT DX,AX\r
+   MOV AX,0E317H\r
+   OUT DX,AX\r
+   MOV AX,0FF18H\r
+   OUT DX,AX\r
+\r
+   CALL SETPALETTE256\r
+\r
+   MOV Mode.mode_width,360;\r
+   MOV Mode.mode_height,350;\r
+   MOV Mode.width_bytes,31500;\r
+   MOV Mode.colors,256;\r
+   MOV Mode.attrib,TVU_GRAPHICS\r
+   OR Mode.attrib,TVU_UNCHAINED\r
+   JMP SET_OUT\r
+\r
+SETMODE_G:\r
+   MOV SI,OFFSET MODE13H\r
+   CALL SETMODE\r
+\r
+   ; Turn off Chain 4\r
+   MOV DX,SEQ_ADDR\r
+   MOV AX,0604H\r
+   OUT DX,AX\r
+   ; Activate a synchronous reset\r
+   MOV AX,0100H\r
+   OUT DX,AX\r
+   ; Select 28 mhz pixel clock\r
+   MOV DX,MISC_ADDR\r
+   MOV AL,067H\r
+   OUT DX,AL\r
+   ; Release synchronous reset\r
+   MOV DX,SEQ_ADDR\r
+   MOV AX,0300H\r
+   OUT DX,AX\r
+\r
+   ; change the vertical resolution flags to 400\r
+   MOV DX,03CCH\r
+   IN AL,DX\r
+   AND AL,02Fh\r
+   OR AL,040h\r
+   MOV DX,MISC_ADDR\r
+   OUT DX,AL\r
+\r
+   MOV DX,CRTC_ADDR\r
+   ; turn off write protect\r
+   MOV AX,02C11H\r
+   OUT DX,AX\r
+\r
+   MOV AX,06B00H\r
+   OUT DX,AX\r
+   MOV AX,05901H\r
+   OUT DX,AX\r
+   MOV AX,05A02H\r
+   OUT DX,AX\r
+   MOV AX,08E03H\r
+   OUT DX,AX\r
+   MOV AX,05E04H\r
+   OUT DX,AX\r
+   MOV AX,08A05H\r
+   OUT DX,AX\r
+   MOV AX,00008H\r
+   OUT DX,AX\r
+   MOV AX,04009H\r
+   OUT DX,AX\r
+   MOV AX,0000AH\r
+   OUT DX,AX\r
+   MOV AX,0000BH\r
+   OUT DX,AX\r
+   MOV AX,0000DH\r
+   OUT DX,AX\r
+   MOV AX,0000CH\r
+   OUT DX,AX\r
+   MOV AX,0000EH\r
+   OUT DX,AX\r
+   MOV AX,0000FH\r
+   OUT DX,AX\r
+   MOV AX,0AC11H\r
+   OUT DX,AX\r
+   MOV AX,02D13H\r
+   OUT DX,AX\r
+   MOV AX,00014H\r
+   OUT DX,AX\r
+   MOV AX,0E317H\r
+   OUT DX,AX\r
+   MOV AX,0FF18H\r
+   OUT DX,AX\r
+\r
+   CALL SETPALETTE256\r
+\r
+   MOV Mode.mode_width,360;\r
+   MOV Mode.mode_height,400;\r
+   MOV Mode.width_bytes,36000;\r
+   MOV Mode.colors,256;\r
+   MOV Mode.attrib,TVU_GRAPHICS\r
+   OR Mode.attrib,TVU_UNCHAINED\r
+   JMP SET_OUT\r
+\r
+SETMODE_H:\r
+\r
+   MOV SI,OFFSET MODE13H\r
+   CALL SETMODE\r
+\r
+   ; Turn off Chain4\r
+   MOV DX,SEQ_ADDR\r
+   MOV AX,0604H\r
+   OUT DX,AX\r
+\r
+   ; Activate a synchronous reset\r
+   MOV AX,0100H\r
+   OUT DX,AX\r
+\r
+   ; Select 28 mhz pixel clock\r
+   MOV DX,MISC_ADDR\r
+   MOV AL,067H\r
+   OUT DX,AL\r
+\r
+   ; Release synchronous reset\r
+   MOV DX,SEQ_ADDR\r
+   MOV AX,0300H\r
+   OUT DX,AX\r
+\r
+   ; change the vertical resolution flags to 480\r
+   MOV DX,03CCH\r
+   IN AL,DX\r
+   AND AL,02Fh\r
+   OR AL,0C0h\r
+   MOV DX,MISC_ADDR\r
+   OUT DX,AL\r
+\r
+\r
+   MOV DX,CRTC_ADDR\r
+   ; turn off write protect\r
+   MOV AX,02C11H\r
+   OUT DX,AX\r
+\r
+   MOV AX,06B00H\r
+   OUT DX,AX\r
+   MOV AX,05901H\r
+   OUT DX,AX\r
+   MOV AX,05A02H\r
+   OUT DX,AX\r
+   MOV AX,08E03H\r
+   OUT DX,AX\r
+   MOV AX,05E04H\r
+   OUT DX,AX\r
+   MOV AX,08A05H\r
+   OUT DX,AX\r
+   MOV AX,00D06H\r
+   OUT DX,AX\r
+   MOV AX,03E07H\r
+   OUT DX,AX\r
+   MOV AX,00008H\r
+   OUT DX,AX\r
+   MOV AX,04009H\r
+   OUT DX,AX\r
+   MOV AX,0000AH\r
+   OUT DX,AX\r
+   MOV AX,0000BH\r
+   OUT DX,AX\r
+   MOV AX,0000DH\r
+   OUT DX,AX\r
+   MOV AX,0000CH\r
+   OUT DX,AX\r
+   MOV AX,0000EH\r
+   OUT DX,AX\r
+   MOV AX,0000FH\r
+   OUT DX,AX\r
+   MOV AX,0EA10H\r
+   OUT DX,AX\r
+   MOV AX,0AC11H\r
+   OUT DX,AX\r
+   MOV AX,0DF12H\r
+   OUT DX,AX\r
+   MOV AX,02D13H\r
+   OUT DX,AX\r
+   MOV AX,00014H\r
+   OUT DX,AX\r
+   MOV AX,0E715H\r
+   OUT DX,AX\r
+   MOV AX,00616H\r
+   OUT DX,AX\r
+   MOV AX,0E317H\r
+   OUT DX,AX\r
+   MOV AX,0FF18H\r
+   OUT DX,AX\r
+\r
+   CALL SETPALETTE256\r
+\r
+   MOV Mode.mode_width,360;\r
+   MOV Mode.mode_height,480;\r
+   MOV Mode.width_bytes,43200;\r
+   MOV Mode.colors,256;\r
+   MOV Mode.attrib,TVU_GRAPHICS\r
+   OR Mode.attrib,TVU_UNCHAINED\r
+   JMP SET_OUT\r
+\r
+SETMODE_I:\r
+   MOV SI,OFFSET MODE10H\r
+   CALL SETMODE\r
+\r
+   MOV DX,03CCH\r
+   IN AL,DX\r
+   AND AL,03FH\r
+   OR AL,40H\r
+\r
+   MOV DX,03C2H\r
+   OUT DX,AL\r
+\r
+   MOV DX,CRTC_ADDR\r
+   MOV AX,9C10H\r
+   OUT DX,AX\r
+   IODELAY\r
+\r
+   MOV AX,8311H\r
+   OUT DX,AX\r
+   IODELAY\r
+\r
+   MOV AX,8F12H\r
+   OUT DX,AX\r
+   IODELAY\r
+\r
+   MOV AX,9615H\r
+   OUT DX,AX\r
+   IODELAY\r
+\r
+   MOV AX,0B916H\r
+   OUT DX,AX\r
+   IODELAY\r
+\r
+   CALL SETPALETTE16\r
+   MOV Mode.mode_width,640;\r
+   MOV Mode.mode_height,400;\r
+   MOV Mode.width_bytes,32000;\r
+   MOV Mode.colors,16;\r
+   MOV Mode.attrib,TVU_GRAPHICS\r
+   OR Mode.attrib,TVU_PLANAR\r
+   JMP SET_OUT\r
+\r
+SETMODE_J:\r
+   MOV SI,OFFSET MODEJ\r
+   CALL SETMODE\r
+   CALL SETPALETTE16\r
+\r
+   PUSH 8                 ; Bytes per character\r
+   PUSH 0                  ; Offset of font in Video Memory\r
+   PUSH 0A000H\r
+   PUSH FONT_8x8_OFF      ; Offset of Font in BIOS\r
+   PUSH 0C000H\r
+   CALL LOADFONT\r
+\r
+   MOV Mode.mode_width,80;\r
+   MOV Mode.mode_height,43;\r
+   MOV Mode.width_bytes,3440;\r
+   MOV Mode.colors,16;\r
+   MOV Mode.attrib,TVU_TEXT\r
+   JMP SET_OUT\r
+\r
+SETMODE_K:\r
+   MOV SI,OFFSET MODEK\r
+   CALL SETMODE\r
+   CALL SETPALETTE16\r
+\r
+   PUSH 8                 ; Bytes per character\r
+   PUSH 0                  ; Offset of font in Video Memory\r
+   PUSH 0A000H\r
+   PUSH FONT_8x8_OFF      ; Offset of Font in BIOS\r
+   PUSH 0C000H\r
+   CALL LOADFONT\r
+\r
+   MOV Mode.mode_width,80;\r
+   MOV Mode.mode_height,50;\r
+   MOV Mode.width_bytes,4000;\r
+   MOV Mode.colors,16;\r
+   MOV Mode.attrib,TVU_TEXT\r
+   JMP SET_OUT\r
+\r
+SETMODE_L:\r
+   MOV SI,OFFSET MODE_L\r
+   CALL SETMODE\r
+   CALL SETPALETTE16\r
+\r
+   PUSH 8                 ; Bytes per character\r
+   PUSH 0                  ; Offset of font in Video Memory\r
+   PUSH 0A000H\r
+   PUSH FONT_8x8_OFF      ; Offset of Font in BIOS\r
+   PUSH 0C000H\r
+   CALL LOADFONT\r
+\r
+   MOV Mode.mode_width,40;\r
+   MOV Mode.mode_height,43;\r
+   MOV Mode.width_bytes,3440;\r
+   MOV Mode.colors,16;\r
+   MOV Mode.attrib,TVU_TEXT\r
+   JMP SET_OUT\r
+\r
+SETMODE_M:\r
+   MOV SI,OFFSET MODEM\r
+   CALL SETMODE\r
+   CALL SETPALETTE16\r
+\r
+   PUSH 8                 ; Bytes per character\r
+   PUSH 0                  ; Offset of font in Video Memory\r
+   PUSH 0A000H\r
+   PUSH FONT_8x8_OFF      ; Offset of Font in BIOS\r
+   PUSH 0C000H\r
+   CALL LOADFONT\r
+\r
+   MOV Mode.mode_width,40;\r
+   MOV Mode.mode_height,50;\r
+   MOV Mode.width_bytes,4000;\r
+   MOV Mode.colors,16;\r
+   MOV Mode.attrib,TVU_TEXT\r
+\r
+SET_OUT:\r
+\r
+   POP BP\r
+   RET 2\r
+SETVIDEOMODE ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+   PUBLIC SETMODE\r
+SETMODE PROC\r
+\r
+   ; Send MISC regs\r
+   MOV DX,MISC_ADDR\r
+   MOV AL,[SI]\r
+   OUT DX,AL\r
+   IODELAY\r
+   INC SI\r
+\r
+   MOV DX,STATUS_ADDR\r
+   MOV AL,[SI]\r
+   OUT DX,AL\r
+   IODELAY\r
+   INC SI\r
+\r
+   ; Send SEQ regs\r
+   MOV CX,0\r
+REG_LOOP:\r
+   MOV DX,SEQ_ADDR\r
+   MOV AL,CL\r
+   OUT DX,AL\r
+   IODELAY\r
+\r
+   MOV DX,SEQ_ADDR\r
+   INC DX\r
+   MOV AL,[SI]\r
+   OUT DX,AL\r
+   IODELAY\r
+   INC SI\r
+   INC CX\r
+   CMP CL,5\r
+   JL REG_LOOP\r
+\r
+   ; Clear Protection bits\r
+   MOV AH,0EH\r
+   MOV AL,11H\r
+   AND AH,7FH\r
+   MOV DX,CRTC_ADDR\r
+   OUT DX,AX\r
+   IODELAY\r
+\r
+   ; Send CRTC regs\r
+   MOV CX,0\r
+REG_LOOP2:\r
+   MOV DX,CRTC_ADDR\r
+   MOV AL,CL\r
+   OUT DX,AL\r
+   IODELAY\r
+\r
+   MOV DX,CRTC_ADDR\r
+   INC DX\r
+   MOV AL,[SI]\r
+   OUT DX,AL\r
+   IODELAY\r
+\r
+   INC SI\r
+   INC CX\r
+   CMP CL,25\r
+   JL REG_LOOP2\r
+\r
+   ; Send GRAPHICS regs\r
+   MOV CX,0\r
+REG_LOOP3:\r
+   MOV DX,GRACON_ADDR\r
+   MOV AL,CL\r
+   OUT DX,AL\r
+   IODELAY\r
+\r
+   MOV DX,GRACON_ADDR\r
+   INC DX\r
+   MOV AL,[SI]\r
+   OUT DX,AL\r
+   IODELAY\r
+\r
+   INC SI\r
+   INC CX\r
+   CMP CL,9\r
+   JL REG_LOOP3\r
+\r
+   MOV DX,STATUS_ADDR\r
+   IN AL,DX\r
+   IODELAY\r
+\r
+   ; Send ATTRCON regs\r
+   MOV CX,0\r
+REG_LOOP4:\r
+   MOV DX,ATTRCON_ADDR\r
+   IN AX,DX\r
+\r
+   MOV AL,CL\r
+   OUT DX,AL\r
+   IODELAY\r
+\r
+   MOV AL,[SI]\r
+   OUT DX,AL\r
+   IODELAY\r
+\r
+   INC SI\r
+   INC CX\r
+   CMP CL,21\r
+   JL REG_LOOP4\r
+\r
+   MOV AL,20H\r
+   OUT DX,AL\r
+   IODELAY\r
+\r
+   RET\r
+SETMODE ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+; Assumes [bp+4] = color\r
+; Assumes [bp+6] = r value\r
+; Assumes [bp+8] = g value\r
+; Assumes [bp+10] = b value\r
+   PUBLIC SETPAL\r
+SETPAL PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+   PUSHA\r
+\r
+   MOV AX,WORD PTR [BP+4]\r
+   ; Send color\r
+   MOV DX,03C8H\r
+   OUT DX,AL\r
+\r
+   ; Write R value\r
+   MOV DX,03C9H\r
+   MOV AL,BYTE PTR [BP+6]\r
+   OUT DX,AL\r
+\r
+   ; Write G value\r
+   MOV DX,03C9H\r
+   MOV AL,BYTE PTR [BP+8]\r
+   OUT DX,AL\r
+\r
+   ; Write B value\r
+   MOV DX,03C9H\r
+   MOV AL,BYTE PTR [BP+10]\r
+   OUT DX,AL\r
+\r
+   POPA\r
+   POP BP\r
+   RET 8\r
+SETPAL ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+SETPALETTE4 PROC\r
+   PUSH 0\r
+   PUSH 0\r
+   PUSH 0\r
+   PUSH 0\r
+   CALL SETPAL\r
+\r
+   PUSH 42\r
+   PUSH 42\r
+   PUSH 0\r
+   PUSH 1\r
+   CALL SETPAL\r
+\r
+   PUSH 42\r
+   PUSH 0\r
+   PUSH 42\r
+   PUSH 2\r
+   CALL SETPAL\r
+\r
+   PUSH 63\r
+   PUSH 63\r
+   PUSH 63\r
+   PUSH 3\r
+   CALL SETPAL\r
+\r
+   RET\r
+SETPALETTE4 ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+SETPALETTE16 PROC\r
+\r
+   MOV SI,OFFSET PALETTE\r
+   MOV CX,16\r
+   MOV DX,0\r
+PAL_LOOP:\r
+   PUSH WORD PTR [SI+2]\r
+   PUSH WORD PTR [SI+1]\r
+   PUSH WORD PTR [SI]\r
+   PUSH DX\r
+   CALL SETPAL\r
+\r
+   INC DX\r
+   ADD SI,3\r
+   LOOP PAL_LOOP\r
+\r
+   RET\r
+SETPALETTE16 ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+SETPALETTE256 PROC\r
+\r
+   MOV SI,OFFSET PALETTE\r
+   MOV CX,256\r
+   MOV DX,0\r
+PAL_LOOP2:\r
+   PUSH WORD PTR [SI+2]\r
+   PUSH WORD PTR [SI+1]\r
+   PUSH WORD PTR [SI]\r
+   PUSH DX\r
+   CALL SETPAL\r
+\r
+   INC DX\r
+   ADD SI,3\r
+   LOOP PAL_LOOP2\r
+\r
+   RET\r
+SETPALETTE256 ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
diff --git a/16/tauron30/ASM_SRC/MODES.INC b/16/tauron30/ASM_SRC/MODES.INC
new file mode 100755 (executable)
index 0000000..3c8a84a
--- /dev/null
@@ -0,0 +1,196 @@
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=-                                                                         -=\r
+;=-                   Tauron VGA Utilities Version 3.0                      -=\r
+;=-                      Released September 20, 1998                        -=\r
+;=-                                                                         -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+;=- All Rights Reserved.                     =-= that you put my name some- -=\r
+;=-                                          =-= where in your credits.     -=\r
+;=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- I assume no responsibility whatsoever for any effect that this package, -=\r
+;=- the information contained therein or the use thereof has on you, your   -=\r
+;=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+;=- you or your existance. No warranty is provided nor implied with this    -=\r
+;=- source code.                                                            -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- VGA register variables for the various videomodes                       -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+; Same as Mode 01H\r
+MODE00H DB 67H, 00H,  03H,08H,03H,00H,02H\r
+        DB 2DH,27H,28H,90H,2BH,0A0H,0BFH,1FH,00H,4FH,06H,07H,00H,00H,00H,31H\r
+        DB 9CH,8EH,8FH,14H,1FH,96H,0B9H,0A3H,0FFH\r
+        DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH\r
+        DB 00H,01H,02H,03H,04H,05H,14H,07H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH\r
+        DB 0CH,00H,0FH,08H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+; Same as Mode 02H\r
+MODE03H DB 67H, 00H,  03H,00H,03H,00H,02H\r
+        DB 5FH,4FH,50H,82H,55H,81H,0BFH,1FH,00H,4FH,0EH,0FH,00H,00H,00H,00H\r
+        DB 9CH,0EH,8FH,28H,01H,96H,0B9H,0A3H,0FFH\r
+        DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH\r
+        DB 00H,01H,02H,03H,04H,05H,14H,07H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH\r
+        DB 0CH,00H,0FH,08H,00H\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+; Same as Mode 05H\r
+MODE04H DB 63H, 00H,  03H,09H,03H,00H,02H\r
+        DB 2DH,27H,28H,90H,2BH,80H,0BFH,1FH,00H,0C1H,00H,00H,00H,00H,00H,31H\r
+        DB 9CH,8EH,8FH,14H,00H,96H,0B9H,0A2H,0FFH\r
+        DB 00H,00H,00H,00H,00H,30H,0FH,00H,0FFH\r
+        DB 00H,3BH,3DH,3FH,02H,04H,06H,07H,10H,11H,12H,13H,14H,15H,16H,17H\r
+        DB 01H,00H,03H,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODE06H DB 63H, 00H,  03H,01H,01H,00H,06H\r
+        DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,0C1H,00H,00H,00H,00H,00H,00H\r
+        DB 9CH,8EH,8FH,28H,00H,96H,0B9H,0C2H,0FFH\r
+        DB 00H,00H,00H,00H,00H,00H,0DH,00H,0FFH\r
+        DB 00H,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH\r
+        DB 01H,00H,01H,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODE07H DB 066H, 00H,  03H,00H,03H,00H,02H\r
+        DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH\r
+        DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH\r
+        DB 00H,00H,00H,00H,00H,10H,0AH,00H,0FFH\r
+        DB 00H,08H,08H,08H,08H,08H,08H,08H,10H,18H,18H,18H,18H,18H,18H,18H\r
+        DB 0EH,00H,0FH,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODE0DH DB 063H, 00H,  03H,09H,0FH,00H,06H\r
+        DB 2DH,27H,28H,90H,2BH,80H,0BFH,1FH,00H,0C0H,00H,00H,00H,00H,00H,31H\r
+        DB 9CH,8EH,8FH,14H,00H,96H,0B9H,0E3H,0FFH\r
+        DB 00H,00H,00H,00H,00H,10H,05H,00H,0FFH\r
+        DB 00H,01H,02H,03H,04H,05H,14H,07H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH\r
+        DB 01H,00H,0FH,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODE0EH DB 63H, 00H,  03H,01H,0FH,00H,06H\r
+        DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,0C0H,00H,00H,00H,00H,00H,59H\r
+        DB 9CH,8EH,8FH,28H,00H,96H,0B9H,0E3H,0FFH\r
+        DB 00H,00H,00H,00H,00H,00H,05H,0FH,0FFH\r
+        DB 00H,01H,02H,03H,04H,05H,14H,07H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH\r
+        DB 01H,00H,0FH,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODE0FH DB 0A2H, 00H,  03H,01H,0FH,00H,06H\r
+        DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH\r
+        DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH\r
+        DB 00H,00H,00H,00H,00H,00H,05H,05H,0FFH\r
+        DB 00H,08H,00H,00H,18H,18H,00H,00H,00H,08H,00H,00H,00H,18H,00H,00H\r
+        DB 0BH,00H,05H,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODE10H DB 0A3H, 00H,  03H,01H,0FH,00H,06H\r
+        DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,40H,00H,00H,00H,00H,00H,00H\r
+        DB 83H,85H,5DH,28H,0FH,63H,0BAH,0E3H,0FFH\r
+        DB 00H,00H,00H,00H,00H,00H,05H,0FH,0FFH\r
+        DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH\r
+        DB 01H,00H,0FH,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODE11H DB 063H, 00H,  03H,01H,0FH,00H,06H\r
+        DB 5FH,4FH,50H,82H,54H,80H,0BH,3EH,00H,40H,00H,00H,00H,00H,00H,59H\r
+        DB 0EAH,8CH,0DFH,28H,0FH,0E7H,004H,0C3H,0FFH\r
+        DB 00H,00H,00H,00H,00H,00H,05H,05H,0FFH\r
+        DB 00H,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH\r
+        DB 01H,00H,0FH,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODE12H DB 063H, 00H,  03H,01H,0FH,00H,06H\r
+        DB 5FH,4FH,50H,82H,54H,80H,0BH,3EH,00H,40H,00H,00H,00H,00H,00H,59H\r
+        DB 0EAH,8CH,0DFH,28H,00H,0E7H,04H,0E3H,0FFH\r
+        DB 00H,00H,00H,00H,00H,00H,05H,0FH,0FFH\r
+        DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH\r
+        DB 01H,00H,0FH,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODE13H DB 63H, 00H,  03H,01H,0FH,00H,0EH\r
+        DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,41H,00H,00H,00H,00H,00H,00H\r
+        DB 9CH,0EH,8FH,28H,40H,96H,0B9H,0A3H,0FFH\r
+        DB 00H,00H,00H,00H,00H,40H,05H,0FH,0FFH\r
+        DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH\r
+        DB 41H,00H,0FH,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+CHAIN4 DB 63H, 00H,  03H,01H,0FH,00H,06H\r
+       DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,41H,00H,00H,00H,00H,00H,00H\r
+       DB 9CH,0EH,8FH,28H,00H,96H,0B9H,0E3H,0FFH\r
+       DB 00H,00H,00H,00H,00H,40H,05H,0FH,0FFH\r
+       DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH\r
+       DB 41H,00H,0FH,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODEJ DB 63H, 00H, 03H,01H,03H,00H,02H\r
+      DB 5FH,4FH,50H,82H,55H,81H,0BFH,1FH,00H,47H,06H,07H,00H,00H,00H\r
+      DB 00H,83H,85H,57H,28H,1FH,60H,0B8H,0A3H,0FFH\r
+      DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH\r
+      DB 00H,01H,02H,03H,04H,05H,14H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH\r
+      DB 0CH,00H,0FH,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODEK DB 63H, 00H, 03H,01H,03H,00H,02H\r
+      DB 5FH,4FH,50H,82H,55H,81H,0BFH,1FH,00H,47H,06H,07H,00H,00H,00H\r
+      DB 00H,9CH,8EH,8FH,28H,1FH,96H,0B9H,0A3H,0FFH\r
+      DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH\r
+      DB 00H,01H,02H,03H,04H,05H,14H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH\r
+      DB 0CH,00H,0FH,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+\r
+MODE_L DB 67H, 00H, 03H,08H,03H,00H,02H\r
+       DB 2DH,27H,28H,90H,2BH,0A0H,0BFH,1FH,00H,47H,06H,07H,00H,00H,00H\r
+       DB 31H,83H,85H,57H,14H,1FH,60H,0B8H,0A3H,0FFH\r
+       DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH\r
+       DB 00H,01H,02H,03H,04H,05H,14H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH\r
+       DB 0CH,00H,0FH,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODEM DB 67H, 00H,  03H,08H,03H,00H,02H\r
+      DB 2DH,27H,28H,90H,2BH,0A0H,0BFH,1FH,00H,47H,06H,07H,00H,00H,00H,31H\r
+      DB 9CH,8EH,8FH,14H,1FH,96H,0B9H,0A3H,0FFH\r
+      DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH\r
+      DB 00H,01H,02H,03H,04H,05H,14H,07H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH\r
+      DB 0CH,00H,0FH,00H,00H\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+; Videomode Structure Definition\r
+VMODE STRUC\r
+   videomode      DW ?   ; Videomode Number\r
+   mode_width     DW ?   ; Width in pixels\r
+   mode_height    DW ?   ; height in pixels\r
+   width_bytes    DW ?   ; Number of bytes per screen\r
+   colors         DW ?   ; Number of colors\r
+   attrib         DW ?   ; Videomode attributes\r
+VMODE ENDS\r
+\r
+; Videomode attributes\r
+TVU_TEXT           EQU        0001h\r
+TVU_GRAPHICS       EQU        0002h\r
+TVU_MONOCHROME     EQU        0004h\r
+TVU_PLANAR         EQU        0008h\r
+TVU_UNCHAINED      EQU        0010h\r
+TVU_B8000_ADDR     EQU        0020h\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+; Videomode Info Structure\r
+MODE VMODE <MODE03H, 80, 25, 2000, 16, TVU_TEXT>\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
diff --git a/16/tauron30/ASM_SRC/TESTS.ASM b/16/tauron30/ASM_SRC/TESTS.ASM
new file mode 100755 (executable)
index 0000000..7401c0e
--- /dev/null
@@ -0,0 +1,676 @@
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=-                                                                         -=\r
+;=-                   Tauron VGA Utilities Version 3.0                      -=\r
+;=-                      Released September 20, 1998                        -=\r
+;=-                                                                         -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+;=- All Rights Reserved.                     =-= that you put my name some- -=\r
+;=-                                          =-= where in your credits.     -=\r
+;=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+;=- I assume no responsibility whatsoever for any effect that this package, -=\r
+;=- the information contained therein or the use thereof has on you, your   -=\r
+;=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+;=- you or your existance. No warranty is provided nor implied with this    -=\r
+;=- source code.                                                            -=\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+PIXEL PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+   PUSHA\r
+\r
+   TEST Mode.attrib,TVU_PLANAR\r
+   JNZ PLANAR_PIXEL\r
+   CMP Mode.videomode,VMODE_13H\r
+   JE MODE_13H_PIXEL\r
+\r
+; Unchained Modes Pixel\r
+   MOV AX,0A000H   ;    video memory segment number\r
+   MOV ES,AX       ;    place it in es\r
+\r
+   MOV DX,03C4H\r
+   MOV AL,2\r
+   OUT DX,AL\r
+   INC DX\r
+\r
+   MOV AL,1\r
+   MOV CX,word ptr [bp+4]\r
+   AND CX,3\r
+   SHL AL,CL\r
+   OUT DX,AL\r
+\r
+   XOR DI,DI\r
+\r
+; Calculate the Offset\r
+   mov ax,Mode.mode_width  ; width / 4\r
+   SHR AX,2\r
+   mul word ptr [bp+6]         ; (Y * (width / 4))\r
+   mov bx,word ptr [bp+4]      ; (X / 4) + (Y * (width / 4))\r
+   shr bx,2\r
+   add ax,bx\r
+; Done!\r
+\r
+   ADD DI,AX\r
+   mov ah,byte ptr [bp+8]   ;    move the Color into ah\r
+   mov es:[di],ah ;    move the value to the screen\r
+   JMP PIXEL_OUT\r
+\r
+PLANAR_PIXEL:\r
+   MOV AX,0A000H   ;    video memory segment number\r
+   MOV ES,AX       ;    place it in es\r
+\r
+   MOV BX,word ptr [bp+4]        ;    X Value\r
+   MOV CX,BX\r
+   MOV AX,word ptr [bp+6]        ;    Y Value\r
+   MOV SI,80\r
+   MUL SI\r
+   SHR BX,3        ;    /8\r
+   ADD AX,BX\r
+   MOV DI,AX\r
+\r
+   AND CL,7\r
+   XOR CL,7\r
+   MOV AH,1\r
+\r
+   SHL AH,CL\r
+\r
+   MOV DX,03CEH\r
+   MOV AL,8\r
+   OUT DX,AX\r
+\r
+   MOV AL,0\r
+   XCHG ES:[DI],AL\r
+\r
+   MOV DX,03C4H\r
+   MOV AH,byte ptr [bp+8]\r
+   MOV AL,2\r
+   OUT DX,AX\r
+\r
+   MOV BYTE PTR ES:[DI],0FFh\r
+\r
+   MOV AX,0F02H\r
+   OUT DX,AX\r
+\r
+   MOV DX,03CEH\r
+   MOV AX,0FF08h\r
+   OUT DX,AX\r
+   JMP PIXEL_OUT\r
+\r
+MODE_13H_PIXEL:\r
+\r
+   MOV AX,0A000H   ;    video memory segment number\r
+   MOV ES,AX       ;    place it in es\r
+   XOR DI,DI\r
+\r
+; Calculate the Offset\r
+   mov ax,Mode.mode_width      ; width\r
+   mul word ptr [bp+6]         ; (Y * width))\r
+   mov bx,word ptr [bp+4]      ; (X + (Y * width))\r
+   add ax,bx\r
+; Done!\r
+\r
+   ADD DI,AX\r
+   mov ah,byte ptr [bp+8]   ;    move the Color into ah\r
+   mov es:[di],ah ;    move the value to the screen\r
+\r
+PIXEL_OUT:\r
+\r
+   POPA\r
+   POP BP\r
+   RET 6\r
+PIXEL ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+HLINE PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+   PUSHA\r
+\r
+   MOV CX,WORD PTR [BP+4]\r
+HLINE_LOOP:\r
+   PUSH WORD PTR [BP+10]   ; Color\r
+   PUSH WORD PTR [BP+8]    ; Y value\r
+   PUSH CX                 ; X value\r
+   CALL PIXEL\r
+   INC CX\r
+   CMP CX,WORD PTR [BP+6]\r
+   JLE HLINE_LOOP\r
+\r
+   POPA\r
+   POP BP\r
+   RET 8\r
+HLINE ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+VLINE PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+   PUSHA\r
+\r
+   MOV CX,WORD PTR [BP+4]\r
+VLINE_LOOP:\r
+   PUSH WORD PTR [BP+10]   ; Color\r
+   PUSH CX                 ; Y value\r
+   PUSH WORD PTR [BP+8]    ; X value\r
+   CALL PIXEL\r
+   INC CX\r
+   CMP CX,WORD PTR [BP+6]\r
+   JLE VLINE_LOOP\r
+\r
+   POPA\r
+   POP BP\r
+   RET 8\r
+VLINE ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+DRAWRECT PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+\r
+   PUSH WORD PTR [BP+12]\r
+   PUSH WORD PTR [BP+6]\r
+   PUSH WORD PTR [BP+8]\r
+   PUSH WORD PTR [BP+4]\r
+   CALL HLINE\r
+\r
+   PUSH WORD PTR [BP+12]\r
+   PUSH WORD PTR [BP+10]\r
+   PUSH WORD PTR [BP+8]\r
+   PUSH WORD PTR [BP+4]\r
+   CALL HLINE\r
+\r
+   PUSH WORD PTR [BP+12]\r
+   PUSH WORD PTR [BP+4]\r
+   PUSH WORD PTR [BP+10]\r
+   PUSH WORD PTR [BP+6]\r
+   CALL VLINE\r
+\r
+   PUSH WORD PTR [BP+12]\r
+   PUSH WORD PTR [BP+8]\r
+   PUSH WORD PTR [BP+10]\r
+   PUSH WORD PTR [BP+6]\r
+   CALL VLINE\r
+\r
+   POP BP\r
+   RET 10\r
+DRAWRECT ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+FILLRECT PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+   PUSHA\r
+\r
+   MOV CX,WORD PTR [BP+6]\r
+HLINE_LOOP2:\r
+   PUSH WORD PTR [BP+12]   ; Color\r
+   PUSH CX                 ; Y1 value\r
+   PUSH WORD PTR [BP+8]    ; X2 value\r
+   PUSH WORD PTR [BP+4]    ; X1 value\r
+   CALL HLINE\r
+\r
+   INC CX\r
+   CMP CX,WORD PTR [BP+10] ; Y2 value\r
+   JLE HLINE_LOOP2\r
+\r
+   POPA\r
+   POP BP\r
+   RET 10\r
+FILLRECT ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+MODETEST PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+   SUB SP,2\r
+\r
+   TEST Mode.attrib,TVU_PLANAR\r
+   JNZ PLANAR_CLEAR\r
+   CMP Mode.videomode,VMODE_13H\r
+   JNE UNCHAINED_CLEAR\r
+\r
+   PUSH 0\r
+   CALL CLEAR13H\r
+   JMP CLEAROUT\r
+\r
+PLANAR_CLEAR:\r
+   PUSH 0\r
+   CALL PLANARCLEAR\r
+   JMP CLEAROUT\r
+\r
+UNCHAINED_CLEAR:\r
+   PUSH 0\r
+   CALL UNCHAINEDCLEAR\r
+\r
+CLEAROUT:\r
+\r
+   PUSH 15\r
+\r
+   MOV AX,Mode.mode_height\r
+   DEC AX\r
+   PUSH AX\r
+\r
+   MOV AX,Mode.mode_width\r
+   DEC AX\r
+   PUSH AX\r
+\r
+   PUSH 0\r
+   PUSH 0\r
+   CALL DRAWRECT\r
+\r
+   MOV CX,50\r
+LINE_LOOP:\r
+   PUSH 15\r
+   PUSH CX\r
+   PUSH 10\r
+   PUSH 0\r
+   CALL HLINE\r
+   ADD CX,50\r
+\r
+   PUSH 15\r
+   PUSH CX\r
+   PUSH 25\r
+   PUSH 0\r
+   CALL HLINE\r
+   ADD CX,50\r
+\r
+   CMP CX,Mode.mode_height\r
+   JLE LINE_LOOP\r
+\r
+   MOV CX,40\r
+LINE_LOOP2:\r
+   PUSH 15\r
+   PUSH CX\r
+   PUSH 15\r
+   PUSH 0\r
+   CALL VLINE\r
+   ADD CX,40\r
+\r
+   PUSH 15\r
+   PUSH CX\r
+   PUSH 30\r
+   PUSH 0\r
+   CALL VLINE\r
+   ADD CX,40\r
+\r
+   CMP CX,Mode.mode_width\r
+   JLE LINE_LOOP2\r
+\r
+   CMP Mode.colors,16\r
+   JE SETBLOCK16\r
+   CMP Mode.colors,256\r
+   JE SETBLOCK256\r
+\r
+   MOV AX,Mode.mode_width\r
+   SUB AX,420\r
+   MOV DI,AX\r
+   ADD DI,200\r
+   MOV BX,Mode.mode_height\r
+   SUB BX,220\r
+   MOV SI,BX\r
+   ADD SI,200\r
+\r
+   PUSH 0    ; Color\r
+   PUSH SI    ; Y2\r
+   PUSH DI    ; X2\r
+   PUSH BX    ; Y1\r
+   PUSH AX    ; X1\r
+   CALL FILLRECT\r
+   ADD AX,200\r
+   ADD DI,200\r
+   PUSH 15    ; Color\r
+   PUSH SI    ; Y2\r
+   PUSH DI    ; X2\r
+   PUSH BX    ; Y1\r
+   PUSH AX    ; X1\r
+   CALL FILLRECT\r
+\r
+   MOV AX,Mode.mode_width\r
+   SUB AX,420\r
+   MOV DI,AX\r
+   ADD DI,400\r
+   MOV BX,Mode.mode_height\r
+   SUB BX,220\r
+   MOV SI,BX\r
+   ADD SI,200\r
+\r
+   PUSH 15    ; Color\r
+   PUSH SI    ; Y2\r
+   PUSH DI    ; X2\r
+   PUSH BX    ; Y1\r
+   PUSH AX    ; X1\r
+   CALL DRAWRECT\r
+\r
+   JMP BLOCKOUT\r
+SETBLOCK16:\r
+\r
+   MOV AX,Mode.mode_width\r
+   SUB AX,522\r
+   MOV DI,AX\r
+   ADD DI,64\r
+\r
+   MOV BX,Mode.mode_height\r
+   SUB BX,135\r
+   MOV SI,BX\r
+   ADD SI,64\r
+   MOV CX,0\r
+   MOV DX,0\r
+LINE1_LOOP1:\r
+\r
+   PUSH DX    ; Color\r
+   PUSH SI    ; Y2\r
+   PUSH DI    ; X2\r
+   PUSH BX    ; Y1\r
+   PUSH AX    ; X1\r
+   CALL FILLRECT\r
+   ADD AX,64\r
+   ADD DI,64\r
+   INC CX\r
+   INC DX\r
+   CMP CX,8\r
+   JL LINE1_LOOP1\r
+\r
+   MOV AX,Mode.mode_width\r
+   SUB AX,522\r
+   MOV DI,AX\r
+   ADD DI,64\r
+   ADD SI,64\r
+   ADD BX,64\r
+   MOV CX,0\r
+LINE1_LOOP2:\r
+\r
+   PUSH DX    ; Color\r
+   PUSH SI    ; Y2\r
+   PUSH DI    ; X2\r
+   PUSH BX    ; Y1\r
+   PUSH AX    ; X1\r
+   CALL FILLRECT\r
+   ADD AX,64\r
+   ADD DI,64\r
+   INC CX\r
+   INC DX\r
+   CMP CX,8\r
+   JL LINE1_LOOP2\r
+\r
+   MOV AX,Mode.mode_width\r
+   SUB AX,522\r
+   MOV DI,Mode.mode_width\r
+   SUB DI,10\r
+   MOV BX,Mode.mode_height\r
+   SUB BX,135\r
+   MOV SI,Mode.mode_height\r
+   SUB SI,7\r
+   PUSH 15    ; Color\r
+   PUSH SI    ; Y2\r
+   PUSH DI    ; X2\r
+   PUSH BX    ; Y1\r
+   PUSH AX    ; X1\r
+   CALL DRAWRECT\r
+   JMP BLOCKOUT\r
+\r
+SETBLOCK256:\r
+\r
+   MOV WORD PTR [BP-2],0\r
+   MOV BX,Mode.mode_height\r
+   SUB BX,165\r
+   MOV SI,BX\r
+   ADD SI,10\r
+   MOV DX,0\r
+LINE2_LOOP2:\r
+\r
+   MOV AX,Mode.mode_width\r
+   SUB AX,165\r
+   MOV DI,Mode.mode_width\r
+   SUB DI,155\r
+\r
+   MOV CX,0\r
+LINE2_LOOP1:\r
+\r
+   PUSH DX    ; Color\r
+   PUSH SI    ; Y2\r
+   PUSH DI    ; X2\r
+   PUSH BX    ; Y1\r
+   PUSH AX    ; X1\r
+   CALL FILLRECT\r
+   ADD AX,10\r
+   ADD DI,10\r
+   INC CX\r
+   INC DX\r
+   CMP CX,16\r
+   JL LINE2_LOOP1\r
+\r
+   ADD BX,10\r
+   ADD SI,10\r
+   INC WORD PTR [BP-2]\r
+   CMP WORD PTR [BP-2],16\r
+   JL LINE2_LOOP2\r
+\r
+   MOV AX,Mode.mode_width\r
+   SUB AX,165\r
+   MOV DI,Mode.mode_width\r
+   SUB DI,5\r
+   MOV BX,Mode.mode_height\r
+   SUB BX,165\r
+   MOV SI,Mode.mode_height\r
+   SUB SI,5\r
+   PUSH 15    ; Color\r
+   PUSH SI    ; Y2\r
+   PUSH DI    ; X2\r
+   PUSH BX    ; Y1\r
+   PUSH AX    ; X1\r
+   CALL DRAWRECT\r
+\r
+BLOCKOUT:\r
+   ADD SP,2\r
+   POP BP\r
+   RET\r
+MODETEST ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+PUTCHAR PROC\r
+   PUSH BP\r
+   MOV BP,SP\r
+   SUB SP,2\r
+   PUSHA\r
+\r
+   CMP Mode.videomode,VMODE_00H\r
+   JE SET2\r
+   CMP Mode.videomode,VMODE_MODE_L\r
+   JE SET2\r
+   CMP Mode.videomode,VMODE_MODE_M\r
+   JE SET2\r
+   MOV BYTE PTR [BP-2],160\r
+   JMP NOSET2\r
+SET2:\r
+   MOV BYTE PTR [BP-2],80\r
+   JMP NOSET2\r
+NOSET2:\r
+\r
+   MOV AX,0B800h\r
+   MOV ES,AX\r
+\r
+   MOV AX,WORD PTR [BP+6] ; Y value\r
+   MOV BL,BYTE PTR [BP-2]\r
+   MUL BL\r
+   SHL WORD PTR [BP+4],1\r
+   ADD AX,WORD PTR [BP+4] ; X value\r
+   MOV DI,AX\r
+   MOV AH,ATT\r
+   MOV AL,BYTE PTR [BP+8] ; character\r
+   CLD\r
+   STOSW\r
+\r
+   POPA\r
+   ADD SP,2\r
+   POP BP\r
+   RET 6\r
+PUTCHAR ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+PRINTSTRING PROC\r
+\r
+TEXT_LOOP:\r
+   XOR DX,DX\r
+   MOV DL,BYTE PTR [SI]\r
+   PUSH DX\r
+   PUSH BX\r
+   PUSH AX\r
+   CALL PUTCHAR\r
+\r
+   INC AX\r
+   INC SI\r
+   CMP BYTE PTR [SI],0\r
+   JNE TEXT_LOOP\r
+   RET\r
+PRINTSTRING ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+TEXTTEST PROC\r
+   PUSH 1FH\r
+   CALL TEXTCLEAR\r
+\r
+   MOV AH,2h\r
+   MOV BH,0\r
+   MOV DX,Mode.mode_height\r
+   MOV DH,DL\r
+   MOV DL,0\r
+   INT 10h\r
+\r
+   CMP Mode.videomode,VMODE_00H\r
+   JE SET_TEXT1\r
+   CMP Mode.videomode,VMODE_MODE_J\r
+   JE SET_TEXT2\r
+   CMP Mode.videomode,VMODE_MODE_K\r
+   JE SET_TEXT3\r
+   CMP Mode.videomode,VMODE_MODE_L\r
+   JE SET_TEXT4\r
+   CMP Mode.videomode,VMODE_MODE_M\r
+   JE SET_TEXT5\r
+   ; Mode 03h\r
+   MOV TEXTMSG_2+13,'3'\r
+   MOV TEXTMSG_3+8,'8'\r
+   MOV TEXTMSG_4+19,'4'\r
+   JMP NOSET\r
+SET_TEXT1:\r
+   ; Mode 00h\r
+   MOV TEXTMSG_2+13,'0'\r
+   MOV TEXTMSG_3+8,'4'\r
+   MOV TEXTMSG_4+19,'2'\r
+   JMP NOSET\r
+SET_TEXT2:\r
+   ; Mode J\r
+   MOV TEXTMSG_8+11,'J'\r
+   MOV TEXTMSG_9+21,'4'\r
+   MOV TEXTMSG_9+22,'3'\r
+   MOV TEXTMSG_A+19,'3'\r
+   MOV TEXTMSG_A+20,'4'\r
+   MOV TEXTMSG_A+21,'4'\r
+   MOV TEXTMSG_A+22,'0'\r
+   JMP NOSET\r
+SET_TEXT3:\r
+   ; Mode K\r
+   MOV TEXTMSG_8+11,'K'\r
+   MOV TEXTMSG_9+21,'5'\r
+   MOV TEXTMSG_9+22,'0'\r
+   MOV TEXTMSG_A+19,'4'\r
+   MOV TEXTMSG_A+20,'0'\r
+   MOV TEXTMSG_A+21,'0'\r
+   MOV TEXTMSG_A+22,'0'\r
+   JMP NOSET\r
+SET_TEXT4:\r
+   ; Mode L\r
+   MOV TEXTMSG_8+11,'L'\r
+   MOV TEXTMSG_9+8,'4'\r
+   MOV TEXTMSG_9+21,'4'\r
+   MOV TEXTMSG_9+22,'3'\r
+   MOV TEXTMSG_A+19,'3'\r
+   MOV TEXTMSG_A+20,'4'\r
+   MOV TEXTMSG_A+21,'4'\r
+   MOV TEXTMSG_A+22,'0'\r
+   JMP NOSET\r
+SET_TEXT5:\r
+   ; Mode M\r
+   MOV TEXTMSG_8+11,'M'\r
+   MOV TEXTMSG_9+8,'4'\r
+   MOV TEXTMSG_9+21,'5'\r
+   MOV TEXTMSG_9+22,'0'\r
+   MOV TEXTMSG_A+19,'4'\r
+   MOV TEXTMSG_A+20,'0'\r
+   MOV TEXTMSG_A+21,'0'\r
+   MOV TEXTMSG_A+22,'0'\r
+NOSET:\r
+\r
+   CMP Mode.videomode,VMODE_00H\r
+   JE WRITE1\r
+   CMP Mode.videomode,VMODE_03H\r
+   JE WRITE1\r
+   CMP Mode.videomode,VMODE_MODE_J\r
+   JE WRITE2\r
+   JMP WRITE2\r
+\r
+WRITE1:\r
+   MOV BX,0\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_1\r
+   CALL PRINTSTRING\r
+   MOV BX,1\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_2\r
+   CALL PRINTSTRING\r
+   MOV BX,2\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_3\r
+   CALL PRINTSTRING\r
+   MOV BX,3\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_4\r
+   CALL PRINTSTRING\r
+   MOV BX,4\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_5\r
+   CALL PRINTSTRING\r
+   MOV BX,5\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_6\r
+   CALL PRINTSTRING\r
+   JMP WRITEOUT\r
+\r
+WRITE2:\r
+   MOV BX,0\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_7\r
+   CALL PRINTSTRING\r
+   MOV BX,1\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_8\r
+   CALL PRINTSTRING\r
+   MOV BX,2\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_9\r
+   CALL PRINTSTRING\r
+   MOV BX,3\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_A\r
+   CALL PRINTSTRING\r
+   MOV BX,4\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_B\r
+   CALL PRINTSTRING\r
+   MOV BX,5\r
+   MOV AX,0\r
+   MOV SI,OFFSET TEXTMSG_C\r
+   CALL PRINTSTRING\r
+WRITEOUT:\r
+   RET\r
+TEXTTEST ENDP\r
+\r
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
diff --git a/16/tauron30/C_SRC/CLEAR.CPP b/16/tauron30/C_SRC/CLEAR.CPP
new file mode 100755 (executable)
index 0000000..e201a05
--- /dev/null
@@ -0,0 +1,180 @@
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=-                                                                         -=\r
+//=-                   Tauron VGA Utilities Version 3.0                      -=\r
+//=-                      Released September 20, 1998                        -=\r
+//=-                                                                         -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+//=- All Rights Reserved.                     =-= that you put my name some- -=\r
+//=-                                          =-= where in your credits.     -=\r
+//=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- I assume no responsibility whatsoever for any effect that this package, -=\r
+//=- the information contained therein or the use thereof has on you, your   -=\r
+//=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+//=- you or your existance. No warranty is provided nor implied with this    -=\r
+//=- source code.                                                            -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+#include <stdlib.h>\r
+#include <stdio.h>\r
+#include <conio.h>\r
+#include <dos.h>\r
+#include "tauron.h"\r
+\r
+void TextClear(char attrib)\r
+{\r
+   unsigned int bytes = Mode.width_bytes;\r
+   asm {\r
+   MOV AX,0B800H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV AH,attrib\r
+   MOV AL,' '\r
+   MOV CX,bytes\r
+   CLD\r
+   REP STOSW\r
+   }\r
+}\r
+\r
+void Clear04H()\r
+{\r
+   unsigned int bytes = Mode.width_bytes;\r
+   asm {\r
+   MOV AX,0B800H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV AX,0AAAAH\r
+   CLD\r
+   MOV CX,bytes\r
+   REP STOSW\r
+   }\r
+}\r
+\r
+void Clear06H()\r
+{\r
+   unsigned int bytes = Mode.width_bytes;\r
+   asm {\r
+   MOV AX,0B800H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV AX,0FFFFH\r
+   CLD\r
+   MOV CX,bytes\r
+   REP STOSW\r
+   }\r
+}\r
+\r
+void Clear0DH(char color)\r
+{\r
+   unsigned int bytes = Mode.width_bytes/2;\r
+   asm {\r
+   MOV AX,0A000H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV CX,bytes\r
+   }\r
+CLEAR_LOOP:\r
+   asm {\r
+   MOV DX,03CEH\r
+   MOV AX,0FF08H\r
+   OUT DX,AX\r
+\r
+   MOV AX,0\r
+   XCHG WORD PTR ES:[DI],AX\r
+\r
+   MOV DX,03C4H\r
+   MOV AH,color\r
+   MOV AL,2\r
+   OUT DX,AX\r
+\r
+   MOV WORD PTR ES:[DI],0FFFFH\r
+\r
+   MOV AX,0F02H\r
+   OUT DX,AX\r
+\r
+   MOV DX,03CEH\r
+   MOV AX,0FF08h\r
+   OUT DX,AX\r
+\r
+   ADD DI,2\r
+   LOOP CLEAR_LOOP\r
+   }\r
+}\r
+\r
+void PlanarClear(char Color)\r
+{\r
+   unsigned int bytes = Mode.width_bytes/2;\r
+   asm {\r
+   MOV AX,0A000H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV CX,bytes\r
+   }\r
+CLEAR_LOOP:\r
+   asm {\r
+   MOV DX,03CEH\r
+   MOV AX,0FF08H\r
+   OUT DX,AX\r
+\r
+   MOV AX,0\r
+   XCHG WORD PTR ES:[DI],AX\r
+\r
+   MOV DX,03C4H\r
+   MOV AH,Color\r
+   MOV AL,2\r
+   OUT DX,AX\r
+\r
+   MOV WORD PTR ES:[DI],0FFFFH\r
+\r
+   MOV AX,0F02H\r
+   OUT DX,AX\r
+\r
+   MOV DX,03CEH\r
+   MOV AX,0FF08h\r
+   OUT DX,AX\r
+\r
+   ADD DI,2\r
+   LOOP CLEAR_LOOP\r
+   }\r
+}\r
+\r
+void Clear13H(char Color)\r
+{\r
+   asm {\r
+   MOV AX,0A000H\r
+   MOV ES,AX\r
+   XOR DI,DI\r
+\r
+   MOV AL,Color\r
+   MOV AH,AL\r
+   CLD\r
+   MOV CX,8000H\r
+   REP STOSW\r
+   }\r
+}\r
+\r
+void UnchainedClear(char Color)\r
+{\r
+   unsigned int bytes = Mode.width_bytes/2;\r
+   asm {\r
+   mov   dx, 03C4h         // 03c4h\r
+   mov   al, 2             // Map Mask Register\r
+   out   dx, al\r
+   inc   dx\r
+   mov   al,00001111B      // Select all planes to write to\r
+   out   dx, al            // Doing this to clear all planes at once\r
+\r
+   mov   ax,0A000H\r
+   mov   es, ax\r
+   XOR DI,DI               // set es:di = Screen Mem\r
+   mov ah,Color            // move the color into ah\r
+   mov al,ah               // copy the value to al\r
+   mov   cx,bytes          // Number of words\r
+   cld\r
+   rep   stosw             // clear it\r
+   }\r
+}\r
diff --git a/16/tauron30/C_SRC/DUAL.CPP b/16/tauron30/C_SRC/DUAL.CPP
new file mode 100755 (executable)
index 0000000..e60d1fb
--- /dev/null
@@ -0,0 +1,236 @@
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=-                                                                         -=\r
+//=-                   Tauron VGA Utilities Version 3.0                      -=\r
+//=-                      Released September 20, 1998                        -=\r
+//=-                                                                         -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+//=- All Rights Reserved.                     =-= that you put my name some- -=\r
+//=-                                          =-= where in your credits.     -=\r
+//=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- I assume no responsibility whatsoever for any effect that this package, -=\r
+//=- the information contained therein or the use thereof has on you, your   -=\r
+//=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+//=- you or your existance. No warranty is provided nor implied with this    -=\r
+//=- source code.                                                            -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+// 3C4H, 03H\r
+// Bit positions for font maps:\r
+//\r
+// +--7--+--6--+--5--+--4--+--3--+--2--+--1--+--0--+\r
+// |     |     | SAH | SBH |    SA     |    SB     |\r
+// +-----+-----+-----+-----+-----+-----+-----+-----+\r
+//\r
+// SA  - bits 1, 0 of Character Map A\r
+// SAH - bit 2 (high order) of Charcter Map A\r
+//\r
+// SB  - bits 1, 0 of Character Map B\r
+// SBH - bit 2 (high order) of Charcter Map B\r
+//\r
+#include <string.h>\r
+#include <stdlib.h>\r
+#include <stdio.h>\r
+#include <conio.h>\r
+#include <dos.h>\r
+#include "tauron.h"\r
+#include "font1.h"\r
+#include "font2.h"\r
+extern unsigned char mode03h[62];\r
+void LoadFonts();\r
+\r
+// Points to fonts for Map A              Memory Address\r
+#define DFM_MAPA_FONT1     0x00          //  0K\r
+#define DFM_MAPA_FONT2     0x04          // 16K\r
+#define DFM_MAPA_FONT3     0x08          // 32K\r
+#define DFM_MAPA_FONT4     0x0C          // 48K\r
+#define DFM_MAPA_FONT5     0x20          //  8K\r
+#define DFM_MAPA_FONT6     0x24          // 24K\r
+#define DFM_MAPA_FONT7     0x28          // 40K\r
+#define DFM_MAPA_FONT8     0x2C          // 56K\r
+\r
+// Points to fonts for Map B\r
+#define DFM_MAPB_FONT1     0x00          //  0K\r
+#define DFM_MAPB_FONT2     0x01          // 16K\r
+#define DFM_MAPB_FONT3     0x02          // 32K\r
+#define DFM_MAPB_FONT4     0x03          // 48K\r
+#define DFM_MAPB_FONT5     0x10          //  8K\r
+#define DFM_MAPB_FONT6     0x11          // 24K\r
+#define DFM_MAPB_FONT7     0x12          // 40K\r
+#define DFM_MAPB_FONT8     0x13          // 56K\r
+\r
+\r
+// To set dual font mode, just set the character map select register to point\r
+// to 2 different fonts.  There can be up to 8 fonts resident in memory at\r
+// once but only 2 can be active at a time.\r
+//\r
+// ** NOTE ** If you set both font maps the same you are no longer in dual font\r
+// mode.  But what this allows you to do is to put up to 8 fonts in VGA memory\r
+// and switch between them at any time.\r
+//\r
+// Both fonts were made with my font editor.  I just read the BIOS and\r
+// modified the second font so a solid line goes through the middle of it.\r
+//\r
+// This procedure sets up dual font mode and loads 2 fonts into video memory.\r
+void SetDual()\r
+{\r
+   outport(SEQ_ADDR, ((DFM_MAPA_FONT1 | DFM_MAPB_FONT5) << 8) | 0x03);\r
+\r
+   // Load font 1 into 0K and font 2 into 8K\r
+       LoadFonts();\r
+}\r
+\r
+// This procedure reset the character map select register to point to only\r
+// one font.\r
+void UnSetDual()\r
+{\r
+   outport(0x3C4,0x0003);\r
+}\r
+\r
+// In dual font modes, the palette is in effect half of what it is.  The \r
+// bottom 8 colors for the first font, and the top 8 colors for the second \r
+// font.\r
+//\r
+// What I do here is to set them to the same 8 colors.\r
+// Black, Blue, Green, Red, Purple, Yellow, Light Gray, and White\r
+//\r
+void SetDualPalette()\r
+{\r
+       // Font 1\r
+   setpal( 0,  0,  0,  0);\r
+   setpal( 1,  0,  0, 42);\r
+   setpal( 2,  0, 42,  0);\r
+   setpal( 3,  0, 42, 42);\r
+   setpal( 4, 42,  0,  0);\r
+   setpal( 5, 63, 63, 21);\r
+   setpal( 6, 42, 42, 42);\r
+   setpal( 7, 63, 63, 63);\r
+   // Font 2\r
+   setpal( 8,  0,  0,  0);\r
+   setpal( 9,  0,  0, 42);\r
+   setpal(10,  0, 42,  0);\r
+   setpal(11,  0, 42, 42);\r
+   setpal(12, 42,  0,  0);\r
+   setpal(13, 63, 63, 21);\r
+   setpal(14, 42, 42, 42);\r
+   setpal(15, 63, 63, 63);\r
+}\r
+\r
+void pchar(int x, int y, char c, char att)\r
+{\r
+   char far *vidmem;\r
+   int off;\r
+\r
+   // Make a pointer to the font\r
+   vidmem = (char far *)MK_FP( 0xB800, 0x0000);\r
+   off = y * 160 + x * 2;\r
+   vidmem += off;\r
+   *vidmem++ = c;\r
+   *vidmem = att;\r
+}\r
+\r
+void print(int x, int y, char *Text, char attrib)\r
+{\r
+       for (int i = 0; i < strlen(Text); i++)\r
+       pchar(x++,y,Text[i],attrib);\r
+}\r
+\r
+void DualTest()\r
+{\r
+       SetMode((unsigned int)&mode03h);\r
+   TextClear(0x1F);\r
+   SetDual();\r
+   SetDualPalette();\r
+\r
+   /* ** NOTE ** when trying to print text on the screen, do not use the printf\r
+    * text functions.  For some reason they do not select the proper VGA font.\r
+    */\r
+\r
+       print(0,0,"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿",0x17);\r
+   print(0,1,"³ DUAL FONT MODE ³",0x17);\r
+   print(0,2,"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ",0x17);\r
+\r
+       print(0,4,"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿",0x1F);\r
+   print(0,5,"³ DUAL FONT MODE ³",0x1F);\r
+   print(0,6,"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ",0x1F);\r
+\r
+   getch();\r
+   UnSetDual();\r
+   textcolor(7);\r
+   textbackground(0);\r
+}\r
+\r
+\r
+void LoadFonts()\r
+{\r
+   char far *vidmem;\r
+   int l = 0;\r
+   unsigned char oldmode,oldmisc,oldmem,oldmask;\r
+   unsigned char newmode,newmisc,newmem;\r
+\r
+   // Make a pointer to the font\r
+   vidmem = (char far *)MK_FP( 0xA000, 0x0000);\r
+\r
+   // Store the OLD 'Mode Register' value\r
+   outportb(GRACON_ADDR,5);\r
+   oldmode = inportb(GRACON_ADDR+1);\r
+   // Store the OLD 'Miscellaneous Register' value\r
+   outportb(GRACON_ADDR,6);\r
+   oldmisc = inportb(GRACON_ADDR+1);\r
+   // Store the OLD 'Mask Map' value\r
+   outportb(SEQ_ADDR,2);\r
+   oldmask = inportb(SEQ_ADDR+1);\r
+   // Store the OLD 'Memory Mode' value\r
+   outportb(SEQ_ADDR,4);\r
+   oldmem = inportb(SEQ_ADDR+1);\r
+\r
+   // Write the NEW 'Mode Register' value\r
+   newmode = (oldmode & 0xFC);\r
+   outport(GRACON_ADDR, (newmode << 8) | 0x05);\r
+   // Write the NEW 'Miscellaneous Register' value\r
+   newmisc = ((oldmisc & 0xF1)|4);\r
+   outport(GRACON_ADDR, (newmisc << 8) | 0x06);\r
+   // Write the NEW 'Mask Map' value\r
+   outport(SEQ_ADDR, 0x0402);\r
+   // Write the NEW 'Memory Mode' value\r
+   newmem = (oldmem | 4);\r
+   outport(SEQ_ADDR, (newmem << 8) | 0x04);\r
+\r
+   // Copy the font from BIOS\r
+   l = 0;\r
+   for (int i = 0; i < 256; i++)\r
+   {\r
+      for (int j = 0; j < 16; j++)\r
+      {\r
+         *vidmem++ = Font1[l++];\r
+      }\r
+      for (int k = 0; k < 16; k++)\r
+      {\r
+         *vidmem++ = 0x00;\r
+      }\r
+   }\r
+\r
+   vidmem = (char far *)MK_FP( 0xA000, 0x2000);\r
+   l = 0;\r
+   for (int i = 0; i < 256; i++)\r
+   {\r
+      for (int j = 0; j < 16; j++)\r
+      {\r
+         *vidmem++ = Font2[l++];\r
+      }\r
+      for (int k = 0; k < 16; k++)\r
+      {\r
+         *vidmem++ = 0x00;\r
+      }\r
+   }\r
+\r
+   // Write the OLD 'Mode Register' value\r
+   outport(GRACON_ADDR, (oldmode << 8) | 0x05);\r
+   // Write the OLD 'Miscellaneous Register' value\r
+   outport(GRACON_ADDR, (oldmisc << 8) | 0x06);\r
+   // Write the OLD 'Mask Map' value\r
+   outport(SEQ_ADDR,(oldmask << 8) | 0x02);\r
+   // Write the OLD 'Memory Mode' value\r
+   outport(SEQ_ADDR, (oldmem << 8) | 0x04);\r
+}\r
+\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
\ No newline at end of file
diff --git a/16/tauron30/C_SRC/FONT1.H b/16/tauron30/C_SRC/FONT1.H
new file mode 100755 (executable)
index 0000000..ae20aa2
--- /dev/null
@@ -0,0 +1,268 @@
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- Created with FEDIT written by Kinfira (Jeffrey Morgan)                  -=\r
+//=-                                                                         -=\r
+//=-                   Tauron VGA Utilities Version 1.0                      -=\r
+//=-                        Released June 14, 1998                           -=\r
+//=-                                                                         -=\r
+//=- Font Width:  8                                                          -=\r
+//=- Font Height: 16                                                         -=\r
+//=- Bytes per character:  16                                                -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+char Font1[] = {\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07E,0x081,0x0A5,0x081,0x081,0x0BD,0x099,0x081,0x081,0x07E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07E,0x0FF,0x0DB,0x0FF,0x0FF,0x0C3,0x0E7,0x0FF,0x0FF,0x07E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x06C,0x0FE,0x0FE,0x0FE,0x0FE,0x07C,0x038,0x010,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x010,0x038,0x07C,0x0FE,0x07C,0x038,0x010,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x018,0x03C,0x03C,0x0E7,0x0E7,0x0E7,0x099,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x018,0x03C,0x07E,0x0FF,0x0FF,0x07E,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x03C,0x03C,0x018,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0E7,0x0C3,0x0C3,0x0E7,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,\r
+0x000,0x000,0x000,0x000,0x000,0x03C,0x066,0x042,0x042,0x066,0x03C,0x000,0x000,0x000,0x000,0x000,\r
+0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0C3,0x099,0x0BD,0x0BD,0x099,0x0C3,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,\r
+0x000,0x000,0x01E,0x00E,0x01A,0x032,0x078,0x0CC,0x0CC,0x0CC,0x0CC,0x078,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x066,0x066,0x066,0x066,0x03C,0x018,0x07E,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03F,0x033,0x03F,0x030,0x030,0x030,0x030,0x070,0x0F0,0x0E0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07F,0x063,0x07F,0x063,0x063,0x063,0x063,0x067,0x0E7,0x0E6,0x0C0,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x018,0x018,0x0DB,0x03C,0x0E7,0x03C,0x0DB,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x080,0x0C0,0x0E0,0x0F0,0x0F8,0x0FE,0x0F8,0x0F0,0x0E0,0x0C0,0x080,0x000,0x000,0x000,0x000,\r
+0x000,0x002,0x006,0x00E,0x01E,0x03E,0x0FE,0x03E,0x01E,0x00E,0x006,0x002,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x03C,0x07E,0x018,0x018,0x018,0x018,0x07E,0x03C,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x066,0x066,0x066,0x066,0x066,0x066,0x066,0x000,0x066,0x066,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07F,0x0DB,0x0DB,0x0DB,0x07B,0x01B,0x01B,0x01B,0x01B,0x01B,0x000,0x000,0x000,0x000,\r
+0x000,0x07C,0x0C6,0x060,0x038,0x06C,0x0C6,0x0C6,0x06C,0x038,0x00C,0x0C6,0x07C,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x0FE,0x0FE,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x03C,0x07E,0x018,0x018,0x018,0x018,0x07E,0x03C,0x018,0x07E,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x03C,0x07E,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x07E,0x03C,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x018,0x00C,0x0FE,0x00C,0x018,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x030,0x060,0x0FE,0x060,0x030,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0C0,0x0C0,0x0C0,0x0C0,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x028,0x06C,0x0FE,0x06C,0x028,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x010,0x038,0x038,0x07C,0x07C,0x0FE,0x0FE,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x0FE,0x0FE,0x07C,0x07C,0x038,0x038,0x010,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x03C,0x03C,0x03C,0x018,0x018,0x018,0x000,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x066,0x066,0x066,0x024,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x06C,0x06C,0x0FE,0x06C,0x06C,0x06C,0x0FE,0x06C,0x06C,0x000,0x000,0x000,0x000,\r
+0x018,0x018,0x07C,0x0C6,0x0C2,0x0C0,0x07C,0x006,0x086,0x0C6,0x07C,0x018,0x018,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x0C2,0x0C6,0x00C,0x018,0x030,0x060,0x0C6,0x086,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x038,0x06C,0x06C,0x038,0x076,0x0DC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x030,0x030,0x030,0x060,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x00C,0x018,0x030,0x030,0x030,0x030,0x030,0x030,0x018,0x00C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x030,0x018,0x00C,0x00C,0x00C,0x00C,0x00C,0x00C,0x018,0x030,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x066,0x03C,0x0FF,0x03C,0x066,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x07E,0x018,0x018,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x018,0x030,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x002,0x006,0x00C,0x018,0x030,0x060,0x0C0,0x080,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x0C6,0x0CE,0x0D6,0x0D6,0x0E6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x038,0x078,0x018,0x018,0x018,0x018,0x018,0x018,0x07E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x006,0x00C,0x018,0x030,0x060,0x0C0,0x0C6,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x006,0x006,0x03C,0x006,0x006,0x006,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x00C,0x01C,0x03C,0x06C,0x0CC,0x0FE,0x00C,0x00C,0x00C,0x01E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FE,0x0C0,0x0C0,0x0C0,0x0FC,0x00E,0x006,0x006,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x038,0x060,0x0C0,0x0C0,0x0FC,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FE,0x0C6,0x006,0x006,0x00C,0x018,0x030,0x030,0x030,0x030,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x07E,0x006,0x006,0x006,0x00C,0x078,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x018,0x018,0x030,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x006,0x00C,0x018,0x030,0x060,0x030,0x018,0x00C,0x006,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x000,0x000,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x060,0x030,0x018,0x00C,0x006,0x00C,0x018,0x030,0x060,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x0C6,0x00C,0x018,0x018,0x018,0x000,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x07C,0x0C6,0x0C6,0x0DE,0x0DE,0x0DE,0x0DC,0x0C0,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x010,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FC,0x066,0x066,0x066,0x07C,0x066,0x066,0x066,0x066,0x0FC,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x066,0x0C2,0x0C0,0x0C0,0x0C0,0x0C0,0x0C2,0x066,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0F8,0x06C,0x066,0x066,0x066,0x066,0x066,0x066,0x06C,0x0F8,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FE,0x066,0x062,0x068,0x078,0x068,0x060,0x062,0x066,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FE,0x066,0x062,0x068,0x078,0x068,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x066,0x0C2,0x0C0,0x0C0,0x0DE,0x0C6,0x0C6,0x066,0x03A,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x01E,0x00C,0x00C,0x00C,0x00C,0x00C,0x0CC,0x0CC,0x0CC,0x078,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0E6,0x066,0x06C,0x06C,0x078,0x078,0x06C,0x066,0x066,0x0E6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0F0,0x060,0x060,0x060,0x060,0x060,0x060,0x062,0x066,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0EE,0x0FE,0x0FE,0x0D6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0E6,0x0F6,0x0FE,0x0DE,0x0CE,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x06C,0x038,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FC,0x066,0x066,0x066,0x07C,0x060,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0D6,0x0DE,0x07C,0x00C,0x00E,0x000,0x000,\r
+0x000,0x000,0x0FC,0x066,0x066,0x066,0x07C,0x06C,0x066,0x066,0x066,0x0E6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x0C6,0x060,0x038,0x00C,0x006,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07E,0x07E,0x05A,0x018,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x06C,0x038,0x010,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0D6,0x0D6,0x0FE,0x06C,0x06C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x06C,0x06C,0x038,0x038,0x06C,0x06C,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x066,0x066,0x066,0x066,0x03C,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FE,0x0C6,0x086,0x00C,0x018,0x030,0x060,0x0C2,0x0C6,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x030,0x030,0x030,0x030,0x030,0x030,0x030,0x030,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x080,0x0C0,0x0E0,0x070,0x038,0x01C,0x00E,0x006,0x002,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x00C,0x00C,0x00C,0x00C,0x00C,0x00C,0x00C,0x00C,0x03C,0x000,0x000,0x000,0x000,\r
+0x010,0x038,0x06C,0x0C6,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x000,\r
+0x030,0x030,0x018,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0E0,0x060,0x060,0x078,0x06C,0x066,0x066,0x066,0x066,0x0DC,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x0C0,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x01C,0x00C,0x00C,0x03C,0x06C,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x038,0x06C,0x064,0x060,0x0F0,0x060,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x076,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x07C,0x00C,0x0CC,0x078,0x000,\r
+0x000,0x000,0x0E0,0x060,0x060,0x06C,0x076,0x066,0x066,0x066,0x066,0x0E6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x018,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x006,0x006,0x000,0x00E,0x006,0x006,0x006,0x006,0x006,0x006,0x066,0x066,0x03C,0x000,\r
+0x000,0x000,0x0E0,0x060,0x060,0x066,0x06C,0x078,0x078,0x06C,0x066,0x0E6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0EC,0x0FE,0x0D6,0x0D6,0x0D6,0x0D6,0x0D6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0DC,0x066,0x066,0x066,0x066,0x066,0x066,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0DC,0x066,0x066,0x066,0x066,0x066,0x07C,0x060,0x060,0x0F0,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x076,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x07C,0x00C,0x00C,0x01E,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0DC,0x076,0x062,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x060,0x038,0x00C,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x010,0x030,0x030,0x0FC,0x030,0x030,0x030,0x030,0x036,0x01C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x066,0x066,0x066,0x066,0x066,0x03C,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0C6,0x0C6,0x0C6,0x0D6,0x0D6,0x0FE,0x06C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0C6,0x06C,0x038,0x038,0x038,0x06C,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07E,0x006,0x00C,0x0F8,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0FE,0x0CC,0x018,0x030,0x060,0x0C6,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x00E,0x018,0x018,0x018,0x070,0x018,0x018,0x018,0x018,0x00E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x018,0x018,0x018,0x000,0x018,0x018,0x018,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x070,0x018,0x018,0x018,0x00E,0x018,0x018,0x018,0x018,0x070,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x076,0x0DC,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x010,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x0FE,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x066,0x0C2,0x0C0,0x0C0,0x0C0,0x0C2,0x066,0x03C,0x00C,0x006,0x07C,0x000,0x000,\r
+0x000,0x000,0x0CC,0x0CC,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x00C,0x018,0x030,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x010,0x038,0x06C,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0CC,0x0CC,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x060,0x030,0x018,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x038,0x06C,0x038,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x03C,0x066,0x060,0x060,0x066,0x03C,0x00C,0x006,0x03C,0x000,0x000,0x000,\r
+0x000,0x010,0x038,0x06C,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x060,0x030,0x018,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x066,0x066,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x018,0x03C,0x066,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x060,0x030,0x018,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x0C6,0x0C6,0x010,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x038,0x06C,0x038,0x000,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x018,0x030,0x060,0x000,0x0FE,0x066,0x060,0x07C,0x060,0x060,0x066,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0CC,0x076,0x036,0x07E,0x0D8,0x0D8,0x06E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03E,0x06C,0x0CC,0x0CC,0x0FE,0x0CC,0x0CC,0x0CC,0x0CC,0x0CE,0x000,0x000,0x000,0x000,\r
+0x000,0x010,0x038,0x06C,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x060,0x030,0x018,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x030,0x078,0x0CC,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x060,0x030,0x018,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07E,0x006,0x00C,0x078,0x000,\r
+0x000,0x0C6,0x0C6,0x000,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x0C6,0x06C,0x038,0x000,0x000,0x000,0x000,\r
+0x000,0x0C6,0x0C6,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x018,0x018,0x03C,0x066,0x060,0x060,0x060,0x066,0x03C,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x038,0x06C,0x064,0x060,0x0F0,0x060,0x060,0x060,0x060,0x0E6,0x0FC,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x066,0x066,0x03C,0x018,0x07E,0x018,0x07E,0x018,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x0F8,0x0CC,0x0CC,0x0F8,0x0C4,0x0CC,0x0DE,0x0CC,0x0CC,0x0CC,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x00E,0x01B,0x018,0x018,0x018,0x07E,0x018,0x018,0x018,0x018,0x018,0x0D8,0x070,0x000,0x000,\r
+0x000,0x018,0x030,0x060,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x00C,0x018,0x030,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x018,0x030,0x060,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x018,0x030,0x060,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x076,0x0DC,0x000,0x0DC,0x066,0x066,0x066,0x066,0x066,0x066,0x000,0x000,0x000,0x000,\r
+0x076,0x0DC,0x000,0x0C6,0x0E6,0x0F6,0x0FE,0x0DE,0x0CE,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x03C,0x06C,0x06C,0x03E,0x000,0x07E,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x038,0x06C,0x06C,0x038,0x000,0x07C,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x030,0x030,0x000,0x030,0x030,0x060,0x0C0,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x0C0,0x0C0,0x0C0,0x0C0,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x006,0x006,0x006,0x006,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x0C0,0x0C0,0x0C2,0x0C6,0x0CC,0x018,0x030,0x060,0x0CE,0x093,0x006,0x00C,0x01F,0x000,0x000,\r
+0x000,0x0C0,0x0C0,0x0C2,0x0C6,0x0CC,0x018,0x030,0x066,0x0CE,0x09A,0x03F,0x006,0x00F,0x000,0x000,\r
+0x000,0x000,0x018,0x018,0x000,0x018,0x018,0x018,0x03C,0x03C,0x03C,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x033,0x066,0x0CC,0x066,0x033,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0CC,0x066,0x033,0x066,0x0CC,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,\r
+0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,\r
+0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x0F8,0x018,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0F6,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x000,0x000,0x000,0x000,0x000,0x0F8,0x018,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x036,0x036,0x036,0x036,0x036,0x0F6,0x006,0x0F6,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x000,0x000,0x000,0x000,0x000,0x0FE,0x006,0x0F6,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x0F6,0x006,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x018,0x018,0x018,0x018,0x018,0x0F8,0x018,0x0F8,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x01F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x01F,0x018,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x037,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x037,0x030,0x03F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x03F,0x030,0x037,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x0F7,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x0F7,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x037,0x030,0x037,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x036,0x036,0x036,0x036,0x036,0x0F7,0x000,0x0F7,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x018,0x018,0x018,0x018,0x018,0x0FF,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x03F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x018,0x018,0x018,0x018,0x018,0x01F,0x018,0x01F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x01F,0x018,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x03F,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0FF,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x018,0x018,0x018,0x018,0x018,0x0FF,0x018,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0F8,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,\r
+0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,\r
+0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,\r
+0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x076,0x0DC,0x0D8,0x0D8,0x0D8,0x0DC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0FC,0x0C6,0x0FC,0x0C6,0x0C6,0x0FC,0x0C0,0x0C0,0x0C0,0x000,0x000,\r
+0x000,0x000,0x0FE,0x0C6,0x0C6,0x0C0,0x0C0,0x0C0,0x0C0,0x0C0,0x0C0,0x0C0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x080,0x0FE,0x06C,0x06C,0x06C,0x06C,0x06C,0x06C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x0FE,0x0C6,0x060,0x030,0x018,0x030,0x060,0x0C6,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x07E,0x0D8,0x0D8,0x0D8,0x0D8,0x0D8,0x070,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x066,0x066,0x066,0x066,0x066,0x07C,0x060,0x060,0x0C0,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x076,0x0DC,0x018,0x018,0x018,0x018,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x07E,0x018,0x03C,0x066,0x066,0x066,0x03C,0x018,0x07E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x06C,0x038,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x06C,0x06C,0x06C,0x06C,0x0EE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x01E,0x030,0x018,0x00C,0x03E,0x066,0x066,0x066,0x066,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x07E,0x0DB,0x0DB,0x0DB,0x07E,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x003,0x006,0x07E,0x0CF,0x0DB,0x0F3,0x07E,0x060,0x0C0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x01C,0x030,0x060,0x060,0x07C,0x060,0x060,0x060,0x030,0x01C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x0FE,0x000,0x000,0x0FE,0x000,0x000,0x0FE,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x018,0x018,0x07E,0x018,0x018,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x030,0x018,0x00C,0x006,0x00C,0x018,0x030,0x000,0x07E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x00C,0x018,0x030,0x060,0x030,0x018,0x00C,0x000,0x07E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x00E,0x01B,0x01B,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0D8,0x0D8,0x0D8,0x070,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x07E,0x000,0x018,0x018,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x076,0x0DC,0x000,0x076,0x0DC,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x038,0x06C,0x06C,0x038,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x00F,0x00C,0x00C,0x00C,0x00C,0x00C,0x0EC,0x06C,0x06C,0x03C,0x01C,0x000,0x000,0x000,0x000,\r
+0x000,0x0D8,0x06C,0x06C,0x06C,0x06C,0x06C,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x070,0x098,0x030,0x060,0x0C8,0x0F8,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x07C,0x07C,0x07C,0x07C,0x07C,0x07C,0x07C,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000\r
+};                                                                                              \r
diff --git a/16/tauron30/C_SRC/FONT2.H b/16/tauron30/C_SRC/FONT2.H
new file mode 100755 (executable)
index 0000000..1a2a516
--- /dev/null
@@ -0,0 +1,268 @@
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- Created with FEDIT written by Kinfira (Jeffrey Morgan)                  -=\r
+//=-                                                                         -=\r
+//=-                   Tauron VGA Utilities Version 1.0                      -=\r
+//=-                        Released June 14, 1998                           -=\r
+//=-                                                                         -=\r
+//=- Font Width:  8                                                          -=\r
+//=- Font Height: 16                                                         -=\r
+//=- Bytes per character:  16                                                -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+char Font2[] = {\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07E,0x081,0x0A5,0x081,0x081,0x0BD,0x099,0x081,0x081,0x07E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07E,0x0FF,0x0DB,0x0FF,0x0FF,0x0C3,0x0E7,0x0FF,0x0FF,0x07E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x06C,0x0FE,0x0FE,0x0FE,0x0FE,0x07C,0x038,0x010,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x010,0x038,0x07C,0x0FE,0x07C,0x038,0x010,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x018,0x03C,0x03C,0x0E7,0x0E7,0x0E7,0x099,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x018,0x03C,0x07E,0x0FF,0x0FF,0x07E,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x03C,0x03C,0x018,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0E7,0x0C3,0x0C3,0x0E7,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,\r
+0x000,0x000,0x000,0x000,0x000,0x03C,0x066,0x042,0x042,0x066,0x03C,0x000,0x000,0x000,0x000,0x000,\r
+0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0C3,0x099,0x0BD,0x0BD,0x099,0x0C3,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,\r
+0x000,0x000,0x01E,0x00E,0x01A,0x032,0x078,0x0CC,0x0CC,0x0CC,0x0CC,0x078,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x066,0x066,0x066,0x066,0x03C,0x018,0x07E,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03F,0x033,0x03F,0x030,0x030,0x030,0x030,0x070,0x0F0,0x0E0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07F,0x063,0x07F,0x063,0x063,0x063,0x063,0x067,0x0E7,0x0E6,0x0C0,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x018,0x018,0x0DB,0x03C,0x0E7,0x03C,0x0DB,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x080,0x0C0,0x0E0,0x0F0,0x0F8,0x0FE,0x0F8,0x0F0,0x0E0,0x0C0,0x080,0x000,0x000,0x000,0x000,\r
+0x000,0x002,0x006,0x00E,0x01E,0x03E,0x0FE,0x03E,0x01E,0x00E,0x006,0x002,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x03C,0x07E,0x018,0x018,0x018,0x018,0x07E,0x03C,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x066,0x066,0x066,0x066,0x066,0x066,0x066,0x000,0x066,0x066,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07F,0x0DB,0x0DB,0x0DB,0x07B,0x01B,0x01B,0x01B,0x01B,0x01B,0x000,0x000,0x000,0x000,\r
+0x000,0x07C,0x0C6,0x060,0x038,0x06C,0x0C6,0x0C6,0x06C,0x038,0x00C,0x0C6,0x07C,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x0FE,0x0FE,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x03C,0x07E,0x018,0x018,0x018,0x018,0x07E,0x03C,0x018,0x07E,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x03C,0x07E,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x07E,0x03C,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x018,0x00C,0x0FE,0x00C,0x018,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x030,0x060,0x0FE,0x060,0x030,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0C0,0x0C0,0x0C0,0x0C0,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x028,0x06C,0x0FE,0x06C,0x028,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x010,0x038,0x038,0x07C,0x07C,0x0FE,0x0FE,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x0FE,0x0FE,0x07C,0x07C,0x038,0x038,0x010,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x03C,0x03C,0x03C,0x018,0x018,0x018,0x000,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x066,0x066,0x066,0x024,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x06C,0x06C,0x0FE,0x06C,0x06C,0x06C,0x0FE,0x06C,0x06C,0x000,0x000,0x000,0x000,\r
+0x018,0x018,0x07C,0x0C6,0x0C2,0x0C0,0x07C,0x006,0x086,0x0C6,0x07C,0x018,0x018,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x0C2,0x0C6,0x00C,0x018,0x030,0x060,0x0C6,0x086,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x038,0x06C,0x06C,0x038,0x076,0x0DC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x030,0x030,0x030,0x060,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x00C,0x018,0x030,0x030,0x030,0x030,0x030,0x030,0x018,0x00C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x030,0x018,0x00C,0x00C,0x00C,0x00C,0x00C,0x00C,0x018,0x030,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x066,0x03C,0x0FF,0x03C,0x066,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x07E,0x018,0x018,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x018,0x030,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x002,0x006,0x00C,0x018,0x030,0x060,0x0C0,0x080,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x0C6,0x0CE,0x0D6,0x0D6,0x0E6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x038,0x078,0x018,0x018,0x018,0x018,0x018,0x018,0x07E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x006,0x00C,0x018,0x030,0x060,0x0C0,0x0C6,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x006,0x006,0x03C,0x006,0x006,0x006,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x00C,0x01C,0x03C,0x06C,0x0CC,0x0FE,0x00C,0x00C,0x00C,0x01E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FE,0x0C0,0x0C0,0x0C0,0x0FC,0x00E,0x006,0x006,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x038,0x060,0x0C0,0x0C0,0x0FC,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FE,0x0C6,0x006,0x006,0x00C,0x018,0x030,0x030,0x030,0x030,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x07E,0x006,0x006,0x006,0x00C,0x078,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x018,0x018,0x030,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x006,0x00C,0x018,0x030,0x060,0x030,0x018,0x00C,0x006,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x000,0x000,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x060,0x030,0x018,0x00C,0x006,0x00C,0x018,0x030,0x060,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x0C6,0x00C,0x018,0x018,0x018,0x000,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x07C,0x0C6,0x0C6,0x0DE,0x0DE,0x0DE,0x0DC,0x0C0,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x010,0x038,0x06C,0x0C6,0x0C6,0x0FF,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FC,0x066,0x066,0x066,0x07C,0x0FF,0x066,0x066,0x066,0x0FC,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x066,0x0C2,0x0C0,0x0C0,0x0FF,0x0C0,0x0C2,0x066,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0F8,0x06C,0x066,0x066,0x066,0x0FF,0x066,0x066,0x06C,0x0F8,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FE,0x066,0x062,0x068,0x078,0x0FF,0x060,0x062,0x066,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FE,0x066,0x062,0x068,0x078,0x0FF,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x066,0x0C2,0x0C0,0x0C0,0x0FF,0x0C6,0x0C6,0x066,0x03A,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0FE,0x0FF,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x018,0x018,0x018,0x018,0x0FF,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x01E,0x00C,0x00C,0x00C,0x00C,0x0FF,0x0CC,0x0CC,0x0CC,0x078,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0E6,0x066,0x06C,0x06C,0x078,0x0FF,0x06C,0x066,0x066,0x0E6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0F0,0x060,0x060,0x060,0x060,0x0FF,0x060,0x062,0x066,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0EE,0x0FE,0x0FE,0x0D6,0x0FF,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0E6,0x0F6,0x0FE,0x0DE,0x0FF,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x0FF,0x0C6,0x0C6,0x06C,0x038,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FC,0x066,0x066,0x066,0x07C,0x0FF,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0FF,0x0C6,0x0D6,0x0DE,0x07C,0x00C,0x00E,0x000,0x000,\r
+0x000,0x000,0x0FC,0x066,0x066,0x066,0x07C,0x0FF,0x066,0x066,0x066,0x0E6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07C,0x0C6,0x0C6,0x060,0x038,0x0FF,0x006,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x07E,0x07E,0x05A,0x018,0x018,0x0FF,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0FF,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0FF,0x0C6,0x06C,0x038,0x010,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0FF,0x0D6,0x0FE,0x06C,0x06C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x06C,0x06C,0x038,0x0FF,0x06C,0x06C,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x066,0x066,0x066,0x066,0x03C,0x0FF,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0FE,0x0C6,0x086,0x00C,0x018,0x0FF,0x060,0x0C2,0x0C6,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x030,0x030,0x030,0x030,0x0FF,0x030,0x030,0x030,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x080,0x0C0,0x0E0,0x070,0x0FF,0x01C,0x00E,0x006,0x002,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x00C,0x00C,0x00C,0x00C,0x0FF,0x00C,0x00C,0x00C,0x03C,0x000,0x000,0x000,0x000,\r
+0x010,0x038,0x06C,0x0C6,0x000,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x000,\r
+0x030,0x030,0x018,0x000,0x000,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0E0,0x060,0x060,0x078,0x06C,0x066,0x066,0x066,0x066,0x0DC,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x0C0,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x01C,0x00C,0x00C,0x03C,0x06C,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x038,0x06C,0x064,0x060,0x0F0,0x060,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x076,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x07C,0x00C,0x0CC,0x078,0x000,\r
+0x000,0x000,0x0E0,0x060,0x060,0x06C,0x076,0x066,0x066,0x066,0x066,0x0E6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x018,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x006,0x006,0x000,0x00E,0x006,0x006,0x006,0x006,0x006,0x006,0x066,0x066,0x03C,0x000,\r
+0x000,0x000,0x0E0,0x060,0x060,0x066,0x06C,0x078,0x078,0x06C,0x066,0x0E6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0EC,0x0FE,0x0D6,0x0D6,0x0D6,0x0D6,0x0D6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0DC,0x066,0x066,0x066,0x066,0x066,0x066,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0DC,0x066,0x066,0x066,0x066,0x066,0x07C,0x060,0x060,0x0F0,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x076,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x07C,0x00C,0x00C,0x01E,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0DC,0x076,0x062,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x060,0x038,0x00C,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x010,0x030,0x030,0x0FC,0x030,0x030,0x030,0x030,0x036,0x01C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x066,0x066,0x066,0x066,0x066,0x03C,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0C6,0x0C6,0x0C6,0x0D6,0x0D6,0x0FE,0x06C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0C6,0x06C,0x038,0x038,0x038,0x06C,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07E,0x006,0x00C,0x0F8,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0FE,0x0CC,0x018,0x030,0x060,0x0C6,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x00E,0x018,0x018,0x018,0x070,0x018,0x018,0x018,0x018,0x00E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x018,0x018,0x018,0x018,0x000,0x018,0x018,0x018,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x070,0x018,0x018,0x018,0x00E,0x018,0x018,0x018,0x018,0x070,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x076,0x0DC,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x010,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x0FE,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03C,0x066,0x0C2,0x0C0,0x0C0,0x0C0,0x0C2,0x066,0x03C,0x00C,0x006,0x07C,0x000,0x000,\r
+0x000,0x000,0x0CC,0x0CC,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x00C,0x018,0x030,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x010,0x038,0x06C,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0CC,0x0CC,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x060,0x030,0x018,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x038,0x06C,0x038,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x03C,0x066,0x060,0x060,0x066,0x03C,0x00C,0x006,0x03C,0x000,0x000,0x000,\r
+0x000,0x010,0x038,0x06C,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x060,0x030,0x018,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x066,0x066,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x018,0x03C,0x066,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x060,0x030,0x018,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x0C6,0x0C6,0x010,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x038,0x06C,0x038,0x000,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x018,0x030,0x060,0x000,0x0FE,0x066,0x060,0x07C,0x060,0x060,0x066,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0CC,0x076,0x036,0x07E,0x0D8,0x0D8,0x06E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x03E,0x06C,0x0CC,0x0CC,0x0FE,0x0CC,0x0CC,0x0CC,0x0CC,0x0CE,0x000,0x000,0x000,0x000,\r
+0x000,0x010,0x038,0x06C,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x060,0x030,0x018,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x030,0x078,0x0CC,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x060,0x030,0x018,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x0C6,0x0C6,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07E,0x006,0x00C,0x078,0x000,\r
+0x000,0x0C6,0x0C6,0x000,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x0C6,0x06C,0x038,0x000,0x000,0x000,0x000,\r
+0x000,0x0C6,0x0C6,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x018,0x018,0x03C,0x066,0x060,0x060,0x060,0x066,0x03C,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x038,0x06C,0x064,0x060,0x0F0,0x060,0x060,0x060,0x060,0x0E6,0x0FC,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x066,0x066,0x03C,0x018,0x07E,0x018,0x07E,0x018,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x0F8,0x0CC,0x0CC,0x0F8,0x0C4,0x0CC,0x0DE,0x0CC,0x0CC,0x0CC,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x00E,0x01B,0x018,0x018,0x018,0x07E,0x018,0x018,0x018,0x018,0x018,0x0D8,0x070,0x000,0x000,\r
+0x000,0x018,0x030,0x060,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x00C,0x018,0x030,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x018,0x030,0x060,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x018,0x030,0x060,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x076,0x0DC,0x000,0x0DC,0x066,0x066,0x066,0x066,0x066,0x066,0x000,0x000,0x000,0x000,\r
+0x076,0x0DC,0x000,0x0C6,0x0E6,0x0F6,0x0FE,0x0DE,0x0CE,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x03C,0x06C,0x06C,0x03E,0x000,0x07E,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x038,0x06C,0x06C,0x038,0x000,0x07C,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x030,0x030,0x000,0x030,0x030,0x060,0x0C0,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x0C0,0x0C0,0x0C0,0x0C0,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x006,0x006,0x006,0x006,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x0C0,0x0C0,0x0C2,0x0C6,0x0CC,0x018,0x030,0x060,0x0CE,0x093,0x006,0x00C,0x01F,0x000,0x000,\r
+0x000,0x0C0,0x0C0,0x0C2,0x0C6,0x0CC,0x018,0x030,0x066,0x0CE,0x09A,0x03F,0x006,0x00F,0x000,0x000,\r
+0x000,0x000,0x018,0x018,0x000,0x018,0x018,0x018,0x03C,0x03C,0x03C,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x033,0x066,0x0CC,0x066,0x033,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0CC,0x066,0x033,0x066,0x0CC,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,\r
+0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,\r
+0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x0F8,0x018,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0F6,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x000,0x000,0x000,0x000,0x000,0x0F8,0x018,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x036,0x036,0x036,0x036,0x036,0x0F6,0x006,0x0F6,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x000,0x000,0x000,0x000,0x000,0x0FE,0x006,0x0F6,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x0F6,0x006,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x018,0x018,0x018,0x018,0x018,0x0F8,0x018,0x0F8,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x01F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x01F,0x018,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x037,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x037,0x030,0x03F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x03F,0x030,0x037,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x0F7,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x0F7,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x037,0x030,0x037,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x036,0x036,0x036,0x036,0x036,0x0F7,0x000,0x0F7,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x018,0x018,0x018,0x018,0x018,0x0FF,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x03F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x018,0x018,0x018,0x018,0x018,0x01F,0x018,0x01F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x01F,0x018,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x03F,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0FF,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,\r
+0x018,0x018,0x018,0x018,0x018,0x0FF,0x018,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0F8,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,\r
+0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,\r
+0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,\r
+0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x076,0x0DC,0x0D8,0x0D8,0x0D8,0x0DC,0x076,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x0FC,0x0C6,0x0FC,0x0C6,0x0C6,0x0FC,0x0C0,0x0C0,0x0C0,0x000,0x000,\r
+0x000,0x000,0x0FE,0x0C6,0x0C6,0x0C0,0x0C0,0x0C0,0x0C0,0x0C0,0x0C0,0x0C0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x080,0x0FE,0x06C,0x06C,0x06C,0x06C,0x06C,0x06C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x0FE,0x0C6,0x060,0x030,0x018,0x030,0x060,0x0C6,0x0FE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x07E,0x0D8,0x0D8,0x0D8,0x0D8,0x0D8,0x070,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x066,0x066,0x066,0x066,0x066,0x07C,0x060,0x060,0x0C0,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x076,0x0DC,0x018,0x018,0x018,0x018,0x018,0x018,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x07E,0x018,0x03C,0x066,0x066,0x066,0x03C,0x018,0x07E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x06C,0x038,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x06C,0x06C,0x06C,0x06C,0x0EE,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x01E,0x030,0x018,0x00C,0x03E,0x066,0x066,0x066,0x066,0x03C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x07E,0x0DB,0x0DB,0x0DB,0x07E,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x003,0x006,0x07E,0x0CF,0x0DB,0x0F3,0x07E,0x060,0x0C0,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x01C,0x030,0x060,0x060,0x07C,0x060,0x060,0x060,0x030,0x01C,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x0FE,0x000,0x000,0x0FE,0x000,0x000,0x0FE,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x018,0x018,0x07E,0x018,0x018,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x030,0x018,0x00C,0x006,0x00C,0x018,0x030,0x000,0x07E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x00C,0x018,0x030,0x060,0x030,0x018,0x00C,0x000,0x07E,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x00E,0x01B,0x01B,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,\r
+0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0D8,0x0D8,0x0D8,0x070,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x07E,0x000,0x018,0x018,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x076,0x0DC,0x000,0x076,0x0DC,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x038,0x06C,0x06C,0x038,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x00F,0x00C,0x00C,0x00C,0x00C,0x00C,0x0EC,0x06C,0x06C,0x03C,0x01C,0x000,0x000,0x000,0x000,\r
+0x000,0x0D8,0x06C,0x06C,0x06C,0x06C,0x06C,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x070,0x098,0x030,0x060,0x0C8,0x0F8,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x07C,0x07C,0x07C,0x07C,0x07C,0x07C,0x07C,0x000,0x000,0x000,0x000,0x000,\r
+0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000\r
+};\r
diff --git a/16/tauron30/C_SRC/MAINC.CPP b/16/tauron30/C_SRC/MAINC.CPP
new file mode 100755 (executable)
index 0000000..34a1247
--- /dev/null
@@ -0,0 +1,181 @@
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=-                                                                         -=\r
+//=-                   Tauron VGA Utilities Version 3.0                      -=\r
+//=-                      Released September 20, 1998                        -=\r
+//=-                                                                         -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+//=- All Rights Reserved.                     =-= that you put my name some- -=\r
+//=-                                          =-= where in your credits.     -=\r
+//=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- I assume no responsibility whatsoever for any effect that this package, -=\r
+//=- the information contained therein or the use thereof has on you, your   -=\r
+//=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+//=- you or your existance. No warranty is provided nor implied with this    -=\r
+//=- source code.                                                            -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+#include <stdlib.h>\r
+#include <stdio.h>\r
+#include <conio.h>\r
+#include <dos.h>\r
+#include "tauron.h"\r
+\r
+void MainScreen()\r
+{\r
+   clrscr();\r
+   printf("Tauron VGA Utilities v3.0\n"\r
+          "Copyright (c) 1998 Jeffrey Morgan.  All Rights Reserved.\n");\r
+   textcolor(12);\r
+   cprintf("Modes with a ! are not implemented      Modes with a % are unchained\r\n");\r
+   textcolor(7);\r
+   printf("Select a video mode to test:\n"\r
+          "Key              Videomode          Key              Videomode\n"\r
+          "================================================================================"\r
+          " 0) 00H, 01H -- 40 x 25 x 16         %F) Mode D   -- 360 x 200 x 256\n"\r
+          " 1) Mode L   -- 40 x 43 x 16         %G) Mode E   -- 360 x 240 x 256\n"\r
+          " 2) Mode M   -- 40 x 50 x 16         %H) Mode F   -- 360 x 350 x 256\n"\r
+          "!3) 07H      -- 80 x 25 x 2          %I) Mode G   -- 360 x 400 x 256\n"\r
+          " 4) 02H, 03H -- 80 x 25 x 16         %J) Mode H   -- 360 x 480 x 256\n"\r
+          " 5) Mode J   -- 80 x 43 x 16          K) 06H      -- 640 x 200 x 2\n"\r
+          " 6) Mode K   -- 80 x 50 x 16         !L) 0FH      -- 640 x 350 x 2\n"\r
+          " 7) 04H, 05H -- 320 x 200 x 4         M) 11H      -- 640 x 480 x 2\n"\r
+          " 8) 0DH      -- 320 x 200 x 16        N) 0EH      -- 640 x 200 x 16\n"\r
+          " 9) 13H      -- 320 x 200 x 256       O) 10H      -- 640 x 350 x 16\n"\r
+          "%A) Chain 4  -- 320 x 200 x 256       P) Mode I   -- 640 x 400 x 16\n"\r
+          "%B) Mode X   -- 320 x 240 x 256       Q) 12H      -- 640 x 480 x 16\n"\r
+          "%C) Mode A   -- 320 x 350 x 256\n"\r
+          "%D) Mode B   -- 320 x 400 x 256       R) Dual Font Test\n"\r
+          "%E) Mode C   -- 320 x 480 x 256\n"\r
+          "===============================================================================\n"\r
+          "Hit 'ESC' to exit.  Press a key [0-9 or A-O]>");\r
+}\r
+\r
+void SetMode03h()\r
+{\r
+   asm MOV AX,0003H\r
+   asm INT 10H\r
+}\r
+\r
+void main()\r
+{\r
+   int ok, key;\r
+   ok = 1;\r
+   MainScreen();\r
+   while (ok)\r
+   {\r
+      if( (key = getch()) == 0 )\r
+         key = 256 * getch();\r
+      switch( key )\r
+      {\r
+         case Escape : ok = 0; break;\r
+\r
+         case '0'          :\r
+            SetVideoMode(MODE00H); TextTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case '1':\r
+            SetVideoMode(MODE_L); TextTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case '2':\r
+            SetVideoMode(MODE_M); TextTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case '4'          :\r
+            SetVideoMode(MODE03H); TextTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case '5':\r
+            SetVideoMode(MODE_J); TextTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case '6':\r
+            SetVideoMode(MODE_K); TextTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case '7':\r
+            SetVideoMode(MODE04H); Clear04H(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case '8'          :\r
+            SetVideoMode(MODE0DH); Clear0DH(12); /*ModeTest();*/ getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case '9':\r
+            SetVideoMode(MODE13H); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'a': case 'A':\r
+            SetVideoMode(CHAIN4); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'b': case 'B':\r
+            SetVideoMode(MODE_X); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'c': case 'C':\r
+            SetVideoMode(MODE_A); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'd': case 'D':\r
+            SetVideoMode(MODE_B); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'e': case 'E':\r
+            SetVideoMode(MODE_C); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'f': case 'F':\r
+            SetVideoMode(MODE_D); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'g': case 'G':\r
+            SetVideoMode(MODE_E); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'h': case 'H':\r
+            SetVideoMode(MODE_F); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'i': case 'I':\r
+            SetVideoMode(MODE_G); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'j': case 'J':\r
+            SetVideoMode(MODE_H); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'k': case 'K':\r
+            SetVideoMode(MODE06H); Clear06H(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'm': case 'M':\r
+            SetVideoMode(MODE11H); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'n': case 'N':\r
+            SetVideoMode(MODE0EH); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'o': case 'O':\r
+            SetVideoMode(MODE10H); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'p': case 'P':\r
+            SetVideoMode(MODE_I); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'q': case 'Q':\r
+            SetVideoMode(MODE12H); ModeTest(); getch();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         case 'r': case 'R':\r
+            SetVideoMode(MODE03H); DualTest();\r
+            SetMode03h(); MainScreen(); break;\r
+\r
+         default     : break;\r
+      }\r
+   }\r
+   asm MOV AX,0003h\r
+   asm int 10h\r
+}\r
diff --git a/16/tauron30/C_SRC/MODES.CPP b/16/tauron30/C_SRC/MODES.CPP
new file mode 100755 (executable)
index 0000000..72e11c9
--- /dev/null
@@ -0,0 +1,833 @@
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=-                                                                         -=\r
+//=-                   Tauron VGA Utilities Version 3.0                      -=\r
+//=-                      Released September 20, 1998                        -=\r
+//=-                                                                         -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+//=- All Rights Reserved.                     =-= that you put my name some- -=\r
+//=-                                          =-= where in your credits.     -=\r
+//=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- I assume no responsibility whatsoever for any effect that this package, -=\r
+//=- the information contained therein or the use thereof has on you, your   -=\r
+//=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+//=- you or your existance. No warranty is provided nor implied with this    -=\r
+//=- source code.                                                            -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+#include <stdlib.h>\r
+#include <stdio.h>\r
+#include <conio.h>\r
+#include <dos.h>\r
+#include "tauron.h"\r
+#include "modes_c.inc"\r
+#include "palette.inc"\r
+\r
+void setpalette4();\r
+void setpalette16();\r
+void setpalette256();\r
+Vmode Mode;\r
+\r
+#define SEQ_ADDR                               0x03C4\r
+#define GRACON_ADDR                    0x03CE\r
+#define CRTC_ADDR                      0x03D4\r
+\r
+void ReadBIOSfont(int fontnum, int bytesperchar)\r
+{\r
+   char far *biosfont,*vidmem;\r
+   struct REGPACK reg;\r
+   unsigned char oldmode,oldmisc,oldmem,oldmask;\r
+   unsigned char newmode,newmisc,newmem;\r
+\r
+   // get the location of the font stroed in BIOS\r
+   reg.r_ax = 0x1130;\r
+   reg.r_bx = fontnum << 8;\r
+   intr(0x10, &reg);\r
+\r
+   // Make a pointer to the font\r
+   biosfont = (char far *)MK_FP( reg.r_es, reg.r_bp);\r
+   vidmem = (char far *)MK_FP( 0xA000, 0x0000);\r
+\r
+   // Store the OLD 'Mode Register' value\r
+   outportb(GRACON_ADDR,5);\r
+   oldmode = inportb(GRACON_ADDR+1);\r
+   // Store the OLD 'Miscellaneous Register' value\r
+   outportb(GRACON_ADDR,6);\r
+   oldmisc = inportb(GRACON_ADDR+1);\r
+   // Store the OLD 'Mask Map' value\r
+   outportb(SEQ_ADDR,2);\r
+   oldmask = inportb(SEQ_ADDR+1);\r
+   // Store the OLD 'Memory Mode' value\r
+   outportb(SEQ_ADDR,4);\r
+   oldmem = inportb(SEQ_ADDR+1);\r
+\r
+   // Write the NEW 'Mode Register' value\r
+   newmode = (oldmode & 0xFC);\r
+   outport(GRACON_ADDR, (newmode << 8) | 0x05);\r
+   // Write the NEW 'Miscellaneous Register' value\r
+   newmisc = ((oldmisc & 0xF1)|4);\r
+   outport(GRACON_ADDR, (newmisc << 8) | 0x06);\r
+   // Write the NEW 'Mask Map' value\r
+   outport(SEQ_ADDR, 0x0402);\r
+   // Write the NEW 'Memory Mode' value\r
+   newmem = (oldmem | 4);\r
+   outport(SEQ_ADDR, (newmem << 8) | 0x04);\r
+\r
+   // Copy the font from BIOS\r
+   for (int i = 0; i < 256; i++)\r
+   {\r
+      for (int j = 0; j < bytesperchar; j++)\r
+      {\r
+         *vidmem++ = *biosfont++;\r
+      }\r
+      for (int k = 0; k < 32-bytesperchar; k++)\r
+      {\r
+         *vidmem++ = 0x00;\r
+      }\r
+   }\r
+\r
+   // Write the OLD 'Mode Register' value\r
+   outport(GRACON_ADDR, (oldmode << 8) | 0x05);\r
+   // Write the OLD 'Miscellaneous Register' value\r
+   outport(GRACON_ADDR, (oldmisc << 8) | 0x06);\r
+   // Write the OLD 'Mask Map' value\r
+   outport(SEQ_ADDR,(oldmask << 8) | 0x02);\r
+   // Write the OLD 'Memory Mode' value\r
+   outport(SEQ_ADDR, (oldmem << 8) | 0x04);\r
+}\r
+\r
+void SetMode(unsigned int regs)\r
+{\r
+   asm {\r
+   MOV SI, regs\r
+\r
+   // Send MISC regs\r
+   MOV DX,MISC_ADDR\r
+   MOV AL,[SI]\r
+   OUT DX,AL\r
+   INC SI\r
+\r
+   MOV DX,STATUS_ADDR\r
+   MOV AL,[SI]\r
+   OUT DX,AL\r
+   INC SI\r
+\r
+   // Send SEQ regs\r
+   MOV CX,0\r
+REG_LOOP:\r
+   MOV DX,SEQ_ADDR\r
+   MOV AL,CL\r
+   OUT DX,AL\r
+\r
+   MOV DX,SEQ_ADDR\r
+   INC DX\r
+   MOV AL,[SI]\r
+   OUT DX,AL\r
+\r
+   INC SI\r
+   INC CX\r
+   CMP CL,5\r
+   JL REG_LOOP\r
+\r
+   // Clear Protection bits\r
+   MOV AH,0EH\r
+   MOV AL,11H\r
+   AND AH,7FH\r
+   MOV DX,CRTC_ADDR\r
+   OUT DX,AX\r
+\r
+   // Send CRTC regs\r
+   MOV CX,0\r
+REG_LOOP2:\r
+   MOV DX,CRTC_ADDR\r
+   MOV AL,CL\r
+   OUT DX,AL\r
+\r
+   MOV DX,CRTC_ADDR\r
+   INC DX\r
+   MOV AL,[SI]\r
+   OUT DX,AL\r
+\r
+   INC SI\r
+   INC CX\r
+   CMP CL,25\r
+   JL REG_LOOP2\r
+\r
+   // Send GRAPHICS regs\r
+   MOV CX,0\r
+REG_LOOP3:\r
+   MOV DX,GRACON_ADDR\r
+   MOV AL,CL\r
+   OUT DX,AL\r
+\r
+   MOV DX,GRACON_ADDR\r
+   INC DX\r
+   MOV AL,[SI]\r
+   OUT DX,AL\r
+\r
+   INC SI\r
+   INC CX\r
+   CMP CL,9\r
+   JL REG_LOOP3\r
+\r
+   MOV DX,STATUS_ADDR\r
+   IN AL,DX\r
+\r
+   // Send ATTRCON regs\r
+   MOV CX,0\r
+REG_LOOP4:\r
+   MOV DX,ATTRCON_ADDR\r
+   IN AX,DX\r
+\r
+   MOV AL,CL\r
+   OUT DX,AL\r
+\r
+   MOV AL,[SI]\r
+   OUT DX,AL\r
+\r
+   INC SI\r
+   INC CX\r
+   CMP CL,21\r
+   JL REG_LOOP4\r
+\r
+   MOV AL,20H\r
+   OUT DX,AL\r
+   }\r
+}\r
+\r
+void SetVideoMode(int mode)\r
+{\r
+   Mode.mode = mode;\r
+   if (mode == MODE00H)                        // 40 x 25 x 16\r
+   {\r
+      SetMode((unsigned int)&mode00h);\r
+      setpalette16();\r
+      ReadBIOSfont(6,16);\r
+\r
+      Mode.width = 40;\r
+      Mode.height = 25;\r
+      Mode.width_bytes = 1000;\r
+      Mode.colors = 16;\r
+      Mode.attrib = TVU_TEXT;\r
+   }\r
+   else if (mode == MODE03H)                   // 80 x 25 x 16\r
+   {\r
+      SetMode((unsigned int)&mode03h);\r
+      setpalette16();\r
+      ReadBIOSfont(6,16);\r
+\r
+      Mode.width = 80;\r
+      Mode.height = 25;\r
+      Mode.width_bytes = 2000;\r
+      Mode.colors = 16;\r
+      Mode.attrib = TVU_TEXT;\r
+   }\r
+   else if (mode == MODE04H)                   // 320 x 200 x 4\r
+   {\r
+      SetMode((unsigned int)&mode04h);\r
+      setpalette4();\r
+\r
+      Mode.width = 320;\r
+      Mode.height = 200;\r
+      Mode.width_bytes = 8192;\r
+      Mode.colors = 4;\r
+      Mode.attrib = TVU_GRAPHICS;\r
+   }\r
+   else if (mode == MODE06H)                    // 640 x 200 x 2\r
+   {\r
+      SetMode((unsigned int)&mode06h);\r
+\r
+      Mode.width = 640;\r
+      Mode.height = 200;\r
+      Mode.width_bytes = 8192;\r
+      Mode.colors = 2;\r
+      Mode.attrib = TVU_GRAPHICS;\r
+   }\r
+   else if (mode == MODE07H)                    // 80 x 25 x 2\r
+   {\r
+      SetMode((unsigned int)&mode07h);\r
+\r
+      Mode.width = 80;\r
+      Mode.height = 25;\r
+      Mode.width_bytes = 2000;\r
+      Mode.colors = 2;\r
+      Mode.attrib = TVU_TEXT | TVU_MONOCHROME;\r
+   }\r
+   else if (mode == MODE0DH)                    // 320 x 200 x 16\r
+   {\r
+      SetMode((unsigned int)&mode0Dh);\r
+      setpalette16();\r
+\r
+      Mode.width = 320;\r
+      Mode.height = 200;\r
+      Mode.width_bytes = 8000;\r
+      Mode.colors = 16;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_PLANAR;\r
+   }\r
+   else if (mode == MODE0EH)                    // 640 x 200 x 16\r
+   {\r
+      SetMode((unsigned int)&mode0Eh);\r
+      setpalette16();\r
+\r
+      Mode.width = 640;\r
+      Mode.height = 200;\r
+      Mode.width_bytes = 16000;\r
+      Mode.colors = 16;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_PLANAR;\r
+   }\r
+   else if (mode == MODE0FH)                    // 640 x 350 x 2\r
+   {\r
+      SetMode((unsigned int)&mode0Fh);\r
+\r
+      Mode.width = 640;\r
+      Mode.height = 350;\r
+      Mode.width_bytes = 28000;\r
+      Mode.colors = 2;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_MONOCHROME;\r
+   }\r
+   else if (mode == MODE10H)                    // 640 x 350 x 16\r
+   {\r
+      SetMode((unsigned int)&mode10h);\r
+      setpalette16();\r
+\r
+      Mode.width = 640;\r
+      Mode.height = 350;\r
+      Mode.width_bytes = 28000;\r
+      Mode.colors = 16;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_PLANAR;\r
+   }\r
+   else if (mode == MODE11H)                    // 640 x 480 x 2\r
+   {\r
+      SetMode((unsigned int)&mode11h);\r
+\r
+      Mode.width = 640;\r
+      Mode.height = 480;\r
+      Mode.width_bytes = 38400u;\r
+      Mode.colors = 2;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_PLANAR;\r
+   }\r
+   else if (mode == MODE12H)                    // 640 x 480 x 16\r
+   {\r
+      SetMode((unsigned int)&mode12h);\r
+      setpalette16();\r
+\r
+      Mode.width = 640;\r
+      Mode.height = 480;\r
+      Mode.width_bytes = 38400u;\r
+      Mode.colors = 16;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_PLANAR;\r
+   }\r
+   else if (mode == MODE13H)                    // 320 x 200 x 256\r
+   {\r
+      SetMode((unsigned int)&mode13h);\r
+      setpalette256();\r
+\r
+      Mode.width = 320;\r
+      Mode.height = 200;\r
+      Mode.width_bytes = 64000u;\r
+      Mode.colors = 256;\r
+      Mode.attrib = TVU_GRAPHICS;\r
+   }\r
+   else if (mode == CHAIN4)                     // unchained 320 x 200 x 256\r
+   {\r
+      SetMode((unsigned int)&modeC4);\r
+      setpalette256();\r
+\r
+      Mode.width = 320;\r
+      Mode.height = 200;\r
+      Mode.width_bytes = 16000;\r
+      Mode.colors = 256;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED;\r
+   }\r
+   else if (mode == MODE_X)                     // unchained 320 x 240 x 256\r
+   {\r
+      SetMode((unsigned int)&modeC4);\r
+\r
+      outportb(MISC_ADDR,0xE3);\r
+      // turn off write protect\r
+      outport(CRTC_ADDR,0x2C11);\r
+      // vertical total\r
+      outport(CRTC_ADDR,0x0D06);\r
+      // overflow register\r
+      outport(CRTC_ADDR,0x3E07);\r
+      // vertical retrace start\r
+      outport(CRTC_ADDR,0xEA10);\r
+      // vertical retrace end AND wr.prot\r
+      outport(CRTC_ADDR,0xAC11);\r
+      // vertical display enable end\r
+      outport(CRTC_ADDR,0xDF12);\r
+      // start vertical blanking\r
+      outport(CRTC_ADDR,0xE715);\r
+      // end vertical blanking\r
+      outport(CRTC_ADDR,0x0616);\r
+\r
+      setpalette256();\r
+      Mode.width = 320;\r
+      Mode.height = 240;\r
+      Mode.width_bytes = 19200;\r
+      Mode.colors = 256;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED;\r
+   }\r
+   else if (mode == MODE_A)                     // unchained 320 x 350 x 256\r
+   {\r
+      SetMode((unsigned int)&modeC4);\r
+\r
+      // turn off double scanning mode\r
+      outportb(CRTC_ADDR,9);\r
+      outportb(CRTC_ADDR+1,inportb(CRTC_ADDR+1) & ~0x1F);\r
+      // change the vertical resolution flags to 350\r
+      outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0x80);\r
+      // turn off write protect\r
+      outport(CRTC_ADDR,0x2C11);\r
+      // vertical total\r
+      outport(CRTC_ADDR,0xBF06);\r
+      // overflow register\r
+      outport(CRTC_ADDR,0x1F07);\r
+      // vertical retrace start\r
+      outport(CRTC_ADDR,0x8310);\r
+      // vertical retrace end AND wr.prot\r
+      outport(CRTC_ADDR,0x8511);\r
+      // vertical display enable end\r
+      outport(CRTC_ADDR,0x5D12);\r
+      // start vertical blanking\r
+      outport(CRTC_ADDR,0x6315);\r
+      // end vertical blanking\r
+      outport(CRTC_ADDR,0xBA16);\r
+\r
+      setpalette256();\r
+      Mode.width = 320;\r
+      Mode.height = 350;\r
+      Mode.width_bytes = 28000u;\r
+      Mode.colors = 256;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED;\r
+   }\r
+   else if (mode == MODE_B)                     // unchained 320 x 400 x 256\r
+   {\r
+      SetMode((unsigned int)&modeC4);\r
+      // turn off double scanning mode\r
+      outportb(CRTC_ADDR,9);\r
+      outportb(CRTC_ADDR+1,inportb(CRTC_ADDR+1) & ~0x1F);\r
+      // change the vertical resolution flags to 400\r
+      outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0x40);\r
+\r
+      setpalette256();\r
+      Mode.width = 320;\r
+      Mode.height = 400;\r
+      Mode.width_bytes = 32000;\r
+      Mode.colors = 256;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED;\r
+   }\r
+   else if (mode == MODE_C)                     // unchained 320 x 480 x 256\r
+   {\r
+      SetMode((unsigned int)&modeC4);\r
+\r
+      // turn off double scanning mode\r
+      outportb(CRTC_ADDR,9);\r
+      outportb(CRTC_ADDR+1,inportb(CRTC_ADDR+1) & ~0x1F);\r
+      // change the vertical resolution flags to 480\r
+      outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0xC0);\r
+      // turn off write protect\r
+      outport(CRTC_ADDR,0x2C11);\r
+      // vertical total\r
+      outport(CRTC_ADDR,0x0D06);\r
+      // overflow register\r
+      outport(CRTC_ADDR,0x3E07);\r
+      // vertical retrace start\r
+      outport(CRTC_ADDR,0xEA10);\r
+      // vertical retrace end AND wr.prot\r
+      outport(CRTC_ADDR,0xAC11);\r
+      // vertical display enable end\r
+      outport(CRTC_ADDR,0xDF12);\r
+      // start vertical blanking\r
+      outport(CRTC_ADDR,0xE715);\r
+      // end vertical blanking\r
+      outport(CRTC_ADDR,0x0616);\r
+\r
+      setpalette256();\r
+      Mode.width = 320;\r
+      Mode.height = 480;\r
+      Mode.width_bytes = 38400u;\r
+      Mode.colors = 256;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED;\r
+   }\r
+   else if (mode == MODE_D)                     // unchained 360 x 200 x 256\r
+   {\r
+      SetMode((unsigned int)&mode13h);\r
+\r
+      // Turn off Chain 4\r
+      outport(SEQ_ADDR,0x0604);\r
+      // Activate a synchronous reset\r
+      outport(SEQ_ADDR,0x0100);\r
+      // Select 28 mhz pixel clock\r
+      outportb(MISC_ADDR,0xE7);\r
+      // Release synchronous reset\r
+      outport(SEQ_ADDR,0x0300);\r
+\r
+      // change the vertical resolution flags to 400\r
+      outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0x40);\r
+\r
+      // turn off write protect\r
+      outport(CRTC_ADDR,0x2C11);\r
+\r
+      outport(CRTC_ADDR,0x6B00);\r
+      outport(CRTC_ADDR,0x5901);\r
+      outport(CRTC_ADDR,0x5A02);\r
+      outport(CRTC_ADDR,0x8E03);\r
+      outport(CRTC_ADDR,0x5E04);\r
+      outport(CRTC_ADDR,0x8A05);\r
+      outport(CRTC_ADDR,0x0008);\r
+      outport(CRTC_ADDR,0xC009);\r
+      outport(CRTC_ADDR,0x000A);\r
+      outport(CRTC_ADDR,0x000B);\r
+      outport(CRTC_ADDR,0x000C);\r
+      outport(CRTC_ADDR,0x000D);\r
+      outport(CRTC_ADDR,0x000E);\r
+      outport(CRTC_ADDR,0x000F);\r
+      outport(CRTC_ADDR,0xAC11);\r
+      outport(CRTC_ADDR,0x2D13);\r
+      outport(CRTC_ADDR,0x0014);\r
+      outport(CRTC_ADDR,0xE317);\r
+      outport(CRTC_ADDR,0xFF18);\r
+\r
+      setpalette256();\r
+      Mode.width = 360;\r
+      Mode.height = 200;\r
+      Mode.width_bytes = 18000u;\r
+      Mode.colors = 256;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED;\r
+   }\r
+   else if (mode == MODE_E)                     // unchained 360 x 240 x 256\r
+   {\r
+      SetMode((unsigned int)&mode13h);\r
+\r
+      // Turn off Chain 4\r
+      outport(SEQ_ADDR,0x0604);\r
+      // Activate a synchronous reset\r
+      outport(SEQ_ADDR,0x0100);\r
+      // Select 28 mhz pixel clock\r
+      outportb(MISC_ADDR,0xE7);\r
+      // Release synchronous reset\r
+      outport(SEQ_ADDR,0x0300);\r
+\r
+      // change the vertical resolution flags to 480\r
+      outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0xC0);\r
+\r
+      // turn off write protect\r
+      outport(CRTC_ADDR,0x2C11);\r
+\r
+      outport(CRTC_ADDR,0x6B00);\r
+      outport(CRTC_ADDR,0x5901);\r
+      outport(CRTC_ADDR,0x5A02);\r
+      outport(CRTC_ADDR,0x8E03);\r
+      outport(CRTC_ADDR,0x5E04);\r
+      outport(CRTC_ADDR,0x8A05);\r
+      outport(CRTC_ADDR,0x0D06);\r
+      outport(CRTC_ADDR,0x3E07);\r
+      outport(CRTC_ADDR,0x0008);\r
+      outport(CRTC_ADDR,0xC009);\r
+      outport(CRTC_ADDR,0x000A);\r
+      outport(CRTC_ADDR,0x000B);\r
+      outport(CRTC_ADDR,0x000C);\r
+      outport(CRTC_ADDR,0x000D);\r
+      outport(CRTC_ADDR,0x000E);\r
+      outport(CRTC_ADDR,0x000F);\r
+      outport(CRTC_ADDR,0xEA10);\r
+      outport(CRTC_ADDR,0xAC11);\r
+      outport(CRTC_ADDR,0xDF12);\r
+      outport(CRTC_ADDR,0x2D13);\r
+      outport(CRTC_ADDR,0x0014);\r
+      outport(CRTC_ADDR,0xE715);\r
+      outport(CRTC_ADDR,0x0616);\r
+      outport(CRTC_ADDR,0xE317);\r
+      outport(CRTC_ADDR,0xFF18);\r
+\r
+      setpalette256();\r
+      Mode.width = 360;\r
+      Mode.height = 240;\r
+      Mode.width_bytes = 21600;\r
+      Mode.colors = 256;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED;\r
+   }\r
+   else if (mode == MODE_F)                     // unchained 360 x 350 x 256\r
+   {\r
+      SetMode((unsigned int)&mode13h);\r
+\r
+      // Turn off Chain 4\r
+      outport(SEQ_ADDR,0x0604);\r
+      // Activate a synchronous reset\r
+      outport(SEQ_ADDR,0x0100);\r
+      // Select 28 mhz pixel clock\r
+      outportb(MISC_ADDR,0xE7);\r
+      // Release synchronous reset\r
+      outport(SEQ_ADDR,0x0300);\r
+\r
+      // change the vertical resolution flags to 350\r
+      outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0x80);\r
+\r
+      // turn off write protect\r
+      outport(CRTC_ADDR,0x2C11);\r
+\r
+      outport(CRTC_ADDR,0x6B00);\r
+      outport(CRTC_ADDR,0x5901);\r
+      outport(CRTC_ADDR,0x5A02);\r
+      outport(CRTC_ADDR,0x8E03);\r
+      outport(CRTC_ADDR,0x5E04);\r
+      outport(CRTC_ADDR,0x8A05);\r
+      outport(CRTC_ADDR,0xBF06);\r
+      outport(CRTC_ADDR,0x1F07);\r
+      outport(CRTC_ADDR,0x0008);\r
+      outport(CRTC_ADDR,0x4009);\r
+      outport(CRTC_ADDR,0x000A);\r
+      outport(CRTC_ADDR,0x000B);\r
+      outport(CRTC_ADDR,0x000C);\r
+      outport(CRTC_ADDR,0x000D);\r
+      outport(CRTC_ADDR,0x000E);\r
+      outport(CRTC_ADDR,0x000F);\r
+      outport(CRTC_ADDR,0x8310);\r
+      outport(CRTC_ADDR,0x8511);\r
+      outport(CRTC_ADDR,0x5D12);\r
+      outport(CRTC_ADDR,0x2D13);\r
+      outport(CRTC_ADDR,0x0014);\r
+      outport(CRTC_ADDR,0x6315);\r
+      outport(CRTC_ADDR,0xBA16);\r
+      outport(CRTC_ADDR,0xE317);\r
+      outport(CRTC_ADDR,0xFF18);\r
+\r
+      setpalette256();\r
+      Mode.width = 360;\r
+      Mode.height = 350;\r
+      Mode.width_bytes = 31500;\r
+      Mode.colors = 256;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED;\r
+   }\r
+   else if (mode == MODE_G)                     // unchained 360 x 400 x 256\r
+   {\r
+      SetMode((unsigned int)&mode13h);\r
+\r
+      // Turn off Chain 4\r
+      outport(SEQ_ADDR,0x0604);\r
+      // Activate a synchronous reset\r
+      outport(SEQ_ADDR,0x0100);\r
+      // Select 28 mhz pixel clock\r
+      outportb(MISC_ADDR,0xE7);\r
+      // Release synchronous reset\r
+      outport(SEQ_ADDR,0x0300);\r
+\r
+      // change the vertical resolution flags to 400\r
+      outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0x40);\r
+\r
+      // turn off write protect\r
+      outport(CRTC_ADDR,0x2C11);\r
+\r
+      outport(CRTC_ADDR,0x6B00);\r
+      outport(CRTC_ADDR,0x5901);\r
+      outport(CRTC_ADDR,0x5A02);\r
+      outport(CRTC_ADDR,0x8E03);\r
+      outport(CRTC_ADDR,0x5E04);\r
+      outport(CRTC_ADDR,0x8A05);\r
+      outport(CRTC_ADDR,0x0008);\r
+      outport(CRTC_ADDR,0x4009);\r
+      outport(CRTC_ADDR,0x000A);\r
+      outport(CRTC_ADDR,0x000B);\r
+      outport(CRTC_ADDR,0x000C);\r
+      outport(CRTC_ADDR,0x000D);\r
+      outport(CRTC_ADDR,0x000E);\r
+      outport(CRTC_ADDR,0x000F);\r
+      outport(CRTC_ADDR,0xAC11);\r
+      outport(CRTC_ADDR,0x2D13);\r
+      outport(CRTC_ADDR,0x0014);\r
+      outport(CRTC_ADDR,0xE317);\r
+      outport(CRTC_ADDR,0xFF18);\r
+\r
+      setpalette256();\r
+      Mode.width = 360;\r
+      Mode.height = 400;\r
+      Mode.width_bytes = 36000u;\r
+      Mode.colors = 256;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED;\r
+   }\r
+   else if (mode == MODE_H)                     // unchained 360 x 480 x 256\r
+   {\r
+      SetMode((unsigned int)&mode13h);\r
+\r
+      // Turn off Chain 4\r
+      outport(SEQ_ADDR,0x0604);\r
+      // Activate a synchronous reset\r
+      outport(SEQ_ADDR,0x0100);\r
+      // Select 28 mhz pixel clock\r
+      outportb(MISC_ADDR,0xE7);\r
+      // Release synchronous reset\r
+      outport(SEQ_ADDR,0x0300);\r
+\r
+      // change the vertical resolution flags to 480\r
+      outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0xC0);\r
+\r
+      // turn off write protect\r
+      outport(CRTC_ADDR,0x2C11);\r
+\r
+      outport(CRTC_ADDR,0x6B00);\r
+      outport(CRTC_ADDR,0x5901);\r
+      outport(CRTC_ADDR,0x5A02);\r
+      outport(CRTC_ADDR,0x8E03);\r
+      outport(CRTC_ADDR,0x5E04);\r
+      outport(CRTC_ADDR,0x8A05);\r
+      outport(CRTC_ADDR,0x0D06);\r
+      outport(CRTC_ADDR,0x3E07);\r
+      outport(CRTC_ADDR,0x0008);\r
+      outport(CRTC_ADDR,0x4009);\r
+      outport(CRTC_ADDR,0x000A);\r
+      outport(CRTC_ADDR,0x000B);\r
+      outport(CRTC_ADDR,0x000C);\r
+      outport(CRTC_ADDR,0x000D);\r
+      outport(CRTC_ADDR,0x000E);\r
+      outport(CRTC_ADDR,0x000F);\r
+      outport(CRTC_ADDR,0xEA10);\r
+      outport(CRTC_ADDR,0xAC11);\r
+      outport(CRTC_ADDR,0xDF12);\r
+      outport(CRTC_ADDR,0x2D13);\r
+      outport(CRTC_ADDR,0x0014);\r
+      outport(CRTC_ADDR,0xE715);\r
+      outport(CRTC_ADDR,0x0616);\r
+      outport(CRTC_ADDR,0xE317);\r
+      outport(CRTC_ADDR,0xFF18);\r
+\r
+      setpalette256();\r
+      Mode.width = 360;\r
+      Mode.height = 480;\r
+      Mode.width_bytes = 43200u;\r
+      Mode.colors = 256;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED;\r
+   }\r
+   else if (mode == MODE_I)                     // 640 x 400 x 16\r
+   {\r
+      SetMode((unsigned int)&mode10h);\r
+      asm {\r
+\r
+         MOV DX,03CCH\r
+         IN AL,DX\r
+         AND AL,03FH\r
+         OR AL,40H\r
+\r
+         MOV DX,03C2H\r
+         OUT DX,AL\r
+\r
+         MOV DX,CRTC_ADDR\r
+         MOV AX,9C10H\r
+         OUT DX,AX\r
+\r
+         MOV AX,8311H\r
+         OUT DX,AX\r
+\r
+         MOV AX,8F12H\r
+         OUT DX,AX\r
+\r
+         MOV AX,9615H\r
+         OUT DX,AX\r
+\r
+         MOV AX,0B916H\r
+         OUT DX,AX\r
+      }\r
+      setpalette16();\r
+      Mode.width = 640;\r
+      Mode.height = 400;\r
+      Mode.width_bytes = 32000;\r
+      Mode.colors = 16;\r
+      Mode.attrib = TVU_GRAPHICS | TVU_PLANAR;\r
+   }\r
+   else if (mode == MODE_J)                    // 80 x 43 x 16\r
+   {\r
+      SetMode((unsigned int)&modeJ);\r
+      ReadBIOSfont(3,8);\r
+\r
+      Mode.width = 80;\r
+      Mode.height = 43;\r
+      Mode.width_bytes = 3440;\r
+      Mode.colors = 16;\r
+      Mode.attrib = TVU_TEXT;\r
+   }\r
+   else if (mode == MODE_K)                    // 80 x 50 x 16\r
+   {\r
+      SetMode((unsigned int)&modeK);\r
+      ReadBIOSfont(3,8);\r
+\r
+      Mode.width = 80;\r
+      Mode.height = 50;\r
+      Mode.width_bytes = 4000;\r
+      Mode.colors = 16;\r
+      Mode.attrib = TVU_TEXT;\r
+   }\r
+   else if (mode == MODE_L)                    // 40 x 43 x 16\r
+   {\r
+      SetMode((unsigned int)&modeL);\r
+      ReadBIOSfont(3,8);\r
+\r
+      Mode.width = 40;\r
+      Mode.height = 43;\r
+      Mode.width_bytes = 4000;\r
+      Mode.colors = 16;\r
+      Mode.attrib = TVU_TEXT;\r
+   }\r
+   else if (mode == MODE_M)                    // 40 x 50 x 16\r
+   {\r
+      SetMode((unsigned int)&modeM);\r
+      ReadBIOSfont(3,8);\r
+\r
+      Mode.width = 40;\r
+      Mode.height = 50;\r
+      Mode.width_bytes = 4000;\r
+      Mode.colors = 16;\r
+      Mode.attrib = TVU_TEXT;\r
+   }\r
+}\r
+\r
+void setpal(int color, char r, char g, char b)\r
+{\r
+   asm {\r
+   // Send color\r
+   MOV AX,color\r
+   MOV DX,03C8H\r
+   OUT DX,AL\r
+\r
+   // Write R value\r
+   MOV DX,03C9H\r
+   MOV AL,r\r
+   OUT DX,AL\r
+\r
+   // Write G value\r
+   MOV DX,03C9H\r
+   MOV AL,g\r
+   OUT DX,AL\r
+\r
+   // Write B value\r
+   MOV DX,03C9H\r
+   MOV AL,b\r
+   OUT DX,AL\r
+   }\r
+}\r
+\r
+void setpalette4()\r
+{\r
+   setpal( 0,  0,  0,  0);\r
+   setpal( 1,  0, 42, 42);\r
+   setpal( 2, 42,  0, 42);\r
+   setpal( 3, 63, 63, 63);\r
+}\r
+\r
+void setpalette16()\r
+{\r
+   int j = 0;\r
+   for (int i = 0; i < 48; i+=3)\r
+   {\r
+      setpal(j, Pal[i], Pal[i+1], Pal[i+2]);\r
+      j++;\r
+   }\r
+}\r
+\r
+void setpalette256()\r
+{\r
+   int j = 0;\r
+   for (int i = 0; i < 768; i+=3)\r
+   {\r
+      setpal(j, Pal[i], Pal[i+1], Pal[i+2]);\r
+      j++;\r
+   }\r
+}\r
diff --git a/16/tauron30/C_SRC/MODES_C.INC b/16/tauron30/C_SRC/MODES_C.INC
new file mode 100755 (executable)
index 0000000..585af88
--- /dev/null
@@ -0,0 +1,262 @@
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=-                                                                         -=\r
+//=-                   Tauron VGA Utilities Version 3.0                      -=\r
+//=-                      Released September 20, 1998                        -=\r
+//=-                                                                         -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+//=- All Rights Reserved.                     =-= that you put my name some- -=\r
+//=-                                          =-= where in your credits.     -=\r
+//=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- I assume no responsibility whatsoever for any effect that this package, -=\r
+//=- the information contained therein or the use thereof has on you, your   -=\r
+//=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+//=- you or your existance. No warranty is provided nor implied with this    -=\r
+//=- source code.                                                            -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- VGA register variables for the various videomodes                       -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+// Same as Mode 01H\r
+unsigned char mode00h[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0x67,      0x00,          0x03,0x08,0x03,0x00,0x02,\r
+// CRTC regs\r
+0x2D,0x27,0x28,0x90,0x2B,0xA0,0xBF,0x1F,0x00,0x4F,0x06,0x07,0x00,0x00,0x00,\r
+0x31,0x9C,0x8E,0x8F,0x14,0x1F,0x96,0xB9,0xA3,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x10,0x0E,0x00,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x10,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,\r
+0x0C,0x00,0x0F,0x08,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+\r
+// Same as Mode 02H\r
+unsigned char mode03h[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0x67,      0x00,          0x03,0x00,0x03,0x00,0x02,\r
+// CRTC regs\r
+0x5F,0x4F,0x50,0x82,0x55,0x81,0xBF,0x1F,0x00,0x4F,0x0E,0x0F,0x00,0x00,0x00,\r
+0x00,0x9C,0x0E,0x8F,0x28,0x01,0x96,0xB9,0xA3,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x10,0x0E,0x00,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x10,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,\r
+0x0C,0x00,0x0F,0x08,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+// Same as Mode 05,\r
+unsigned char mode04h[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0x63,      0x00,          0x03,0x09,0x03,0x00,0x02,\r
+// CRTC regs\r
+0x2D,0x27,0x28,0x90,0x2B,0x80,0x0BF,0x1F,0x00,0x0C1,0x00,0x00,0x00,0x00,0x00,\r
+0x31,0x9C,0x8E,0x8F,0x14,0x00,0x96,0xB9,0x0A2,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x30,0x0F,0x00,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x3B,0x3D,0x3F,0x02,0x04,0x06,0x07,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,\r
+0x01,0x00,0x03,0x00,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char mode06h[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0x63,      0x00,          0x03,0x01,0x01,0x00,0x06,\r
+// CRTC regs\r
+0x5F,0x4F,0x50,0x82,0x54,0x80,0x0BF,0x1F,0x00,0x0C1,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x9C,0x8E,0x8F,0x28,0x00,0x96,0xB9,0x0C2,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0x00,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,\r
+0x01,0x00,0x01,0x00,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char mode07h[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0x066,     0x00,          0x03,0x00,0x03,0x00,0x02,\r
+// CRTC regs\r
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x10,0x0A,0x00,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x10,0x18,0x18,0x18,0x18,0x18,0x18,0x18,\r
+0x0E,0x00,0x0F,0x00,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char mode0Dh[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0x063,     0x00,          0x03,0x09,0x0F,0x00,0x06,\r
+// CRTC regs\r
+0x2D,0x27,0x28,0x90,0x2B,0x80,0x0BF,0x1F,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,\r
+0x31,0x9C,0x8E,0x8F,0x14,0x00,0x96,0xB9,0xE3,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x10,0x05,0x00,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x10,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,\r
+0x01,0x00,0x0F,0x00,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char mode0Eh[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0x63,      0x00,          0x03,0x01,0x0F,0x00,0x06,\r
+// CRTC regs\r
+0x5F,0x4F,0x50,0x82,0x54,0x80,0x0BF,0x1F,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,\r
+0x59,0x9C,0x8E,0x8F,0x28,0x00,0x96,0xB9,0xE3,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0F,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x08,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,\r
+0x01,0x00,0x0F,0x00,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char mode0Fh[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0x0A2,     0x00,          0x03,0x01,0x0F,0x00,0x06,\r
+// CRTC regs\r
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x05,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x08,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x18,0x00,0x00,\r
+0x0B,0x00,0x05,0x00,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char mode10h[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0x0A3,     0x00,          0x03,0x01,0x0F,0x00,0x06,\r
+// CRTC regs\r
+0x5F,0x4F,0x50,0x82,0x54,0x80,0x0BF,0x1F,0x00,0x40,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x83,0x85,0x5D,0x28,0x0F,0x63,0x0BA,0xE3,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0F,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,\r
+0x01,0x00,0x0F,0x00,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char mode11h[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0xE3,     0x00,          0x03,0x01,0x0F,0x00,0x06,\r
+// CRTC regs\r
+0x5F,0x4F,0x50,0x82,0x54,0x80,0x0B,0x3E,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x59,\r
+0xEA,0x8C,0x0DF,0x28,0x0F,0x0E7,0x004,0x0C3,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x05,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x08,0x3F,0x3F,0x18,0x18,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,\r
+0x01,0x00,0x0F,0x00,0x00\r
+\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char mode12h[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0xE3,     0x00,          0x03,0x01,0x0F,0x00,0x06,\r
+// CRTC regs\r
+0x5F,0x4F,0x50,0x82,0x54,0x80,0x0B,0x3E,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x59,\r
+0xEA,0x8C,0x0DF,0x28,0x00,0x0E7,0x04,0xE3,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0F,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,\r
+0x01,0x00,0x0F,0x00,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char mode13h[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0x63,      0x00,          0x03,0x01,0x0F,0x00,0x0E,\r
+// CRTC regs\r
+0x5F,0x4F,0x50,0x82,0x54,0x80,0x0BF,0x1F,0x00,0x41,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x9C,0x0E,0x8F,0x28,0x40,0x96,0xB9,0x0A3,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,\r
+0x41,0x00,0x0F,0x00,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char modeC4[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0x63,      0x00,          0x03,0x01,0x0F,0x00,0x06,\r
+// CRTC regs\r
+0x5F,0x4F,0x50,0x82,0x54,0x80,0x0BF,0x1F,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x9C,0x0E,0x8F,0x28,0x00,0x96,0xB9,0xE3,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,\r
+0x41,0x00,0x0F,0x00,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char modeJ[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0xa3,      0x00,          0x03,0x01,0x03,0x00,0x02,\r
+// CRTC regs\r
+0x5F,0x4F,0x50,0x82,0x55,0x81,0xBF,0x1F,0x00,0x47,0x0E,0x0F,0x00,0x00,0x00,\r
+0x00,0x83,0x85,0x57,0x28,0x1F,0x60,0xB8,0xA3,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x10,0x0E,0x00,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x10,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,\r
+0x0C,0x00,0x0F,0x00,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char modeK[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+   0x63,      0x00,          0x03,0x01,0x03,0x00,0x02,\r
+// CRTC regs\r
+0x5F,0x4F,0x50,0x82,0x55,0x81,0xBF,0x1F,0x00,0x47,0x0E,0x0F,0x00,0x00,0x00,\r
+0x00,0x9C,0x8E,0x8F,0x28,0x1F,0x96,0xB9,0xA3,0xFF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x10,0x0E,0x00,0xFF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x10,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,\r
+0x0C,0x00,0x0F,0x00,0x00\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+unsigned char modeL[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+0x67,0x00,0x03,0x08,0x03,0x00,0x02,\r
+// CRTC regs\r
+0x2D,0x27,0x28,0x90,0x2B,0x0A0,0x0BF,0x1F,0x00,0x47,0x06,0x07,0x00,0x00,0x00,\r
+0x31,0x83,0x85,0x57,0x14,0x1F,0x60,0x0B8,0x0A3,0x0FF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x10,0x0E,0x00,0x0FF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x10,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,\r
+0x0C,0x00,0x0F,0x00,0x00,\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+\r
+unsigned char modeM[62] = {\r
+// MISC reg,  STATUS reg,    SEQ regs\r
+0x67,0x00,0x03,0x08,0x03,0x00,0x02,\r
+// CRTC regs\r
+0x2D,0x27,0x28,0x90,0x2B,0x0A0,0x0BF,0x1F,0x00,0x47,0x06,0x07,0x00,0x00,0x00,0x31,\r
+0x9C,0x8E,0x8F,0x14,0x1F,0x96,0x0B9,0x0A3,0x0FF,\r
+// GRAPHICS regs\r
+0x00,0x00,0x00,0x00,0x00,0x10,0x0E,0x00,0x0FF,\r
+// ATTRIBUTE CONTROLLER regs\r
+0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,\r
+0x0C,0x00,0x0F,0x00,0x00,\r
+};\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
diff --git a/16/tauron30/C_SRC/PALETTE.INC b/16/tauron30/C_SRC/PALETTE.INC
new file mode 100755 (executable)
index 0000000..a89ce79
--- /dev/null
@@ -0,0 +1,62 @@
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=-                                                                         -=\r
+//=-                   Tauron VGA Utilities Version 3.0                      -=\r
+//=-                      Released September 20, 1998                        -=\r
+//=-                                                                         -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+//=- All Rights Reserved.                     =-= that you put my name some- -=\r
+//=-                                          =-= where in your credits.     -=\r
+//=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- I assume no responsibility whatsoever for any effect that this package, -=\r
+//=- the information contained therein or the use thereof has on you, your   -=\r
+//=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+//=- you or your existance. No warranty is provided nor implied with this    -=\r
+//=- source code.                                                            -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+char Pal[768] = {\r
+ 0,  0,  0,  0,  0, 42,  0, 42,  0,  0, 42, 42, 42,  0,  0, 42,  0, 42,\r
+42, 21,  0, 42, 42, 42, 21, 21, 21, 21, 21, 63, 21, 63, 21, 21, 63, 63,\r
+63, 21, 21, 63, 21, 63, 63, 63, 21, 63, 63, 63,  0,  0,  0,  5,  5,  5,\r
+ 8,  8,  8, 11, 11, 11, 14, 14, 14, 17, 17, 17, 20, 20, 20, 24, 24, 24,\r
+28, 28, 28, 32, 32, 32, 36, 36, 36, 40, 40, 40, 45, 45, 45, 50, 50, 50,\r
+56, 56, 56, 63, 63, 63,  0,  0, 63, 16,  0, 63, 31,  0, 63, 47,  0, 63,\r
+63,  0, 63, 63,  0, 47, 63,  0, 31, 63,  0, 16, 63,  0,  0, 63, 16,  0,\r
+63, 31,  0, 63, 47,  0, 63, 63,  0, 47, 63,  0, 31, 63,  0, 16, 63,  0,\r
+ 0, 63,  0,  0, 63, 16,  0, 63, 31,  0, 63, 47,  0, 63, 63,  0, 47, 63,\r
+ 0, 31, 63,  0, 16, 63, 31, 31, 63, 39, 31, 63, 47, 31, 63, 55, 31, 63,\r
+63, 31, 63, 63, 31, 55, 63, 31, 47, 63, 31, 39, 63, 31, 31, 63, 39, 31,\r
+63, 47, 31, 63, 55, 31, 63, 63, 31, 55, 63, 31, 47, 63, 31, 39, 63, 31,\r
+31, 63, 31, 31, 63, 39, 31, 63, 47, 31, 63, 55, 31, 63, 63, 31, 55, 63,\r
+31, 47, 63, 31, 39, 63, 45, 45, 63, 49, 45, 63, 54, 45, 63, 58, 45, 63,\r
+63, 45, 63, 63, 45, 58, 63, 45, 54, 63, 45, 49, 63, 45, 45, 63, 49, 45,\r
+63, 54, 45, 63, 58, 45, 63, 63, 45, 58, 63, 45, 54, 63, 45, 49, 63, 45,\r
+45, 63, 45, 45, 63, 49, 45, 63, 54, 45, 63, 58, 45, 63, 63, 45, 58, 63,\r
+45, 54, 63, 45, 49, 63,  0,  0, 28,  7,  0, 28, 14,  0, 28, 21,  0, 28,\r
+28,  0, 28, 28,  0, 21, 28,  0, 14, 28,  0,  7, 28,  0,  0, 28,  7,  0,\r
+28, 14,  0, 28, 21,  0, 28, 28,  0, 21, 28,  0, 14, 28,  0,  7, 28,  0,\r
+ 0, 28,  0,  0, 28,  7,  0, 28, 14,  0, 28, 21,  0, 28, 28,  0, 21, 28,\r
+ 0, 14, 28,  0,  7, 28, 14, 14, 28, 17, 14, 28, 21, 14, 28, 24, 14, 28,\r
+28, 14, 28, 28, 14, 24, 28, 14, 21, 28, 14, 17, 28, 14, 14, 28, 17, 14,\r
+28, 21, 14, 28, 24, 14, 28, 28, 14, 24, 28, 14, 21, 28, 14, 17, 28, 14,\r
+14, 28, 14, 14, 28, 17, 14, 28, 21, 14, 28, 24, 14, 28, 28, 14, 24, 28,\r
+14, 21, 28, 14, 17, 28, 20, 20, 28, 22, 20, 28, 24, 20, 28, 26, 20, 28,\r
+28, 20, 28, 28, 20, 26, 28, 20, 24, 28, 20, 22, 28, 20, 20, 28, 22, 20,\r
+28, 24, 20, 28, 26, 20, 28, 28, 20, 26, 28, 20, 24, 28, 20, 22, 28, 20,\r
+20, 28, 20, 20, 28, 22, 20, 28, 24, 20, 28, 26, 20, 28, 28, 20, 26, 28,\r
+20, 24, 28, 20, 22, 28,  0,  0, 16,  4,  0, 16,  8,  0, 16, 12,  0, 16,\r
+16,  0, 16, 16,  0, 12, 16,  0,  8, 16,  0,  4, 16,  0,  0, 16,  4,  0,\r
+16,  8,  0, 16, 12,  0, 16, 16,  0, 12, 16,  0,  8, 16,  0,  4, 16,  0,\r
+ 0, 16,  0,  0, 16,  4,  0, 16,  8,  0, 16, 12,  0, 16, 16,  0, 12, 16,\r
+ 0,  8, 16,  0,  4, 16,  8,  8, 16, 10,  8, 16, 12,  8, 16, 14,  8, 16,\r
+16,  8, 16, 16,  8, 14, 16,  8, 12, 16,  8, 10, 16,  8,  8, 16, 10,  8,\r
+16, 12,  8, 16, 14,  8, 16, 16,  8, 14, 16,  8, 12, 16,  8, 10, 16,  8,\r
+ 8, 16,  8,  8, 16, 10,  8, 16, 12,  8, 16, 14,  8, 16, 16,  8, 14, 16,\r
+ 8, 12, 16,  8, 10, 16, 11, 11, 16, 12, 11, 16, 13, 11, 16, 15, 11, 16,\r
+16, 11, 16, 16, 11, 15, 16, 11, 13, 16, 11, 12, 16, 11, 11, 16, 12, 11,\r
+16, 13, 11, 16, 15, 11, 16, 16, 11, 15, 16, 11, 13, 16, 11, 12, 16, 11,\r
+11, 16, 11, 11, 16, 12, 11, 16, 13, 11, 16, 15, 11, 16, 16, 11, 15, 16,\r
+11, 13, 16, 11, 12, 16,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,\r
+ 0,  0,  0,  0,  0,  0,  0,  0,  0, 63, 63, 63\r
+};\r
diff --git a/16/tauron30/C_SRC/TAURON.H b/16/tauron30/C_SRC/TAURON.H
new file mode 100755 (executable)
index 0000000..f14f312
--- /dev/null
@@ -0,0 +1,105 @@
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=-                                                                         -=\r
+//=-                   Tauron VGA Utilities Version 3.0                      -=\r
+//=-                      Released September 20, 1998                        -=\r
+//=-                                                                         -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+//=- All Rights Reserved.                     =-= that you put my name some- -=\r
+//=-                                          =-= where in your credits.     -=\r
+//=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- I assume no responsibility whatsoever for any effect that this package, -=\r
+//=- the information contained therein or the use thereof has on you, your   -=\r
+//=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+//=- you or your existance. No warranty is provided nor implied with this    -=\r
+//=- source code.                                                            -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+#ifndef __TAURON_H__\r
+#define __TAURON_H__\r
+\r
+// VGA register port addresses\r
+#define ATTRCON_ADDR                                   0x03C0\r
+#define MISC_ADDR                0x03C2\r
+#define VGAENABLE_ADDR           0x03C3\r
+#define SEQ_ADDR                 0x03C4\r
+#define GRACON_ADDR              0x03CE\r
+#define CRTC_ADDR                0x03D4\r
+#define STATUS_ADDR              0x03DA\r
+\r
+// Video mode numbers\r
+#define MODE00H                                                0x00\r
+#define MODE01H                                                0x00\r
+#define MODE02H                                                0x03\r
+#define MODE03H                                                0x03\r
+#define MODE04H                                                0x04\r
+#define MODE05H                                                0x05\r
+#define MODE06H                                                0x06\r
+#define MODE07H                                                0x07\r
+#define MODE0DH                                                0x0D\r
+#define MODE0EH                                                0x0E\r
+#define MODE0FH                                                0x0F\r
+#define MODE10H                                                0x10\r
+#define MODE11H                                                0x11\r
+#define MODE12H                                                0x12\r
+#define MODE13H                                                0x13\r
+#define CHAIN4                                                 0x14\r
+#define MODE_X                                                 0x15\r
+#define MODE_A                                                 0x16\r
+#define MODE_B                                                 0x17\r
+#define MODE_C                                                 0x18\r
+#define MODE_D                                                 0x19\r
+#define MODE_E                                                 0x1A\r
+#define MODE_F                                                 0x1B\r
+#define MODE_G                                                 0x1C\r
+#define MODE_H                                                 0x1D\r
+#define MODE_I                                                 0x1E\r
+#define MODE_J                                                 0x1F\r
+#define MODE_K                                                 0x20\r
+#define MODE_L                                                 0x21\r
+#define MODE_M                                                 0x22\r
+\r
+// Keypresses\r
+#define Escape                                                 0x001b\r
+\r
+// Videomode attributes\r
+#define TVU_TEXT                                               0x0001\r
+#define TVU_GRAPHICS                                   0x0002\r
+#define TVU_MONOCHROME                         0x0004\r
+#define TVU_PLANAR                                     0x0008\r
+#define TVU_UNCHAINED                          0x0010\r
+\r
+// Videomode Info Structure\r
+struct Vmode {\r
+   int mode;                      // Videomode Number\r
+   int width;                     // Width in pixels\r
+   int height;                    // Height in pixels\r
+   unsigned int width_bytes;      // Number of bytes per screen\r
+   int colors;                    // Number of colors\r
+   int attrib;                    // Videomode attributes\r
+};\r
+\r
+extern Vmode Mode;\r
+\r
+// MODES.CPP Function Prototypes\r
+void SetVideoMode(int mode);\r
+void ReadBIOSfont(int fontnum, int bytesperchar);\r
+void SetMode(unsigned int regs);\r
+void setpal(int color, char r, char g, char b);\r
+\r
+// CLEAR.CPP Function Prototypes\r
+void TextClear(char attrib);\r
+void PlanarClear(char Color);\r
+void UnchainedClear(char Color);\r
+void Clear13H(char color);\r
+void Clear04H();\r
+void Clear06H();\r
+void Clear0DH(char color);\r
+\r
+// TESTS.CPP Function Prototypes\r
+void ModeTest();\r
+void TextTest();\r
+\r
+// DUAL.CPP Function Prototypes\r
+void DualTest();\r
+\r
+#endif
\ No newline at end of file
diff --git a/16/tauron30/C_SRC/TESTS.CPP b/16/tauron30/C_SRC/TESTS.CPP
new file mode 100755 (executable)
index 0000000..e89084f
--- /dev/null
@@ -0,0 +1,376 @@
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=-                                                                         -=\r
+//=-                   Tauron VGA Utilities Version 3.0                      -=\r
+//=-                      Released September 20, 1998                        -=\r
+//=-                                                                         -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+//=- All Rights Reserved.                     =-= that you put my name some- -=\r
+//=-                                          =-= where in your credits.     -=\r
+//=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//=- I assume no responsibility whatsoever for any effect that this package, -=\r
+//=- the information contained therein or the use thereof has on you, your   -=\r
+//=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+//=- you or your existance. No warranty is provided nor implied with this    -=\r
+//=- source code.                                                            -=\r
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+#include <stdlib.h>\r
+#include <stdio.h>\r
+#include <conio.h>\r
+#include "tauron.h"\r
+#define ABS(a)   ((a < 0) ? -a : a)\r
+#define SGN(a)   ((a < 0) ? -1 : 1)\r
+\r
+void Pixel13H(int x, int y, char color)\r
+{\r
+   int width = Mode.width;\r
+   asm {\r
+   MOV AX,0A000H   //    video memory segment number\r
+   MOV ES,AX       //    place it in es\r
+\r
+   MOV DX,03C4H\r
+   MOV AL,2\r
+   OUT DX,AL\r
+   INC DX\r
+\r
+   MOV AL,1\r
+   MOV CX,x\r
+   AND CX,3\r
+   SHL AL,CL\r
+   OUT DX,AL\r
+\r
+   XOR DI,DI\r
+\r
+// Calculate the Offset\r
+   mov ax,width  // width\r
+   mul y         // (Y * width))\r
+   mov bx,x      // (X + (Y * width))\r
+   add ax,bx\r
+// Done!\r
+\r
+   ADD DI,AX\r
+   mov ah,color   //    move the Color into ah\r
+   mov es:[di],ah //    move the value to the screen\r
+   }\r
+}\r
+\r
+void pixel(int x, int y, char color)\r
+{\r
+   int width = Mode.width;\r
+   if (Mode.mode == MODE13H)\r
+      Pixel13H(x,y,color);\r
+   else if (Mode.attrib & TVU_UNCHAINED) {\r
+   asm {\r
+   MOV AX,0A000H   //    video memory segment number\r
+   MOV ES,AX       //    place it in es\r
+\r
+   MOV DX,03C4H\r
+   MOV AL,2\r
+   OUT DX,AL\r
+   INC DX\r
+\r
+   MOV AL,1\r
+   MOV CX,x\r
+   AND CX,3\r
+   SHL AL,CL\r
+   OUT DX,AL\r
+\r
+   XOR DI,DI\r
+\r
+// Calculate the Offset\r
+   mov ax,width  // width / 4\r
+   SHR AX,2\r
+   mul y         // (Y * (width / 4))\r
+   mov bx,x      // (X / 4) + (Y * (width / 4))\r
+   shr bx,2\r
+   add ax,bx\r
+// Done!\r
+\r
+   ADD DI,AX\r
+   mov ah,color   //    move the Color into ah\r
+   mov es:[di],ah //    move the value to the screen\r
+   }}\r
+   else if (Mode.attrib & TVU_PLANAR)\r
+   {\r
+   asm {\r
+   MOV AX,0A000H   //    video memory segment number\r
+   MOV ES,AX       //    place it in es\r
+\r
+   MOV BX,x        //    X Value\r
+   MOV CX,BX\r
+   MOV AX,y        //    Y Value\r
+   MOV SI,80\r
+   MUL SI\r
+   SHR BX,3        //    /8\r
+   ADD AX,BX\r
+   MOV DI,AX\r
+\r
+   AND CL,7\r
+   XOR CL,7\r
+   MOV AH,1\r
+\r
+   SHL AH,CL\r
+\r
+   MOV DX,03CEH\r
+   MOV AL,8\r
+   OUT DX,AX\r
+\r
+   MOV AL,0\r
+   XCHG ES:[DI],AL\r
+\r
+   MOV DX,03C4H\r
+   MOV AH,color\r
+   MOV AL,2\r
+   OUT DX,AX\r
+\r
+   MOV BYTE PTR ES:[DI],0FFh\r
+\r
+   MOV AX,0F02H\r
+   OUT DX,AX\r
+\r
+   MOV DX,03CEH\r
+   MOV AX,0FF08h\r
+   OUT DX,AX\r
+   }}\r
+}\r
+\r
+// This is Bresenham's Line Drawing Algorithm\r
+void drawline(int x1, int y1, int x2, int y2, char col)\r
+{\r
+   int d, x, y, ax, ay, sx, sy, dx, dy;\r
+\r
+   dx = x2-x1;\r
+   ax = ABS(dx) << 1;\r
+   sx = SGN(dx);\r
+   dy = y2-y1;\r
+   ay = ABS(dy) << 1;\r
+   sy = SGN(dy);\r
+\r
+   x = x1;\r
+   y = y1;\r
+   if( ax > ay )\r
+   {\r
+      d = ay - (ax >> 1);\r
+      while( x != x2 )\r
+      {\r
+             pixel( x, y, col );\r
+             if( d >= 0 )\r
+             {\r
+                y += sy;\r
+                d -= ax;\r
+             }\r
+             x += sx;\r
+             d += ay;\r
+      }\r
+   }\r
+   else\r
+   {\r
+      d = ax - (ay >> 1);\r
+      while( y != y2 )\r
+      {\r
+             pixel( x, y, col );\r
+             if( d >= 0 )\r
+             {\r
+                x += sx;\r
+                d -= ay;\r
+             }\r
+             y += sy;\r
+             d += ax;\r
+      }\r
+   }\r
+   return;\r
+}\r
+\r
+void drawrect(int x1, int y1, int x2, int y2, char color)\r
+{\r
+   drawline(x1,y1,x2,y1,color);\r
+   drawline(x1,y2,x2,y2,color);\r
+   drawline(x1,y1,x1,y2,color);\r
+   drawline(x2,y1,x2,y2+1,color);\r
+}\r
+\r
+void hline(int x1, int x2, int y, char color)\r
+{\r
+   drawline(x1,y,x2,y,color);\r
+}\r
+\r
+void vline(int y1, int y2, int x, char color)\r
+{\r
+   drawline(x,y1,x,y2,color);\r
+}\r
+\r
+void fillrect(int x1, int y1, int x2, int y2, char color)\r
+{\r
+   for (int i = y1; i < y2; i++)\r
+      hline(x1,x2,i,color);\r
+}\r
+\r
+void ModeTest()\r
+{\r
+   if (Mode.mode == MODE13H)\r
+   {\r
+      Clear13H(0);\r
+   }\r
+   else if (Mode.attrib & TVU_PLANAR)\r
+   {\r
+      PlanarClear(0);\r
+   }\r
+   else if (Mode.attrib & TVU_UNCHAINED)\r
+   {\r
+      UnchainedClear(0);\r
+   }\r
+\r
+   /* Print mode stats\r
+    *\r
+    */\r
+\r
+   drawrect(0,0,Mode.width-1,Mode.height-1,15);\r
+   for (int i = 50; i < Mode.height; i += 100)\r
+   {\r
+      hline(0,10,i,15);\r
+      hline(0,25,i+50,15);\r
+   }\r
+\r
+   for (int i = 40; i < Mode.width; i += 80)\r
+   {\r
+      vline(0,15,i,15);\r
+      vline(0,30,i+40,15);\r
+   }\r
+\r
+   if (Mode.colors == 2)\r
+   {\r
+      int x,y;\r
+      x = Mode.width - 420;\r
+      y = Mode.height - 220;\r
+      fillrect(x,y,x+200,y+200,0);\r
+      x+=200;\r
+      fillrect(x,y,x+200,y+200,15);\r
+      drawrect(x-200,y,x+200,y+200,15);\r
+   }\r
+   else if (Mode.colors == 16)\r
+   {\r
+      int x,y;\r
+      x = Mode.width - 522;\r
+      y = Mode.height - 135;\r
+      for (int i = 0; i < 8; i++)\r
+      {\r
+         fillrect(x,y,x+64,y+64,i);\r
+         x+=64;\r
+      }\r
+      x = Mode.width - 522;\r
+      y += 64;\r
+      for (int i = 8; i < 16; i++)\r
+      {\r
+         fillrect(x,y,x+64,y+64,i);\r
+         x+=64;\r
+      }\r
+      drawrect(x-512,y-64,x,y+64,15);\r
+   }\r
+   else if (Mode.colors == 256)\r
+   {\r
+      int x,y,k;\r
+      x = Mode.width - 165;\r
+      y = Mode.height - 165;\r
+      k = 0;\r
+      for (int i = 0; i < 16; i++)\r
+      {\r
+         for (int j = 0; j < 16; j++)\r
+         {\r
+            fillrect(x,y,x+10,y+10,k);\r
+            x+=10;\r
+            k++;\r
+         }\r
+         x = Mode.width - 165;\r
+         y += 10;\r
+      }\r
+      drawrect(Mode.width - 165,Mode.height - 165,Mode.width -5,Mode.height - 5,15);\r
+   }\r
+}\r
+\r
+void TextTest()\r
+{\r
+   TextClear(0x1F);\r
+   gotoxy(1,1);\r
+   if (Mode.mode == MODE00H)\r
+   {\r
+      // ** NOTE ** the gotoxy's here are a hack so that i could use the\r
+      // standard C functions to program this mode.  Normally you would just\r
+      // calculate the proper address and display the text but since DOS still\r
+      // thinks we are in mode 03h (it checks the BIOS), this is necessary.\r
+      gotoxy(1,1);\r
+      printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n");\r
+      gotoxy(41,1);\r
+      printf("³Text Mode: 00H        ³\n");\r
+      gotoxy(1,2);\r
+      printf("³Width: 40   Height: 25³\n");\r
+      gotoxy(41,2);\r
+      printf("³Bytes per screen: 2000³\n");\r
+      gotoxy(1,3);\r
+      printf("³Number of pages: 8    ³\n");\r
+      gotoxy(41,3);\r
+      printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n");\r
+   }\r
+   else if (Mode.mode == MODE03H)\r
+   {\r
+      printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n");\r
+      printf("³Text Mode: 03H        ³\n");\r
+      printf("³Width: 80   Height: 25³\n");\r
+      printf("³Bytes per screen: 4000³\n");\r
+      printf("³Number of pages: 8    ³\n");\r
+      printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n");\r
+   }\r
+   else if (Mode.mode == MODE_J)\r
+   {\r
+      printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n");\r
+      printf("³Text Mode K           ³\n");\r
+      printf("³Width: 80   Height: 43³\n");\r
+      printf("³Bytes per screen: 3440³\n");\r
+      printf("³Number of pages: 8    ³\n");\r
+      printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n");\r
+   }\r
+   else if (Mode.mode == MODE_K)\r
+   {\r
+      printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n");\r
+      printf("³Text Mode K           ³\n");\r
+      printf("³Width: 80   Height: 50³\n");\r
+      printf("³Bytes per screen: 4000³\n");\r
+      printf("³Number of pages: 8    ³\n");\r
+      printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n");\r
+   }\r
+   else if (Mode.mode == MODE_L)\r
+   {\r
+      // ** NOTE ** the gotoxy's here are a hack so that i could use the\r
+      // standard C functions to program this mode.  Normally you would just\r
+      // calculate the proper address and display the text but since DOS still\r
+      // thinks we are in mode 03h (it checks the BIOS), this is necessary.\r
+      printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n");\r
+      gotoxy(41,1);\r
+      printf("³Text Mode L           ³\n");\r
+      gotoxy(1,2);\r
+      printf("³Width: 40   Height: 43³\n");\r
+      gotoxy(41,2);\r
+      printf("³Bytes per screen: 3440³\n");\r
+      gotoxy(1,3);\r
+      printf("³Number of pages: 8    ³\n");\r
+      gotoxy(41,3);\r
+      printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n");\r
+   }\r
+   else if (Mode.mode == MODE_M)\r
+   {\r
+      // ** NOTE ** the gotoxy's here are a hack so that i could use the\r
+      // standard C functions to program this mode.  Normally you would just\r
+      // calculate the proper address and display the text but since DOS still\r
+      // thinks we are in mode 03h (it checks the BIOS), this is necessary.\r
+      printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n");\r
+      gotoxy(41,1);\r
+      printf("³Text Mode K           ³\n");\r
+      printf("³Width: 40   Height: 50³\n");\r
+      gotoxy(1,2);\r
+      gotoxy(41,2);\r
+      printf("³Bytes per screen: 4000³\n");\r
+      gotoxy(1,3);\r
+      printf("³Number of pages: 8    ³\n");\r
+      gotoxy(41,3);\r
+      printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n");\r
+   }\r
+}\r
diff --git a/16/tauron30/FEDIT.EXE b/16/tauron30/FEDIT.EXE
new file mode 100755 (executable)
index 0000000..98d5c46
Binary files /dev/null and b/16/tauron30/FEDIT.EXE differ
diff --git a/16/tauron30/FEDIT.TXT b/16/tauron30/FEDIT.TXT
new file mode 100755 (executable)
index 0000000..42883ec
--- /dev/null
@@ -0,0 +1,93 @@
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=-                                                                         -=\r
+=-                   Tauron VGA Utilities Version 3.0                      -=\r
+=-                      Released September 20, 1998                        -=\r
+=-                           Font Editor Docs                              -=\r
+=-                                                                         -=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+=- All Rights Reserved.                     =-= that you put my name some- -=\r
+=-                                          =-= where in your credits.     -=\r
+=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=- I assume no responsibility whatsoever for any effect that this package, -=\r
+=- the information contained therein or the use thereof has on you, your   -=\r
+=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+=- you or your existance. No warranty is provided nor implied with this    -=\r
+=- source code.                                                            -=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+A mouse is required to run this program.\r
+\r
+On the main screen is a blue box with a white solid line surrounding it.\r
+This is the MAIN EDIT BOX.  Inside of this box is where the font is created.\r
+Left click with the mouse to turn a bit on, right click with the mouse to\r
+turn a bit off.\r
+\r
+In the bottom left corner there is the ACTIONS box.  Inside is all of the\r
+options that you have available.  **NOTE** The delete this character action\r
+is not operational.\r
+\r
+   Update this character -- This action puts the curently edited character\r
+   into its final  font position.  There is a charcter buffer and a character\r
+   list.  When editing you are editing the buffer.  If you don't want to keep\r
+   the current changes, then don't hit update character.  But if you do want to\r
+   keep the changes, then hit update character before hitting anything else.  If\r
+   you don't the cnages will be lost.\r
+\r
+   Display next character -- Hit the left or right arrows to go up or down the\r
+   list character list.  As you display each character, it is editable and you\r
+   must hit update character if you want to save the changes.\r
+\r
+   Goto character -- Goes to a certain character in the list.\r
+\r
+   Read font from BIOS -- Read in a font from the BIOS which can now be\r
+   edited.\r
+\r
+   Add a character -- Adds a charcter to the end of the list.  No more than\r
+   256 characters can be added.\r
+\r
+   Delete a character -- Not operational\r
+\r
+   Dump font to FONT.ASM -- This dumps the font to a text file ready to be\r
+   assembled with an assembler.\r
+\r
+\r
+Along the bottom of the screen is a menu bar with choices:\r
+Alt+N New     This creates a new font with dimensions you specify.\r
+\r
+Alt+O Open    Opens a file.  Careful using the dialog as it may no be\r
+              intuitive at first glance.\r
+\r
+Alt+S Save    Savess a file.  Careful using the dialog as it may no be\r
+              intuitive at first glance.\r
+\r
+Alt+A About   Opens a window containing information about the program.\r
+              Also has contact information\r
+\r
+Alt+X Exit    Exits the program.  This does not prompt you to save the file\r
+              you are working on so be careful.\r
+\r
+\r
+\r
+Here is the structure for the files saved in binary :\r
+Header                 7 bytes 'KINFIRA'\r
+Width                  Word\r
+Height                 Word\r
+Number of characters   Word\r
+Bytes per character    Word\r
+\r
+The rest of the file is the font saved in bitwise form.\r
+For example:     This is a partial text dump from an 8x14 font from BIOS\r
+Every byte (8 bits) is one scanline. Notice there are 14 bytes per character\r
+DB 000H,000H,07EH,081H,0A5H,081H,081H,0BDH,099H,081H,07EH,000H,000H,000H\r
+\r
+If this font was say a 16x14 font, every word (16 bits) would be a scanline.\r
+Take the same line as above, represented as a 16 bit wide font:\r
+\r
+DB 000H,000H,                 <====== First scanline\r
+   000H,000H,                 <====== Second scanline\r
+   000H,07EH,\r
+   000H,081H,\r
+   000H,0A5H,\r
+   and so on...\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
diff --git a/16/tauron30/MAIN.EXE b/16/tauron30/MAIN.EXE
new file mode 100755 (executable)
index 0000000..f8caffe
Binary files /dev/null and b/16/tauron30/MAIN.EXE differ
diff --git a/16/tauron30/MAINC.EXE b/16/tauron30/MAINC.EXE
new file mode 100755 (executable)
index 0000000..2668a90
Binary files /dev/null and b/16/tauron30/MAINC.EXE differ
diff --git a/16/tauron30/README.TXT b/16/tauron30/README.TXT
new file mode 100755 (executable)
index 0000000..06cdfc7
--- /dev/null
@@ -0,0 +1,226 @@
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=-                                                                         -=\r
+=-                   Tauron VGA Utilities Version 3.0                      -=\r
+=-                      Released September 20, 1998                        -=\r
+=-                                                                         -=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+=- All Rights Reserved.                     =-= that you put my name some- -=\r
+=-                                          =-= where in your credits.     -=\r
+=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=- I assume no responsibility whatsoever for any effect that this package, -=\r
+=- the information contained therein or the use thereof has on you, your   -=\r
+=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+=- you or your existance. No warranty is provided nor implied with this    -=\r
+=- source code.                                                            -=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+The code in this package will switch video modes on any standard VGA video\r
+card.  This is accomplished by programming the VGA Registers directly.\r
+\r
+##############################################################################\r
+####          Mode 07H and Mode 0FH are still being worked on.            ####\r
+##############################################################################\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=- Files included in this package: -=                      -=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=                      -=\r
+=-  Assembly version compiles with TASM 4.1 and TLINK 7.0  -=\r
+=-  C version compiles with Borland C++ 5.01               -=\r
+=-                                                         -=\r
+=-   README.TXT       You are reading it.                  -=\r
+=-   WHATSNEW.TXT     Whats new in this version            -=\r
+=-   USAGE.TXT        How to use these routines.  Also     -=\r
+=-                    contains a complete list of the      -=\r
+=-                    videomodes supported.                -=\r
+=-                                                         -=\r
+=-   MAIN.EXE         Assembly version executable demo     -=\r
+=-   MAINC.EXE        C version executable demo            -=\r
+=-   FEDIT.EXE        Font editor                          -=\r
+=-   FEDIT.TXT        Docs for the font editor             -=\r
+=-                                                         -=\r
+=-   ASM_SRC          The assembly source directory        -=\r
+=-    +->MAIN.ASM     The Main source file                 -=\r
+=-    +->MODES.ASM    The mode switching file              -=\r
+=-    +->CLEAR.ASM    The clear screen routines            -=\r
+=-    +->TESTS.ASM    The videomode tests                  -=\r
+=-    +->DUAL.ASM     The dual font setup and test         -=\r
+=-    +->FONT1.ASM    Font 1 for dual font test            -=\r
+=-    +->FONT2.ASM    Font 2 for dual font test            -=\r
+=-    +->MODES.INC    The includes for each videomode      -=\r
+=-                                                         -=\r
+=-   C_SRC            The C source directory               -=\r
+=-    +->MAINC.CPP    The main source file                 -=\r
+=-    +->MODES.CPP    The mode switching file              -=\r
+=-    +->CLEAR.CPP    The clear screen routines            -=\r
+=-    +->TESTS.CPP    The videomode tests                  -=\r
+=-    +->TAURON.H     The main header file                 -=\r
+=-    +->FONT1.H       Font 1 for dual font test           -=\r
+=-    +->FONT2.H      Font 2 for dual font test            -=\r
+=-    +->MODES_C.INC  The includes for each videomode      -=\r
+=-    +->PALETTE.INC  The standard palette                 -=\r
+=-                                                         -=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+When running the demo:\r
+\r
+   In graphics modes, there is a vertical line every 40 pixels with a longer\r
+   vertical line every 80 pixels.\r
+\r
+   I have not yet figured out how to program modes 04H, 05H, or 06H.  Once\r
+   the mode is set, I only clear the mode to a specified color.\r
+\r
+\r
+\r
+The VGA BIOS must be called once at the beginning of the routines so that we\r
+know where the fonts are stored.  Once this information is known we no longer\r
+need the BIOS.\r
+\r
+The reason for starting this package is that I am writing an Operating\r
+System. (There are a lot of us out there I know.)  I wanted to be able to\r
+program standard VGA cards for my OS.\r
+\r
+This is not a graphics library although there are some clear screen and pixel\r
+routines around.  It only sets the video mode. This works in real mode as\r
+well as protected mode.  To use it in protected mode you will have to modify\r
+it to suit your own needs.\r
+\r
+The use of the fonts stored in BIOS ROM is now included.  We are using what is\r
+already built into the VGA BIOS.\r
+\r
+\r
+E-mail:      kinfira@hotmail.com\r
+Homepage:    http://home.onestop.net/kinfira/\r
+\r
+Drop me a line if you find this package useful.\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=-= Credits:  =-=                                                         =-=\r
+=-=-=-=-=-=-=-=-=                                                         =-=\r
+=-= A great book: "Programmer's Guide to the EGA, VGA, and Super VGA      =-=\r
+=-= Cards" 3rd Edition   Richard F. Ferraro   ISBN 0-201-62490-7          =-=\r
+=-= Addison-Wesley Publishing Company.                                    =-=\r
+=-=                                                                       =-=\r
+=-= A very excellent book: "Programmer's Guide to the EGA & VGA Cards"    =-=\r
+=-= Richard F. Ferraro   ISBN 0-201-12692-3                               =-=\r
+=-= Addison-Wesley Publishing Company.                                    =-=\r
+=-=                                                                       =-=\r
+=-= Anthony A.J. Williams for writing MODES.ASM, which I used to help     =-=\r
+=-= write the Text Mode routine.  I specifically used the SetFont         =-=\r
+=-= procedure which was instrumental in getting the code for Mode 03h     =-=\r
+=-= working.                                                              =-=\r
+=-=                                                                       =-=\r
+=-= Boone (boone@ucsd.edu) for the docs on programming the VGA Registers. =-=\r
+=-=                                                                       =-=\r
+=-= I also used a really great program called TWEAK to get some of the    =-=\r
+=-= values for the non-standard modes.                                    =-=\r
+=-=                                                                       =-=\r
+=-= Denthor of ASPHYXIA for his trainer on Chain-4 Mode.                  =-=\r
+=-=                                                                       =-=\r
+=-= Robert Schmidt <robert@stud.unit.no> for the great doc in PCGPE 1.0   =-=\r
+=-= about Mode X.  This helped a great deal.                              =-=\r
+=-=                                                                       =-=\r
+=-= Michael Abrash for his super excellent VGA articles on everything,    =-=\r
+=-= plus all of his books and public domain code.                         =-=\r
+=-=                                                                       =-=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=\r
+=- Revision History: -=\r
+=-=-=-=-=-=-=-=-=-=-=-=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+Version 3.0 released September 20, 1998\r
+   I added 2 new text modes, 40x43 and 40x50.  Also I have added a new dual\r
+   font test which uses 2 of the VGA's 8 font maps.\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+Version 2.1 released July 5, 1998\r
+   The only change is that in the C version, the routine to read fronts from\r
+   BIOS is now working.  This routine reads a font from the BIOS and places\r
+   it in memory for use in a textmode.\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+Version 2.0 released June 22, 1998\r
+    I have added more videomodes.  I have also written a version of the\r
+    source in C.  So the routines are available in Assembly and C.  I have\r
+    also written some documentation for the font editor.  So now the only\r
+    modes that are not implemented are the monochrome modes which will still\r
+    be worked on.\r
+\r
+\r
+Tauron VGA Utilities\r
+Version 1.0 released June 14, 1998\r
+    I changed the name because that other was a little too long.  B->\r
+    I have packaged in a small font editor.  I have also rearranged the mode\r
+    numbers and added a few more video modes that will be implemented.\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+Source code for switching videomodes without using BIOS\r
+Version 4.1 released May 28, 1998\r
+\r
+New in this version:\r
+    We call a BIOS function to find out where in memory the fonts are stored.\r
+    Since this is different on every cards' VGA BIOS, it is absolutely\r
+    necessary so that in text modes, the proper fonts are displayed.\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+Version 4.0 released March 5, 1998\r
+\r
+New in this version:\r
+    All VGA Modes are supported! Plus Chain-4 Mode, ModeX, ModeA,\r
+    ModeB and ModeC.  Modes 07H and 0FH are still being worked on.\r
+\r
+    Use of Fonts stored in ROM.\r
+    Custom Font data stored in system memory is no longer needed.\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+Version 3.0 released January 2, 1998\r
+    Includes Modes 03h, 10h, 12h, and 13h plus Chain-4 Mode, ModeX, ModeA,\r
+    ModeB and ModeC.\r
+\r
+New in this version: Mode 10h (640x350x16), Mode C (640x400x16)\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+Version 2.5 not released\r
+    Includes Modes 03h, 12h, and 13h plus Chain-4 Mode, ModeX, ModeA, and\r
+    ModeB.\r
+\r
+New in this version: VGA register data takes up less space.\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+Version 2.1 released Nov. 21, 1997\r
+    Includes Modes 03h, 12h, and 13h plus Chain-4 Mode, ModeX, ModeA, and\r
+    ModeB.\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+Version 2.0 released Nov. 10, 1997\r
+    Includes Modes 03h, 12h, and 13h plus Chain-4 Mode and ModeX.\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+Version 1.5 released late Oct. 1997\r
+    Includes Modes 03h, 12h, and 13h.  Fully functional\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+Version 1.1 released in Oct. 12, 1997\r
+   Includes Mode 13h, Mode 03h finally works. Realized that I needed to reset\r
+   the text mode font.\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+Version 1.0 released in Oct. 7, 1997\r
+   Included Mode 13h, Mode 03h partially. (Did not have setfont routine)\r
+\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
diff --git a/16/tauron30/USAGE.TXT b/16/tauron30/USAGE.TXT
new file mode 100755 (executable)
index 0000000..939c2de
--- /dev/null
@@ -0,0 +1,118 @@
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=-                                                                         -=\r
+=-                   Tauron VGA Utilities Version 3.0                      -=\r
+=-                      Released September 20, 1998                        -=\r
+=-                                                                         -=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+=- All Rights Reserved.                     =-= that you put my name some- -=\r
+=-                                          =-= where in your credits.     -=\r
+=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=- I assume no responsibility whatsoever for any effect that this package, -=\r
+=- the information contained therein or the use thereof has on you, your   -=\r
+=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+=- you or your existance. No warranty is provided nor implied with this    -=\r
+=- source code.                                                            -=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+** Note ** This code does not update BIOS when in real mode.  So if you need\r
+that particular functionality, you will have to add this yourself.\r
+\r
+\r
+   Use MODE NUMBER to set the video mode with the procedure provided.\r
+\r
+   A star (*) next to the mode number indicates that it is not yet\r
+   implemented.\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=-   Currently supported Video Modes:    -= MODE NUMBER =-=   Type   -=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=-                                       -=             =-=          -=\r
+=- 00H,01H -- 40 x 25 x 16               -=   00H,01H   =-=     Text -=\r
+=-                                       -=             =-=          -=\r
+=- 02H,03H -- 80 x 25 x 16               -=   02H,03H   =-=     Text -=\r
+=-                                       -=             =-=          -=\r
+=- 04H,05H -- 320 x 200 x 4              -=   04H,05H   =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- 06H -- 640 x 200 x 2                  -=     06H     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- 07H -- 80 x 25 x 2 (Monochrome)       -=  *  07H     =-=     Text -=\r
+=-                                       -=             =-=          -=\r
+=- 0DH -- 320 x 200 x 16                 -=     0DH     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- 0EH -- 640 x 200 x 16                 -=     0EH     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- 0FH -- 640 x 350 x 2 (Monochrome)     -=  *  0FH     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- 10H -- 640 x 350 x 16                 -=     10H     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- 11H -- 640 x 480 x 2                  -=     11H     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- 12H -- 640 x 480 x 16                 -=     12H     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- 13H -- 320 x 200 x 256                -=     13H     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- Chain 4 -- unchained 320 x 200 x 256  -=     14H     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- Mode X -- unchained 320 x 240 x 256   -=     15H     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- Mode A -- unchained 320 x 350 x 256   -=     16H     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- Mode B -- unchained 320 x 400 x 256   -=     17H     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- Mode C -- unchained 320 x 480 x 256   -=     18H     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- Mode D -- unchained 360 x 200 x 256   -=     19H     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- Mode E -- unchained 360 x 240 x 256   -=     1AH     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- Mode F -- unchained 360 x 350 x 256   -=     1BH     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- Mode G -- unchained 360 x 400 x 256   -=     1CH     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- Mode H -- unchained 360 x 480 x 256   -=     1DH     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- Mode I -- 640 x 400 x 16              -=     1EH     =-= Graphics -=\r
+=-                                       -=             =-=          -=\r
+=- Mode J -- 80 x 43 x 16                -=     1FH     =-=     Text -=\r
+=-                                       -=             =-=          -=\r
+=- Mode K -- 80 x 50 x 16                -=     20H     =-=     Text -=\r
+=-                                       -=             =-=          -=\r
+=- Mode K -- 40 x 43 x 16                -=     21H     =-=     Text -=\r
+=-                                       -=             =-=          -=\r
+=- Mode K -- 40 x 50 x 16                -=     22H     =-=     Text -=\r
+=-                                       -=             =-=          -=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+\r
+To set a video mode using the procedure I already have written:\r
+\r
+PUSH *VALUE*   ; Where value is the mode number\r
+CALL SETVIDEOMODE\r
+\r
+and thats it the videomode gets set.\r
+\r
+Once the video mode is set, you can program each video mode as normal.\r
+\r
+Just remember, you can't rely on BIOS so if you need the palette set to the\r
+proper values, you need to set them yourself.\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+If you want to use this code in your programs, all you need is which ever\r
+mode you want from MODES.INC and also the procedure SETMODE.\r
+\r
+Just\r
+\r
+MOV SI, OFFSET *MODE*    ; Where mode is the mode from MODES.INC\r
+CALL SETMODE\r
+\r
+If you want the unchained modes, you also need a bit of code from the\r
+SETVIDEOMODE procedure in MAIN.ASM.\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+I have also included some source for clearing the screen and plotting pixels.\r
+If you notice that since all of the chained modes use the same memory\r
+structure the same code can be used to program all with only a few\r
+modifications.  This also goes for the planar modes 10h, 12h, Mode C, etc.\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
diff --git a/16/tauron30/WHATSNEW.TXT b/16/tauron30/WHATSNEW.TXT
new file mode 100755 (executable)
index 0000000..72ab292
--- /dev/null
@@ -0,0 +1,32 @@
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=-                                                                         -=\r
+=-                   Tauron VGA Utilities Version 3.0                      -=\r
+=-                      Released September 20, 1998                        -=\r
+=-                                                                         -=\r
+=-                      What new with this release???                      -=\r
+=-                                                                         -=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
+=- All Rights Reserved.                     =-= that you put my name some- -=\r
+=-                                          =-= where in your credits.     -=\r
+=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+=- I assume no responsibility whatsoever for any effect that this package, -=\r
+=- the information contained therein or the use thereof has on you, your   -=\r
+=- sanity, computer, spouse, children, pets or anything else related to    -=\r
+=- you or your existance. No warranty is provided nor implied with this    -=\r
+=- source code.                                                            -=\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+   I added 2 new text modes, 40x43 and 40x50.\r
+\r
+   There is now a dual font test.  What this does is load 2 fonts into VGA\r
+   memory and display text from both fonts on the screen at the same time.\r
+   This is possible by reprogramming the charcter map select register.  You\r
+   can have up to 8 fonts present in memory at any time but can only use 2\r
+   at a time.\r
+\r
+   I was trying to add some more high-res video modes but so far they don't\r
+   quite work.  I'm shooting for 720x200 first just to see if I can make it\r
+   work.\r
+\r
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r