--- /dev/null
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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, ®);\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
--- /dev/null
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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, ®);\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
--- /dev/null
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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
--- /dev/null
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\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