From: sparky4 Date: Wed, 18 Nov 2015 19:16:36 +0000 (-0600) Subject: added another library ^^ X-Git-Url: http://4ch.mooo.com/gitweb/?p=16.git;a=commitdiff_plain;h=bd0edf8f7c63b16fa638bcbfb2b43a163e91ca38 added another library ^^ --- diff --git a/16/tauron/ASM_SRC/CLEAR.ASM b/16/tauron/ASM_SRC/CLEAR.ASM new file mode 100755 index 00000000..f7b4bbe6 --- /dev/null +++ b/16/tauron/ASM_SRC/CLEAR.ASM @@ -0,0 +1,241 @@ +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- -= +;=- Tauron VGA Utilities Version 3.0 -= +;=- Released September 20, 1998 -= +;=- -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +;=- All Rights Reserved. =-= that you put my name some- -= +;=- =-= where in your credits. -= +;=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- I assume no responsibility whatsoever for any effect that this package, -= +;=- the information contained therein or the use thereof has on you, your -= +;=- sanity, computer, spouse, children, pets or anything else related to -= +;=- you or your existance. No warranty is provided nor implied with this -= +;=- source code. -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +TEXTCLEAR PROC + PUSH BP + MOV BP,SP + + MOV AX,0B800H + MOV ES,AX + XOR DI,DI + + MOV AH,byte ptr [bp+4] + MOV AL,' ' + MOV CX,Mode.width_bytes + CLD + REP STOSW + + POP BP + RET 2 +TEXTCLEAR ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +CLEAR_B8000H PROC + PUSH BP + MOV BP,SP + PUSHA + + MOV AX,0B800H + MOV ES,AX + XOR DI,DI + + MOV AX,WORD PTR [BP+4] + CLD + MOV CX,Mode.width_bytes + REP STOSW + + POPA + POP BP + RET 2 +CLEAR_B8000H ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +; Mode 0Dh clear screen +CLEAR0DH PROC + PUSH BP + MOV BP,SP + + MOV AX,0A000H + MOV ES,AX + XOR DI,DI + + MOV CX,2000H +CLEAR_LOOP: + MOV DX,03CEH + MOV AX,0FF08H + OUT DX,AX + + MOV EAX,0 + XCHG DWORD PTR ES:[DI],EAX + + MOV DX,03C4H + MOV AH,BYTE PTR [BP+4] + MOV AL,2 + OUT DX,AX + + MOV DWORD PTR ES:[DI],0FFFFFFFFH + + MOV AX,0F02H + OUT DX,AX + + MOV DX,03CEH + MOV AX,0FF08h + OUT DX,AX + + ADD DI,4 + LOOP CLEAR_LOOP + + POP BP + RET 2 +CLEAR0DH ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +; Mode 0Eh clear screen +CLEAR0EH PROC + PUSH BP + MOV BP,SP + + MOV AX,0A000H + MOV ES,AX + XOR DI,DI + + MOV CX,4000H +CLEAR_LOOP2: + MOV DX,03CEH + MOV AX,0FF08H + OUT DX,AX + + MOV EAX,0 + XCHG DWORD PTR ES:[DI],EAX + + MOV DX,03C4H + MOV AH,BYTE PTR [BP+4] + MOV AL,2 + OUT DX,AX + + MOV DWORD PTR ES:[DI],0FFFFFFFFH + + MOV AX,0F02H + OUT DX,AX + + MOV DX,03CEH + MOV AX,0FF08h + OUT DX,AX + + ADD DI,4 + LOOP CLEAR_LOOP2 + + POP BP + RET 2 +CLEAR0EH ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +CLEAR11H PROC + MOV AX,0A000H + MOV ES,AX + XOR DI,DI + + MOV AX,0FFFFH + CLD + MOV CX,4B00H + REP STOSW + RET +CLEAR11H ENDP + +; 0d 0e 11 have bytes /2 +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +PLANARCLEAR PROC + PUSH BP + MOV BP,SP + + MOV AX,0A000H + MOV ES,AX + XOR DI,DI + + MOV CX,Mode.width_bytes + SHR CX,1 +CLEAR_LOOP3: + + MOV DX,03CEH + MOV AX,0FF08H + OUT DX,AX + + MOV AX,0 + XCHG WORD PTR ES:[DI],AX + + MOV DX,03C4H + MOV AH,byte ptr [bp+4] + MOV AL,2 + OUT DX,AX + + MOV WORD PTR ES:[DI],0FFFFH + + MOV AX,0F02H + OUT DX,AX + + MOV DX,03CEH + MOV AX,0FF08h + OUT DX,AX + + ADD DI,2 + LOOP CLEAR_LOOP3 + + POP BP + RET 2 +PLANARCLEAR ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +CLEAR13H PROC + PUSH BP + MOV BP,SP + + MOV AX,0A000H + MOV ES,AX + XOR DI,DI + + MOV AL,byte ptr [bp+4] + MOV AH,AL + CLD + MOV CX,8000H + REP STOSW + + POP BP + RET 2 +CLEAR13H ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +UNCHAINEDCLEAR PROC + PUSH BP + MOV BP,SP + + mov dx, 03C4h ; 03c4h + mov al, 2 ; Map Mask Register + out dx, al + inc dx + mov al,00001111B ; Select all planes to write to + out dx, al ; Doing this to clear all planes at once + + mov ax,0A000H + mov es, ax + XOR DI,DI ; set es:di = Screen Mem + mov ah,byte ptr [bp+4] ; move the color into ah + mov al,ah ; copy the value to al + mov cx,Mode.width_bytes ; Number of words + SHR CX,1 + cld + rep stosw ; clear it + + POP BP + RET 2 +UNCHAINEDCLEAR ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= diff --git a/16/tauron/ASM_SRC/DUAL.ASM b/16/tauron/ASM_SRC/DUAL.ASM new file mode 100755 index 00000000..0ee31055 --- /dev/null +++ b/16/tauron/ASM_SRC/DUAL.ASM @@ -0,0 +1,275 @@ +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- -= +;=- Tauron VGA Utilities Version 3.0 -= +;=- Released September 20, 1998 -= +;=- -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +;=- All Rights Reserved. =-= that you put my name some- -= +;=- =-= where in your credits. -= +;=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- I assume no responsibility whatsoever for any effect that this package, -= +;=- the information contained therein or the use thereof has on you, your -= +;=- sanity, computer, spouse, children, pets or anything else related to -= +;=- you or your existance. No warranty is provided nor implied with this -= +;=- source code. -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +; 3C4H, 03H +; Bit positions for font maps: +; +; +--7--+--6--+--5--+--4--+--3--+--2--+--1--+--0--+ +; | | | SAH | SBH | SA | SB | +; +-----+-----+-----+-----+-----+-----+-----+-----+ +; +; SA - bits 1, 0 of Character Map A +; SAH - bit 2 (high order) of Charcter Map A +; +; SB - bits 1, 0 of Character Map B +; SBH - bit 2 (high order) of Charcter Map B +; + +; Points to fonts for Map A Memory Address +DFM_MAPA_FONT1 EQU 00H ; 0K +DFM_MAPA_FONT2 EQU 04H ; 16K +DFM_MAPA_FONT3 EQU 08H ; 32K +DFM_MAPA_FONT4 EQU 0CH ; 48K +DFM_MAPA_FONT5 EQU 20H ; 8K +DFM_MAPA_FONT6 EQU 24H ; 24K +DFM_MAPA_FONT7 EQU 28H ; 40K +DFM_MAPA_FONT8 EQU 2CH ; 56K + +; Points to fonts for Map B +DFM_MAPB_FONT1 EQU 00H ; 0K +DFM_MAPB_FONT2 EQU 01H ; 16K +DFM_MAPB_FONT3 EQU 02H ; 32K +DFM_MAPB_FONT4 EQU 03H ; 48K +DFM_MAPB_FONT5 EQU 10H ; 8K +DFM_MAPB_FONT6 EQU 11H ; 24K +DFM_MAPB_FONT7 EQU 12H ; 40K +DFM_MAPB_FONT8 EQU 13H ; 56K + + +; To set dual font mode, just set the character map select register to point +; to 2 different fonts. There can be up to 8 fonts resident in memory at +; once but only 2 can be active at a time. +; +; ** NOTE ** If you set both font maps the same you are no longer in dual font +; mode. But what this allows you to do is to put up to 8 fonts in VGA memory +; and switch between them at any time. +; +; Both fonts were made with my font editor. I just read the BIOS and +; modified the second font so a solid line goes through the middle of it. +; +; This procedure sets up dual font mode and loads 2 fonts into video memory. +SETDUAL PROC + + ; Sequencer address + MOV DX,SEQ_ADDR + + ; 2 different font maps + MOV AH,DFM_MAPA_FONT1 + OR AH,DFM_MAPB_FONT5 + + ; Sequencer register + MOV AL,03H + + ; Send it + OUT DX,AX + + ; Load font 1 into 0K + PUSH 16 ; Bytes per character + PUSH 0 ; Offset of font in Video Memory + PUSH 0A000H + PUSH OFFSET FONT1 ; Offset of Font in our Data Segment + PUSH DS + CALL LOADFONT + + ; Load font 2 into 8K + PUSH 16 ; Bytes per character + PUSH 0 ; Offset of font in Video Memory + PUSH 0A200H + PUSH OFFSET FONT2 ; Offset of Font in our Data Segment + PUSH DS + CALL LOADFONT + + RET +SETDUAL ENDP + +; This procedure reset the character map select register to point to only +; one font. +UNSETDUAL PROC + + ; Set both fonts to point to font 1 + MOV DX,SEQ_ADDR + MOV AX,0003H + OUT DX,AX + + RET +UNSETDUAL ENDP + +; In dual font modes, the palette is in effect half of what it is. The +; bottom 8 colors for the first font, and the top 8 colors for the second +; font. +; +; What I do here is to set them to the same 8 colors. +; Black, Blue, Green, Red, Purple, Yellow, Light Gray, and White +; +SETDUALPALETTE PROC + + PUSH 0 + PUSH 0 + PUSH 0 + PUSH 0 + CALL SETPAL + + PUSH 42 + PUSH 0 + PUSH 0 + PUSH 1 + CALL SETPAL + + PUSH 0 + PUSH 42 + PUSH 0 + PUSH 2 + CALL SETPAL + + PUSH 42 + PUSH 42 + PUSH 0 + PUSH 3 + CALL SETPAL + + PUSH 0 + PUSH 0 + PUSH 42 + PUSH 4 + CALL SETPAL + + PUSH 21 + PUSH 63 + PUSH 63 + PUSH 5 + CALL SETPAL + + PUSH 42 + PUSH 42 + PUSH 42 + PUSH 6 + CALL SETPAL + + PUSH 63 + PUSH 63 + PUSH 63 + PUSH 7 + CALL SETPAL + + PUSH 0 + PUSH 0 + PUSH 0 + PUSH 8 + CALL SETPAL + + PUSH 42 + PUSH 0 + PUSH 0 + PUSH 9 + CALL SETPAL + + PUSH 0 + PUSH 42 + PUSH 0 + PUSH 10 + CALL SETPAL + + PUSH 42 + PUSH 42 + PUSH 0 + PUSH 11 + CALL SETPAL + + PUSH 0 + PUSH 0 + PUSH 42 + PUSH 12 + CALL SETPAL + + PUSH 21 + PUSH 63 + PUSH 63 + PUSH 13 + CALL SETPAL + + PUSH 42 + PUSH 42 + PUSH 42 + PUSH 14 + CALL SETPAL + + PUSH 63 + PUSH 63 + PUSH 63 + PUSH 15 + CALL SETPAL + + RET +SETDUALPALETTE ENDP + +DUALTEST PROC + + MOV SI,OFFSET MODE03H + CALL SETMODE + + CALL SETDUAL + CALL SETDUALPALETTE + + PUSH 1FH + CALL TEXTCLEAR + + ; Attribute to print text in. + ; + ; In dual font mode, attrubute bit 3 is the deciding factor as to which + ; font is printed. 0001X111B where X is 0 for font 1 or 1 for font 2. + ; The Charcter Map Select Register determines where font 1 and font 2 + ; reside. + ; 00011111B - Font 2, Blue Background, with color 7 text. + MOV ATT, 1Fh + + MOV BX,5 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_D + CALL PRINTSTRING + MOV BX,6 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_E + CALL PRINTSTRING + MOV BX,7 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_F + CALL PRINTSTRING + + ; 00010111B - Font 1, Blue Background, with color 7 text. + MOV ATT, 17h + + MOV BX,0 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_D + CALL PRINTSTRING + MOV BX,1 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_E + CALL PRINTSTRING + MOV BX,2 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_F + CALL PRINTSTRING + + ; Wait for a keypress + MOV AH,0 + INT 16H + + CALL UNSETDUAL + RET +DUALTEST ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= diff --git a/16/tauron/ASM_SRC/FONT1.ASM b/16/tauron/ASM_SRC/FONT1.ASM new file mode 100755 index 00000000..772d612e --- /dev/null +++ b/16/tauron/ASM_SRC/FONT1.ASM @@ -0,0 +1,266 @@ +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- Created with FEDIT written by Kinfira (Jeffrey Morgan) -= +;=- -= +;=- Tauron VGA Utilities Version 1.0 -= +;=- Released June 14, 1998 -= +;=- -= +;=- Font Width: 8 -= +;=- Font Height: 16 -= +;=- Bytes per character: 16 -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,07EH,081H,0A5H,081H,081H,0BDH,099H,081H,081H,07EH,000H,000H,000H,000H +DB 000H,000H,07EH,0FFH,0DBH,0FFH,0FFH,0C3H,0E7H,0FFH,0FFH,07EH,000H,000H,000H,000H +DB 000H,000H,000H,000H,06CH,0FEH,0FEH,0FEH,0FEH,07CH,038H,010H,000H,000H,000H,000H +DB 000H,000H,000H,000H,010H,038H,07CH,0FEH,07CH,038H,010H,000H,000H,000H,000H,000H +DB 000H,000H,000H,018H,03CH,03CH,0E7H,0E7H,0E7H,099H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,000H,018H,03CH,07EH,0FFH,0FFH,07EH,018H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,018H,03CH,03CH,018H,000H,000H,000H,000H,000H,000H +DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0E7H,0C3H,0C3H,0E7H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH +DB 000H,000H,000H,000H,000H,03CH,066H,042H,042H,066H,03CH,000H,000H,000H,000H,000H +DB 0FFH,0FFH,0FFH,0FFH,0FFH,0C3H,099H,0BDH,0BDH,099H,0C3H,0FFH,0FFH,0FFH,0FFH,0FFH +DB 000H,000H,01EH,00EH,01AH,032H,078H,0CCH,0CCH,0CCH,0CCH,078H,000H,000H,000H,000H +DB 000H,000H,03CH,066H,066H,066H,066H,03CH,018H,07EH,018H,018H,000H,000H,000H,000H +DB 000H,000H,03FH,033H,03FH,030H,030H,030H,030H,070H,0F0H,0E0H,000H,000H,000H,000H +DB 000H,000H,07FH,063H,07FH,063H,063H,063H,063H,067H,0E7H,0E6H,0C0H,000H,000H,000H +DB 000H,000H,000H,018H,018H,0DBH,03CH,0E7H,03CH,0DBH,018H,018H,000H,000H,000H,000H +DB 000H,080H,0C0H,0E0H,0F0H,0F8H,0FEH,0F8H,0F0H,0E0H,0C0H,080H,000H,000H,000H,000H +DB 000H,002H,006H,00EH,01EH,03EH,0FEH,03EH,01EH,00EH,006H,002H,000H,000H,000H,000H +DB 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,07EH,03CH,018H,000H,000H,000H,000H +DB 000H,000H,066H,066H,066H,066H,066H,066H,066H,000H,066H,066H,000H,000H,000H,000H +DB 000H,000H,07FH,0DBH,0DBH,0DBH,07BH,01BH,01BH,01BH,01BH,01BH,000H,000H,000H,000H +DB 000H,07CH,0C6H,060H,038H,06CH,0C6H,0C6H,06CH,038H,00CH,0C6H,07CH,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,0FEH,0FEH,0FEH,0FEH,000H,000H,000H,000H +DB 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,07EH,03CH,018H,07EH,000H,000H,000H +DB 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,018H,018H,018H,000H,000H,000H,000H +DB 000H,000H,018H,018H,018H,018H,018H,018H,018H,07EH,03CH,018H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,018H,00CH,0FEH,00CH,018H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,030H,060H,0FEH,060H,030H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0C0H,0C0H,0C0H,0C0H,0FEH,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,028H,06CH,0FEH,06CH,028H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,010H,038H,038H,07CH,07CH,0FEH,0FEH,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,0FEH,0FEH,07CH,07CH,038H,038H,010H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,018H,03CH,03CH,03CH,018H,018H,018H,000H,018H,018H,000H,000H,000H,000H +DB 000H,066H,066H,066H,024H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,06CH,06CH,0FEH,06CH,06CH,06CH,0FEH,06CH,06CH,000H,000H,000H,000H +DB 018H,018H,07CH,0C6H,0C2H,0C0H,07CH,006H,086H,0C6H,07CH,018H,018H,000H,000H,000H +DB 000H,000H,000H,000H,0C2H,0C6H,00CH,018H,030H,060H,0C6H,086H,000H,000H,000H,000H +DB 000H,000H,038H,06CH,06CH,038H,076H,0DCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,030H,030H,030H,060H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,00CH,018H,030H,030H,030H,030H,030H,030H,018H,00CH,000H,000H,000H,000H +DB 000H,000H,030H,018H,00CH,00CH,00CH,00CH,00CH,00CH,018H,030H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,066H,03CH,0FFH,03CH,066H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,018H,018H,07EH,018H,018H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,018H,018H,018H,030H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,0FEH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,018H,018H,000H,000H,000H,000H +DB 000H,000H,000H,000H,002H,006H,00CH,018H,030H,060H,0C0H,080H,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,0C6H,0CEH,0D6H,0D6H,0E6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,018H,038H,078H,018H,018H,018H,018H,018H,018H,07EH,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,006H,00CH,018H,030H,060H,0C0H,0C6H,0FEH,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,006H,006H,03CH,006H,006H,006H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,00CH,01CH,03CH,06CH,0CCH,0FEH,00CH,00CH,00CH,01EH,000H,000H,000H,000H +DB 000H,000H,0FEH,0C0H,0C0H,0C0H,0FCH,00EH,006H,006H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,038H,060H,0C0H,0C0H,0FCH,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,0FEH,0C6H,006H,006H,00CH,018H,030H,030H,030H,030H,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,0C6H,0C6H,07CH,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,0C6H,0C6H,07EH,006H,006H,006H,00CH,078H,000H,000H,000H,000H +DB 000H,000H,000H,000H,018H,018H,000H,000H,000H,018H,018H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,018H,018H,000H,000H,000H,018H,018H,030H,000H,000H,000H,000H +DB 000H,000H,000H,006H,00CH,018H,030H,060H,030H,018H,00CH,006H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,0FEH,000H,000H,0FEH,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,060H,030H,018H,00CH,006H,00CH,018H,030H,060H,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,0C6H,00CH,018H,018H,018H,000H,018H,018H,000H,000H,000H,000H +DB 000H,000H,000H,07CH,0C6H,0C6H,0DEH,0DEH,0DEH,0DCH,0C0H,07CH,000H,000H,000H,000H +DB 000H,000H,010H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 000H,000H,0FCH,066H,066H,066H,07CH,066H,066H,066H,066H,0FCH,000H,000H,000H,000H +DB 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0C0H,0C0H,0C2H,066H,03CH,000H,000H,000H,000H +DB 000H,000H,0F8H,06CH,066H,066H,066H,066H,066H,066H,06CH,0F8H,000H,000H,000H,000H +DB 000H,000H,0FEH,066H,062H,068H,078H,068H,060H,062H,066H,0FEH,000H,000H,000H,000H +DB 000H,000H,0FEH,066H,062H,068H,078H,068H,060H,060H,060H,0F0H,000H,000H,000H,000H +DB 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0DEH,0C6H,0C6H,066H,03AH,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 000H,000H,03CH,018H,018H,018H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,01EH,00CH,00CH,00CH,00CH,00CH,0CCH,0CCH,0CCH,078H,000H,000H,000H,000H +DB 000H,000H,0E6H,066H,06CH,06CH,078H,078H,06CH,066H,066H,0E6H,000H,000H,000H,000H +DB 000H,000H,0F0H,060H,060H,060H,060H,060H,060H,062H,066H,0FEH,000H,000H,000H,000H +DB 000H,000H,0C6H,0EEH,0FEH,0FEH,0D6H,0C6H,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 000H,000H,0C6H,0E6H,0F6H,0FEH,0DEH,0CEH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 000H,000H,038H,06CH,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,06CH,038H,000H,000H,000H,000H +DB 000H,000H,0FCH,066H,066H,066H,07CH,060H,060H,060H,060H,0F0H,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0D6H,0DEH,07CH,00CH,00EH,000H,000H +DB 000H,000H,0FCH,066H,066H,066H,07CH,06CH,066H,066H,066H,0E6H,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,0C6H,060H,038H,00CH,006H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,07EH,07EH,05AH,018H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,06CH,038H,010H,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0D6H,0D6H,0FEH,06CH,06CH,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,06CH,06CH,038H,038H,06CH,06CH,0C6H,0C6H,000H,000H,000H,000H +DB 000H,000H,066H,066H,066H,066H,03CH,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,0FEH,0C6H,086H,00CH,018H,030H,060H,0C2H,0C6H,0FEH,000H,000H,000H,000H +DB 000H,000H,03CH,030H,030H,030H,030H,030H,030H,030H,030H,03CH,000H,000H,000H,000H +DB 000H,000H,000H,080H,0C0H,0E0H,070H,038H,01CH,00EH,006H,002H,000H,000H,000H,000H +DB 000H,000H,03CH,00CH,00CH,00CH,00CH,00CH,00CH,00CH,00CH,03CH,000H,000H,000H,000H +DB 010H,038H,06CH,0C6H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,0FFH,000H,000H +DB 030H,030H,018H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,0E0H,060H,060H,078H,06CH,066H,066H,066H,066H,0DCH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,07CH,0C6H,0C0H,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,01CH,00CH,00CH,03CH,06CH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,038H,06CH,064H,060H,0F0H,060H,060H,060H,060H,0F0H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,076H,0CCH,0CCH,0CCH,0CCH,0CCH,07CH,00CH,0CCH,078H,000H +DB 000H,000H,0E0H,060H,060H,06CH,076H,066H,066H,066H,066H,0E6H,000H,000H,000H,000H +DB 000H,000H,018H,018H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,006H,006H,000H,00EH,006H,006H,006H,006H,006H,006H,066H,066H,03CH,000H +DB 000H,000H,0E0H,060H,060H,066H,06CH,078H,078H,06CH,066H,0E6H,000H,000H,000H,000H +DB 000H,000H,038H,018H,018H,018H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0ECH,0FEH,0D6H,0D6H,0D6H,0D6H,0D6H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0DCH,066H,066H,066H,066H,066H,066H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0DCH,066H,066H,066H,066H,066H,07CH,060H,060H,0F0H,000H +DB 000H,000H,000H,000H,000H,076H,0CCH,0CCH,0CCH,0CCH,0CCH,07CH,00CH,00CH,01EH,000H +DB 000H,000H,000H,000H,000H,0DCH,076H,062H,060H,060H,060H,0F0H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,07CH,0C6H,060H,038H,00CH,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,010H,030H,030H,0FCH,030H,030H,030H,030H,036H,01CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,066H,066H,066H,066H,066H,03CH,018H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0C6H,0C6H,0C6H,0D6H,0D6H,0FEH,06CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0C6H,06CH,038H,038H,038H,06CH,0C6H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07EH,006H,00CH,0F8H,000H +DB 000H,000H,000H,000H,000H,0FEH,0CCH,018H,030H,060H,0C6H,0FEH,000H,000H,000H,000H +DB 000H,000H,00EH,018H,018H,018H,070H,018H,018H,018H,018H,00EH,000H,000H,000H,000H +DB 000H,000H,018H,018H,018H,018H,000H,018H,018H,018H,018H,018H,000H,000H,000H,000H +DB 000H,000H,070H,018H,018H,018H,00EH,018H,018H,018H,018H,070H,000H,000H,000H,000H +DB 000H,000H,076H,0DCH,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,010H,038H,06CH,0C6H,0C6H,0C6H,0FEH,000H,000H,000H,000H,000H +DB 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0C0H,0C2H,066H,03CH,00CH,006H,07CH,000H,000H +DB 000H,000H,0CCH,0CCH,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,00CH,018H,030H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H +DB 000H,010H,038H,06CH,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,0CCH,0CCH,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,060H,030H,018H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,038H,06CH,038H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,000H,000H,03CH,066H,060H,060H,066H,03CH,00CH,006H,03CH,000H,000H,000H +DB 000H,010H,038H,06CH,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H +DB 000H,060H,030H,018H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,066H,066H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,018H,03CH,066H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,060H,030H,018H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,0C6H,0C6H,010H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 038H,06CH,038H,000H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 018H,030H,060H,000H,0FEH,066H,060H,07CH,060H,060H,066H,0FEH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0CCH,076H,036H,07EH,0D8H,0D8H,06EH,000H,000H,000H,000H +DB 000H,000H,03EH,06CH,0CCH,0CCH,0FEH,0CCH,0CCH,0CCH,0CCH,0CEH,000H,000H,000H,000H +DB 000H,010H,038H,06CH,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,060H,030H,018H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,030H,078H,0CCH,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,060H,030H,018H,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07EH,006H,00CH,078H,000H +DB 000H,0C6H,0C6H,000H,038H,06CH,0C6H,0C6H,0C6H,0C6H,06CH,038H,000H,000H,000H,000H +DB 000H,0C6H,0C6H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,018H,018H,03CH,066H,060H,060H,060H,066H,03CH,018H,018H,000H,000H,000H,000H +DB 000H,038H,06CH,064H,060H,0F0H,060H,060H,060H,060H,0E6H,0FCH,000H,000H,000H,000H +DB 000H,000H,066H,066H,03CH,018H,07EH,018H,07EH,018H,018H,018H,000H,000H,000H,000H +DB 000H,0F8H,0CCH,0CCH,0F8H,0C4H,0CCH,0DEH,0CCH,0CCH,0CCH,0C6H,000H,000H,000H,000H +DB 000H,00EH,01BH,018H,018H,018H,07EH,018H,018H,018H,018H,018H,0D8H,070H,000H,000H +DB 000H,018H,030H,060H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,00CH,018H,030H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,018H,030H,060H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,018H,030H,060H,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,076H,0DCH,000H,0DCH,066H,066H,066H,066H,066H,066H,000H,000H,000H,000H +DB 076H,0DCH,000H,0C6H,0E6H,0F6H,0FEH,0DEH,0CEH,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 000H,03CH,06CH,06CH,03EH,000H,07EH,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,038H,06CH,06CH,038H,000H,07CH,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,030H,030H,000H,030H,030H,060H,0C0H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,0FEH,0C0H,0C0H,0C0H,0C0H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,0FEH,006H,006H,006H,006H,000H,000H,000H,000H,000H +DB 000H,0C0H,0C0H,0C2H,0C6H,0CCH,018H,030H,060H,0CEH,093H,006H,00CH,01FH,000H,000H +DB 000H,0C0H,0C0H,0C2H,0C6H,0CCH,018H,030H,066H,0CEH,09AH,03FH,006H,00FH,000H,000H +DB 000H,000H,018H,018H,000H,018H,018H,018H,03CH,03CH,03CH,018H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,033H,066H,0CCH,066H,033H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0CCH,066H,033H,066H,0CCH,000H,000H,000H,000H,000H,000H +DB 011H,044H,011H,044H,011H,044H,011H,044H,011H,044H,011H,044H,011H,044H,011H,044H +DB 055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH +DB 0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H +DB 018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,018H,018H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,0F8H,018H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H +DB 036H,036H,036H,036H,036H,036H,036H,0F6H,036H,036H,036H,036H,036H,036H,036H,036H +DB 000H,000H,000H,000H,000H,000H,000H,0FEH,036H,036H,036H,036H,036H,036H,036H,036H +DB 000H,000H,000H,000H,000H,0F8H,018H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H +DB 036H,036H,036H,036H,036H,0F6H,006H,0F6H,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H +DB 000H,000H,000H,000H,000H,0FEH,006H,0F6H,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,0F6H,006H,0FEH,000H,000H,000H,000H,000H,000H,000H,000H +DB 036H,036H,036H,036H,036H,036H,036H,0FEH,000H,000H,000H,000H,000H,000H,000H,000H +DB 018H,018H,018H,018H,018H,0F8H,018H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,018H,018H,01FH,000H,000H,000H,000H,000H,000H,000H,000H +DB 018H,018H,018H,018H,018H,018H,018H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,018H,018H,01FH,018H,018H,018H,018H,018H,018H,018H,018H +DB 000H,000H,000H,000H,000H,000H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 018H,018H,018H,018H,018H,018H,018H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,01FH,018H,01FH,018H,018H,018H,018H,018H,018H,018H,018H +DB 036H,036H,036H,036H,036H,036H,036H,037H,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,037H,030H,03FH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,03FH,030H,037H,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,0F7H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0FFH,000H,0F7H,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,037H,030H,037H,036H,036H,036H,036H,036H,036H,036H,036H +DB 000H,000H,000H,000H,000H,0FFH,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 036H,036H,036H,036H,036H,0F7H,000H,0F7H,036H,036H,036H,036H,036H,036H,036H,036H +DB 018H,018H,018H,018H,018H,0FFH,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 036H,036H,036H,036H,036H,036H,036H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0FFH,000H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H +DB 000H,000H,000H,000H,000H,000H,000H,0FFH,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,036H,036H,03FH,000H,000H,000H,000H,000H,000H,000H,000H +DB 018H,018H,018H,018H,018H,01FH,018H,01FH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,01FH,018H,01FH,018H,018H,018H,018H,018H,018H,018H,018H +DB 000H,000H,000H,000H,000H,000H,000H,03FH,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,036H,036H,0FFH,036H,036H,036H,036H,036H,036H,036H,036H +DB 018H,018H,018H,018H,018H,0FFH,018H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,018H,018H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,01FH,018H,018H,018H,018H,018H,018H,018H,018H +DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH +DB 000H,000H,000H,000H,000H,000H,000H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH +DB 0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H +DB 00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH +DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,076H,0DCH,0D8H,0D8H,0D8H,0DCH,076H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0FCH,0C6H,0FCH,0C6H,0C6H,0FCH,0C0H,0C0H,0C0H,000H,000H +DB 000H,000H,0FEH,0C6H,0C6H,0C0H,0C0H,0C0H,0C0H,0C0H,0C0H,0C0H,000H,000H,000H,000H +DB 000H,000H,000H,000H,080H,0FEH,06CH,06CH,06CH,06CH,06CH,06CH,000H,000H,000H,000H +DB 000H,000H,000H,0FEH,0C6H,060H,030H,018H,030H,060H,0C6H,0FEH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,07EH,0D8H,0D8H,0D8H,0D8H,0D8H,070H,000H,000H,000H,000H +DB 000H,000H,000H,000H,066H,066H,066H,066H,066H,07CH,060H,060H,0C0H,000H,000H,000H +DB 000H,000H,000H,000H,076H,0DCH,018H,018H,018H,018H,018H,018H,000H,000H,000H,000H +DB 000H,000H,000H,07EH,018H,03CH,066H,066H,066H,03CH,018H,07EH,000H,000H,000H,000H +DB 000H,000H,000H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,06CH,038H,000H,000H,000H,000H +DB 000H,000H,038H,06CH,0C6H,0C6H,0C6H,06CH,06CH,06CH,06CH,0EEH,000H,000H,000H,000H +DB 000H,000H,01EH,030H,018H,00CH,03EH,066H,066H,066H,066H,03CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,07EH,0DBH,0DBH,0DBH,07EH,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,003H,006H,07EH,0CFH,0DBH,0F3H,07EH,060H,0C0H,000H,000H,000H,000H +DB 000H,000H,01CH,030H,060H,060H,07CH,060H,060H,060H,030H,01CH,000H,000H,000H,000H +DB 000H,000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 000H,000H,000H,000H,0FEH,000H,000H,0FEH,000H,000H,0FEH,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,018H,018H,07EH,018H,018H,000H,000H,0FFH,000H,000H,000H,000H +DB 000H,000H,000H,030H,018H,00CH,006H,00CH,018H,030H,000H,07EH,000H,000H,000H,000H +DB 000H,000H,000H,00CH,018H,030H,060H,030H,018H,00CH,000H,07EH,000H,000H,000H,000H +DB 000H,000H,00EH,01BH,01BH,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,018H,018H,018H,0D8H,0D8H,0D8H,070H,000H,000H,000H,000H +DB 000H,000H,000H,000H,018H,018H,000H,07EH,000H,018H,018H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,076H,0DCH,000H,076H,0DCH,000H,000H,000H,000H,000H,000H +DB 000H,038H,06CH,06CH,038H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,018H,018H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,018H,000H,000H,000H,000H,000H,000H,000H +DB 000H,00FH,00CH,00CH,00CH,00CH,00CH,0ECH,06CH,06CH,03CH,01CH,000H,000H,000H,000H +DB 000H,0D8H,06CH,06CH,06CH,06CH,06CH,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,070H,098H,030H,060H,0C8H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,07CH,07CH,07CH,07CH,07CH,07CH,07CH,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H diff --git a/16/tauron/ASM_SRC/FONT2.ASM b/16/tauron/ASM_SRC/FONT2.ASM new file mode 100755 index 00000000..9c84bf90 --- /dev/null +++ b/16/tauron/ASM_SRC/FONT2.ASM @@ -0,0 +1,266 @@ +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- Created with FEDIT written by Kinfira (Jeffrey Morgan) -= +;=- -= +;=- Tauron VGA Utilities Version 1.0 -= +;=- Released June 14, 1998 -= +;=- -= +;=- Font Width: 8 -= +;=- Font Height: 16 -= +;=- Bytes per character: 16 -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,07EH,081H,0A5H,081H,081H,0BDH,099H,081H,081H,07EH,000H,000H,000H,000H +DB 000H,000H,07EH,0FFH,0DBH,0FFH,0FFH,0C3H,0E7H,0FFH,0FFH,07EH,000H,000H,000H,000H +DB 000H,000H,000H,000H,06CH,0FEH,0FEH,0FEH,0FEH,07CH,038H,010H,000H,000H,000H,000H +DB 000H,000H,000H,000H,010H,038H,07CH,0FEH,07CH,038H,010H,000H,000H,000H,000H,000H +DB 000H,000H,000H,018H,03CH,03CH,0E7H,0E7H,0E7H,099H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,000H,018H,03CH,07EH,0FFH,0FFH,07EH,018H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,018H,03CH,03CH,018H,000H,000H,000H,000H,000H,000H +DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0E7H,0C3H,0C3H,0E7H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH +DB 000H,000H,000H,000H,000H,03CH,066H,042H,042H,066H,03CH,000H,000H,000H,000H,000H +DB 0FFH,0FFH,0FFH,0FFH,0FFH,0C3H,099H,0BDH,0BDH,099H,0C3H,0FFH,0FFH,0FFH,0FFH,0FFH +DB 000H,000H,01EH,00EH,01AH,032H,078H,0CCH,0CCH,0CCH,0CCH,078H,000H,000H,000H,000H +DB 000H,000H,03CH,066H,066H,066H,066H,03CH,018H,07EH,018H,018H,000H,000H,000H,000H +DB 000H,000H,03FH,033H,03FH,030H,030H,030H,030H,070H,0F0H,0E0H,000H,000H,000H,000H +DB 000H,000H,07FH,063H,07FH,063H,063H,063H,063H,067H,0E7H,0E6H,0C0H,000H,000H,000H +DB 000H,000H,000H,018H,018H,0DBH,03CH,0E7H,03CH,0DBH,018H,018H,000H,000H,000H,000H +DB 000H,080H,0C0H,0E0H,0F0H,0F8H,0FEH,0F8H,0F0H,0E0H,0C0H,080H,000H,000H,000H,000H +DB 000H,002H,006H,00EH,01EH,03EH,0FEH,03EH,01EH,00EH,006H,002H,000H,000H,000H,000H +DB 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,07EH,03CH,018H,000H,000H,000H,000H +DB 000H,000H,066H,066H,066H,066H,066H,066H,066H,000H,066H,066H,000H,000H,000H,000H +DB 000H,000H,07FH,0DBH,0DBH,0DBH,07BH,01BH,01BH,01BH,01BH,01BH,000H,000H,000H,000H +DB 000H,07CH,0C6H,060H,038H,06CH,0C6H,0C6H,06CH,038H,00CH,0C6H,07CH,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,0FEH,0FEH,0FEH,0FEH,000H,000H,000H,000H +DB 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,07EH,03CH,018H,07EH,000H,000H,000H +DB 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,018H,018H,018H,000H,000H,000H,000H +DB 000H,000H,018H,018H,018H,018H,018H,018H,018H,07EH,03CH,018H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,018H,00CH,0FEH,00CH,018H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,030H,060H,0FEH,060H,030H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0C0H,0C0H,0C0H,0C0H,0FEH,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,028H,06CH,0FEH,06CH,028H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,010H,038H,038H,07CH,07CH,0FEH,0FEH,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,0FEH,0FEH,07CH,07CH,038H,038H,010H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,018H,03CH,03CH,03CH,018H,018H,018H,000H,018H,018H,000H,000H,000H,000H +DB 000H,066H,066H,066H,024H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,06CH,06CH,0FEH,06CH,06CH,06CH,0FEH,06CH,06CH,000H,000H,000H,000H +DB 018H,018H,07CH,0C6H,0C2H,0C0H,07CH,006H,086H,0C6H,07CH,018H,018H,000H,000H,000H +DB 000H,000H,000H,000H,0C2H,0C6H,00CH,018H,030H,060H,0C6H,086H,000H,000H,000H,000H +DB 000H,000H,038H,06CH,06CH,038H,076H,0DCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,030H,030H,030H,060H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,00CH,018H,030H,030H,030H,030H,030H,030H,018H,00CH,000H,000H,000H,000H +DB 000H,000H,030H,018H,00CH,00CH,00CH,00CH,00CH,00CH,018H,030H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,066H,03CH,0FFH,03CH,066H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,018H,018H,07EH,018H,018H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,018H,018H,018H,030H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,0FEH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,018H,018H,000H,000H,000H,000H +DB 000H,000H,000H,000H,002H,006H,00CH,018H,030H,060H,0C0H,080H,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,0C6H,0CEH,0D6H,0D6H,0E6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,018H,038H,078H,018H,018H,018H,018H,018H,018H,07EH,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,006H,00CH,018H,030H,060H,0C0H,0C6H,0FEH,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,006H,006H,03CH,006H,006H,006H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,00CH,01CH,03CH,06CH,0CCH,0FEH,00CH,00CH,00CH,01EH,000H,000H,000H,000H +DB 000H,000H,0FEH,0C0H,0C0H,0C0H,0FCH,00EH,006H,006H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,038H,060H,0C0H,0C0H,0FCH,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,0FEH,0C6H,006H,006H,00CH,018H,030H,030H,030H,030H,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,0C6H,0C6H,07CH,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,0C6H,0C6H,07EH,006H,006H,006H,00CH,078H,000H,000H,000H,000H +DB 000H,000H,000H,000H,018H,018H,000H,000H,000H,018H,018H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,018H,018H,000H,000H,000H,018H,018H,030H,000H,000H,000H,000H +DB 000H,000H,000H,006H,00CH,018H,030H,060H,030H,018H,00CH,006H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,0FEH,000H,000H,0FEH,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,060H,030H,018H,00CH,006H,00CH,018H,030H,060H,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,0C6H,00CH,018H,018H,018H,000H,018H,018H,000H,000H,000H,000H +DB 000H,000H,000H,07CH,0C6H,0C6H,0DEH,0DEH,0DEH,0DCH,0C0H,07CH,000H,000H,000H,000H +DB 000H,000H,010H,038H,06CH,0C6H,0C6H,0FFH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 000H,000H,0FCH,066H,066H,066H,07CH,0FFH,066H,066H,066H,0FCH,000H,000H,000H,000H +DB 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0FFH,0C0H,0C2H,066H,03CH,000H,000H,000H,000H +DB 000H,000H,0F8H,06CH,066H,066H,066H,0FFH,066H,066H,06CH,0F8H,000H,000H,000H,000H +DB 000H,000H,0FEH,066H,062H,068H,078H,0FFH,060H,062H,066H,0FEH,000H,000H,000H,000H +DB 000H,000H,0FEH,066H,062H,068H,078H,0FFH,060H,060H,060H,0F0H,000H,000H,000H,000H +DB 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0FFH,0C6H,0C6H,066H,03AH,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0FEH,0FFH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 000H,000H,03CH,018H,018H,018H,018H,0FFH,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,01EH,00CH,00CH,00CH,00CH,0FFH,0CCH,0CCH,0CCH,078H,000H,000H,000H,000H +DB 000H,000H,0E6H,066H,06CH,06CH,078H,0FFH,06CH,066H,066H,0E6H,000H,000H,000H,000H +DB 000H,000H,0F0H,060H,060H,060H,060H,0FFH,060H,062H,066H,0FEH,000H,000H,000H,000H +DB 000H,000H,0C6H,0EEH,0FEH,0FEH,0D6H,0FFH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 000H,000H,0C6H,0E6H,0F6H,0FEH,0DEH,0FFH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 000H,000H,038H,06CH,0C6H,0C6H,0C6H,0FFH,0C6H,0C6H,06CH,038H,000H,000H,000H,000H +DB 000H,000H,0FCH,066H,066H,066H,07CH,0FFH,060H,060H,060H,0F0H,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0FFH,0C6H,0D6H,0DEH,07CH,00CH,00EH,000H,000H +DB 000H,000H,0FCH,066H,066H,066H,07CH,0FFH,066H,066H,066H,0E6H,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,0C6H,060H,038H,0FFH,006H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,07EH,07EH,05AH,018H,018H,0FFH,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0FFH,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0FFH,0C6H,06CH,038H,010H,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0FFH,0D6H,0FEH,06CH,06CH,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,06CH,06CH,038H,0FFH,06CH,06CH,0C6H,0C6H,000H,000H,000H,000H +DB 000H,000H,066H,066H,066H,066H,03CH,0FFH,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,0FEH,0C6H,086H,00CH,018H,0FFH,060H,0C2H,0C6H,0FEH,000H,000H,000H,000H +DB 000H,000H,03CH,030H,030H,030H,030H,0FFH,030H,030H,030H,03CH,000H,000H,000H,000H +DB 000H,000H,000H,080H,0C0H,0E0H,070H,0FFH,01CH,00EH,006H,002H,000H,000H,000H,000H +DB 000H,000H,03CH,00CH,00CH,00CH,00CH,0FFH,00CH,00CH,00CH,03CH,000H,000H,000H,000H +DB 010H,038H,06CH,0C6H,000H,000H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,0FFH,000H,000H,000H,000H,000H,0FFH,000H,000H +DB 030H,030H,018H,000H,000H,000H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,0E0H,060H,060H,078H,06CH,066H,066H,066H,066H,0DCH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,07CH,0C6H,0C0H,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,01CH,00CH,00CH,03CH,06CH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,038H,06CH,064H,060H,0F0H,060H,060H,060H,060H,0F0H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,076H,0CCH,0CCH,0CCH,0CCH,0CCH,07CH,00CH,0CCH,078H,000H +DB 000H,000H,0E0H,060H,060H,06CH,076H,066H,066H,066H,066H,0E6H,000H,000H,000H,000H +DB 000H,000H,018H,018H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,006H,006H,000H,00EH,006H,006H,006H,006H,006H,006H,066H,066H,03CH,000H +DB 000H,000H,0E0H,060H,060H,066H,06CH,078H,078H,06CH,066H,0E6H,000H,000H,000H,000H +DB 000H,000H,038H,018H,018H,018H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0ECH,0FEH,0D6H,0D6H,0D6H,0D6H,0D6H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0DCH,066H,066H,066H,066H,066H,066H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0DCH,066H,066H,066H,066H,066H,07CH,060H,060H,0F0H,000H +DB 000H,000H,000H,000H,000H,076H,0CCH,0CCH,0CCH,0CCH,0CCH,07CH,00CH,00CH,01EH,000H +DB 000H,000H,000H,000H,000H,0DCH,076H,062H,060H,060H,060H,0F0H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,07CH,0C6H,060H,038H,00CH,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,010H,030H,030H,0FCH,030H,030H,030H,030H,036H,01CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,066H,066H,066H,066H,066H,03CH,018H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0C6H,0C6H,0C6H,0D6H,0D6H,0FEH,06CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0C6H,06CH,038H,038H,038H,06CH,0C6H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07EH,006H,00CH,0F8H,000H +DB 000H,000H,000H,000H,000H,0FEH,0CCH,018H,030H,060H,0C6H,0FEH,000H,000H,000H,000H +DB 000H,000H,00EH,018H,018H,018H,070H,018H,018H,018H,018H,00EH,000H,000H,000H,000H +DB 000H,000H,018H,018H,018H,018H,000H,018H,018H,018H,018H,018H,000H,000H,000H,000H +DB 000H,000H,070H,018H,018H,018H,00EH,018H,018H,018H,018H,070H,000H,000H,000H,000H +DB 000H,000H,076H,0DCH,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,010H,038H,06CH,0C6H,0C6H,0C6H,0FEH,000H,000H,000H,000H,000H +DB 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0C0H,0C2H,066H,03CH,00CH,006H,07CH,000H,000H +DB 000H,000H,0CCH,0CCH,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,00CH,018H,030H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H +DB 000H,010H,038H,06CH,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,0CCH,0CCH,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,060H,030H,018H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,038H,06CH,038H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,000H,000H,03CH,066H,060H,060H,066H,03CH,00CH,006H,03CH,000H,000H,000H +DB 000H,010H,038H,06CH,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H +DB 000H,060H,030H,018H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,066H,066H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,018H,03CH,066H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,060H,030H,018H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,0C6H,0C6H,010H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 038H,06CH,038H,000H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 018H,030H,060H,000H,0FEH,066H,060H,07CH,060H,060H,066H,0FEH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0CCH,076H,036H,07EH,0D8H,0D8H,06EH,000H,000H,000H,000H +DB 000H,000H,03EH,06CH,0CCH,0CCH,0FEH,0CCH,0CCH,0CCH,0CCH,0CEH,000H,000H,000H,000H +DB 000H,010H,038H,06CH,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,060H,030H,018H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,030H,078H,0CCH,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,060H,030H,018H,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07EH,006H,00CH,078H,000H +DB 000H,0C6H,0C6H,000H,038H,06CH,0C6H,0C6H,0C6H,0C6H,06CH,038H,000H,000H,000H,000H +DB 000H,0C6H,0C6H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,018H,018H,03CH,066H,060H,060H,060H,066H,03CH,018H,018H,000H,000H,000H,000H +DB 000H,038H,06CH,064H,060H,0F0H,060H,060H,060H,060H,0E6H,0FCH,000H,000H,000H,000H +DB 000H,000H,066H,066H,03CH,018H,07EH,018H,07EH,018H,018H,018H,000H,000H,000H,000H +DB 000H,0F8H,0CCH,0CCH,0F8H,0C4H,0CCH,0DEH,0CCH,0CCH,0CCH,0C6H,000H,000H,000H,000H +DB 000H,00EH,01BH,018H,018H,018H,07EH,018H,018H,018H,018H,018H,0D8H,070H,000H,000H +DB 000H,018H,030H,060H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,00CH,018H,030H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,018H,030H,060H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,018H,030H,060H,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,076H,0DCH,000H,0DCH,066H,066H,066H,066H,066H,066H,000H,000H,000H,000H +DB 076H,0DCH,000H,0C6H,0E6H,0F6H,0FEH,0DEH,0CEH,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 000H,03CH,06CH,06CH,03EH,000H,07EH,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,038H,06CH,06CH,038H,000H,07CH,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,030H,030H,000H,030H,030H,060H,0C0H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,0FEH,0C0H,0C0H,0C0H,0C0H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,0FEH,006H,006H,006H,006H,000H,000H,000H,000H,000H +DB 000H,0C0H,0C0H,0C2H,0C6H,0CCH,018H,030H,060H,0CEH,093H,006H,00CH,01FH,000H,000H +DB 000H,0C0H,0C0H,0C2H,0C6H,0CCH,018H,030H,066H,0CEH,09AH,03FH,006H,00FH,000H,000H +DB 000H,000H,018H,018H,000H,018H,018H,018H,03CH,03CH,03CH,018H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,033H,066H,0CCH,066H,033H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0CCH,066H,033H,066H,0CCH,000H,000H,000H,000H,000H,000H +DB 011H,044H,011H,044H,011H,044H,011H,044H,011H,044H,011H,044H,011H,044H,011H,044H +DB 055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH +DB 0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H +DB 018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,018H,018H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,0F8H,018H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H +DB 036H,036H,036H,036H,036H,036H,036H,0F6H,036H,036H,036H,036H,036H,036H,036H,036H +DB 000H,000H,000H,000H,000H,000H,000H,0FEH,036H,036H,036H,036H,036H,036H,036H,036H +DB 000H,000H,000H,000H,000H,0F8H,018H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H +DB 036H,036H,036H,036H,036H,0F6H,006H,0F6H,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H +DB 000H,000H,000H,000H,000H,0FEH,006H,0F6H,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,0F6H,006H,0FEH,000H,000H,000H,000H,000H,000H,000H,000H +DB 036H,036H,036H,036H,036H,036H,036H,0FEH,000H,000H,000H,000H,000H,000H,000H,000H +DB 018H,018H,018H,018H,018H,0F8H,018H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,018H,018H,01FH,000H,000H,000H,000H,000H,000H,000H,000H +DB 018H,018H,018H,018H,018H,018H,018H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,018H,018H,01FH,018H,018H,018H,018H,018H,018H,018H,018H +DB 000H,000H,000H,000H,000H,000H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 018H,018H,018H,018H,018H,018H,018H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,01FH,018H,01FH,018H,018H,018H,018H,018H,018H,018H,018H +DB 036H,036H,036H,036H,036H,036H,036H,037H,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,037H,030H,03FH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,03FH,030H,037H,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,0F7H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0FFH,000H,0F7H,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,037H,030H,037H,036H,036H,036H,036H,036H,036H,036H,036H +DB 000H,000H,000H,000H,000H,0FFH,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 036H,036H,036H,036H,036H,0F7H,000H,0F7H,036H,036H,036H,036H,036H,036H,036H,036H +DB 018H,018H,018H,018H,018H,0FFH,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 036H,036H,036H,036H,036H,036H,036H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0FFH,000H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H +DB 000H,000H,000H,000H,000H,000H,000H,0FFH,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,036H,036H,03FH,000H,000H,000H,000H,000H,000H,000H,000H +DB 018H,018H,018H,018H,018H,01FH,018H,01FH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,01FH,018H,01FH,018H,018H,018H,018H,018H,018H,018H,018H +DB 000H,000H,000H,000H,000H,000H,000H,03FH,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,036H,036H,0FFH,036H,036H,036H,036H,036H,036H,036H,036H +DB 018H,018H,018H,018H,018H,0FFH,018H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,018H,018H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,01FH,018H,018H,018H,018H,018H,018H,018H,018H +DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH +DB 000H,000H,000H,000H,000H,000H,000H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH +DB 0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H +DB 00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH +DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,076H,0DCH,0D8H,0D8H,0D8H,0DCH,076H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0FCH,0C6H,0FCH,0C6H,0C6H,0FCH,0C0H,0C0H,0C0H,000H,000H +DB 000H,000H,0FEH,0C6H,0C6H,0C0H,0C0H,0C0H,0C0H,0C0H,0C0H,0C0H,000H,000H,000H,000H +DB 000H,000H,000H,000H,080H,0FEH,06CH,06CH,06CH,06CH,06CH,06CH,000H,000H,000H,000H +DB 000H,000H,000H,0FEH,0C6H,060H,030H,018H,030H,060H,0C6H,0FEH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,07EH,0D8H,0D8H,0D8H,0D8H,0D8H,070H,000H,000H,000H,000H +DB 000H,000H,000H,000H,066H,066H,066H,066H,066H,07CH,060H,060H,0C0H,000H,000H,000H +DB 000H,000H,000H,000H,076H,0DCH,018H,018H,018H,018H,018H,018H,000H,000H,000H,000H +DB 000H,000H,000H,07EH,018H,03CH,066H,066H,066H,03CH,018H,07EH,000H,000H,000H,000H +DB 000H,000H,000H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,06CH,038H,000H,000H,000H,000H +DB 000H,000H,038H,06CH,0C6H,0C6H,0C6H,06CH,06CH,06CH,06CH,0EEH,000H,000H,000H,000H +DB 000H,000H,01EH,030H,018H,00CH,03EH,066H,066H,066H,066H,03CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,07EH,0DBH,0DBH,0DBH,07EH,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,003H,006H,07EH,0CFH,0DBH,0F3H,07EH,060H,0C0H,000H,000H,000H,000H +DB 000H,000H,01CH,030H,060H,060H,07CH,060H,060H,060H,030H,01CH,000H,000H,000H,000H +DB 000H,000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 000H,000H,000H,000H,0FEH,000H,000H,0FEH,000H,000H,0FEH,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,018H,018H,07EH,018H,018H,000H,000H,0FFH,000H,000H,000H,000H +DB 000H,000H,000H,030H,018H,00CH,006H,00CH,018H,030H,000H,07EH,000H,000H,000H,000H +DB 000H,000H,000H,00CH,018H,030H,060H,030H,018H,00CH,000H,07EH,000H,000H,000H,000H +DB 000H,000H,00EH,01BH,01BH,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,018H,018H,018H,0D8H,0D8H,0D8H,070H,000H,000H,000H,000H +DB 000H,000H,000H,000H,018H,018H,000H,07EH,000H,018H,018H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,076H,0DCH,000H,076H,0DCH,000H,000H,000H,000H,000H,000H +DB 000H,038H,06CH,06CH,038H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,018H,018H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,018H,000H,000H,000H,000H,000H,000H,000H +DB 000H,00FH,00CH,00CH,00CH,00CH,00CH,0ECH,06CH,06CH,03CH,01CH,000H,000H,000H,000H +DB 000H,0D8H,06CH,06CH,06CH,06CH,06CH,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,070H,098H,030H,060H,0C8H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,07CH,07CH,07CH,07CH,07CH,07CH,07CH,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H diff --git a/16/tauron/ASM_SRC/MAIN.ASM b/16/tauron/ASM_SRC/MAIN.ASM new file mode 100755 index 00000000..8bf81cef --- /dev/null +++ b/16/tauron/ASM_SRC/MAIN.ASM @@ -0,0 +1,788 @@ +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- -= +;=- Tauron VGA Utilities Version 3.0 -= +;=- Released September 20, 1998 -= +;=- -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +;=- All Rights Reserved. =-= that you put my name some- -= +;=- =-= where in your credits. -= +;=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- I assume no responsibility whatsoever for any effect that this package, -= +;=- the information contained therein or the use thereof has on you, your -= +;=- sanity, computer, spouse, children, pets or anything else related to -= +;=- you or your existance. No warranty is provided nor implied with this -= +;=- source code. -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +.MODEL SMALL +.386 +JUMPS +LOCALS +.STACK 200h +.DATA + +ATTRCON_ADDR EQU 03C0H +MISC_ADDR EQU 03C2H +VGAENABLE_ADDR EQU 03C3H +SEQ_ADDR EQU 03C4H +GRACON_ADDR EQU 03CEH +CRTC_ADDR EQU 03D4H +STATUS_ADDR EQU 03DAH + +; Videomode defines +VMODE_00H EQU 00H +VMODE_01H EQU 00H +VMODE_02H EQU 03H +VMODE_03H EQU 03H +VMODE_04H EQU 04H +VMODE_05H EQU 04H +VMODE_06H EQU 06H +VMODE_07H EQU 07H +VMODE_0DH EQU 0DH +VMODE_0EH EQU 0EH +VMODE_0FH EQU 0FH +VMODE_10H EQU 10H +VMODE_11H EQU 11H +VMODE_12H EQU 12H +VMODE_13H EQU 13H +VMODE_CHAIN4 EQU 14H +VMODE_MODE_X EQU 15H +VMODE_MODE_A EQU 16H +VMODE_MODE_B EQU 17H +VMODE_MODE_C EQU 18H +VMODE_MODE_D EQU 19H +VMODE_MODE_E EQU 1AH +VMODE_MODE_F EQU 1BH +VMODE_MODE_G EQU 1CH +VMODE_MODE_H EQU 1DH +VMODE_MODE_I EQU 1EH +VMODE_MODE_J EQU 1FH +VMODE_MODE_K EQU 20H +VMODE_MODE_L EQU 21H +VMODE_MODE_M EQU 22H +VMODE_MODE_N EQU 23H + +;These next four lines must be included for the text mode stuff to work. +oldmode db ? +oldmisc db ? +oldmask db ? +oldmem db ? + +PALETTE LABEL BYTE +DB 0, 0, 0, 0, 0, 42, 0, 42, 0, 0, 42, 42, 42, 0, 0, 42, 0, 42 +DB 42, 21, 0, 42, 42, 42, 21, 21, 21, 21, 21, 63, 21, 63, 21, 21, 63, 63 +DB 63, 21, 21, 63, 21, 63, 63, 63, 21, 63, 63, 63, 0, 0, 0, 5, 5, 5 +DB 8, 8, 8, 11, 11, 11, 14, 14, 14, 17, 17, 17, 20, 20, 20, 24, 24, 24 +DB 28, 28, 28, 32, 32, 32, 36, 36, 36, 40, 40, 40, 45, 45, 45, 50, 50, 50 +DB 56, 56, 56, 63, 63, 63, 0, 0, 63, 16, 0, 63, 31, 0, 63, 47, 0, 63 +DB 63, 0, 63, 63, 0, 47, 63, 0, 31, 63, 0, 16, 63, 0, 0, 63, 16, 0 +DB 63, 31, 0, 63, 47, 0, 63, 63, 0, 47, 63, 0, 31, 63, 0, 16, 63, 0 +DB 0, 63, 0, 0, 63, 16, 0, 63, 31, 0, 63, 47, 0, 63, 63, 0, 47, 63 +DB 0, 31, 63, 0, 16, 63, 31, 31, 63, 39, 31, 63, 47, 31, 63, 55, 31, 63 +DB 63, 31, 63, 63, 31, 55, 63, 31, 47, 63, 31, 39, 63, 31, 31, 63, 39, 31 +DB 63, 47, 31, 63, 55, 31, 63, 63, 31, 55, 63, 31, 47, 63, 31, 39, 63, 31 +DB 31, 63, 31, 31, 63, 39, 31, 63, 47, 31, 63, 55, 31, 63, 63, 31, 55, 63 +DB 31, 47, 63, 31, 39, 63, 45, 45, 63, 49, 45, 63, 54, 45, 63, 58, 45, 63 +DB 63, 45, 63, 63, 45, 58, 63, 45, 54, 63, 45, 49, 63, 45, 45, 63, 49, 45 +DB 63, 54, 45, 63, 58, 45, 63, 63, 45, 58, 63, 45, 54, 63, 45, 49, 63, 45 +DB 45, 63, 45, 45, 63, 49, 45, 63, 54, 45, 63, 58, 45, 63, 63, 45, 58, 63 +DB 45, 54, 63, 45, 49, 63, 0, 0, 28, 7, 0, 28, 14, 0, 28, 21, 0, 28 +DB 28, 0, 28, 28, 0, 21, 28, 0, 14, 28, 0, 7, 28, 0, 0, 28, 7, 0 +DB 28, 14, 0, 28, 21, 0, 28, 28, 0, 21, 28, 0, 14, 28, 0, 7, 28, 0 +DB 0, 28, 0, 0, 28, 7, 0, 28, 14, 0, 28, 21, 0, 28, 28, 0, 21, 28 +DB 0, 14, 28, 0, 7, 28, 14, 14, 28, 17, 14, 28, 21, 14, 28, 24, 14, 28 +DB 28, 14, 28, 28, 14, 24, 28, 14, 21, 28, 14, 17, 28, 14, 14, 28, 17, 14 +DB 28, 21, 14, 28, 24, 14, 28, 28, 14, 24, 28, 14, 21, 28, 14, 17, 28, 14 +DB 14, 28, 14, 14, 28, 17, 14, 28, 21, 14, 28, 24, 14, 28, 28, 14, 24, 28 +DB 14, 21, 28, 14, 17, 28, 20, 20, 28, 22, 20, 28, 24, 20, 28, 26, 20, 28 +DB 28, 20, 28, 28, 20, 26, 28, 20, 24, 28, 20, 22, 28, 20, 20, 28, 22, 20 +DB 28, 24, 20, 28, 26, 20, 28, 28, 20, 26, 28, 20, 24, 28, 20, 22, 28, 20 +DB 20, 28, 20, 20, 28, 22, 20, 28, 24, 20, 28, 26, 20, 28, 28, 20, 26, 28 +DB 20, 24, 28, 20, 22, 28, 0, 0, 16, 4, 0, 16, 8, 0, 16, 12, 0, 16 +DB 16, 0, 16, 16, 0, 12, 16, 0, 8, 16, 0, 4, 16, 0, 0, 16, 4, 0 +DB 16, 8, 0, 16, 12, 0, 16, 16, 0, 12, 16, 0, 8, 16, 0, 4, 16, 0 +DB 0, 16, 0, 0, 16, 4, 0, 16, 8, 0, 16, 12, 0, 16, 16, 0, 12, 16 +DB 0, 8, 16, 0, 4, 16, 8, 8, 16, 10, 8, 16, 12, 8, 16, 14, 8, 16 +DB 16, 8, 16, 16, 8, 14, 16, 8, 12, 16, 8, 10, 16, 8, 8, 16, 10, 8 +DB 16, 12, 8, 16, 14, 8, 16, 16, 8, 14, 16, 8, 12, 16, 8, 10, 16, 8 +DB 8, 16, 8, 8, 16, 10, 8, 16, 12, 8, 16, 14, 8, 16, 16, 8, 14, 16 +DB 8, 12, 16, 8, 10, 16, 11, 11, 16, 12, 11, 16, 13, 11, 16, 15, 11, 16 +DB 16, 11, 16, 16, 11, 15, 16, 11, 13, 16, 11, 12, 16, 11, 11, 16, 12, 11 +DB 16, 13, 11, 16, 15, 11, 16, 16, 11, 15, 16, 11, 13, 16, 11, 12, 16, 11 +DB 11, 16, 11, 11, 16, 12, 11, 16, 13, 11, 16, 15, 11, 16, 16, 11, 15, 16 +DB 11, 13, 16, 11, 12, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +DB 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 63, 63 + +; Must be included for any videomode to be set. +include modes.inc + +MAIN_MSG LABEL BYTE +DB 'Tauron VGA Utilities v3.0',13,10 +DB 'Copyright (c) 1998 Jeffrey Morgan. All Rights Reserved.',13,10 +DB 'Select a video mode to test: (Modes with a ! are not implemented)',13,10 +DB 'Key Videomode (Modes with a % are unchained)',13,10 +DB '================================================================================' +DB ' 0) 00H, 01H -- 40 x 25 x 16 %F) Mode D -- 360 x 200 x 256',13,10 +DB ' 1) Mode L -- 40 x 43 x 16 %G) Mode E -- 360 x 240 x 256',13,10 +DB ' 2) Mode M -- 40 x 50 x 16 %H) Mode F -- 360 x 350 x 256',13,10 +DB '!3) 07H -- 80 x 25 x 2 %I) Mode G -- 360 x 400 x 256',13,10 +DB ' 4) 02H, 03H -- 80 x 25 x 16 %J) Mode H -- 360 x 480 x 256',13,10 +DB ' 5) Mode J -- 80 x 43 x 16 K) 06H -- 640 x 200 x 2',13,10 +DB ' 6) Mode K -- 80 x 50 x 16 !L) 0FH -- 640 x 350 x 2',13,10 +DB ' 7) 04H, 05H -- 320 x 200 x 4 M) 11H -- 640 x 480 x 2',13,10 +DB ' 8) 0DH -- 320 x 200 x 16 N) 0EH -- 640 x 200 x 16',13,10 +DB ' 9) 13H -- 320 x 200 x 256 O) 10H -- 640 x 350 x 16',13,10 +DB '%A) Chain 4 -- 320 x 200 x 256 P) Mode I -- 640 x 400 x 16',13,10 +DB '%B) Mode X -- 320 x 240 x 256 Q) 12H -- 640 x 480 x 16',13,10 +DB '%C) Mode A -- 320 x 350 x 256',13,10 +DB '%D) Mode B -- 320 x 400 x 256 R) Dual Font Test',13,10 +DB '%E) Mode C -- 320 x 480 x 256',13,10 +DB '===============================================================================',13,10 +DB 'Hit ',39,'ESC',39,' to exit. Press a key [0-9 or A-O]>$' + +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 +TEXTMSG_2 DB 179,'Text Mode: 00H ',179,0 ; +13 +TEXTMSG_3 DB 179,'Width: 80 Height: 25',179,0 ; +8 +TEXTMSG_4 DB 179,'Bytes per screen: 4000',179,0 ; +19 +TEXTMSG_5 DB 179,'Number of pages: 8 ',179,0 +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 + +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 +TEXTMSG_8 DB 179,'Text Mode J ',179,0 ; +11 +TEXTMSG_9 DB 179,'Width: 80 Height: 43',179,0 ; +21, +22 +TEXTMSG_A DB 179,'Bytes per screen: 3440',179,0 ; +19, +20, +21, +22 +TEXTMSG_B DB 179,'Number of pages: 8 ',179,0 +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 + +TEXTMSG_D DB 218,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,191,0 +TEXTMSG_E DB 179,' DUAL FONT MODE ',179,0 ; +TEXTMSG_F DB 192,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,217,0 + +FONT_8x8_OFF DW ? +FONT_8x14_OFF DW ? + +; Attribute for text charcters +ATT DB 1FH + +FONT1 LABEL BYTE +include font1.asm +FONT2 LABEL BYTE +include font2.asm +.CODE + +IODELAY MACRO + REPT 8 + JMP $+2 + ENDM +ENDM + +Start: + MOV AX,@DATA + MOV DS,AX + + ; This must be here to ensure that the fonts are properly found because + ; the location of the fonts in ROM is different on every VGA BIOS. + ; Get location of the fonts for Modes J and K + MOV AH,11h + MOV AL,30h + MOV BH,03h + INT 10H + MOV FONT_8x8_OFF,BP + + ; Get location of the fonts for Modes 00H, 01H, 02H, 03H, and 07H + MOV AH,11h + MOV AL,30h + MOV BH,06h + INT 10H + MOV FONT_8x14_OFF,BP + + ; Reset the mode and clear the screen + MOV AX,0003H + INT 10H + + ; Print out the message + MOV DX,OFFSET MAIN_MSG + MOV AH,9 + INT 21H + +MAIN_LOOP: + + ; Wait for a keypress + MOV AH,0 + INT 16H + + CMP AL,27 + JE QUIT_PROGRAM + + CMP AL,'0' + JE MODE_00_TEST + + CMP AL,'1' + JE MODE_L_TEST + + CMP AL,'2' + JE MODE_M_TEST + + CMP AL,'4' + JE MODE_03_TEST + + CMP AL,'5' + JE MODE_J_TEST + + CMP AL,'6' + JE MODE_K_TEST + + CMP AL,'7' + JE MODE_04_TEST + + CMP AL,'8' + JE MODE_0D_TEST + + CMP AL,'9' + JE MODE_13_TEST + + CMP AL,'a' + JE MODE_C4_TEST + CMP AL,'A' + JE MODE_C4_TEST + + CMP AL,'b' + JE MODE_X_TEST + CMP AL,'B' + JE MODE_X_TEST + + CMP AL,'c' + JE MODE_A_TEST + CMP AL,'C' + JE MODE_A_TEST + + CMP AL,'d' + JE MODE_B_TEST + CMP AL,'D' + JE MODE_B_TEST + + CMP AL,'e' + JE MODE_C_TEST + CMP AL,'E' + JE MODE_C_TEST + + CMP AL,'f' + JE MODE_D_TEST + CMP AL,'F' + JE MODE_D_TEST + + CMP AL,'g' + JE MODE_E_TEST + CMP AL,'G' + JE MODE_E_TEST + + CMP AL,'h' + JE MODE_F_TEST + CMP AL,'H' + JE MODE_F_TEST + + CMP AL,'i' + JE MODE_G_TEST + CMP AL,'I' + JE MODE_G_TEST + + CMP AL,'j' + JE MODE_H_TEST + CMP AL,'J' + JE MODE_H_TEST + + CMP AL,'k' + JE MODE_06_TEST + CMP AL,'K' + JE MODE_06_TEST + + CMP AL,'m' + JE MODE_11_TEST + CMP AL,'M' + JE MODE_11_TEST + + CMP AL,'n' + JE MODE_0E_TEST + CMP AL,'N' + JE MODE_0E_TEST + + CMP AL,'o' + JE MODE_10_TEST + CMP AL,'O' + JE MODE_10_TEST + + CMP AL,'p' + JE MODE_I_TEST + CMP AL,'P' + JE MODE_I_TEST + + CMP AL,'q' + JE MODE_12_TEST + CMP AL,'Q' + JE MODE_12_TEST + + CMP AL,'r' + JE DUAL_TEST + CMP AL,'R' + JE DUAL_TEST + JMP MAIN_LOOP + +; ====================== New Video Mode ==================================== +MODE_00_TEST: + PUSH VMODE_00H + CALL SETVIDEOMODE + + CALL TEXTTEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_03_TEST: + PUSH VMODE_03H + CALL SETVIDEOMODE + + CALL TEXTTEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_04_TEST: + PUSH VMODE_04H + CALL SETVIDEOMODE + + PUSH 0AAAAH + CALL CLEAR_B8000H + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_06_TEST: + PUSH VMODE_06H + CALL SETVIDEOMODE + + PUSH 0FFFFH + CALL CLEAR_B8000H + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_0D_TEST: + PUSH VMODE_0DH + CALL SETVIDEOMODE + + PUSH 12 + CALL CLEAR0DH + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_0E_TEST: + PUSH VMODE_0EH + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_10_TEST: + PUSH VMODE_10H + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_11_TEST: + PUSH VMODE_11H + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_12_TEST: + PUSH VMODE_12H + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_13_TEST: + PUSH VMODE_13H + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_I_TEST: + PUSH VMODE_MODE_I + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_C4_TEST: + PUSH VMODE_CHAIN4 + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_X_TEST: + PUSH VMODE_MODE_X + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_A_TEST: + PUSH VMODE_MODE_A + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_B_TEST: + PUSH VMODE_MODE_B + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_C_TEST: + PUSH VMODE_MODE_C + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_D_TEST: + PUSH VMODE_MODE_D + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_E_TEST: + PUSH VMODE_MODE_E + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_F_TEST: + PUSH VMODE_MODE_F + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_G_TEST: + PUSH VMODE_MODE_G + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_H_TEST: + PUSH VMODE_MODE_H + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_J_TEST: + PUSH VMODE_MODE_J + CALL SETVIDEOMODE + + CALL TEXTTEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_K_TEST: + PUSH VMODE_MODE_K + CALL SETVIDEOMODE + + CALL TEXTTEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_L_TEST: + PUSH VMODE_MODE_L + CALL SETVIDEOMODE + + CALL TEXTTEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_M_TEST: + PUSH VMODE_MODE_M + CALL SETVIDEOMODE + + CALL TEXTTEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +DUAL_TEST: + CALL DUALTEST + +RESET: + ; Reset the mode and clear the screen + MOV AX,0003H + INT 10H + + ; Print out the message + MOV DX,OFFSET MAIN_MSG + MOV AH,9 + INT 21H + JMP MAIN_LOOP + +; ====================== New Video Mode ==================================== +QUIT_PROGRAM: + ; Set the BIOS mode 03h + MOV AX,0003H + INT 10H + + ; Exit to DOS + MOV AX,4C00H + INT 21H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +LOADFONT PROC + PUSH BP + MOV BP,SP + PUSHA + mov dx,GRACON_ADDR ;get graphics port + mov al,5 ;get write mode reg + out dx,al ;select the reg + IODELAY ;delay a bit + inc dx ;change DX + in al,dx ;get value + IODELAY ;pause + mov [oldmode],al ;store it + dec dx ;restore DX + mov al,6 ;get misc reg + out dx,al ;select the reg + IODELAY ;delay a bit + inc dx ;change DX + in al,dx ;get value + IODELAY ;pause + mov [oldmisc],al ;store it + dec dx ;restore DX + mov dx,SEQ_ADDR ;get sequencer port + mov al,2 ;get map mask reg + out dx,al ;select the reg + IODELAY ;delay a bit + inc dx ;change DX + in al,dx ;get value + IODELAY ;pause + mov [oldmask],al ;store it + dec dx ;restore DX + mov al,4 ;get memory selector reg + out dx,al ;select the reg + IODELAY ;delay a bit + inc dx ;change DX + in al,dx ;get value + IODELAY ;pause + mov [oldmem],al ;store it + + mov dx,GRACON_ADDR ;select graphics port + mov al,5 ;get write mode reg + mov ah,[oldmode] ;get old value + and ah,0fch ;mask it + out dx,ax ;set new value + IODELAY ;pause + mov al,6 ;get misc reg + mov ah,[oldmisc] ;get old value + and ah,0f1h ;mask it + or ah,4 ;set a flag + out dx,ax ;set it + IODELAY ;pause + mov dx,SEQ_ADDR ;select sequencer port + mov al,2 ;get mask reg + mov ah,4 ;get new value + out dx,ax ;set it + IODELAY ;pause + mov al,4 ;get memory reg + mov ah,[oldmem] ;get old value + or ah,4 ;set flag + out dx,ax ;set value + IODELAY ;pause + + PUSH DS + PUSH ES + + MOV AX,[BP+8] + MOV ES,AX + MOV DI,[BP+10] + + MOV AX,[BP+4] + MOV DS,AX + MOV SI,[BP+6] + +@@LOOP1: + PUSH DI + MOV CL,[BP+12] +@@LOOP2: + MOVSB + DEC CL + JNZ @@LOOP2 + + MOV CL,32 + SUB CL,byte ptr [BP+12] +@@LOOP3: + MOV AX,00H + STOSB + DEC CL + JNZ @@LOOP3 + + POP DI + ADD DI,32 + + DEC CH + JNZ @@LOOP1 + + POP ES + POP DS + + mov dx,GRACON_ADDR ;get graphics port + mov al,5 ;get 1st reg + mov ah,[oldmode] ;get old value + out dx,ax ;set it + IODELAY ;pause + mov al,6 ;get 2nd reg + mov ah,[oldmisc] ;get old value + out dx,ax ;set it + IODELAY ;pause + mov dx,SEQ_ADDR ;get seq port + mov al,2 ;get 3rd reg + mov ah,[oldmask] ;get old value + out dx,ax ;set it + IODELAY ;pause + mov al,4 ;get 4th reg + mov ah,[oldmem] ;get old value + out dx,ax ;set it + IODELAY ;pause + + POPA + POP BP + RET 10 +LOADFONT ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +include clear.asm +include modes.asm +include tests.asm +include dual.asm +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +END Start diff --git a/16/tauron/ASM_SRC/MODES.ASM b/16/tauron/ASM_SRC/MODES.ASM new file mode 100755 index 00000000..28e72a84 --- /dev/null +++ b/16/tauron/ASM_SRC/MODES.ASM @@ -0,0 +1,1240 @@ +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- -= +;=- Tauron VGA Utilities Version 3.0 -= +;=- Released September 20, 1998 -= +;=- -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +;=- All Rights Reserved. =-= that you put my name some- -= +;=- =-= where in your credits. -= +;=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- I assume no responsibility whatsoever for any effect that this package, -= +;=- the information contained therein or the use thereof has on you, your -= +;=- sanity, computer, spouse, children, pets or anything else related to -= +;=- you or your existance. No warranty is provided nor implied with this -= +;=- source code. -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +SETVIDEOMODE PROC + PUSH BP + MOV BP,SP + + MOV AX,word ptr [BP+4] + MOV Mode.videomode, AX + CMP AX,VMODE_00H + JE SET00H + CMP AX,VMODE_03H + JE SET03H + CMP AX,VMODE_04H + JE SET04H + CMP AX,VMODE_06H + JE SET06H +; CMP AX,VMODE_07H +; JE SET07H + CMP AX,VMODE_0DH + JE SET0DH + CMP AX,VMODE_0EH + JE SET0EH +; CMP AX,VMODE_0FH +; JE SET0FH + CMP AX,VMODE_10H + JE SET10H + CMP AX,VMODE_11H + JE SET11H + CMP AX,VMODE_12H + JE SET12H + CMP AX,VMODE_13H + JE SET13H + CMP AX,VMODE_CHAIN4 + JE SETCHAIN4 + CMP AX,VMODE_MODE_X + JE SETMODE_X + CMP AX,VMODE_MODE_A + JE SETMODE_A + CMP AX,VMODE_MODE_B + JE SETMODE_B + CMP AX,VMODE_MODE_C + JE SETMODE_C + CMP AX,VMODE_MODE_D + JE SETMODE_D + CMP AX,VMODE_MODE_E + JE SETMODE_E + CMP AX,VMODE_MODE_F + JE SETMODE_F + CMP AX,VMODE_MODE_G + JE SETMODE_G + CMP AX,VMODE_MODE_H + JE SETMODE_H + CMP AX,VMODE_MODE_I + JE SETMODE_I + CMP AX,VMODE_MODE_J + JE SETMODE_J + CMP AX,VMODE_MODE_K + JE SETMODE_K + CMP AX,VMODE_MODE_L + JE SETMODE_L + CMP AX,VMODE_MODE_M + JE SETMODE_M + JMP SET_OUT + +SET00H: + MOV SI,OFFSET MODE00H + CALL SETMODE + + PUSH 16 ; Bytes per character + PUSH 0 ; Offset of font in Video Memory + PUSH 0A000H + PUSH FONT_8x14_OFF ; Offset of Font in BIOS + PUSH 0C000H + CALL LOADFONT + CALL SETPALETTE16 + MOV Mode.mode_width,40; + MOV Mode.mode_height,25; + MOV Mode.width_bytes,1000; + MOV Mode.colors,16; + MOV Mode.attrib,TVU_TEXT; + JMP SET_OUT + +SET03H: + MOV SI,OFFSET MODE03H + CALL SETMODE + + PUSH 16 ; Bytes per character + PUSH 0 ; Offset of font in Video Memory + PUSH 0A000H + PUSH FONT_8x14_OFF ; Offset of Font in BIOS + PUSH 0C000H + CALL LOADFONT +; CALL SETPALETTE16 + MOV Mode.mode_width,80; + MOV Mode.mode_height,25; + MOV Mode.width_bytes,2000; + MOV Mode.colors,16; + MOV Mode.attrib,TVU_TEXT; + JMP SET_OUT + +SET04H: + MOV SI,OFFSET MODE04H + CALL SETMODE + CALL SETPALETTE4 + MOV Mode.mode_width,320; + MOV Mode.mode_height,200; + MOV Mode.width_bytes,65535; + MOV Mode.colors,4; + MOV Mode.attrib,TVU_GRAPHICS; + OR Mode.attrib,TVU_B8000_ADDR + JMP SET_OUT + +SET06H: + MOV SI,OFFSET MODE06H + CALL SETMODE + CALL SETPALETTE4 + MOV Mode.mode_width,640; + MOV Mode.mode_height,200; + MOV Mode.width_bytes,16384; + MOV Mode.colors,4; + MOV Mode.attrib,TVU_GRAPHICS; + OR Mode.attrib,TVU_B8000_ADDR + OR Mode.attrib,TVU_PLANAR + JMP SET_OUT + +SET07H: + MOV SI,OFFSET MODE07H + CALL SETMODE + + PUSH 16 ; Bytes per character + PUSH 0 ; Offset of font in Video Memory + PUSH 0A000H + PUSH FONT_8x14_OFF ; Offset of Font in BIOS + PUSH 0C000H + CALL LOADFONT + MOV Mode.mode_width,80; + MOV Mode.mode_height,25; + MOV Mode.width_bytes,2000; + MOV Mode.colors,2; + MOV Mode.attrib,TVU_TEXT + OR Mode.attrib,TVU_MONOCHROME + JMP SET_OUT + +SET0DH: + MOV SI,OFFSET MODE0DH + CALL SETMODE + CALL SETPALETTE16 + MOV Mode.mode_width,320; + MOV Mode.mode_height,200; + MOV Mode.width_bytes,8000; + MOV Mode.colors,16; + MOV Mode.attrib,TVU_GRAPHICS; + OR Mode.attrib,TVU_PLANAR + JMP SET_OUT + +SET0EH: + MOV SI,OFFSET MODE0EH + CALL SETMODE + CALL SETPALETTE16 + MOV Mode.mode_width,640; + MOV Mode.mode_height,200; + MOV Mode.width_bytes,16000; + MOV Mode.colors,16; + MOV Mode.attrib,TVU_GRAPHICS; + OR Mode.attrib,TVU_PLANAR + JMP SET_OUT + +SET0FH: + MOV SI,OFFSET MODE0FH + CALL SETMODE + MOV Mode.mode_width,640; + MOV Mode.mode_height,350; + MOV Mode.width_bytes,28000; + MOV Mode.colors,2; + MOV Mode.attrib,TVU_GRAPHICS + OR Mode.attrib,TVU_MONOCHROME + JMP SET_OUT + +SET10H: + MOV SI,OFFSET MODE10H + CALL SETMODE + CALL SETPALETTE16 + MOV Mode.mode_width,640; + MOV Mode.mode_height,350; + MOV Mode.width_bytes,28000; + MOV Mode.colors,16; + MOV Mode.attrib,TVU_GRAPHICS; + OR Mode.attrib,TVU_PLANAR + JMP SET_OUT + +SET11H: + MOV SI,OFFSET MODE11H + CALL SETMODE + CALL SETPALETTE16 + MOV Mode.mode_width,640; + MOV Mode.mode_height,480; + MOV Mode.width_bytes,38400; + MOV Mode.colors,2; + MOV Mode.attrib,TVU_GRAPHICS; + OR Mode.attrib,TVU_PLANAR + JMP SET_OUT + +SET12H: + MOV SI,OFFSET MODE12H + CALL SETMODE + CALL SETPALETTE16 + MOV Mode.mode_width,640 + MOV Mode.mode_height,480 + MOV Mode.width_bytes,38400 + MOV Mode.colors,16 + MOV Mode.attrib,TVU_GRAPHICS + OR Mode.attrib,TVU_PLANAR + JMP SET_OUT + +SET13H: + MOV SI,OFFSET MODE13H + CALL SETMODE + CALL SETPALETTE256 + MOV Mode.mode_width,320; + MOV Mode.mode_height,200; + MOV Mode.width_bytes,64000; + MOV Mode.colors,256; + MOV Mode.attrib,TVU_GRAPHICS; + JMP SET_OUT + +SETCHAIN4: + MOV SI,OFFSET CHAIN4 + CALL SETMODE + CALL SETPALETTE256 + MOV Mode.mode_width,320; + MOV Mode.mode_height,200; + MOV Mode.width_bytes,16000; + MOV Mode.colors,256; + MOV Mode.attrib,TVU_GRAPHICS; + OR Mode.attrib,TVU_UNCHAINED + JMP SET_OUT + +SETMODE_X: + MOV SI,OFFSET CHAIN4 + CALL SETMODE + + MOV DX,MISC_ADDR + MOV AX,0E3H + OUT DX,AL + + MOV DX,CRTC_ADDR + + ; turn off write protect + MOV AX,02C11H + OUT DX,AX + ; vertical total + MOV AX,00D06H + OUT DX,AX + ; overflow register + MOV AX,03E07H + OUT DX,AX + ; vertical retrace start + MOV AX,0EA10H + OUT DX,AX + ; vertical retrace end AND wr.prot + MOV AX,0AC11H + OUT DX,AX + ; vertical display enable end + MOV AX,0DF12H + OUT DX,AX + ; start vertical blanking + MOV AX,0E715H + OUT DX,AX + ; end vertical blanking + MOV AX,00616H + OUT DX,AX + + CALL SETPALETTE256 + MOV Mode.mode_width,320; + MOV Mode.mode_height,240; + MOV Mode.width_bytes,19200; + MOV Mode.colors,256; + MOV Mode.attrib,TVU_GRAPHICS + OR Mode.attrib,TVU_UNCHAINED + JMP SET_OUT + +SETMODE_A: + MOV SI,OFFSET CHAIN4 + CALL SETMODE + + ; turn off double scanning mode + MOV DX,CRTC_ADDR + MOV AX,9 + OUT DX,AL + INC DX + IN AL,DX + AND AL,0E0h + OUT DX,AL + + ; change the vertical resolution flags to 350 + MOV DX,03CCH + IN AL,DX + AND AL,02Fh + OR AL,80h + MOV DX,MISC_ADDR + OUT DX,AL + + MOV DX,CRTC_ADDR + ; turn off write protect + MOV AX,02C11H + OUT DX,AX + ; vertical total + MOV AX,0BF06H + OUT DX,AX + ; overflow register + MOV AX,01F07H + OUT DX,AX + ; vertical retrace start + MOV AX,08310H + OUT DX,AX + ; vertical retrace end AND wr.prot + MOV AX,08511H + OUT DX,AX + ; vertical display enable end + MOV AX,05D12H + OUT DX,AX + ; start vertical blanking + MOV AX,06315H + OUT DX,AX + ; end vertical blanking + MOV AX,0BA16H + OUT DX,AX + + CALL SETPALETTE256 + + MOV Mode.mode_width,320; + MOV Mode.mode_height,350; + MOV Mode.width_bytes,28000; + MOV Mode.colors,256; + MOV Mode.attrib,TVU_GRAPHICS + OR Mode.attrib,TVU_UNCHAINED + JMP SET_OUT + +SETMODE_B: + MOV SI,OFFSET CHAIN4 + CALL SETMODE + + ; turn off double scanning mode + MOV DX,CRTC_ADDR + MOV AX,9 + OUT DX,AL + INC DX + IN AL,DX + AND AL,0E0h + OUT DX,AL + + ; change the vertical resolution flags to 400 + MOV DX,03CCH + IN AL,DX + AND AL,02Fh + OR AL,40h + MOV DX,MISC_ADDR + OUT DX,AL + + CALL SETPALETTE256 + + MOV Mode.mode_width,320; + MOV Mode.mode_height,400; + MOV Mode.width_bytes,32000; + MOV Mode.colors,256; + MOV Mode.attrib,TVU_GRAPHICS + OR Mode.attrib,TVU_UNCHAINED + JMP SET_OUT + +SETMODE_C: + MOV SI,OFFSET CHAIN4 + CALL SETMODE + + ; turn off double scanning mode + MOV DX,CRTC_ADDR + MOV AX,9 + OUT DX,AL + INC DX + IN AL,DX + AND AL,0E0h + OUT DX,AL + + ; change the vertical resolution flags to 480 + MOV DX,03CCH + IN AL,DX + AND AL,02Fh + OR AL,0C0h + MOV DX,MISC_ADDR + OUT DX,AL + + MOV DX,CRTC_ADDR + ; turn off write protect + MOV AX,02C11H + OUT DX,AX + ; vertical total + MOV AX,00D06H + OUT DX,AX + ; overflow register + MOV AX,03E07H + OUT DX,AX + ; vertical retrace start + MOV AX,0EA10H + OUT DX,AX + ; vertical retrace end AND wr.prot + MOV AX,0AC11H + OUT DX,AX + ; vertical display enable end + MOV AX,0DF12H + OUT DX,AX + ; start vertical blanking + MOV AX,0E715H + OUT DX,AX + ; end vertical blanking + MOV AX,00616H + OUT DX,AX + + CALL SETPALETTE256 + + MOV Mode.mode_width,320; + MOV Mode.mode_height,480; + MOV Mode.width_bytes,38400; + MOV Mode.colors,256; + MOV Mode.attrib,TVU_GRAPHICS + OR Mode.attrib,TVU_UNCHAINED + JMP SET_OUT + +SETMODE_D: + MOV SI,OFFSET MODE13H + CALL SETMODE + + ; Turn off Chain 4 + MOV DX,SEQ_ADDR + MOV AX,0604H + OUT DX,AX + ; Activate a synchronous reset + MOV AX,0100H + OUT DX,AX + ; Select 28 mhz pixel clock + MOV DX,MISC_ADDR + MOV AL,067H + OUT DX,AL + ; Release synchronous reset + MOV DX,SEQ_ADDR + MOV AX,0300H + OUT DX,AX + + ; change the vertical resolution flags to 400 + MOV DX,03CCH + IN AL,DX + AND AL,02Fh + OR AL,40h + MOV DX,MISC_ADDR + OUT DX,AL + CALL SETPALETTE256 + + MOV DX,CRTC_ADDR + ; turn off write protect + MOV AX,02C11H + OUT DX,AX + + MOV AX,06B00H + OUT DX,AX + MOV AX,05901H + OUT DX,AX + MOV AX,05A02H + OUT DX,AX + MOV AX,08E03H + OUT DX,AX + MOV AX,05E04H + OUT DX,AX + MOV AX,08A05H + OUT DX,AX + MOV AX,00008H + OUT DX,AX + MOV AX,0C009H + OUT DX,AX + MOV AX,0000AH + OUT DX,AX + MOV AX,0000BH + OUT DX,AX + MOV AX,0000CH + OUT DX,AX + MOV AX,0000DH + OUT DX,AX + MOV AX,0000EH + OUT DX,AX + MOV AX,0000FH + OUT DX,AX + MOV AX,0AC11H + OUT DX,AX + MOV AX,02D13H + OUT DX,AX + MOV AX,00014H + OUT DX,AX + MOV AX,0E317H + OUT DX,AX + MOV AX,0FF18H + OUT DX,AX + + CALL SETPALETTE256 + + MOV Mode.mode_width,360; + MOV Mode.mode_height,200; + MOV Mode.width_bytes,18000; + MOV Mode.colors,256; + MOV Mode.attrib,TVU_GRAPHICS + OR Mode.attrib,TVU_UNCHAINED + JMP SET_OUT + + +SETMODE_E: + MOV SI,OFFSET MODE13H + CALL SETMODE + + ; Turn off Chain 4 + MOV DX,SEQ_ADDR + MOV AX,0604H + OUT DX,AX + ; Activate a synchronous reset + MOV AX,0100H + OUT DX,AX + ; Select 28 mhz pixel clock + MOV DX,MISC_ADDR + MOV AL,067H + OUT DX,AL + ; Release synchronous reset + MOV DX,SEQ_ADDR + MOV AX,0300H + OUT DX,AX + + ; change the vertical resolution flags to 480 + MOV DX,03CCH + IN AL,DX + AND AL,02Fh + OR AL,0C0h + MOV DX,MISC_ADDR + OUT DX,AL + CALL SETPALETTE256 + + MOV DX,CRTC_ADDR + ; turn off write protect + MOV AX,02C11H + OUT DX,AX + + MOV AX,06B00H + OUT DX,AX + MOV AX,05901H + OUT DX,AX + MOV AX,05A02H + OUT DX,AX + MOV AX,08E03H + OUT DX,AX + MOV AX,05E04H + OUT DX,AX + MOV AX,08A05H + OUT DX,AX + MOV AX,00D06H + OUT DX,AX + MOV AX,03E07H + OUT DX,AX + MOV AX,00008H + OUT DX,AX + MOV AX,0C009H + OUT DX,AX + MOV AX,0000AH + OUT DX,AX + MOV AX,0000BH + OUT DX,AX + MOV AX,0000DH + OUT DX,AX + MOV AX,0000CH + OUT DX,AX + MOV AX,0000EH + OUT DX,AX + MOV AX,0000FH + OUT DX,AX + MOV AX,0EA10H + OUT DX,AX + MOV AX,0AC11H + OUT DX,AX + MOV AX,0DF12H + OUT DX,AX + MOV AX,02D13H + OUT DX,AX + MOV AX,00014H + OUT DX,AX + MOV AX,0E715H + OUT DX,AX + MOV AX,00616H + OUT DX,AX + MOV AX,0E317H + OUT DX,AX + MOV AX,0FF18H + OUT DX,AX + + CALL SETPALETTE256 + + MOV Mode.mode_width,360; + MOV Mode.mode_height,240; + MOV Mode.width_bytes,21600; + MOV Mode.colors,256; + MOV Mode.attrib,TVU_GRAPHICS + OR Mode.attrib,TVU_UNCHAINED + JMP SET_OUT + +SETMODE_F: + MOV SI,OFFSET MODE13H + CALL SETMODE + + ; Turn off Chain 4 + MOV DX,SEQ_ADDR + MOV AX,0604H + OUT DX,AX + ; Activate a synchronous reset + MOV AX,0100H + OUT DX,AX + ; Select 28 mhz pixel clock + MOV DX,MISC_ADDR + MOV AL,067H + OUT DX,AL + ; Release synchronous reset + MOV DX,SEQ_ADDR + MOV AX,0300H + OUT DX,AX + + ; change the vertical resolution flags to 350 + MOV DX,03CCH + IN AL,DX + AND AL,02Fh + OR AL,080h + MOV DX,MISC_ADDR + OUT DX,AL + CALL SETPALETTE256 + + MOV DX,CRTC_ADDR + ; turn off write protect + MOV AX,02C11H + OUT DX,AX + + MOV AX,06B00H + OUT DX,AX + MOV AX,05901H + OUT DX,AX + MOV AX,05A02H + OUT DX,AX + MOV AX,08E03H + OUT DX,AX + MOV AX,05E04H + OUT DX,AX + MOV AX,08A05H + OUT DX,AX + MOV AX,0BF06H + OUT DX,AX + MOV AX,01F07H + OUT DX,AX + MOV AX,00008H + OUT DX,AX + MOV AX,04009H + OUT DX,AX + MOV AX,0000AH + OUT DX,AX + MOV AX,0000BH + OUT DX,AX + MOV AX,0000DH + OUT DX,AX + MOV AX,0000CH + OUT DX,AX + MOV AX,0000EH + OUT DX,AX + MOV AX,0000FH + OUT DX,AX + MOV AX,08310H + OUT DX,AX + MOV AX,08511H + OUT DX,AX + MOV AX,05D12H + OUT DX,AX + MOV AX,02D13H + OUT DX,AX + MOV AX,00014H + OUT DX,AX + MOV AX,06315H + OUT DX,AX + MOV AX,0BA16H + OUT DX,AX + MOV AX,0E317H + OUT DX,AX + MOV AX,0FF18H + OUT DX,AX + + CALL SETPALETTE256 + + MOV Mode.mode_width,360; + MOV Mode.mode_height,350; + MOV Mode.width_bytes,31500; + MOV Mode.colors,256; + MOV Mode.attrib,TVU_GRAPHICS + OR Mode.attrib,TVU_UNCHAINED + JMP SET_OUT + +SETMODE_G: + MOV SI,OFFSET MODE13H + CALL SETMODE + + ; Turn off Chain 4 + MOV DX,SEQ_ADDR + MOV AX,0604H + OUT DX,AX + ; Activate a synchronous reset + MOV AX,0100H + OUT DX,AX + ; Select 28 mhz pixel clock + MOV DX,MISC_ADDR + MOV AL,067H + OUT DX,AL + ; Release synchronous reset + MOV DX,SEQ_ADDR + MOV AX,0300H + OUT DX,AX + + ; change the vertical resolution flags to 400 + MOV DX,03CCH + IN AL,DX + AND AL,02Fh + OR AL,040h + MOV DX,MISC_ADDR + OUT DX,AL + + MOV DX,CRTC_ADDR + ; turn off write protect + MOV AX,02C11H + OUT DX,AX + + MOV AX,06B00H + OUT DX,AX + MOV AX,05901H + OUT DX,AX + MOV AX,05A02H + OUT DX,AX + MOV AX,08E03H + OUT DX,AX + MOV AX,05E04H + OUT DX,AX + MOV AX,08A05H + OUT DX,AX + MOV AX,00008H + OUT DX,AX + MOV AX,04009H + OUT DX,AX + MOV AX,0000AH + OUT DX,AX + MOV AX,0000BH + OUT DX,AX + MOV AX,0000DH + OUT DX,AX + MOV AX,0000CH + OUT DX,AX + MOV AX,0000EH + OUT DX,AX + MOV AX,0000FH + OUT DX,AX + MOV AX,0AC11H + OUT DX,AX + MOV AX,02D13H + OUT DX,AX + MOV AX,00014H + OUT DX,AX + MOV AX,0E317H + OUT DX,AX + MOV AX,0FF18H + OUT DX,AX + + CALL SETPALETTE256 + + MOV Mode.mode_width,360; + MOV Mode.mode_height,400; + MOV Mode.width_bytes,36000; + MOV Mode.colors,256; + MOV Mode.attrib,TVU_GRAPHICS + OR Mode.attrib,TVU_UNCHAINED + JMP SET_OUT + +SETMODE_H: + + MOV SI,OFFSET MODE13H + CALL SETMODE + + ; Turn off Chain4 + MOV DX,SEQ_ADDR + MOV AX,0604H + OUT DX,AX + + ; Activate a synchronous reset + MOV AX,0100H + OUT DX,AX + + ; Select 28 mhz pixel clock + MOV DX,MISC_ADDR + MOV AL,067H + OUT DX,AL + + ; Release synchronous reset + MOV DX,SEQ_ADDR + MOV AX,0300H + OUT DX,AX + + ; change the vertical resolution flags to 480 + MOV DX,03CCH + IN AL,DX + AND AL,02Fh + OR AL,0C0h + MOV DX,MISC_ADDR + OUT DX,AL + + + MOV DX,CRTC_ADDR + ; turn off write protect + MOV AX,02C11H + OUT DX,AX + + MOV AX,06B00H + OUT DX,AX + MOV AX,05901H + OUT DX,AX + MOV AX,05A02H + OUT DX,AX + MOV AX,08E03H + OUT DX,AX + MOV AX,05E04H + OUT DX,AX + MOV AX,08A05H + OUT DX,AX + MOV AX,00D06H + OUT DX,AX + MOV AX,03E07H + OUT DX,AX + MOV AX,00008H + OUT DX,AX + MOV AX,04009H + OUT DX,AX + MOV AX,0000AH + OUT DX,AX + MOV AX,0000BH + OUT DX,AX + MOV AX,0000DH + OUT DX,AX + MOV AX,0000CH + OUT DX,AX + MOV AX,0000EH + OUT DX,AX + MOV AX,0000FH + OUT DX,AX + MOV AX,0EA10H + OUT DX,AX + MOV AX,0AC11H + OUT DX,AX + MOV AX,0DF12H + OUT DX,AX + MOV AX,02D13H + OUT DX,AX + MOV AX,00014H + OUT DX,AX + MOV AX,0E715H + OUT DX,AX + MOV AX,00616H + OUT DX,AX + MOV AX,0E317H + OUT DX,AX + MOV AX,0FF18H + OUT DX,AX + + CALL SETPALETTE256 + + MOV Mode.mode_width,360; + MOV Mode.mode_height,480; + MOV Mode.width_bytes,43200; + MOV Mode.colors,256; + MOV Mode.attrib,TVU_GRAPHICS + OR Mode.attrib,TVU_UNCHAINED + JMP SET_OUT + +SETMODE_I: + MOV SI,OFFSET MODE10H + CALL SETMODE + + MOV DX,03CCH + IN AL,DX + AND AL,03FH + OR AL,40H + + MOV DX,03C2H + OUT DX,AL + + MOV DX,CRTC_ADDR + MOV AX,9C10H + OUT DX,AX + IODELAY + + MOV AX,8311H + OUT DX,AX + IODELAY + + MOV AX,8F12H + OUT DX,AX + IODELAY + + MOV AX,9615H + OUT DX,AX + IODELAY + + MOV AX,0B916H + OUT DX,AX + IODELAY + + CALL SETPALETTE16 + MOV Mode.mode_width,640; + MOV Mode.mode_height,400; + MOV Mode.width_bytes,32000; + MOV Mode.colors,16; + MOV Mode.attrib,TVU_GRAPHICS + OR Mode.attrib,TVU_PLANAR + JMP SET_OUT + +SETMODE_J: + MOV SI,OFFSET MODEJ + CALL SETMODE + CALL SETPALETTE16 + + PUSH 8 ; Bytes per character + PUSH 0 ; Offset of font in Video Memory + PUSH 0A000H + PUSH FONT_8x8_OFF ; Offset of Font in BIOS + PUSH 0C000H + CALL LOADFONT + + MOV Mode.mode_width,80; + MOV Mode.mode_height,43; + MOV Mode.width_bytes,3440; + MOV Mode.colors,16; + MOV Mode.attrib,TVU_TEXT + JMP SET_OUT + +SETMODE_K: + MOV SI,OFFSET MODEK + CALL SETMODE + CALL SETPALETTE16 + + PUSH 8 ; Bytes per character + PUSH 0 ; Offset of font in Video Memory + PUSH 0A000H + PUSH FONT_8x8_OFF ; Offset of Font in BIOS + PUSH 0C000H + CALL LOADFONT + + MOV Mode.mode_width,80; + MOV Mode.mode_height,50; + MOV Mode.width_bytes,4000; + MOV Mode.colors,16; + MOV Mode.attrib,TVU_TEXT + JMP SET_OUT + +SETMODE_L: + MOV SI,OFFSET MODE_L + CALL SETMODE + CALL SETPALETTE16 + + PUSH 8 ; Bytes per character + PUSH 0 ; Offset of font in Video Memory + PUSH 0A000H + PUSH FONT_8x8_OFF ; Offset of Font in BIOS + PUSH 0C000H + CALL LOADFONT + + MOV Mode.mode_width,40; + MOV Mode.mode_height,43; + MOV Mode.width_bytes,3440; + MOV Mode.colors,16; + MOV Mode.attrib,TVU_TEXT + JMP SET_OUT + +SETMODE_M: + MOV SI,OFFSET MODEM + CALL SETMODE + CALL SETPALETTE16 + + PUSH 8 ; Bytes per character + PUSH 0 ; Offset of font in Video Memory + PUSH 0A000H + PUSH FONT_8x8_OFF ; Offset of Font in BIOS + PUSH 0C000H + CALL LOADFONT + + MOV Mode.mode_width,40; + MOV Mode.mode_height,50; + MOV Mode.width_bytes,4000; + MOV Mode.colors,16; + MOV Mode.attrib,TVU_TEXT + +SET_OUT: + + POP BP + RET 2 +SETVIDEOMODE ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + + PUBLIC SETMODE +SETMODE PROC + + ; Send MISC regs + MOV DX,MISC_ADDR + MOV AL,[SI] + OUT DX,AL + IODELAY + INC SI + + MOV DX,STATUS_ADDR + MOV AL,[SI] + OUT DX,AL + IODELAY + INC SI + + ; Send SEQ regs + MOV CX,0 +REG_LOOP: + MOV DX,SEQ_ADDR + MOV AL,CL + OUT DX,AL + IODELAY + + MOV DX,SEQ_ADDR + INC DX + MOV AL,[SI] + OUT DX,AL + IODELAY + INC SI + INC CX + CMP CL,5 + JL REG_LOOP + + ; Clear Protection bits + MOV AH,0EH + MOV AL,11H + AND AH,7FH + MOV DX,CRTC_ADDR + OUT DX,AX + IODELAY + + ; Send CRTC regs + MOV CX,0 +REG_LOOP2: + MOV DX,CRTC_ADDR + MOV AL,CL + OUT DX,AL + IODELAY + + MOV DX,CRTC_ADDR + INC DX + MOV AL,[SI] + OUT DX,AL + IODELAY + + INC SI + INC CX + CMP CL,25 + JL REG_LOOP2 + + ; Send GRAPHICS regs + MOV CX,0 +REG_LOOP3: + MOV DX,GRACON_ADDR + MOV AL,CL + OUT DX,AL + IODELAY + + MOV DX,GRACON_ADDR + INC DX + MOV AL,[SI] + OUT DX,AL + IODELAY + + INC SI + INC CX + CMP CL,9 + JL REG_LOOP3 + + MOV DX,STATUS_ADDR + IN AL,DX + IODELAY + + ; Send ATTRCON regs + MOV CX,0 +REG_LOOP4: + MOV DX,ATTRCON_ADDR + IN AX,DX + + MOV AL,CL + OUT DX,AL + IODELAY + + MOV AL,[SI] + OUT DX,AL + IODELAY + + INC SI + INC CX + CMP CL,21 + JL REG_LOOP4 + + MOV AL,20H + OUT DX,AL + IODELAY + + RET +SETMODE ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +; Assumes [bp+4] = color +; Assumes [bp+6] = r value +; Assumes [bp+8] = g value +; Assumes [bp+10] = b value + PUBLIC SETPAL +SETPAL PROC + PUSH BP + MOV BP,SP + PUSHA + + MOV AX,WORD PTR [BP+4] + ; Send color + MOV DX,03C8H + OUT DX,AL + + ; Write R value + MOV DX,03C9H + MOV AL,BYTE PTR [BP+6] + OUT DX,AL + + ; Write G value + MOV DX,03C9H + MOV AL,BYTE PTR [BP+8] + OUT DX,AL + + ; Write B value + MOV DX,03C9H + MOV AL,BYTE PTR [BP+10] + OUT DX,AL + + POPA + POP BP + RET 8 +SETPAL ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +SETPALETTE4 PROC + PUSH 0 + PUSH 0 + PUSH 0 + PUSH 0 + CALL SETPAL + + PUSH 42 + PUSH 42 + PUSH 0 + PUSH 1 + CALL SETPAL + + PUSH 42 + PUSH 0 + PUSH 42 + PUSH 2 + CALL SETPAL + + PUSH 63 + PUSH 63 + PUSH 63 + PUSH 3 + CALL SETPAL + + RET +SETPALETTE4 ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +SETPALETTE16 PROC + + MOV SI,OFFSET PALETTE + MOV CX,16 + MOV DX,0 +PAL_LOOP: + PUSH WORD PTR [SI+2] + PUSH WORD PTR [SI+1] + PUSH WORD PTR [SI] + PUSH DX + CALL SETPAL + + INC DX + ADD SI,3 + LOOP PAL_LOOP + + RET +SETPALETTE16 ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +SETPALETTE256 PROC + + MOV SI,OFFSET PALETTE + MOV CX,256 + MOV DX,0 +PAL_LOOP2: + PUSH WORD PTR [SI+2] + PUSH WORD PTR [SI+1] + PUSH WORD PTR [SI] + PUSH DX + CALL SETPAL + + INC DX + ADD SI,3 + LOOP PAL_LOOP2 + + RET +SETPALETTE256 ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= diff --git a/16/tauron/ASM_SRC/MODES.INC b/16/tauron/ASM_SRC/MODES.INC new file mode 100755 index 00000000..3c8a84a0 --- /dev/null +++ b/16/tauron/ASM_SRC/MODES.INC @@ -0,0 +1,196 @@ +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- -= +;=- Tauron VGA Utilities Version 3.0 -= +;=- Released September 20, 1998 -= +;=- -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +;=- All Rights Reserved. =-= that you put my name some- -= +;=- =-= where in your credits. -= +;=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- I assume no responsibility whatsoever for any effect that this package, -= +;=- the information contained therein or the use thereof has on you, your -= +;=- sanity, computer, spouse, children, pets or anything else related to -= +;=- you or your existance. No warranty is provided nor implied with this -= +;=- source code. -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- VGA register variables for the various videomodes -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +; Same as Mode 01H +MODE00H DB 67H, 00H, 03H,08H,03H,00H,02H + DB 2DH,27H,28H,90H,2BH,0A0H,0BFH,1FH,00H,4FH,06H,07H,00H,00H,00H,31H + DB 9CH,8EH,8FH,14H,1FH,96H,0B9H,0A3H,0FFH + DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH + DB 00H,01H,02H,03H,04H,05H,14H,07H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH + DB 0CH,00H,0FH,08H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +; Same as Mode 02H +MODE03H DB 67H, 00H, 03H,00H,03H,00H,02H + DB 5FH,4FH,50H,82H,55H,81H,0BFH,1FH,00H,4FH,0EH,0FH,00H,00H,00H,00H + DB 9CH,0EH,8FH,28H,01H,96H,0B9H,0A3H,0FFH + DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH + DB 00H,01H,02H,03H,04H,05H,14H,07H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH + DB 0CH,00H,0FH,08H,00H +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +; Same as Mode 05H +MODE04H DB 63H, 00H, 03H,09H,03H,00H,02H + DB 2DH,27H,28H,90H,2BH,80H,0BFH,1FH,00H,0C1H,00H,00H,00H,00H,00H,31H + DB 9CH,8EH,8FH,14H,00H,96H,0B9H,0A2H,0FFH + DB 00H,00H,00H,00H,00H,30H,0FH,00H,0FFH + DB 00H,3BH,3DH,3FH,02H,04H,06H,07H,10H,11H,12H,13H,14H,15H,16H,17H + DB 01H,00H,03H,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODE06H DB 63H, 00H, 03H,01H,01H,00H,06H + DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,0C1H,00H,00H,00H,00H,00H,00H + DB 9CH,8EH,8FH,28H,00H,96H,0B9H,0C2H,0FFH + DB 00H,00H,00H,00H,00H,00H,0DH,00H,0FFH + DB 00H,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH + DB 01H,00H,01H,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODE07H DB 066H, 00H, 03H,00H,03H,00H,02H + DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH + DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH + DB 00H,00H,00H,00H,00H,10H,0AH,00H,0FFH + DB 00H,08H,08H,08H,08H,08H,08H,08H,10H,18H,18H,18H,18H,18H,18H,18H + DB 0EH,00H,0FH,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODE0DH DB 063H, 00H, 03H,09H,0FH,00H,06H + DB 2DH,27H,28H,90H,2BH,80H,0BFH,1FH,00H,0C0H,00H,00H,00H,00H,00H,31H + DB 9CH,8EH,8FH,14H,00H,96H,0B9H,0E3H,0FFH + DB 00H,00H,00H,00H,00H,10H,05H,00H,0FFH + DB 00H,01H,02H,03H,04H,05H,14H,07H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH + DB 01H,00H,0FH,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODE0EH DB 63H, 00H, 03H,01H,0FH,00H,06H + DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,0C0H,00H,00H,00H,00H,00H,59H + DB 9CH,8EH,8FH,28H,00H,96H,0B9H,0E3H,0FFH + DB 00H,00H,00H,00H,00H,00H,05H,0FH,0FFH + DB 00H,01H,02H,03H,04H,05H,14H,07H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH + DB 01H,00H,0FH,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODE0FH DB 0A2H, 00H, 03H,01H,0FH,00H,06H + DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH + DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH + DB 00H,00H,00H,00H,00H,00H,05H,05H,0FFH + DB 00H,08H,00H,00H,18H,18H,00H,00H,00H,08H,00H,00H,00H,18H,00H,00H + DB 0BH,00H,05H,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODE10H DB 0A3H, 00H, 03H,01H,0FH,00H,06H + DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,40H,00H,00H,00H,00H,00H,00H + DB 83H,85H,5DH,28H,0FH,63H,0BAH,0E3H,0FFH + DB 00H,00H,00H,00H,00H,00H,05H,0FH,0FFH + DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH + DB 01H,00H,0FH,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODE11H DB 063H, 00H, 03H,01H,0FH,00H,06H + DB 5FH,4FH,50H,82H,54H,80H,0BH,3EH,00H,40H,00H,00H,00H,00H,00H,59H + DB 0EAH,8CH,0DFH,28H,0FH,0E7H,004H,0C3H,0FFH + DB 00H,00H,00H,00H,00H,00H,05H,05H,0FFH + DB 00H,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH + DB 01H,00H,0FH,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODE12H DB 063H, 00H, 03H,01H,0FH,00H,06H + DB 5FH,4FH,50H,82H,54H,80H,0BH,3EH,00H,40H,00H,00H,00H,00H,00H,59H + DB 0EAH,8CH,0DFH,28H,00H,0E7H,04H,0E3H,0FFH + DB 00H,00H,00H,00H,00H,00H,05H,0FH,0FFH + DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH + DB 01H,00H,0FH,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODE13H DB 63H, 00H, 03H,01H,0FH,00H,0EH + DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,41H,00H,00H,00H,00H,00H,00H + DB 9CH,0EH,8FH,28H,40H,96H,0B9H,0A3H,0FFH + DB 00H,00H,00H,00H,00H,40H,05H,0FH,0FFH + DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH + DB 41H,00H,0FH,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +CHAIN4 DB 63H, 00H, 03H,01H,0FH,00H,06H + DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,41H,00H,00H,00H,00H,00H,00H + DB 9CH,0EH,8FH,28H,00H,96H,0B9H,0E3H,0FFH + DB 00H,00H,00H,00H,00H,40H,05H,0FH,0FFH + DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH + DB 41H,00H,0FH,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODEJ DB 63H, 00H, 03H,01H,03H,00H,02H + DB 5FH,4FH,50H,82H,55H,81H,0BFH,1FH,00H,47H,06H,07H,00H,00H,00H + DB 00H,83H,85H,57H,28H,1FH,60H,0B8H,0A3H,0FFH + DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH + DB 00H,01H,02H,03H,04H,05H,14H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH + DB 0CH,00H,0FH,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODEK DB 63H, 00H, 03H,01H,03H,00H,02H + DB 5FH,4FH,50H,82H,55H,81H,0BFH,1FH,00H,47H,06H,07H,00H,00H,00H + DB 00H,9CH,8EH,8FH,28H,1FH,96H,0B9H,0A3H,0FFH + DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH + DB 00H,01H,02H,03H,04H,05H,14H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH + DB 0CH,00H,0FH,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + + +MODE_L DB 67H, 00H, 03H,08H,03H,00H,02H + DB 2DH,27H,28H,90H,2BH,0A0H,0BFH,1FH,00H,47H,06H,07H,00H,00H,00H + DB 31H,83H,85H,57H,14H,1FH,60H,0B8H,0A3H,0FFH + DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH + DB 00H,01H,02H,03H,04H,05H,14H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH + DB 0CH,00H,0FH,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODEM DB 67H, 00H, 03H,08H,03H,00H,02H + DB 2DH,27H,28H,90H,2BH,0A0H,0BFH,1FH,00H,47H,06H,07H,00H,00H,00H,31H + DB 9CH,8EH,8FH,14H,1FH,96H,0B9H,0A3H,0FFH + DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH + DB 00H,01H,02H,03H,04H,05H,14H,07H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH + DB 0CH,00H,0FH,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +; Videomode Structure Definition +VMODE STRUC + videomode DW ? ; Videomode Number + mode_width DW ? ; Width in pixels + mode_height DW ? ; height in pixels + width_bytes DW ? ; Number of bytes per screen + colors DW ? ; Number of colors + attrib DW ? ; Videomode attributes +VMODE ENDS + +; Videomode attributes +TVU_TEXT EQU 0001h +TVU_GRAPHICS EQU 0002h +TVU_MONOCHROME EQU 0004h +TVU_PLANAR EQU 0008h +TVU_UNCHAINED EQU 0010h +TVU_B8000_ADDR EQU 0020h + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +; Videomode Info Structure +MODE VMODE +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= diff --git a/16/tauron/ASM_SRC/TESTS.ASM b/16/tauron/ASM_SRC/TESTS.ASM new file mode 100755 index 00000000..7401c0ee --- /dev/null +++ b/16/tauron/ASM_SRC/TESTS.ASM @@ -0,0 +1,676 @@ +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- -= +;=- Tauron VGA Utilities Version 3.0 -= +;=- Released September 20, 1998 -= +;=- -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +;=- All Rights Reserved. =-= that you put my name some- -= +;=- =-= where in your credits. -= +;=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- I assume no responsibility whatsoever for any effect that this package, -= +;=- the information contained therein or the use thereof has on you, your -= +;=- sanity, computer, spouse, children, pets or anything else related to -= +;=- you or your existance. No warranty is provided nor implied with this -= +;=- source code. -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +PIXEL PROC + PUSH BP + MOV BP,SP + PUSHA + + TEST Mode.attrib,TVU_PLANAR + JNZ PLANAR_PIXEL + CMP Mode.videomode,VMODE_13H + JE MODE_13H_PIXEL + +; Unchained Modes Pixel + MOV AX,0A000H ; video memory segment number + MOV ES,AX ; place it in es + + MOV DX,03C4H + MOV AL,2 + OUT DX,AL + INC DX + + MOV AL,1 + MOV CX,word ptr [bp+4] + AND CX,3 + SHL AL,CL + OUT DX,AL + + XOR DI,DI + +; Calculate the Offset + mov ax,Mode.mode_width ; width / 4 + SHR AX,2 + mul word ptr [bp+6] ; (Y * (width / 4)) + mov bx,word ptr [bp+4] ; (X / 4) + (Y * (width / 4)) + shr bx,2 + add ax,bx +; Done! + + ADD DI,AX + mov ah,byte ptr [bp+8] ; move the Color into ah + mov es:[di],ah ; move the value to the screen + JMP PIXEL_OUT + +PLANAR_PIXEL: + MOV AX,0A000H ; video memory segment number + MOV ES,AX ; place it in es + + MOV BX,word ptr [bp+4] ; X Value + MOV CX,BX + MOV AX,word ptr [bp+6] ; Y Value + MOV SI,80 + MUL SI + SHR BX,3 ; /8 + ADD AX,BX + MOV DI,AX + + AND CL,7 + XOR CL,7 + MOV AH,1 + + SHL AH,CL + + MOV DX,03CEH + MOV AL,8 + OUT DX,AX + + MOV AL,0 + XCHG ES:[DI],AL + + MOV DX,03C4H + MOV AH,byte ptr [bp+8] + MOV AL,2 + OUT DX,AX + + MOV BYTE PTR ES:[DI],0FFh + + MOV AX,0F02H + OUT DX,AX + + MOV DX,03CEH + MOV AX,0FF08h + OUT DX,AX + JMP PIXEL_OUT + +MODE_13H_PIXEL: + + MOV AX,0A000H ; video memory segment number + MOV ES,AX ; place it in es + XOR DI,DI + +; Calculate the Offset + mov ax,Mode.mode_width ; width + mul word ptr [bp+6] ; (Y * width)) + mov bx,word ptr [bp+4] ; (X + (Y * width)) + add ax,bx +; Done! + + ADD DI,AX + mov ah,byte ptr [bp+8] ; move the Color into ah + mov es:[di],ah ; move the value to the screen + +PIXEL_OUT: + + POPA + POP BP + RET 6 +PIXEL ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +HLINE PROC + PUSH BP + MOV BP,SP + PUSHA + + MOV CX,WORD PTR [BP+4] +HLINE_LOOP: + PUSH WORD PTR [BP+10] ; Color + PUSH WORD PTR [BP+8] ; Y value + PUSH CX ; X value + CALL PIXEL + INC CX + CMP CX,WORD PTR [BP+6] + JLE HLINE_LOOP + + POPA + POP BP + RET 8 +HLINE ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +VLINE PROC + PUSH BP + MOV BP,SP + PUSHA + + MOV CX,WORD PTR [BP+4] +VLINE_LOOP: + PUSH WORD PTR [BP+10] ; Color + PUSH CX ; Y value + PUSH WORD PTR [BP+8] ; X value + CALL PIXEL + INC CX + CMP CX,WORD PTR [BP+6] + JLE VLINE_LOOP + + POPA + POP BP + RET 8 +VLINE ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +DRAWRECT PROC + PUSH BP + MOV BP,SP + + PUSH WORD PTR [BP+12] + PUSH WORD PTR [BP+6] + PUSH WORD PTR [BP+8] + PUSH WORD PTR [BP+4] + CALL HLINE + + PUSH WORD PTR [BP+12] + PUSH WORD PTR [BP+10] + PUSH WORD PTR [BP+8] + PUSH WORD PTR [BP+4] + CALL HLINE + + PUSH WORD PTR [BP+12] + PUSH WORD PTR [BP+4] + PUSH WORD PTR [BP+10] + PUSH WORD PTR [BP+6] + CALL VLINE + + PUSH WORD PTR [BP+12] + PUSH WORD PTR [BP+8] + PUSH WORD PTR [BP+10] + PUSH WORD PTR [BP+6] + CALL VLINE + + POP BP + RET 10 +DRAWRECT ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +FILLRECT PROC + PUSH BP + MOV BP,SP + PUSHA + + MOV CX,WORD PTR [BP+6] +HLINE_LOOP2: + PUSH WORD PTR [BP+12] ; Color + PUSH CX ; Y1 value + PUSH WORD PTR [BP+8] ; X2 value + PUSH WORD PTR [BP+4] ; X1 value + CALL HLINE + + INC CX + CMP CX,WORD PTR [BP+10] ; Y2 value + JLE HLINE_LOOP2 + + POPA + POP BP + RET 10 +FILLRECT ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODETEST PROC + PUSH BP + MOV BP,SP + SUB SP,2 + + TEST Mode.attrib,TVU_PLANAR + JNZ PLANAR_CLEAR + CMP Mode.videomode,VMODE_13H + JNE UNCHAINED_CLEAR + + PUSH 0 + CALL CLEAR13H + JMP CLEAROUT + +PLANAR_CLEAR: + PUSH 0 + CALL PLANARCLEAR + JMP CLEAROUT + +UNCHAINED_CLEAR: + PUSH 0 + CALL UNCHAINEDCLEAR + +CLEAROUT: + + PUSH 15 + + MOV AX,Mode.mode_height + DEC AX + PUSH AX + + MOV AX,Mode.mode_width + DEC AX + PUSH AX + + PUSH 0 + PUSH 0 + CALL DRAWRECT + + MOV CX,50 +LINE_LOOP: + PUSH 15 + PUSH CX + PUSH 10 + PUSH 0 + CALL HLINE + ADD CX,50 + + PUSH 15 + PUSH CX + PUSH 25 + PUSH 0 + CALL HLINE + ADD CX,50 + + CMP CX,Mode.mode_height + JLE LINE_LOOP + + MOV CX,40 +LINE_LOOP2: + PUSH 15 + PUSH CX + PUSH 15 + PUSH 0 + CALL VLINE + ADD CX,40 + + PUSH 15 + PUSH CX + PUSH 30 + PUSH 0 + CALL VLINE + ADD CX,40 + + CMP CX,Mode.mode_width + JLE LINE_LOOP2 + + CMP Mode.colors,16 + JE SETBLOCK16 + CMP Mode.colors,256 + JE SETBLOCK256 + + MOV AX,Mode.mode_width + SUB AX,420 + MOV DI,AX + ADD DI,200 + MOV BX,Mode.mode_height + SUB BX,220 + MOV SI,BX + ADD SI,200 + + PUSH 0 ; Color + PUSH SI ; Y2 + PUSH DI ; X2 + PUSH BX ; Y1 + PUSH AX ; X1 + CALL FILLRECT + ADD AX,200 + ADD DI,200 + PUSH 15 ; Color + PUSH SI ; Y2 + PUSH DI ; X2 + PUSH BX ; Y1 + PUSH AX ; X1 + CALL FILLRECT + + MOV AX,Mode.mode_width + SUB AX,420 + MOV DI,AX + ADD DI,400 + MOV BX,Mode.mode_height + SUB BX,220 + MOV SI,BX + ADD SI,200 + + PUSH 15 ; Color + PUSH SI ; Y2 + PUSH DI ; X2 + PUSH BX ; Y1 + PUSH AX ; X1 + CALL DRAWRECT + + JMP BLOCKOUT +SETBLOCK16: + + MOV AX,Mode.mode_width + SUB AX,522 + MOV DI,AX + ADD DI,64 + + MOV BX,Mode.mode_height + SUB BX,135 + MOV SI,BX + ADD SI,64 + MOV CX,0 + MOV DX,0 +LINE1_LOOP1: + + PUSH DX ; Color + PUSH SI ; Y2 + PUSH DI ; X2 + PUSH BX ; Y1 + PUSH AX ; X1 + CALL FILLRECT + ADD AX,64 + ADD DI,64 + INC CX + INC DX + CMP CX,8 + JL LINE1_LOOP1 + + MOV AX,Mode.mode_width + SUB AX,522 + MOV DI,AX + ADD DI,64 + ADD SI,64 + ADD BX,64 + MOV CX,0 +LINE1_LOOP2: + + PUSH DX ; Color + PUSH SI ; Y2 + PUSH DI ; X2 + PUSH BX ; Y1 + PUSH AX ; X1 + CALL FILLRECT + ADD AX,64 + ADD DI,64 + INC CX + INC DX + CMP CX,8 + JL LINE1_LOOP2 + + MOV AX,Mode.mode_width + SUB AX,522 + MOV DI,Mode.mode_width + SUB DI,10 + MOV BX,Mode.mode_height + SUB BX,135 + MOV SI,Mode.mode_height + SUB SI,7 + PUSH 15 ; Color + PUSH SI ; Y2 + PUSH DI ; X2 + PUSH BX ; Y1 + PUSH AX ; X1 + CALL DRAWRECT + JMP BLOCKOUT + +SETBLOCK256: + + MOV WORD PTR [BP-2],0 + MOV BX,Mode.mode_height + SUB BX,165 + MOV SI,BX + ADD SI,10 + MOV DX,0 +LINE2_LOOP2: + + MOV AX,Mode.mode_width + SUB AX,165 + MOV DI,Mode.mode_width + SUB DI,155 + + MOV CX,0 +LINE2_LOOP1: + + PUSH DX ; Color + PUSH SI ; Y2 + PUSH DI ; X2 + PUSH BX ; Y1 + PUSH AX ; X1 + CALL FILLRECT + ADD AX,10 + ADD DI,10 + INC CX + INC DX + CMP CX,16 + JL LINE2_LOOP1 + + ADD BX,10 + ADD SI,10 + INC WORD PTR [BP-2] + CMP WORD PTR [BP-2],16 + JL LINE2_LOOP2 + + MOV AX,Mode.mode_width + SUB AX,165 + MOV DI,Mode.mode_width + SUB DI,5 + MOV BX,Mode.mode_height + SUB BX,165 + MOV SI,Mode.mode_height + SUB SI,5 + PUSH 15 ; Color + PUSH SI ; Y2 + PUSH DI ; X2 + PUSH BX ; Y1 + PUSH AX ; X1 + CALL DRAWRECT + +BLOCKOUT: + ADD SP,2 + POP BP + RET +MODETEST ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +PUTCHAR PROC + PUSH BP + MOV BP,SP + SUB SP,2 + PUSHA + + CMP Mode.videomode,VMODE_00H + JE SET2 + CMP Mode.videomode,VMODE_MODE_L + JE SET2 + CMP Mode.videomode,VMODE_MODE_M + JE SET2 + MOV BYTE PTR [BP-2],160 + JMP NOSET2 +SET2: + MOV BYTE PTR [BP-2],80 + JMP NOSET2 +NOSET2: + + MOV AX,0B800h + MOV ES,AX + + MOV AX,WORD PTR [BP+6] ; Y value + MOV BL,BYTE PTR [BP-2] + MUL BL + SHL WORD PTR [BP+4],1 + ADD AX,WORD PTR [BP+4] ; X value + MOV DI,AX + MOV AH,ATT + MOV AL,BYTE PTR [BP+8] ; character + CLD + STOSW + + POPA + ADD SP,2 + POP BP + RET 6 +PUTCHAR ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +PRINTSTRING PROC + +TEXT_LOOP: + XOR DX,DX + MOV DL,BYTE PTR [SI] + PUSH DX + PUSH BX + PUSH AX + CALL PUTCHAR + + INC AX + INC SI + CMP BYTE PTR [SI],0 + JNE TEXT_LOOP + RET +PRINTSTRING ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +TEXTTEST PROC + PUSH 1FH + CALL TEXTCLEAR + + MOV AH,2h + MOV BH,0 + MOV DX,Mode.mode_height + MOV DH,DL + MOV DL,0 + INT 10h + + CMP Mode.videomode,VMODE_00H + JE SET_TEXT1 + CMP Mode.videomode,VMODE_MODE_J + JE SET_TEXT2 + CMP Mode.videomode,VMODE_MODE_K + JE SET_TEXT3 + CMP Mode.videomode,VMODE_MODE_L + JE SET_TEXT4 + CMP Mode.videomode,VMODE_MODE_M + JE SET_TEXT5 + ; Mode 03h + MOV TEXTMSG_2+13,'3' + MOV TEXTMSG_3+8,'8' + MOV TEXTMSG_4+19,'4' + JMP NOSET +SET_TEXT1: + ; Mode 00h + MOV TEXTMSG_2+13,'0' + MOV TEXTMSG_3+8,'4' + MOV TEXTMSG_4+19,'2' + JMP NOSET +SET_TEXT2: + ; Mode J + MOV TEXTMSG_8+11,'J' + MOV TEXTMSG_9+21,'4' + MOV TEXTMSG_9+22,'3' + MOV TEXTMSG_A+19,'3' + MOV TEXTMSG_A+20,'4' + MOV TEXTMSG_A+21,'4' + MOV TEXTMSG_A+22,'0' + JMP NOSET +SET_TEXT3: + ; Mode K + MOV TEXTMSG_8+11,'K' + MOV TEXTMSG_9+21,'5' + MOV TEXTMSG_9+22,'0' + MOV TEXTMSG_A+19,'4' + MOV TEXTMSG_A+20,'0' + MOV TEXTMSG_A+21,'0' + MOV TEXTMSG_A+22,'0' + JMP NOSET +SET_TEXT4: + ; Mode L + MOV TEXTMSG_8+11,'L' + MOV TEXTMSG_9+8,'4' + MOV TEXTMSG_9+21,'4' + MOV TEXTMSG_9+22,'3' + MOV TEXTMSG_A+19,'3' + MOV TEXTMSG_A+20,'4' + MOV TEXTMSG_A+21,'4' + MOV TEXTMSG_A+22,'0' + JMP NOSET +SET_TEXT5: + ; Mode M + MOV TEXTMSG_8+11,'M' + MOV TEXTMSG_9+8,'4' + MOV TEXTMSG_9+21,'5' + MOV TEXTMSG_9+22,'0' + MOV TEXTMSG_A+19,'4' + MOV TEXTMSG_A+20,'0' + MOV TEXTMSG_A+21,'0' + MOV TEXTMSG_A+22,'0' +NOSET: + + CMP Mode.videomode,VMODE_00H + JE WRITE1 + CMP Mode.videomode,VMODE_03H + JE WRITE1 + CMP Mode.videomode,VMODE_MODE_J + JE WRITE2 + JMP WRITE2 + +WRITE1: + MOV BX,0 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_1 + CALL PRINTSTRING + MOV BX,1 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_2 + CALL PRINTSTRING + MOV BX,2 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_3 + CALL PRINTSTRING + MOV BX,3 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_4 + CALL PRINTSTRING + MOV BX,4 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_5 + CALL PRINTSTRING + MOV BX,5 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_6 + CALL PRINTSTRING + JMP WRITEOUT + +WRITE2: + MOV BX,0 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_7 + CALL PRINTSTRING + MOV BX,1 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_8 + CALL PRINTSTRING + MOV BX,2 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_9 + CALL PRINTSTRING + MOV BX,3 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_A + CALL PRINTSTRING + MOV BX,4 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_B + CALL PRINTSTRING + MOV BX,5 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_C + CALL PRINTSTRING +WRITEOUT: + RET +TEXTTEST ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= diff --git a/16/tauron/C_SRC/CLEAR.CPP b/16/tauron/C_SRC/CLEAR.CPP new file mode 100755 index 00000000..e201a055 --- /dev/null +++ b/16/tauron/C_SRC/CLEAR.CPP @@ -0,0 +1,180 @@ +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- -= +//=- Tauron VGA Utilities Version 3.0 -= +//=- Released September 20, 1998 -= +//=- -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +//=- All Rights Reserved. =-= that you put my name some- -= +//=- =-= where in your credits. -= +//=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- I assume no responsibility whatsoever for any effect that this package, -= +//=- the information contained therein or the use thereof has on you, your -= +//=- sanity, computer, spouse, children, pets or anything else related to -= +//=- you or your existance. No warranty is provided nor implied with this -= +//=- source code. -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +#include +#include +#include +#include +#include "tauron.h" + +void TextClear(char attrib) +{ + unsigned int bytes = Mode.width_bytes; + asm { + MOV AX,0B800H + MOV ES,AX + XOR DI,DI + + MOV AH,attrib + MOV AL,' ' + MOV CX,bytes + CLD + REP STOSW + } +} + +void Clear04H() +{ + unsigned int bytes = Mode.width_bytes; + asm { + MOV AX,0B800H + MOV ES,AX + XOR DI,DI + + MOV AX,0AAAAH + CLD + MOV CX,bytes + REP STOSW + } +} + +void Clear06H() +{ + unsigned int bytes = Mode.width_bytes; + asm { + MOV AX,0B800H + MOV ES,AX + XOR DI,DI + + MOV AX,0FFFFH + CLD + MOV CX,bytes + REP STOSW + } +} + +void Clear0DH(char color) +{ + unsigned int bytes = Mode.width_bytes/2; + asm { + MOV AX,0A000H + MOV ES,AX + XOR DI,DI + + MOV CX,bytes + } +CLEAR_LOOP: + asm { + MOV DX,03CEH + MOV AX,0FF08H + OUT DX,AX + + MOV AX,0 + XCHG WORD PTR ES:[DI],AX + + MOV DX,03C4H + MOV AH,color + MOV AL,2 + OUT DX,AX + + MOV WORD PTR ES:[DI],0FFFFH + + MOV AX,0F02H + OUT DX,AX + + MOV DX,03CEH + MOV AX,0FF08h + OUT DX,AX + + ADD DI,2 + LOOP CLEAR_LOOP + } +} + +void PlanarClear(char Color) +{ + unsigned int bytes = Mode.width_bytes/2; + asm { + MOV AX,0A000H + MOV ES,AX + XOR DI,DI + + MOV CX,bytes + } +CLEAR_LOOP: + asm { + MOV DX,03CEH + MOV AX,0FF08H + OUT DX,AX + + MOV AX,0 + XCHG WORD PTR ES:[DI],AX + + MOV DX,03C4H + MOV AH,Color + MOV AL,2 + OUT DX,AX + + MOV WORD PTR ES:[DI],0FFFFH + + MOV AX,0F02H + OUT DX,AX + + MOV DX,03CEH + MOV AX,0FF08h + OUT DX,AX + + ADD DI,2 + LOOP CLEAR_LOOP + } +} + +void Clear13H(char Color) +{ + asm { + MOV AX,0A000H + MOV ES,AX + XOR DI,DI + + MOV AL,Color + MOV AH,AL + CLD + MOV CX,8000H + REP STOSW + } +} + +void UnchainedClear(char Color) +{ + unsigned int bytes = Mode.width_bytes/2; + asm { + mov dx, 03C4h // 03c4h + mov al, 2 // Map Mask Register + out dx, al + inc dx + mov al,00001111B // Select all planes to write to + out dx, al // Doing this to clear all planes at once + + mov ax,0A000H + mov es, ax + XOR DI,DI // set es:di = Screen Mem + mov ah,Color // move the color into ah + mov al,ah // copy the value to al + mov cx,bytes // Number of words + cld + rep stosw // clear it + } +} diff --git a/16/tauron/C_SRC/DUAL.CPP b/16/tauron/C_SRC/DUAL.CPP new file mode 100755 index 00000000..e60d1fb9 --- /dev/null +++ b/16/tauron/C_SRC/DUAL.CPP @@ -0,0 +1,236 @@ +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- -= +//=- Tauron VGA Utilities Version 3.0 -= +//=- Released September 20, 1998 -= +//=- -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +//=- All Rights Reserved. =-= that you put my name some- -= +//=- =-= where in your credits. -= +//=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- I assume no responsibility whatsoever for any effect that this package, -= +//=- the information contained therein or the use thereof has on you, your -= +//=- sanity, computer, spouse, children, pets or anything else related to -= +//=- you or your existance. No warranty is provided nor implied with this -= +//=- source code. -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +// 3C4H, 03H +// Bit positions for font maps: +// +// +--7--+--6--+--5--+--4--+--3--+--2--+--1--+--0--+ +// | | | SAH | SBH | SA | SB | +// +-----+-----+-----+-----+-----+-----+-----+-----+ +// +// SA - bits 1, 0 of Character Map A +// SAH - bit 2 (high order) of Charcter Map A +// +// SB - bits 1, 0 of Character Map B +// SBH - bit 2 (high order) of Charcter Map B +// +#include +#include +#include +#include +#include +#include "tauron.h" +#include "font1.h" +#include "font2.h" +extern unsigned char mode03h[62]; +void LoadFonts(); + +// Points to fonts for Map A Memory Address +#define DFM_MAPA_FONT1 0x00 // 0K +#define DFM_MAPA_FONT2 0x04 // 16K +#define DFM_MAPA_FONT3 0x08 // 32K +#define DFM_MAPA_FONT4 0x0C // 48K +#define DFM_MAPA_FONT5 0x20 // 8K +#define DFM_MAPA_FONT6 0x24 // 24K +#define DFM_MAPA_FONT7 0x28 // 40K +#define DFM_MAPA_FONT8 0x2C // 56K + +// Points to fonts for Map B +#define DFM_MAPB_FONT1 0x00 // 0K +#define DFM_MAPB_FONT2 0x01 // 16K +#define DFM_MAPB_FONT3 0x02 // 32K +#define DFM_MAPB_FONT4 0x03 // 48K +#define DFM_MAPB_FONT5 0x10 // 8K +#define DFM_MAPB_FONT6 0x11 // 24K +#define DFM_MAPB_FONT7 0x12 // 40K +#define DFM_MAPB_FONT8 0x13 // 56K + + +// To set dual font mode, just set the character map select register to point +// to 2 different fonts. There can be up to 8 fonts resident in memory at +// once but only 2 can be active at a time. +// +// ** NOTE ** If you set both font maps the same you are no longer in dual font +// mode. But what this allows you to do is to put up to 8 fonts in VGA memory +// and switch between them at any time. +// +// Both fonts were made with my font editor. I just read the BIOS and +// modified the second font so a solid line goes through the middle of it. +// +// This procedure sets up dual font mode and loads 2 fonts into video memory. +void SetDual() +{ + outport(SEQ_ADDR, ((DFM_MAPA_FONT1 | DFM_MAPB_FONT5) << 8) | 0x03); + + // Load font 1 into 0K and font 2 into 8K + LoadFonts(); +} + +// This procedure reset the character map select register to point to only +// one font. +void UnSetDual() +{ + outport(0x3C4,0x0003); +} + +// In dual font modes, the palette is in effect half of what it is. The +// bottom 8 colors for the first font, and the top 8 colors for the second +// font. +// +// What I do here is to set them to the same 8 colors. +// Black, Blue, Green, Red, Purple, Yellow, Light Gray, and White +// +void SetDualPalette() +{ + // Font 1 + setpal( 0, 0, 0, 0); + setpal( 1, 0, 0, 42); + setpal( 2, 0, 42, 0); + setpal( 3, 0, 42, 42); + setpal( 4, 42, 0, 0); + setpal( 5, 63, 63, 21); + setpal( 6, 42, 42, 42); + setpal( 7, 63, 63, 63); + // Font 2 + setpal( 8, 0, 0, 0); + setpal( 9, 0, 0, 42); + setpal(10, 0, 42, 0); + setpal(11, 0, 42, 42); + setpal(12, 42, 0, 0); + setpal(13, 63, 63, 21); + setpal(14, 42, 42, 42); + setpal(15, 63, 63, 63); +} + +void pchar(int x, int y, char c, char att) +{ + char far *vidmem; + int off; + + // Make a pointer to the font + vidmem = (char far *)MK_FP( 0xB800, 0x0000); + off = y * 160 + x * 2; + vidmem += off; + *vidmem++ = c; + *vidmem = att; +} + +void print(int x, int y, char *Text, char attrib) +{ + for (int i = 0; i < strlen(Text); i++) + pchar(x++,y,Text[i],attrib); +} + +void DualTest() +{ + SetMode((unsigned int)&mode03h); + TextClear(0x1F); + SetDual(); + SetDualPalette(); + + /* ** NOTE ** when trying to print text on the screen, do not use the printf + * text functions. For some reason they do not select the proper VGA font. + */ + + print(0,0,"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿",0x17); + print(0,1,"³ DUAL FONT MODE ³",0x17); + print(0,2,"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ",0x17); + + print(0,4,"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿",0x1F); + print(0,5,"³ DUAL FONT MODE ³",0x1F); + print(0,6,"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ",0x1F); + + getch(); + UnSetDual(); + textcolor(7); + textbackground(0); +} + + +void LoadFonts() +{ + char far *vidmem; + int l = 0; + unsigned char oldmode,oldmisc,oldmem,oldmask; + unsigned char newmode,newmisc,newmem; + + // Make a pointer to the font + vidmem = (char far *)MK_FP( 0xA000, 0x0000); + + // Store the OLD 'Mode Register' value + outportb(GRACON_ADDR,5); + oldmode = inportb(GRACON_ADDR+1); + // Store the OLD 'Miscellaneous Register' value + outportb(GRACON_ADDR,6); + oldmisc = inportb(GRACON_ADDR+1); + // Store the OLD 'Mask Map' value + outportb(SEQ_ADDR,2); + oldmask = inportb(SEQ_ADDR+1); + // Store the OLD 'Memory Mode' value + outportb(SEQ_ADDR,4); + oldmem = inportb(SEQ_ADDR+1); + + // Write the NEW 'Mode Register' value + newmode = (oldmode & 0xFC); + outport(GRACON_ADDR, (newmode << 8) | 0x05); + // Write the NEW 'Miscellaneous Register' value + newmisc = ((oldmisc & 0xF1)|4); + outport(GRACON_ADDR, (newmisc << 8) | 0x06); + // Write the NEW 'Mask Map' value + outport(SEQ_ADDR, 0x0402); + // Write the NEW 'Memory Mode' value + newmem = (oldmem | 4); + outport(SEQ_ADDR, (newmem << 8) | 0x04); + + // Copy the font from BIOS + l = 0; + for (int i = 0; i < 256; i++) + { + for (int j = 0; j < 16; j++) + { + *vidmem++ = Font1[l++]; + } + for (int k = 0; k < 16; k++) + { + *vidmem++ = 0x00; + } + } + + vidmem = (char far *)MK_FP( 0xA000, 0x2000); + l = 0; + for (int i = 0; i < 256; i++) + { + for (int j = 0; j < 16; j++) + { + *vidmem++ = Font2[l++]; + } + for (int k = 0; k < 16; k++) + { + *vidmem++ = 0x00; + } + } + + // Write the OLD 'Mode Register' value + outport(GRACON_ADDR, (oldmode << 8) | 0x05); + // Write the OLD 'Miscellaneous Register' value + outport(GRACON_ADDR, (oldmisc << 8) | 0x06); + // Write the OLD 'Mask Map' value + outport(SEQ_ADDR,(oldmask << 8) | 0x02); + // Write the OLD 'Memory Mode' value + outport(SEQ_ADDR, (oldmem << 8) | 0x04); +} + +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= \ No newline at end of file diff --git a/16/tauron/C_SRC/FONT1.H b/16/tauron/C_SRC/FONT1.H new file mode 100755 index 00000000..ae20aa2c --- /dev/null +++ b/16/tauron/C_SRC/FONT1.H @@ -0,0 +1,268 @@ +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- Created with FEDIT written by Kinfira (Jeffrey Morgan) -= +//=- -= +//=- Tauron VGA Utilities Version 1.0 -= +//=- Released June 14, 1998 -= +//=- -= +//=- Font Width: 8 -= +//=- Font Height: 16 -= +//=- Bytes per character: 16 -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +char Font1[] = { +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x07E,0x081,0x0A5,0x081,0x081,0x0BD,0x099,0x081,0x081,0x07E,0x000,0x000,0x000,0x000, +0x000,0x000,0x07E,0x0FF,0x0DB,0x0FF,0x0FF,0x0C3,0x0E7,0x0FF,0x0FF,0x07E,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x06C,0x0FE,0x0FE,0x0FE,0x0FE,0x07C,0x038,0x010,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x010,0x038,0x07C,0x0FE,0x07C,0x038,0x010,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x018,0x03C,0x03C,0x0E7,0x0E7,0x0E7,0x099,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x018,0x03C,0x07E,0x0FF,0x0FF,0x07E,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x03C,0x03C,0x018,0x000,0x000,0x000,0x000,0x000,0x000, +0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0E7,0x0C3,0x0C3,0x0E7,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF, +0x000,0x000,0x000,0x000,0x000,0x03C,0x066,0x042,0x042,0x066,0x03C,0x000,0x000,0x000,0x000,0x000, +0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0C3,0x099,0x0BD,0x0BD,0x099,0x0C3,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF, +0x000,0x000,0x01E,0x00E,0x01A,0x032,0x078,0x0CC,0x0CC,0x0CC,0x0CC,0x078,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x066,0x066,0x066,0x066,0x03C,0x018,0x07E,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x03F,0x033,0x03F,0x030,0x030,0x030,0x030,0x070,0x0F0,0x0E0,0x000,0x000,0x000,0x000, +0x000,0x000,0x07F,0x063,0x07F,0x063,0x063,0x063,0x063,0x067,0x0E7,0x0E6,0x0C0,0x000,0x000,0x000, +0x000,0x000,0x000,0x018,0x018,0x0DB,0x03C,0x0E7,0x03C,0x0DB,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x080,0x0C0,0x0E0,0x0F0,0x0F8,0x0FE,0x0F8,0x0F0,0x0E0,0x0C0,0x080,0x000,0x000,0x000,0x000, +0x000,0x002,0x006,0x00E,0x01E,0x03E,0x0FE,0x03E,0x01E,0x00E,0x006,0x002,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x03C,0x07E,0x018,0x018,0x018,0x018,0x07E,0x03C,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x066,0x066,0x066,0x066,0x066,0x066,0x066,0x000,0x066,0x066,0x000,0x000,0x000,0x000, +0x000,0x000,0x07F,0x0DB,0x0DB,0x0DB,0x07B,0x01B,0x01B,0x01B,0x01B,0x01B,0x000,0x000,0x000,0x000, +0x000,0x07C,0x0C6,0x060,0x038,0x06C,0x0C6,0x0C6,0x06C,0x038,0x00C,0x0C6,0x07C,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x0FE,0x0FE,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x03C,0x07E,0x018,0x018,0x018,0x018,0x07E,0x03C,0x018,0x07E,0x000,0x000,0x000, +0x000,0x000,0x018,0x03C,0x07E,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x07E,0x03C,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x018,0x00C,0x0FE,0x00C,0x018,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x030,0x060,0x0FE,0x060,0x030,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0C0,0x0C0,0x0C0,0x0C0,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x028,0x06C,0x0FE,0x06C,0x028,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x010,0x038,0x038,0x07C,0x07C,0x0FE,0x0FE,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x0FE,0x0FE,0x07C,0x07C,0x038,0x038,0x010,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x03C,0x03C,0x03C,0x018,0x018,0x018,0x000,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x066,0x066,0x066,0x024,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x06C,0x06C,0x0FE,0x06C,0x06C,0x06C,0x0FE,0x06C,0x06C,0x000,0x000,0x000,0x000, +0x018,0x018,0x07C,0x0C6,0x0C2,0x0C0,0x07C,0x006,0x086,0x0C6,0x07C,0x018,0x018,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x0C2,0x0C6,0x00C,0x018,0x030,0x060,0x0C6,0x086,0x000,0x000,0x000,0x000, +0x000,0x000,0x038,0x06C,0x06C,0x038,0x076,0x0DC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x030,0x030,0x030,0x060,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x00C,0x018,0x030,0x030,0x030,0x030,0x030,0x030,0x018,0x00C,0x000,0x000,0x000,0x000, +0x000,0x000,0x030,0x018,0x00C,0x00C,0x00C,0x00C,0x00C,0x00C,0x018,0x030,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x066,0x03C,0x0FF,0x03C,0x066,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x07E,0x018,0x018,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x018,0x030,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x002,0x006,0x00C,0x018,0x030,0x060,0x0C0,0x080,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x0C6,0x0CE,0x0D6,0x0D6,0x0E6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x038,0x078,0x018,0x018,0x018,0x018,0x018,0x018,0x07E,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x006,0x00C,0x018,0x030,0x060,0x0C0,0x0C6,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x006,0x006,0x03C,0x006,0x006,0x006,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x00C,0x01C,0x03C,0x06C,0x0CC,0x0FE,0x00C,0x00C,0x00C,0x01E,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FE,0x0C0,0x0C0,0x0C0,0x0FC,0x00E,0x006,0x006,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x038,0x060,0x0C0,0x0C0,0x0FC,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FE,0x0C6,0x006,0x006,0x00C,0x018,0x030,0x030,0x030,0x030,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x07E,0x006,0x006,0x006,0x00C,0x078,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x018,0x018,0x030,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x006,0x00C,0x018,0x030,0x060,0x030,0x018,0x00C,0x006,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x000,0x000,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x060,0x030,0x018,0x00C,0x006,0x00C,0x018,0x030,0x060,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x0C6,0x00C,0x018,0x018,0x018,0x000,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x07C,0x0C6,0x0C6,0x0DE,0x0DE,0x0DE,0x0DC,0x0C0,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x010,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FC,0x066,0x066,0x066,0x07C,0x066,0x066,0x066,0x066,0x0FC,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x066,0x0C2,0x0C0,0x0C0,0x0C0,0x0C0,0x0C2,0x066,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0F8,0x06C,0x066,0x066,0x066,0x066,0x066,0x066,0x06C,0x0F8,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FE,0x066,0x062,0x068,0x078,0x068,0x060,0x062,0x066,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FE,0x066,0x062,0x068,0x078,0x068,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x066,0x0C2,0x0C0,0x0C0,0x0DE,0x0C6,0x0C6,0x066,0x03A,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x01E,0x00C,0x00C,0x00C,0x00C,0x00C,0x0CC,0x0CC,0x0CC,0x078,0x000,0x000,0x000,0x000, +0x000,0x000,0x0E6,0x066,0x06C,0x06C,0x078,0x078,0x06C,0x066,0x066,0x0E6,0x000,0x000,0x000,0x000, +0x000,0x000,0x0F0,0x060,0x060,0x060,0x060,0x060,0x060,0x062,0x066,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0EE,0x0FE,0x0FE,0x0D6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0E6,0x0F6,0x0FE,0x0DE,0x0CE,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x06C,0x038,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FC,0x066,0x066,0x066,0x07C,0x060,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0D6,0x0DE,0x07C,0x00C,0x00E,0x000,0x000, +0x000,0x000,0x0FC,0x066,0x066,0x066,0x07C,0x06C,0x066,0x066,0x066,0x0E6,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x0C6,0x060,0x038,0x00C,0x006,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x07E,0x07E,0x05A,0x018,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x06C,0x038,0x010,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0D6,0x0D6,0x0FE,0x06C,0x06C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x06C,0x06C,0x038,0x038,0x06C,0x06C,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x066,0x066,0x066,0x066,0x03C,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FE,0x0C6,0x086,0x00C,0x018,0x030,0x060,0x0C2,0x0C6,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x030,0x030,0x030,0x030,0x030,0x030,0x030,0x030,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x080,0x0C0,0x0E0,0x070,0x038,0x01C,0x00E,0x006,0x002,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x00C,0x00C,0x00C,0x00C,0x00C,0x00C,0x00C,0x00C,0x03C,0x000,0x000,0x000,0x000, +0x010,0x038,0x06C,0x0C6,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x000, +0x030,0x030,0x018,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x0E0,0x060,0x060,0x078,0x06C,0x066,0x066,0x066,0x066,0x0DC,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x0C0,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x01C,0x00C,0x00C,0x03C,0x06C,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x038,0x06C,0x064,0x060,0x0F0,0x060,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x076,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x07C,0x00C,0x0CC,0x078,0x000, +0x000,0x000,0x0E0,0x060,0x060,0x06C,0x076,0x066,0x066,0x066,0x066,0x0E6,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x018,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x006,0x006,0x000,0x00E,0x006,0x006,0x006,0x006,0x006,0x006,0x066,0x066,0x03C,0x000, +0x000,0x000,0x0E0,0x060,0x060,0x066,0x06C,0x078,0x078,0x06C,0x066,0x0E6,0x000,0x000,0x000,0x000, +0x000,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0EC,0x0FE,0x0D6,0x0D6,0x0D6,0x0D6,0x0D6,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0DC,0x066,0x066,0x066,0x066,0x066,0x066,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0DC,0x066,0x066,0x066,0x066,0x066,0x07C,0x060,0x060,0x0F0,0x000, +0x000,0x000,0x000,0x000,0x000,0x076,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x07C,0x00C,0x00C,0x01E,0x000, +0x000,0x000,0x000,0x000,0x000,0x0DC,0x076,0x062,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x060,0x038,0x00C,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x010,0x030,0x030,0x0FC,0x030,0x030,0x030,0x030,0x036,0x01C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x066,0x066,0x066,0x066,0x066,0x03C,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0C6,0x0C6,0x0C6,0x0D6,0x0D6,0x0FE,0x06C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0C6,0x06C,0x038,0x038,0x038,0x06C,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07E,0x006,0x00C,0x0F8,0x000, +0x000,0x000,0x000,0x000,0x000,0x0FE,0x0CC,0x018,0x030,0x060,0x0C6,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x00E,0x018,0x018,0x018,0x070,0x018,0x018,0x018,0x018,0x00E,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x018,0x018,0x018,0x000,0x018,0x018,0x018,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x070,0x018,0x018,0x018,0x00E,0x018,0x018,0x018,0x018,0x070,0x000,0x000,0x000,0x000, +0x000,0x000,0x076,0x0DC,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x010,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x0FE,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x066,0x0C2,0x0C0,0x0C0,0x0C0,0x0C2,0x066,0x03C,0x00C,0x006,0x07C,0x000,0x000, +0x000,0x000,0x0CC,0x0CC,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x00C,0x018,0x030,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x010,0x038,0x06C,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x0CC,0x0CC,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x060,0x030,0x018,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x038,0x06C,0x038,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x03C,0x066,0x060,0x060,0x066,0x03C,0x00C,0x006,0x03C,0x000,0x000,0x000, +0x000,0x010,0x038,0x06C,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x060,0x030,0x018,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x066,0x066,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x018,0x03C,0x066,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x060,0x030,0x018,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x0C6,0x0C6,0x010,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x038,0x06C,0x038,0x000,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x018,0x030,0x060,0x000,0x0FE,0x066,0x060,0x07C,0x060,0x060,0x066,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0CC,0x076,0x036,0x07E,0x0D8,0x0D8,0x06E,0x000,0x000,0x000,0x000, +0x000,0x000,0x03E,0x06C,0x0CC,0x0CC,0x0FE,0x0CC,0x0CC,0x0CC,0x0CC,0x0CE,0x000,0x000,0x000,0x000, +0x000,0x010,0x038,0x06C,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x060,0x030,0x018,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x030,0x078,0x0CC,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x060,0x030,0x018,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07E,0x006,0x00C,0x078,0x000, +0x000,0x0C6,0x0C6,0x000,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x0C6,0x06C,0x038,0x000,0x000,0x000,0x000, +0x000,0x0C6,0x0C6,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x018,0x018,0x03C,0x066,0x060,0x060,0x060,0x066,0x03C,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x038,0x06C,0x064,0x060,0x0F0,0x060,0x060,0x060,0x060,0x0E6,0x0FC,0x000,0x000,0x000,0x000, +0x000,0x000,0x066,0x066,0x03C,0x018,0x07E,0x018,0x07E,0x018,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x0F8,0x0CC,0x0CC,0x0F8,0x0C4,0x0CC,0x0DE,0x0CC,0x0CC,0x0CC,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x00E,0x01B,0x018,0x018,0x018,0x07E,0x018,0x018,0x018,0x018,0x018,0x0D8,0x070,0x000,0x000, +0x000,0x018,0x030,0x060,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x00C,0x018,0x030,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x018,0x030,0x060,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x018,0x030,0x060,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x076,0x0DC,0x000,0x0DC,0x066,0x066,0x066,0x066,0x066,0x066,0x000,0x000,0x000,0x000, +0x076,0x0DC,0x000,0x0C6,0x0E6,0x0F6,0x0FE,0x0DE,0x0CE,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x03C,0x06C,0x06C,0x03E,0x000,0x07E,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x038,0x06C,0x06C,0x038,0x000,0x07C,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x030,0x030,0x000,0x030,0x030,0x060,0x0C0,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x0C0,0x0C0,0x0C0,0x0C0,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x006,0x006,0x006,0x006,0x000,0x000,0x000,0x000,0x000, +0x000,0x0C0,0x0C0,0x0C2,0x0C6,0x0CC,0x018,0x030,0x060,0x0CE,0x093,0x006,0x00C,0x01F,0x000,0x000, +0x000,0x0C0,0x0C0,0x0C2,0x0C6,0x0CC,0x018,0x030,0x066,0x0CE,0x09A,0x03F,0x006,0x00F,0x000,0x000, +0x000,0x000,0x018,0x018,0x000,0x018,0x018,0x018,0x03C,0x03C,0x03C,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x033,0x066,0x0CC,0x066,0x033,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0CC,0x066,0x033,0x066,0x0CC,0x000,0x000,0x000,0x000,0x000,0x000, +0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044, +0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA, +0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x0F8,0x018,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0F6,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x000,0x000,0x000,0x000,0x000,0x0F8,0x018,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x036,0x036,0x036,0x036,0x036,0x0F6,0x006,0x0F6,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x000,0x000,0x000,0x000,0x000,0x0FE,0x006,0x0F6,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x0F6,0x006,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x018,0x018,0x018,0x018,0x018,0x0F8,0x018,0x0F8,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x01F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x01F,0x018,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x037,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x037,0x030,0x03F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x03F,0x030,0x037,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x0F7,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x0F7,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x037,0x030,0x037,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x036,0x036,0x036,0x036,0x036,0x0F7,0x000,0x0F7,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x018,0x018,0x018,0x018,0x018,0x0FF,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x03F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x018,0x018,0x018,0x018,0x018,0x01F,0x018,0x01F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x01F,0x018,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x03F,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0FF,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x018,0x018,0x018,0x018,0x018,0x0FF,0x018,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0F8,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF, +0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0, +0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F, +0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x076,0x0DC,0x0D8,0x0D8,0x0D8,0x0DC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0FC,0x0C6,0x0FC,0x0C6,0x0C6,0x0FC,0x0C0,0x0C0,0x0C0,0x000,0x000, +0x000,0x000,0x0FE,0x0C6,0x0C6,0x0C0,0x0C0,0x0C0,0x0C0,0x0C0,0x0C0,0x0C0,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x080,0x0FE,0x06C,0x06C,0x06C,0x06C,0x06C,0x06C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x0FE,0x0C6,0x060,0x030,0x018,0x030,0x060,0x0C6,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x07E,0x0D8,0x0D8,0x0D8,0x0D8,0x0D8,0x070,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x066,0x066,0x066,0x066,0x066,0x07C,0x060,0x060,0x0C0,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x076,0x0DC,0x018,0x018,0x018,0x018,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x07E,0x018,0x03C,0x066,0x066,0x066,0x03C,0x018,0x07E,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x06C,0x038,0x000,0x000,0x000,0x000, +0x000,0x000,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x06C,0x06C,0x06C,0x06C,0x0EE,0x000,0x000,0x000,0x000, +0x000,0x000,0x01E,0x030,0x018,0x00C,0x03E,0x066,0x066,0x066,0x066,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x07E,0x0DB,0x0DB,0x0DB,0x07E,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x003,0x006,0x07E,0x0CF,0x0DB,0x0F3,0x07E,0x060,0x0C0,0x000,0x000,0x000,0x000, +0x000,0x000,0x01C,0x030,0x060,0x060,0x07C,0x060,0x060,0x060,0x030,0x01C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x0FE,0x000,0x000,0x0FE,0x000,0x000,0x0FE,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x018,0x018,0x07E,0x018,0x018,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x030,0x018,0x00C,0x006,0x00C,0x018,0x030,0x000,0x07E,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x00C,0x018,0x030,0x060,0x030,0x018,0x00C,0x000,0x07E,0x000,0x000,0x000,0x000, +0x000,0x000,0x00E,0x01B,0x01B,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0D8,0x0D8,0x0D8,0x070,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x07E,0x000,0x018,0x018,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x076,0x0DC,0x000,0x076,0x0DC,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x038,0x06C,0x06C,0x038,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x00F,0x00C,0x00C,0x00C,0x00C,0x00C,0x0EC,0x06C,0x06C,0x03C,0x01C,0x000,0x000,0x000,0x000, +0x000,0x0D8,0x06C,0x06C,0x06C,0x06C,0x06C,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x070,0x098,0x030,0x060,0x0C8,0x0F8,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x07C,0x07C,0x07C,0x07C,0x07C,0x07C,0x07C,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000 +}; diff --git a/16/tauron/C_SRC/FONT2.H b/16/tauron/C_SRC/FONT2.H new file mode 100755 index 00000000..1a2a5166 --- /dev/null +++ b/16/tauron/C_SRC/FONT2.H @@ -0,0 +1,268 @@ +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- Created with FEDIT written by Kinfira (Jeffrey Morgan) -= +//=- -= +//=- Tauron VGA Utilities Version 1.0 -= +//=- Released June 14, 1998 -= +//=- -= +//=- Font Width: 8 -= +//=- Font Height: 16 -= +//=- Bytes per character: 16 -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +char Font2[] = { +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x07E,0x081,0x0A5,0x081,0x081,0x0BD,0x099,0x081,0x081,0x07E,0x000,0x000,0x000,0x000, +0x000,0x000,0x07E,0x0FF,0x0DB,0x0FF,0x0FF,0x0C3,0x0E7,0x0FF,0x0FF,0x07E,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x06C,0x0FE,0x0FE,0x0FE,0x0FE,0x07C,0x038,0x010,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x010,0x038,0x07C,0x0FE,0x07C,0x038,0x010,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x018,0x03C,0x03C,0x0E7,0x0E7,0x0E7,0x099,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x018,0x03C,0x07E,0x0FF,0x0FF,0x07E,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x03C,0x03C,0x018,0x000,0x000,0x000,0x000,0x000,0x000, +0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0E7,0x0C3,0x0C3,0x0E7,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF, +0x000,0x000,0x000,0x000,0x000,0x03C,0x066,0x042,0x042,0x066,0x03C,0x000,0x000,0x000,0x000,0x000, +0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0C3,0x099,0x0BD,0x0BD,0x099,0x0C3,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF, +0x000,0x000,0x01E,0x00E,0x01A,0x032,0x078,0x0CC,0x0CC,0x0CC,0x0CC,0x078,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x066,0x066,0x066,0x066,0x03C,0x018,0x07E,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x03F,0x033,0x03F,0x030,0x030,0x030,0x030,0x070,0x0F0,0x0E0,0x000,0x000,0x000,0x000, +0x000,0x000,0x07F,0x063,0x07F,0x063,0x063,0x063,0x063,0x067,0x0E7,0x0E6,0x0C0,0x000,0x000,0x000, +0x000,0x000,0x000,0x018,0x018,0x0DB,0x03C,0x0E7,0x03C,0x0DB,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x080,0x0C0,0x0E0,0x0F0,0x0F8,0x0FE,0x0F8,0x0F0,0x0E0,0x0C0,0x080,0x000,0x000,0x000,0x000, +0x000,0x002,0x006,0x00E,0x01E,0x03E,0x0FE,0x03E,0x01E,0x00E,0x006,0x002,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x03C,0x07E,0x018,0x018,0x018,0x018,0x07E,0x03C,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x066,0x066,0x066,0x066,0x066,0x066,0x066,0x000,0x066,0x066,0x000,0x000,0x000,0x000, +0x000,0x000,0x07F,0x0DB,0x0DB,0x0DB,0x07B,0x01B,0x01B,0x01B,0x01B,0x01B,0x000,0x000,0x000,0x000, +0x000,0x07C,0x0C6,0x060,0x038,0x06C,0x0C6,0x0C6,0x06C,0x038,0x00C,0x0C6,0x07C,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x0FE,0x0FE,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x03C,0x07E,0x018,0x018,0x018,0x018,0x07E,0x03C,0x018,0x07E,0x000,0x000,0x000, +0x000,0x000,0x018,0x03C,0x07E,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x07E,0x03C,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x018,0x00C,0x0FE,0x00C,0x018,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x030,0x060,0x0FE,0x060,0x030,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0C0,0x0C0,0x0C0,0x0C0,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x028,0x06C,0x0FE,0x06C,0x028,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x010,0x038,0x038,0x07C,0x07C,0x0FE,0x0FE,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x0FE,0x0FE,0x07C,0x07C,0x038,0x038,0x010,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x03C,0x03C,0x03C,0x018,0x018,0x018,0x000,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x066,0x066,0x066,0x024,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x06C,0x06C,0x0FE,0x06C,0x06C,0x06C,0x0FE,0x06C,0x06C,0x000,0x000,0x000,0x000, +0x018,0x018,0x07C,0x0C6,0x0C2,0x0C0,0x07C,0x006,0x086,0x0C6,0x07C,0x018,0x018,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x0C2,0x0C6,0x00C,0x018,0x030,0x060,0x0C6,0x086,0x000,0x000,0x000,0x000, +0x000,0x000,0x038,0x06C,0x06C,0x038,0x076,0x0DC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x030,0x030,0x030,0x060,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x00C,0x018,0x030,0x030,0x030,0x030,0x030,0x030,0x018,0x00C,0x000,0x000,0x000,0x000, +0x000,0x000,0x030,0x018,0x00C,0x00C,0x00C,0x00C,0x00C,0x00C,0x018,0x030,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x066,0x03C,0x0FF,0x03C,0x066,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x07E,0x018,0x018,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x018,0x030,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x002,0x006,0x00C,0x018,0x030,0x060,0x0C0,0x080,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x0C6,0x0CE,0x0D6,0x0D6,0x0E6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x038,0x078,0x018,0x018,0x018,0x018,0x018,0x018,0x07E,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x006,0x00C,0x018,0x030,0x060,0x0C0,0x0C6,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x006,0x006,0x03C,0x006,0x006,0x006,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x00C,0x01C,0x03C,0x06C,0x0CC,0x0FE,0x00C,0x00C,0x00C,0x01E,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FE,0x0C0,0x0C0,0x0C0,0x0FC,0x00E,0x006,0x006,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x038,0x060,0x0C0,0x0C0,0x0FC,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FE,0x0C6,0x006,0x006,0x00C,0x018,0x030,0x030,0x030,0x030,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x07E,0x006,0x006,0x006,0x00C,0x078,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x018,0x018,0x030,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x006,0x00C,0x018,0x030,0x060,0x030,0x018,0x00C,0x006,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x000,0x000,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x060,0x030,0x018,0x00C,0x006,0x00C,0x018,0x030,0x060,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x0C6,0x00C,0x018,0x018,0x018,0x000,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x07C,0x0C6,0x0C6,0x0DE,0x0DE,0x0DE,0x0DC,0x0C0,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x010,0x038,0x06C,0x0C6,0x0C6,0x0FF,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FC,0x066,0x066,0x066,0x07C,0x0FF,0x066,0x066,0x066,0x0FC,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x066,0x0C2,0x0C0,0x0C0,0x0FF,0x0C0,0x0C2,0x066,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0F8,0x06C,0x066,0x066,0x066,0x0FF,0x066,0x066,0x06C,0x0F8,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FE,0x066,0x062,0x068,0x078,0x0FF,0x060,0x062,0x066,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FE,0x066,0x062,0x068,0x078,0x0FF,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x066,0x0C2,0x0C0,0x0C0,0x0FF,0x0C6,0x0C6,0x066,0x03A,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0FE,0x0FF,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x018,0x018,0x018,0x018,0x0FF,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x01E,0x00C,0x00C,0x00C,0x00C,0x0FF,0x0CC,0x0CC,0x0CC,0x078,0x000,0x000,0x000,0x000, +0x000,0x000,0x0E6,0x066,0x06C,0x06C,0x078,0x0FF,0x06C,0x066,0x066,0x0E6,0x000,0x000,0x000,0x000, +0x000,0x000,0x0F0,0x060,0x060,0x060,0x060,0x0FF,0x060,0x062,0x066,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0EE,0x0FE,0x0FE,0x0D6,0x0FF,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0E6,0x0F6,0x0FE,0x0DE,0x0FF,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x0FF,0x0C6,0x0C6,0x06C,0x038,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FC,0x066,0x066,0x066,0x07C,0x0FF,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0FF,0x0C6,0x0D6,0x0DE,0x07C,0x00C,0x00E,0x000,0x000, +0x000,0x000,0x0FC,0x066,0x066,0x066,0x07C,0x0FF,0x066,0x066,0x066,0x0E6,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x0C6,0x060,0x038,0x0FF,0x006,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x07E,0x07E,0x05A,0x018,0x018,0x0FF,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0FF,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0FF,0x0C6,0x06C,0x038,0x010,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0FF,0x0D6,0x0FE,0x06C,0x06C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x06C,0x06C,0x038,0x0FF,0x06C,0x06C,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x066,0x066,0x066,0x066,0x03C,0x0FF,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FE,0x0C6,0x086,0x00C,0x018,0x0FF,0x060,0x0C2,0x0C6,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x030,0x030,0x030,0x030,0x0FF,0x030,0x030,0x030,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x080,0x0C0,0x0E0,0x070,0x0FF,0x01C,0x00E,0x006,0x002,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x00C,0x00C,0x00C,0x00C,0x0FF,0x00C,0x00C,0x00C,0x03C,0x000,0x000,0x000,0x000, +0x010,0x038,0x06C,0x0C6,0x000,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x000, +0x030,0x030,0x018,0x000,0x000,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x0E0,0x060,0x060,0x078,0x06C,0x066,0x066,0x066,0x066,0x0DC,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x0C0,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x01C,0x00C,0x00C,0x03C,0x06C,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x038,0x06C,0x064,0x060,0x0F0,0x060,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x076,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x07C,0x00C,0x0CC,0x078,0x000, +0x000,0x000,0x0E0,0x060,0x060,0x06C,0x076,0x066,0x066,0x066,0x066,0x0E6,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x018,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x006,0x006,0x000,0x00E,0x006,0x006,0x006,0x006,0x006,0x006,0x066,0x066,0x03C,0x000, +0x000,0x000,0x0E0,0x060,0x060,0x066,0x06C,0x078,0x078,0x06C,0x066,0x0E6,0x000,0x000,0x000,0x000, +0x000,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0EC,0x0FE,0x0D6,0x0D6,0x0D6,0x0D6,0x0D6,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0DC,0x066,0x066,0x066,0x066,0x066,0x066,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0DC,0x066,0x066,0x066,0x066,0x066,0x07C,0x060,0x060,0x0F0,0x000, +0x000,0x000,0x000,0x000,0x000,0x076,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x07C,0x00C,0x00C,0x01E,0x000, +0x000,0x000,0x000,0x000,0x000,0x0DC,0x076,0x062,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x060,0x038,0x00C,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x010,0x030,0x030,0x0FC,0x030,0x030,0x030,0x030,0x036,0x01C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x066,0x066,0x066,0x066,0x066,0x03C,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0C6,0x0C6,0x0C6,0x0D6,0x0D6,0x0FE,0x06C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0C6,0x06C,0x038,0x038,0x038,0x06C,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07E,0x006,0x00C,0x0F8,0x000, +0x000,0x000,0x000,0x000,0x000,0x0FE,0x0CC,0x018,0x030,0x060,0x0C6,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x00E,0x018,0x018,0x018,0x070,0x018,0x018,0x018,0x018,0x00E,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x018,0x018,0x018,0x000,0x018,0x018,0x018,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x070,0x018,0x018,0x018,0x00E,0x018,0x018,0x018,0x018,0x070,0x000,0x000,0x000,0x000, +0x000,0x000,0x076,0x0DC,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x010,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x0FE,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x066,0x0C2,0x0C0,0x0C0,0x0C0,0x0C2,0x066,0x03C,0x00C,0x006,0x07C,0x000,0x000, +0x000,0x000,0x0CC,0x0CC,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x00C,0x018,0x030,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x010,0x038,0x06C,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x0CC,0x0CC,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x060,0x030,0x018,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x038,0x06C,0x038,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x03C,0x066,0x060,0x060,0x066,0x03C,0x00C,0x006,0x03C,0x000,0x000,0x000, +0x000,0x010,0x038,0x06C,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x060,0x030,0x018,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x066,0x066,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x018,0x03C,0x066,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x060,0x030,0x018,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x0C6,0x0C6,0x010,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x038,0x06C,0x038,0x000,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x018,0x030,0x060,0x000,0x0FE,0x066,0x060,0x07C,0x060,0x060,0x066,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0CC,0x076,0x036,0x07E,0x0D8,0x0D8,0x06E,0x000,0x000,0x000,0x000, +0x000,0x000,0x03E,0x06C,0x0CC,0x0CC,0x0FE,0x0CC,0x0CC,0x0CC,0x0CC,0x0CE,0x000,0x000,0x000,0x000, +0x000,0x010,0x038,0x06C,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x060,0x030,0x018,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x030,0x078,0x0CC,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x060,0x030,0x018,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07E,0x006,0x00C,0x078,0x000, +0x000,0x0C6,0x0C6,0x000,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x0C6,0x06C,0x038,0x000,0x000,0x000,0x000, +0x000,0x0C6,0x0C6,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x018,0x018,0x03C,0x066,0x060,0x060,0x060,0x066,0x03C,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x038,0x06C,0x064,0x060,0x0F0,0x060,0x060,0x060,0x060,0x0E6,0x0FC,0x000,0x000,0x000,0x000, +0x000,0x000,0x066,0x066,0x03C,0x018,0x07E,0x018,0x07E,0x018,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x0F8,0x0CC,0x0CC,0x0F8,0x0C4,0x0CC,0x0DE,0x0CC,0x0CC,0x0CC,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x00E,0x01B,0x018,0x018,0x018,0x07E,0x018,0x018,0x018,0x018,0x018,0x0D8,0x070,0x000,0x000, +0x000,0x018,0x030,0x060,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x00C,0x018,0x030,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x018,0x030,0x060,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x018,0x030,0x060,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x076,0x0DC,0x000,0x0DC,0x066,0x066,0x066,0x066,0x066,0x066,0x000,0x000,0x000,0x000, +0x076,0x0DC,0x000,0x0C6,0x0E6,0x0F6,0x0FE,0x0DE,0x0CE,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x03C,0x06C,0x06C,0x03E,0x000,0x07E,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x038,0x06C,0x06C,0x038,0x000,0x07C,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x030,0x030,0x000,0x030,0x030,0x060,0x0C0,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x0C0,0x0C0,0x0C0,0x0C0,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x006,0x006,0x006,0x006,0x000,0x000,0x000,0x000,0x000, +0x000,0x0C0,0x0C0,0x0C2,0x0C6,0x0CC,0x018,0x030,0x060,0x0CE,0x093,0x006,0x00C,0x01F,0x000,0x000, +0x000,0x0C0,0x0C0,0x0C2,0x0C6,0x0CC,0x018,0x030,0x066,0x0CE,0x09A,0x03F,0x006,0x00F,0x000,0x000, +0x000,0x000,0x018,0x018,0x000,0x018,0x018,0x018,0x03C,0x03C,0x03C,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x033,0x066,0x0CC,0x066,0x033,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0CC,0x066,0x033,0x066,0x0CC,0x000,0x000,0x000,0x000,0x000,0x000, +0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044, +0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA, +0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x0F8,0x018,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0F6,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x000,0x000,0x000,0x000,0x000,0x0F8,0x018,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x036,0x036,0x036,0x036,0x036,0x0F6,0x006,0x0F6,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x000,0x000,0x000,0x000,0x000,0x0FE,0x006,0x0F6,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x0F6,0x006,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x018,0x018,0x018,0x018,0x018,0x0F8,0x018,0x0F8,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x01F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x01F,0x018,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x037,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x037,0x030,0x03F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x03F,0x030,0x037,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x0F7,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x0F7,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x037,0x030,0x037,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x036,0x036,0x036,0x036,0x036,0x0F7,0x000,0x0F7,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x018,0x018,0x018,0x018,0x018,0x0FF,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x03F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x018,0x018,0x018,0x018,0x018,0x01F,0x018,0x01F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x01F,0x018,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x03F,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0FF,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x018,0x018,0x018,0x018,0x018,0x0FF,0x018,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0F8,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF, +0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0, +0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F, +0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x076,0x0DC,0x0D8,0x0D8,0x0D8,0x0DC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0FC,0x0C6,0x0FC,0x0C6,0x0C6,0x0FC,0x0C0,0x0C0,0x0C0,0x000,0x000, +0x000,0x000,0x0FE,0x0C6,0x0C6,0x0C0,0x0C0,0x0C0,0x0C0,0x0C0,0x0C0,0x0C0,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x080,0x0FE,0x06C,0x06C,0x06C,0x06C,0x06C,0x06C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x0FE,0x0C6,0x060,0x030,0x018,0x030,0x060,0x0C6,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x07E,0x0D8,0x0D8,0x0D8,0x0D8,0x0D8,0x070,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x066,0x066,0x066,0x066,0x066,0x07C,0x060,0x060,0x0C0,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x076,0x0DC,0x018,0x018,0x018,0x018,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x07E,0x018,0x03C,0x066,0x066,0x066,0x03C,0x018,0x07E,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x06C,0x038,0x000,0x000,0x000,0x000, +0x000,0x000,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x06C,0x06C,0x06C,0x06C,0x0EE,0x000,0x000,0x000,0x000, +0x000,0x000,0x01E,0x030,0x018,0x00C,0x03E,0x066,0x066,0x066,0x066,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x07E,0x0DB,0x0DB,0x0DB,0x07E,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x003,0x006,0x07E,0x0CF,0x0DB,0x0F3,0x07E,0x060,0x0C0,0x000,0x000,0x000,0x000, +0x000,0x000,0x01C,0x030,0x060,0x060,0x07C,0x060,0x060,0x060,0x030,0x01C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x0FE,0x000,0x000,0x0FE,0x000,0x000,0x0FE,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x018,0x018,0x07E,0x018,0x018,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x030,0x018,0x00C,0x006,0x00C,0x018,0x030,0x000,0x07E,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x00C,0x018,0x030,0x060,0x030,0x018,0x00C,0x000,0x07E,0x000,0x000,0x000,0x000, +0x000,0x000,0x00E,0x01B,0x01B,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0D8,0x0D8,0x0D8,0x070,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x07E,0x000,0x018,0x018,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x076,0x0DC,0x000,0x076,0x0DC,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x038,0x06C,0x06C,0x038,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x00F,0x00C,0x00C,0x00C,0x00C,0x00C,0x0EC,0x06C,0x06C,0x03C,0x01C,0x000,0x000,0x000,0x000, +0x000,0x0D8,0x06C,0x06C,0x06C,0x06C,0x06C,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x070,0x098,0x030,0x060,0x0C8,0x0F8,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x07C,0x07C,0x07C,0x07C,0x07C,0x07C,0x07C,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000 +}; diff --git a/16/tauron/C_SRC/MAINC.CPP b/16/tauron/C_SRC/MAINC.CPP new file mode 100755 index 00000000..34a1247a --- /dev/null +++ b/16/tauron/C_SRC/MAINC.CPP @@ -0,0 +1,181 @@ +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- -= +//=- Tauron VGA Utilities Version 3.0 -= +//=- Released September 20, 1998 -= +//=- -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +//=- All Rights Reserved. =-= that you put my name some- -= +//=- =-= where in your credits. -= +//=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- I assume no responsibility whatsoever for any effect that this package, -= +//=- the information contained therein or the use thereof has on you, your -= +//=- sanity, computer, spouse, children, pets or anything else related to -= +//=- you or your existance. No warranty is provided nor implied with this -= +//=- source code. -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +#include +#include +#include +#include +#include "tauron.h" + +void MainScreen() +{ + clrscr(); + printf("Tauron VGA Utilities v3.0\n" + "Copyright (c) 1998 Jeffrey Morgan. All Rights Reserved.\n"); + textcolor(12); + cprintf("Modes with a ! are not implemented Modes with a % are unchained\r\n"); + textcolor(7); + printf("Select a video mode to test:\n" + "Key Videomode Key Videomode\n" + "================================================================================" + " 0) 00H, 01H -- 40 x 25 x 16 %F) Mode D -- 360 x 200 x 256\n" + " 1) Mode L -- 40 x 43 x 16 %G) Mode E -- 360 x 240 x 256\n" + " 2) Mode M -- 40 x 50 x 16 %H) Mode F -- 360 x 350 x 256\n" + "!3) 07H -- 80 x 25 x 2 %I) Mode G -- 360 x 400 x 256\n" + " 4) 02H, 03H -- 80 x 25 x 16 %J) Mode H -- 360 x 480 x 256\n" + " 5) Mode J -- 80 x 43 x 16 K) 06H -- 640 x 200 x 2\n" + " 6) Mode K -- 80 x 50 x 16 !L) 0FH -- 640 x 350 x 2\n" + " 7) 04H, 05H -- 320 x 200 x 4 M) 11H -- 640 x 480 x 2\n" + " 8) 0DH -- 320 x 200 x 16 N) 0EH -- 640 x 200 x 16\n" + " 9) 13H -- 320 x 200 x 256 O) 10H -- 640 x 350 x 16\n" + "%A) Chain 4 -- 320 x 200 x 256 P) Mode I -- 640 x 400 x 16\n" + "%B) Mode X -- 320 x 240 x 256 Q) 12H -- 640 x 480 x 16\n" + "%C) Mode A -- 320 x 350 x 256\n" + "%D) Mode B -- 320 x 400 x 256 R) Dual Font Test\n" + "%E) Mode C -- 320 x 480 x 256\n" + "===============================================================================\n" + "Hit 'ESC' to exit. Press a key [0-9 or A-O]>"); +} + +void SetMode03h() +{ + asm MOV AX,0003H + asm INT 10H +} + +void main() +{ + int ok, key; + ok = 1; + MainScreen(); + while (ok) + { + if( (key = getch()) == 0 ) + key = 256 * getch(); + switch( key ) + { + case Escape : ok = 0; break; + + case '0' : + SetVideoMode(MODE00H); TextTest(); getch(); + SetMode03h(); MainScreen(); break; + + case '1': + SetVideoMode(MODE_L); TextTest(); getch(); + SetMode03h(); MainScreen(); break; + + case '2': + SetVideoMode(MODE_M); TextTest(); getch(); + SetMode03h(); MainScreen(); break; + + case '4' : + SetVideoMode(MODE03H); TextTest(); getch(); + SetMode03h(); MainScreen(); break; + + case '5': + SetVideoMode(MODE_J); TextTest(); getch(); + SetMode03h(); MainScreen(); break; + + case '6': + SetVideoMode(MODE_K); TextTest(); getch(); + SetMode03h(); MainScreen(); break; + + case '7': + SetVideoMode(MODE04H); Clear04H(); getch(); + SetMode03h(); MainScreen(); break; + + case '8' : + SetVideoMode(MODE0DH); Clear0DH(12); /*ModeTest();*/ getch(); + SetMode03h(); MainScreen(); break; + + case '9': + SetVideoMode(MODE13H); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'a': case 'A': + SetVideoMode(CHAIN4); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'b': case 'B': + SetVideoMode(MODE_X); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'c': case 'C': + SetVideoMode(MODE_A); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'd': case 'D': + SetVideoMode(MODE_B); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'e': case 'E': + SetVideoMode(MODE_C); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'f': case 'F': + SetVideoMode(MODE_D); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'g': case 'G': + SetVideoMode(MODE_E); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'h': case 'H': + SetVideoMode(MODE_F); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'i': case 'I': + SetVideoMode(MODE_G); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'j': case 'J': + SetVideoMode(MODE_H); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'k': case 'K': + SetVideoMode(MODE06H); Clear06H(); getch(); + SetMode03h(); MainScreen(); break; + + case 'm': case 'M': + SetVideoMode(MODE11H); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'n': case 'N': + SetVideoMode(MODE0EH); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'o': case 'O': + SetVideoMode(MODE10H); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'p': case 'P': + SetVideoMode(MODE_I); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'q': case 'Q': + SetVideoMode(MODE12H); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'r': case 'R': + SetVideoMode(MODE03H); DualTest(); + SetMode03h(); MainScreen(); break; + + default : break; + } + } + asm MOV AX,0003h + asm int 10h +} diff --git a/16/tauron/C_SRC/MODES.CPP b/16/tauron/C_SRC/MODES.CPP new file mode 100755 index 00000000..72e11c94 --- /dev/null +++ b/16/tauron/C_SRC/MODES.CPP @@ -0,0 +1,833 @@ +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- -= +//=- Tauron VGA Utilities Version 3.0 -= +//=- Released September 20, 1998 -= +//=- -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +//=- All Rights Reserved. =-= that you put my name some- -= +//=- =-= where in your credits. -= +//=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- I assume no responsibility whatsoever for any effect that this package, -= +//=- the information contained therein or the use thereof has on you, your -= +//=- sanity, computer, spouse, children, pets or anything else related to -= +//=- you or your existance. No warranty is provided nor implied with this -= +//=- source code. -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +#include +#include +#include +#include +#include "tauron.h" +#include "modes_c.inc" +#include "palette.inc" + +void setpalette4(); +void setpalette16(); +void setpalette256(); +Vmode Mode; + +#define SEQ_ADDR 0x03C4 +#define GRACON_ADDR 0x03CE +#define CRTC_ADDR 0x03D4 + +void ReadBIOSfont(int fontnum, int bytesperchar) +{ + char far *biosfont,*vidmem; + struct REGPACK reg; + unsigned char oldmode,oldmisc,oldmem,oldmask; + unsigned char newmode,newmisc,newmem; + + // get the location of the font stroed in BIOS + reg.r_ax = 0x1130; + reg.r_bx = fontnum << 8; + intr(0x10, ®); + + // Make a pointer to the font + biosfont = (char far *)MK_FP( reg.r_es, reg.r_bp); + vidmem = (char far *)MK_FP( 0xA000, 0x0000); + + // Store the OLD 'Mode Register' value + outportb(GRACON_ADDR,5); + oldmode = inportb(GRACON_ADDR+1); + // Store the OLD 'Miscellaneous Register' value + outportb(GRACON_ADDR,6); + oldmisc = inportb(GRACON_ADDR+1); + // Store the OLD 'Mask Map' value + outportb(SEQ_ADDR,2); + oldmask = inportb(SEQ_ADDR+1); + // Store the OLD 'Memory Mode' value + outportb(SEQ_ADDR,4); + oldmem = inportb(SEQ_ADDR+1); + + // Write the NEW 'Mode Register' value + newmode = (oldmode & 0xFC); + outport(GRACON_ADDR, (newmode << 8) | 0x05); + // Write the NEW 'Miscellaneous Register' value + newmisc = ((oldmisc & 0xF1)|4); + outport(GRACON_ADDR, (newmisc << 8) | 0x06); + // Write the NEW 'Mask Map' value + outport(SEQ_ADDR, 0x0402); + // Write the NEW 'Memory Mode' value + newmem = (oldmem | 4); + outport(SEQ_ADDR, (newmem << 8) | 0x04); + + // Copy the font from BIOS + for (int i = 0; i < 256; i++) + { + for (int j = 0; j < bytesperchar; j++) + { + *vidmem++ = *biosfont++; + } + for (int k = 0; k < 32-bytesperchar; k++) + { + *vidmem++ = 0x00; + } + } + + // Write the OLD 'Mode Register' value + outport(GRACON_ADDR, (oldmode << 8) | 0x05); + // Write the OLD 'Miscellaneous Register' value + outport(GRACON_ADDR, (oldmisc << 8) | 0x06); + // Write the OLD 'Mask Map' value + outport(SEQ_ADDR,(oldmask << 8) | 0x02); + // Write the OLD 'Memory Mode' value + outport(SEQ_ADDR, (oldmem << 8) | 0x04); +} + +void SetMode(unsigned int regs) +{ + asm { + MOV SI, regs + + // Send MISC regs + MOV DX,MISC_ADDR + MOV AL,[SI] + OUT DX,AL + INC SI + + MOV DX,STATUS_ADDR + MOV AL,[SI] + OUT DX,AL + INC SI + + // Send SEQ regs + MOV CX,0 +REG_LOOP: + MOV DX,SEQ_ADDR + MOV AL,CL + OUT DX,AL + + MOV DX,SEQ_ADDR + INC DX + MOV AL,[SI] + OUT DX,AL + + INC SI + INC CX + CMP CL,5 + JL REG_LOOP + + // Clear Protection bits + MOV AH,0EH + MOV AL,11H + AND AH,7FH + MOV DX,CRTC_ADDR + OUT DX,AX + + // Send CRTC regs + MOV CX,0 +REG_LOOP2: + MOV DX,CRTC_ADDR + MOV AL,CL + OUT DX,AL + + MOV DX,CRTC_ADDR + INC DX + MOV AL,[SI] + OUT DX,AL + + INC SI + INC CX + CMP CL,25 + JL REG_LOOP2 + + // Send GRAPHICS regs + MOV CX,0 +REG_LOOP3: + MOV DX,GRACON_ADDR + MOV AL,CL + OUT DX,AL + + MOV DX,GRACON_ADDR + INC DX + MOV AL,[SI] + OUT DX,AL + + INC SI + INC CX + CMP CL,9 + JL REG_LOOP3 + + MOV DX,STATUS_ADDR + IN AL,DX + + // Send ATTRCON regs + MOV CX,0 +REG_LOOP4: + MOV DX,ATTRCON_ADDR + IN AX,DX + + MOV AL,CL + OUT DX,AL + + MOV AL,[SI] + OUT DX,AL + + INC SI + INC CX + CMP CL,21 + JL REG_LOOP4 + + MOV AL,20H + OUT DX,AL + } +} + +void SetVideoMode(int mode) +{ + Mode.mode = mode; + if (mode == MODE00H) // 40 x 25 x 16 + { + SetMode((unsigned int)&mode00h); + setpalette16(); + ReadBIOSfont(6,16); + + Mode.width = 40; + Mode.height = 25; + Mode.width_bytes = 1000; + Mode.colors = 16; + Mode.attrib = TVU_TEXT; + } + else if (mode == MODE03H) // 80 x 25 x 16 + { + SetMode((unsigned int)&mode03h); + setpalette16(); + ReadBIOSfont(6,16); + + Mode.width = 80; + Mode.height = 25; + Mode.width_bytes = 2000; + Mode.colors = 16; + Mode.attrib = TVU_TEXT; + } + else if (mode == MODE04H) // 320 x 200 x 4 + { + SetMode((unsigned int)&mode04h); + setpalette4(); + + Mode.width = 320; + Mode.height = 200; + Mode.width_bytes = 8192; + Mode.colors = 4; + Mode.attrib = TVU_GRAPHICS; + } + else if (mode == MODE06H) // 640 x 200 x 2 + { + SetMode((unsigned int)&mode06h); + + Mode.width = 640; + Mode.height = 200; + Mode.width_bytes = 8192; + Mode.colors = 2; + Mode.attrib = TVU_GRAPHICS; + } + else if (mode == MODE07H) // 80 x 25 x 2 + { + SetMode((unsigned int)&mode07h); + + Mode.width = 80; + Mode.height = 25; + Mode.width_bytes = 2000; + Mode.colors = 2; + Mode.attrib = TVU_TEXT | TVU_MONOCHROME; + } + else if (mode == MODE0DH) // 320 x 200 x 16 + { + SetMode((unsigned int)&mode0Dh); + setpalette16(); + + Mode.width = 320; + Mode.height = 200; + Mode.width_bytes = 8000; + Mode.colors = 16; + Mode.attrib = TVU_GRAPHICS | TVU_PLANAR; + } + else if (mode == MODE0EH) // 640 x 200 x 16 + { + SetMode((unsigned int)&mode0Eh); + setpalette16(); + + Mode.width = 640; + Mode.height = 200; + Mode.width_bytes = 16000; + Mode.colors = 16; + Mode.attrib = TVU_GRAPHICS | TVU_PLANAR; + } + else if (mode == MODE0FH) // 640 x 350 x 2 + { + SetMode((unsigned int)&mode0Fh); + + Mode.width = 640; + Mode.height = 350; + Mode.width_bytes = 28000; + Mode.colors = 2; + Mode.attrib = TVU_GRAPHICS | TVU_MONOCHROME; + } + else if (mode == MODE10H) // 640 x 350 x 16 + { + SetMode((unsigned int)&mode10h); + setpalette16(); + + Mode.width = 640; + Mode.height = 350; + Mode.width_bytes = 28000; + Mode.colors = 16; + Mode.attrib = TVU_GRAPHICS | TVU_PLANAR; + } + else if (mode == MODE11H) // 640 x 480 x 2 + { + SetMode((unsigned int)&mode11h); + + Mode.width = 640; + Mode.height = 480; + Mode.width_bytes = 38400u; + Mode.colors = 2; + Mode.attrib = TVU_GRAPHICS | TVU_PLANAR; + } + else if (mode == MODE12H) // 640 x 480 x 16 + { + SetMode((unsigned int)&mode12h); + setpalette16(); + + Mode.width = 640; + Mode.height = 480; + Mode.width_bytes = 38400u; + Mode.colors = 16; + Mode.attrib = TVU_GRAPHICS | TVU_PLANAR; + } + else if (mode == MODE13H) // 320 x 200 x 256 + { + SetMode((unsigned int)&mode13h); + setpalette256(); + + Mode.width = 320; + Mode.height = 200; + Mode.width_bytes = 64000u; + Mode.colors = 256; + Mode.attrib = TVU_GRAPHICS; + } + else if (mode == CHAIN4) // unchained 320 x 200 x 256 + { + SetMode((unsigned int)&modeC4); + setpalette256(); + + Mode.width = 320; + Mode.height = 200; + Mode.width_bytes = 16000; + Mode.colors = 256; + Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED; + } + else if (mode == MODE_X) // unchained 320 x 240 x 256 + { + SetMode((unsigned int)&modeC4); + + outportb(MISC_ADDR,0xE3); + // turn off write protect + outport(CRTC_ADDR,0x2C11); + // vertical total + outport(CRTC_ADDR,0x0D06); + // overflow register + outport(CRTC_ADDR,0x3E07); + // vertical retrace start + outport(CRTC_ADDR,0xEA10); + // vertical retrace end AND wr.prot + outport(CRTC_ADDR,0xAC11); + // vertical display enable end + outport(CRTC_ADDR,0xDF12); + // start vertical blanking + outport(CRTC_ADDR,0xE715); + // end vertical blanking + outport(CRTC_ADDR,0x0616); + + setpalette256(); + Mode.width = 320; + Mode.height = 240; + Mode.width_bytes = 19200; + Mode.colors = 256; + Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED; + } + else if (mode == MODE_A) // unchained 320 x 350 x 256 + { + SetMode((unsigned int)&modeC4); + + // turn off double scanning mode + outportb(CRTC_ADDR,9); + outportb(CRTC_ADDR+1,inportb(CRTC_ADDR+1) & ~0x1F); + // change the vertical resolution flags to 350 + outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0x80); + // turn off write protect + outport(CRTC_ADDR,0x2C11); + // vertical total + outport(CRTC_ADDR,0xBF06); + // overflow register + outport(CRTC_ADDR,0x1F07); + // vertical retrace start + outport(CRTC_ADDR,0x8310); + // vertical retrace end AND wr.prot + outport(CRTC_ADDR,0x8511); + // vertical display enable end + outport(CRTC_ADDR,0x5D12); + // start vertical blanking + outport(CRTC_ADDR,0x6315); + // end vertical blanking + outport(CRTC_ADDR,0xBA16); + + setpalette256(); + Mode.width = 320; + Mode.height = 350; + Mode.width_bytes = 28000u; + Mode.colors = 256; + Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED; + } + else if (mode == MODE_B) // unchained 320 x 400 x 256 + { + SetMode((unsigned int)&modeC4); + // turn off double scanning mode + outportb(CRTC_ADDR,9); + outportb(CRTC_ADDR+1,inportb(CRTC_ADDR+1) & ~0x1F); + // change the vertical resolution flags to 400 + outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0x40); + + setpalette256(); + Mode.width = 320; + Mode.height = 400; + Mode.width_bytes = 32000; + Mode.colors = 256; + Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED; + } + else if (mode == MODE_C) // unchained 320 x 480 x 256 + { + SetMode((unsigned int)&modeC4); + + // turn off double scanning mode + outportb(CRTC_ADDR,9); + outportb(CRTC_ADDR+1,inportb(CRTC_ADDR+1) & ~0x1F); + // change the vertical resolution flags to 480 + outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0xC0); + // turn off write protect + outport(CRTC_ADDR,0x2C11); + // vertical total + outport(CRTC_ADDR,0x0D06); + // overflow register + outport(CRTC_ADDR,0x3E07); + // vertical retrace start + outport(CRTC_ADDR,0xEA10); + // vertical retrace end AND wr.prot + outport(CRTC_ADDR,0xAC11); + // vertical display enable end + outport(CRTC_ADDR,0xDF12); + // start vertical blanking + outport(CRTC_ADDR,0xE715); + // end vertical blanking + outport(CRTC_ADDR,0x0616); + + setpalette256(); + Mode.width = 320; + Mode.height = 480; + Mode.width_bytes = 38400u; + Mode.colors = 256; + Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED; + } + else if (mode == MODE_D) // unchained 360 x 200 x 256 + { + SetMode((unsigned int)&mode13h); + + // Turn off Chain 4 + outport(SEQ_ADDR,0x0604); + // Activate a synchronous reset + outport(SEQ_ADDR,0x0100); + // Select 28 mhz pixel clock + outportb(MISC_ADDR,0xE7); + // Release synchronous reset + outport(SEQ_ADDR,0x0300); + + // change the vertical resolution flags to 400 + outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0x40); + + // turn off write protect + outport(CRTC_ADDR,0x2C11); + + outport(CRTC_ADDR,0x6B00); + outport(CRTC_ADDR,0x5901); + outport(CRTC_ADDR,0x5A02); + outport(CRTC_ADDR,0x8E03); + outport(CRTC_ADDR,0x5E04); + outport(CRTC_ADDR,0x8A05); + outport(CRTC_ADDR,0x0008); + outport(CRTC_ADDR,0xC009); + outport(CRTC_ADDR,0x000A); + outport(CRTC_ADDR,0x000B); + outport(CRTC_ADDR,0x000C); + outport(CRTC_ADDR,0x000D); + outport(CRTC_ADDR,0x000E); + outport(CRTC_ADDR,0x000F); + outport(CRTC_ADDR,0xAC11); + outport(CRTC_ADDR,0x2D13); + outport(CRTC_ADDR,0x0014); + outport(CRTC_ADDR,0xE317); + outport(CRTC_ADDR,0xFF18); + + setpalette256(); + Mode.width = 360; + Mode.height = 200; + Mode.width_bytes = 18000u; + Mode.colors = 256; + Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED; + } + else if (mode == MODE_E) // unchained 360 x 240 x 256 + { + SetMode((unsigned int)&mode13h); + + // Turn off Chain 4 + outport(SEQ_ADDR,0x0604); + // Activate a synchronous reset + outport(SEQ_ADDR,0x0100); + // Select 28 mhz pixel clock + outportb(MISC_ADDR,0xE7); + // Release synchronous reset + outport(SEQ_ADDR,0x0300); + + // change the vertical resolution flags to 480 + outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0xC0); + + // turn off write protect + outport(CRTC_ADDR,0x2C11); + + outport(CRTC_ADDR,0x6B00); + outport(CRTC_ADDR,0x5901); + outport(CRTC_ADDR,0x5A02); + outport(CRTC_ADDR,0x8E03); + outport(CRTC_ADDR,0x5E04); + outport(CRTC_ADDR,0x8A05); + outport(CRTC_ADDR,0x0D06); + outport(CRTC_ADDR,0x3E07); + outport(CRTC_ADDR,0x0008); + outport(CRTC_ADDR,0xC009); + outport(CRTC_ADDR,0x000A); + outport(CRTC_ADDR,0x000B); + outport(CRTC_ADDR,0x000C); + outport(CRTC_ADDR,0x000D); + outport(CRTC_ADDR,0x000E); + outport(CRTC_ADDR,0x000F); + outport(CRTC_ADDR,0xEA10); + outport(CRTC_ADDR,0xAC11); + outport(CRTC_ADDR,0xDF12); + outport(CRTC_ADDR,0x2D13); + outport(CRTC_ADDR,0x0014); + outport(CRTC_ADDR,0xE715); + outport(CRTC_ADDR,0x0616); + outport(CRTC_ADDR,0xE317); + outport(CRTC_ADDR,0xFF18); + + setpalette256(); + Mode.width = 360; + Mode.height = 240; + Mode.width_bytes = 21600; + Mode.colors = 256; + Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED; + } + else if (mode == MODE_F) // unchained 360 x 350 x 256 + { + SetMode((unsigned int)&mode13h); + + // Turn off Chain 4 + outport(SEQ_ADDR,0x0604); + // Activate a synchronous reset + outport(SEQ_ADDR,0x0100); + // Select 28 mhz pixel clock + outportb(MISC_ADDR,0xE7); + // Release synchronous reset + outport(SEQ_ADDR,0x0300); + + // change the vertical resolution flags to 350 + outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0x80); + + // turn off write protect + outport(CRTC_ADDR,0x2C11); + + outport(CRTC_ADDR,0x6B00); + outport(CRTC_ADDR,0x5901); + outport(CRTC_ADDR,0x5A02); + outport(CRTC_ADDR,0x8E03); + outport(CRTC_ADDR,0x5E04); + outport(CRTC_ADDR,0x8A05); + outport(CRTC_ADDR,0xBF06); + outport(CRTC_ADDR,0x1F07); + outport(CRTC_ADDR,0x0008); + outport(CRTC_ADDR,0x4009); + outport(CRTC_ADDR,0x000A); + outport(CRTC_ADDR,0x000B); + outport(CRTC_ADDR,0x000C); + outport(CRTC_ADDR,0x000D); + outport(CRTC_ADDR,0x000E); + outport(CRTC_ADDR,0x000F); + outport(CRTC_ADDR,0x8310); + outport(CRTC_ADDR,0x8511); + outport(CRTC_ADDR,0x5D12); + outport(CRTC_ADDR,0x2D13); + outport(CRTC_ADDR,0x0014); + outport(CRTC_ADDR,0x6315); + outport(CRTC_ADDR,0xBA16); + outport(CRTC_ADDR,0xE317); + outport(CRTC_ADDR,0xFF18); + + setpalette256(); + Mode.width = 360; + Mode.height = 350; + Mode.width_bytes = 31500; + Mode.colors = 256; + Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED; + } + else if (mode == MODE_G) // unchained 360 x 400 x 256 + { + SetMode((unsigned int)&mode13h); + + // Turn off Chain 4 + outport(SEQ_ADDR,0x0604); + // Activate a synchronous reset + outport(SEQ_ADDR,0x0100); + // Select 28 mhz pixel clock + outportb(MISC_ADDR,0xE7); + // Release synchronous reset + outport(SEQ_ADDR,0x0300); + + // change the vertical resolution flags to 400 + outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0x40); + + // turn off write protect + outport(CRTC_ADDR,0x2C11); + + outport(CRTC_ADDR,0x6B00); + outport(CRTC_ADDR,0x5901); + outport(CRTC_ADDR,0x5A02); + outport(CRTC_ADDR,0x8E03); + outport(CRTC_ADDR,0x5E04); + outport(CRTC_ADDR,0x8A05); + outport(CRTC_ADDR,0x0008); + outport(CRTC_ADDR,0x4009); + outport(CRTC_ADDR,0x000A); + outport(CRTC_ADDR,0x000B); + outport(CRTC_ADDR,0x000C); + outport(CRTC_ADDR,0x000D); + outport(CRTC_ADDR,0x000E); + outport(CRTC_ADDR,0x000F); + outport(CRTC_ADDR,0xAC11); + outport(CRTC_ADDR,0x2D13); + outport(CRTC_ADDR,0x0014); + outport(CRTC_ADDR,0xE317); + outport(CRTC_ADDR,0xFF18); + + setpalette256(); + Mode.width = 360; + Mode.height = 400; + Mode.width_bytes = 36000u; + Mode.colors = 256; + Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED; + } + else if (mode == MODE_H) // unchained 360 x 480 x 256 + { + SetMode((unsigned int)&mode13h); + + // Turn off Chain 4 + outport(SEQ_ADDR,0x0604); + // Activate a synchronous reset + outport(SEQ_ADDR,0x0100); + // Select 28 mhz pixel clock + outportb(MISC_ADDR,0xE7); + // Release synchronous reset + outport(SEQ_ADDR,0x0300); + + // change the vertical resolution flags to 480 + outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0xC0); + + // turn off write protect + outport(CRTC_ADDR,0x2C11); + + outport(CRTC_ADDR,0x6B00); + outport(CRTC_ADDR,0x5901); + outport(CRTC_ADDR,0x5A02); + outport(CRTC_ADDR,0x8E03); + outport(CRTC_ADDR,0x5E04); + outport(CRTC_ADDR,0x8A05); + outport(CRTC_ADDR,0x0D06); + outport(CRTC_ADDR,0x3E07); + outport(CRTC_ADDR,0x0008); + outport(CRTC_ADDR,0x4009); + outport(CRTC_ADDR,0x000A); + outport(CRTC_ADDR,0x000B); + outport(CRTC_ADDR,0x000C); + outport(CRTC_ADDR,0x000D); + outport(CRTC_ADDR,0x000E); + outport(CRTC_ADDR,0x000F); + outport(CRTC_ADDR,0xEA10); + outport(CRTC_ADDR,0xAC11); + outport(CRTC_ADDR,0xDF12); + outport(CRTC_ADDR,0x2D13); + outport(CRTC_ADDR,0x0014); + outport(CRTC_ADDR,0xE715); + outport(CRTC_ADDR,0x0616); + outport(CRTC_ADDR,0xE317); + outport(CRTC_ADDR,0xFF18); + + setpalette256(); + Mode.width = 360; + Mode.height = 480; + Mode.width_bytes = 43200u; + Mode.colors = 256; + Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED; + } + else if (mode == MODE_I) // 640 x 400 x 16 + { + SetMode((unsigned int)&mode10h); + asm { + + MOV DX,03CCH + IN AL,DX + AND AL,03FH + OR AL,40H + + MOV DX,03C2H + OUT DX,AL + + MOV DX,CRTC_ADDR + MOV AX,9C10H + OUT DX,AX + + MOV AX,8311H + OUT DX,AX + + MOV AX,8F12H + OUT DX,AX + + MOV AX,9615H + OUT DX,AX + + MOV AX,0B916H + OUT DX,AX + } + setpalette16(); + Mode.width = 640; + Mode.height = 400; + Mode.width_bytes = 32000; + Mode.colors = 16; + Mode.attrib = TVU_GRAPHICS | TVU_PLANAR; + } + else if (mode == MODE_J) // 80 x 43 x 16 + { + SetMode((unsigned int)&modeJ); + ReadBIOSfont(3,8); + + Mode.width = 80; + Mode.height = 43; + Mode.width_bytes = 3440; + Mode.colors = 16; + Mode.attrib = TVU_TEXT; + } + else if (mode == MODE_K) // 80 x 50 x 16 + { + SetMode((unsigned int)&modeK); + ReadBIOSfont(3,8); + + Mode.width = 80; + Mode.height = 50; + Mode.width_bytes = 4000; + Mode.colors = 16; + Mode.attrib = TVU_TEXT; + } + else if (mode == MODE_L) // 40 x 43 x 16 + { + SetMode((unsigned int)&modeL); + ReadBIOSfont(3,8); + + Mode.width = 40; + Mode.height = 43; + Mode.width_bytes = 4000; + Mode.colors = 16; + Mode.attrib = TVU_TEXT; + } + else if (mode == MODE_M) // 40 x 50 x 16 + { + SetMode((unsigned int)&modeM); + ReadBIOSfont(3,8); + + Mode.width = 40; + Mode.height = 50; + Mode.width_bytes = 4000; + Mode.colors = 16; + Mode.attrib = TVU_TEXT; + } +} + +void setpal(int color, char r, char g, char b) +{ + asm { + // Send color + MOV AX,color + MOV DX,03C8H + OUT DX,AL + + // Write R value + MOV DX,03C9H + MOV AL,r + OUT DX,AL + + // Write G value + MOV DX,03C9H + MOV AL,g + OUT DX,AL + + // Write B value + MOV DX,03C9H + MOV AL,b + OUT DX,AL + } +} + +void setpalette4() +{ + setpal( 0, 0, 0, 0); + setpal( 1, 0, 42, 42); + setpal( 2, 42, 0, 42); + setpal( 3, 63, 63, 63); +} + +void setpalette16() +{ + int j = 0; + for (int i = 0; i < 48; i+=3) + { + setpal(j, Pal[i], Pal[i+1], Pal[i+2]); + j++; + } +} + +void setpalette256() +{ + int j = 0; + for (int i = 0; i < 768; i+=3) + { + setpal(j, Pal[i], Pal[i+1], Pal[i+2]); + j++; + } +} diff --git a/16/tauron/C_SRC/MODES_C.INC b/16/tauron/C_SRC/MODES_C.INC new file mode 100755 index 00000000..585af88d --- /dev/null +++ b/16/tauron/C_SRC/MODES_C.INC @@ -0,0 +1,262 @@ +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- -= +//=- Tauron VGA Utilities Version 3.0 -= +//=- Released September 20, 1998 -= +//=- -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +//=- All Rights Reserved. =-= that you put my name some- -= +//=- =-= where in your credits. -= +//=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- I assume no responsibility whatsoever for any effect that this package, -= +//=- the information contained therein or the use thereof has on you, your -= +//=- sanity, computer, spouse, children, pets or anything else related to -= +//=- you or your existance. No warranty is provided nor implied with this -= +//=- source code. -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- VGA register variables for the various videomodes -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +// Same as Mode 01H +unsigned char mode00h[62] = { +// MISC reg, STATUS reg, SEQ regs + 0x67, 0x00, 0x03,0x08,0x03,0x00,0x02, +// CRTC regs +0x2D,0x27,0x28,0x90,0x2B,0xA0,0xBF,0x1F,0x00,0x4F,0x06,0x07,0x00,0x00,0x00, +0x31,0x9C,0x8E,0x8F,0x14,0x1F,0x96,0xB9,0xA3,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x10,0x0E,0x00,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x10,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, +0x0C,0x00,0x0F,0x08,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + + +// Same as Mode 02H +unsigned char mode03h[62] = { +// MISC reg, STATUS reg, SEQ regs + 0x67, 0x00, 0x03,0x00,0x03,0x00,0x02, +// CRTC regs +0x5F,0x4F,0x50,0x82,0x55,0x81,0xBF,0x1F,0x00,0x4F,0x0E,0x0F,0x00,0x00,0x00, +0x00,0x9C,0x0E,0x8F,0x28,0x01,0x96,0xB9,0xA3,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x10,0x0E,0x00,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x10,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, +0x0C,0x00,0x0F,0x08,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +// Same as Mode 05, +unsigned char mode04h[62] = { +// MISC reg, STATUS reg, SEQ regs + 0x63, 0x00, 0x03,0x09,0x03,0x00,0x02, +// CRTC regs +0x2D,0x27,0x28,0x90,0x2B,0x80,0x0BF,0x1F,0x00,0x0C1,0x00,0x00,0x00,0x00,0x00, +0x31,0x9C,0x8E,0x8F,0x14,0x00,0x96,0xB9,0x0A2,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x30,0x0F,0x00,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x3B,0x3D,0x3F,0x02,0x04,0x06,0x07,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, +0x01,0x00,0x03,0x00,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char mode06h[62] = { +// MISC reg, STATUS reg, SEQ regs + 0x63, 0x00, 0x03,0x01,0x01,0x00,0x06, +// CRTC regs +0x5F,0x4F,0x50,0x82,0x54,0x80,0x0BF,0x1F,0x00,0x0C1,0x00,0x00,0x00,0x00,0x00, +0x00,0x9C,0x8E,0x8F,0x28,0x00,0x96,0xB9,0x0C2,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0x00,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F, +0x01,0x00,0x01,0x00,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char mode07h[62] = { +// MISC reg, STATUS reg, SEQ regs + 0x066, 0x00, 0x03,0x00,0x03,0x00,0x02, +// CRTC regs +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x10,0x0A,0x00,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x10,0x18,0x18,0x18,0x18,0x18,0x18,0x18, +0x0E,0x00,0x0F,0x00,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char mode0Dh[62] = { +// MISC reg, STATUS reg, SEQ regs + 0x063, 0x00, 0x03,0x09,0x0F,0x00,0x06, +// CRTC regs +0x2D,0x27,0x28,0x90,0x2B,0x80,0x0BF,0x1F,0x00,0xC0,0x00,0x00,0x00,0x00,0x00, +0x31,0x9C,0x8E,0x8F,0x14,0x00,0x96,0xB9,0xE3,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x10,0x05,0x00,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x10,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, +0x01,0x00,0x0F,0x00,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char mode0Eh[62] = { +// MISC reg, STATUS reg, SEQ regs + 0x63, 0x00, 0x03,0x01,0x0F,0x00,0x06, +// CRTC regs +0x5F,0x4F,0x50,0x82,0x54,0x80,0x0BF,0x1F,0x00,0xC0,0x00,0x00,0x00,0x00,0x00, +0x59,0x9C,0x8E,0x8F,0x28,0x00,0x96,0xB9,0xE3,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0F,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x08,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, +0x01,0x00,0x0F,0x00,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char mode0Fh[62] = { +// MISC reg, STATUS reg, SEQ regs + 0x0A2, 0x00, 0x03,0x01,0x0F,0x00,0x06, +// CRTC regs +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x05,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x08,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x18,0x00,0x00, +0x0B,0x00,0x05,0x00,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char mode10h[62] = { +// MISC reg, STATUS reg, SEQ regs + 0x0A3, 0x00, 0x03,0x01,0x0F,0x00,0x06, +// CRTC regs +0x5F,0x4F,0x50,0x82,0x54,0x80,0x0BF,0x1F,0x00,0x40,0x00,0x00,0x00,0x00,0x00, +0x00,0x83,0x85,0x5D,0x28,0x0F,0x63,0x0BA,0xE3,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0F,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, +0x01,0x00,0x0F,0x00,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char mode11h[62] = { +// MISC reg, STATUS reg, SEQ regs + 0xE3, 0x00, 0x03,0x01,0x0F,0x00,0x06, +// CRTC regs +0x5F,0x4F,0x50,0x82,0x54,0x80,0x0B,0x3E,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x59, +0xEA,0x8C,0x0DF,0x28,0x0F,0x0E7,0x004,0x0C3,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x05,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x08,0x3F,0x3F,0x18,0x18,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F, +0x01,0x00,0x0F,0x00,0x00 + +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char mode12h[62] = { +// MISC reg, STATUS reg, SEQ regs + 0xE3, 0x00, 0x03,0x01,0x0F,0x00,0x06, +// CRTC regs +0x5F,0x4F,0x50,0x82,0x54,0x80,0x0B,0x3E,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x59, +0xEA,0x8C,0x0DF,0x28,0x00,0x0E7,0x04,0xE3,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0F,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, +0x01,0x00,0x0F,0x00,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char mode13h[62] = { +// MISC reg, STATUS reg, SEQ regs + 0x63, 0x00, 0x03,0x01,0x0F,0x00,0x0E, +// CRTC regs +0x5F,0x4F,0x50,0x82,0x54,0x80,0x0BF,0x1F,0x00,0x41,0x00,0x00,0x00,0x00,0x00, +0x00,0x9C,0x0E,0x8F,0x28,0x40,0x96,0xB9,0x0A3,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, +0x41,0x00,0x0F,0x00,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char modeC4[62] = { +// MISC reg, STATUS reg, SEQ regs + 0x63, 0x00, 0x03,0x01,0x0F,0x00,0x06, +// CRTC regs +0x5F,0x4F,0x50,0x82,0x54,0x80,0x0BF,0x1F,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00, +0x9C,0x0E,0x8F,0x28,0x00,0x96,0xB9,0xE3,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, +0x41,0x00,0x0F,0x00,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char modeJ[62] = { +// MISC reg, STATUS reg, SEQ regs + 0xa3, 0x00, 0x03,0x01,0x03,0x00,0x02, +// CRTC regs +0x5F,0x4F,0x50,0x82,0x55,0x81,0xBF,0x1F,0x00,0x47,0x0E,0x0F,0x00,0x00,0x00, +0x00,0x83,0x85,0x57,0x28,0x1F,0x60,0xB8,0xA3,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x10,0x0E,0x00,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x10,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, +0x0C,0x00,0x0F,0x00,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char modeK[62] = { +// MISC reg, STATUS reg, SEQ regs + 0x63, 0x00, 0x03,0x01,0x03,0x00,0x02, +// CRTC regs +0x5F,0x4F,0x50,0x82,0x55,0x81,0xBF,0x1F,0x00,0x47,0x0E,0x0F,0x00,0x00,0x00, +0x00,0x9C,0x8E,0x8F,0x28,0x1F,0x96,0xB9,0xA3,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x10,0x0E,0x00,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x10,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, +0x0C,0x00,0x0F,0x00,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char modeL[62] = { +// MISC reg, STATUS reg, SEQ regs +0x67,0x00,0x03,0x08,0x03,0x00,0x02, +// CRTC regs +0x2D,0x27,0x28,0x90,0x2B,0x0A0,0x0BF,0x1F,0x00,0x47,0x06,0x07,0x00,0x00,0x00, +0x31,0x83,0x85,0x57,0x14,0x1F,0x60,0x0B8,0x0A3,0x0FF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x10,0x0E,0x00,0x0FF, +// ATTRIBUTE CONTROLLER regs +0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x10,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, +0x0C,0x00,0x0F,0x00,0x00, +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + + +unsigned char modeM[62] = { +// MISC reg, STATUS reg, SEQ regs +0x67,0x00,0x03,0x08,0x03,0x00,0x02, +// CRTC regs +0x2D,0x27,0x28,0x90,0x2B,0x0A0,0x0BF,0x1F,0x00,0x47,0x06,0x07,0x00,0x00,0x00,0x31, +0x9C,0x8E,0x8F,0x14,0x1F,0x96,0x0B9,0x0A3,0x0FF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x10,0x0E,0x00,0x0FF, +// ATTRIBUTE CONTROLLER regs +0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, +0x0C,0x00,0x0F,0x00,0x00, +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= diff --git a/16/tauron/C_SRC/PALETTE.INC b/16/tauron/C_SRC/PALETTE.INC new file mode 100755 index 00000000..a89ce796 --- /dev/null +++ b/16/tauron/C_SRC/PALETTE.INC @@ -0,0 +1,62 @@ +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- -= +//=- Tauron VGA Utilities Version 3.0 -= +//=- Released September 20, 1998 -= +//=- -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +//=- All Rights Reserved. =-= that you put my name some- -= +//=- =-= where in your credits. -= +//=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- I assume no responsibility whatsoever for any effect that this package, -= +//=- the information contained therein or the use thereof has on you, your -= +//=- sanity, computer, spouse, children, pets or anything else related to -= +//=- you or your existance. No warranty is provided nor implied with this -= +//=- source code. -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +char Pal[768] = { + 0, 0, 0, 0, 0, 42, 0, 42, 0, 0, 42, 42, 42, 0, 0, 42, 0, 42, +42, 21, 0, 42, 42, 42, 21, 21, 21, 21, 21, 63, 21, 63, 21, 21, 63, 63, +63, 21, 21, 63, 21, 63, 63, 63, 21, 63, 63, 63, 0, 0, 0, 5, 5, 5, + 8, 8, 8, 11, 11, 11, 14, 14, 14, 17, 17, 17, 20, 20, 20, 24, 24, 24, +28, 28, 28, 32, 32, 32, 36, 36, 36, 40, 40, 40, 45, 45, 45, 50, 50, 50, +56, 56, 56, 63, 63, 63, 0, 0, 63, 16, 0, 63, 31, 0, 63, 47, 0, 63, +63, 0, 63, 63, 0, 47, 63, 0, 31, 63, 0, 16, 63, 0, 0, 63, 16, 0, +63, 31, 0, 63, 47, 0, 63, 63, 0, 47, 63, 0, 31, 63, 0, 16, 63, 0, + 0, 63, 0, 0, 63, 16, 0, 63, 31, 0, 63, 47, 0, 63, 63, 0, 47, 63, + 0, 31, 63, 0, 16, 63, 31, 31, 63, 39, 31, 63, 47, 31, 63, 55, 31, 63, +63, 31, 63, 63, 31, 55, 63, 31, 47, 63, 31, 39, 63, 31, 31, 63, 39, 31, +63, 47, 31, 63, 55, 31, 63, 63, 31, 55, 63, 31, 47, 63, 31, 39, 63, 31, +31, 63, 31, 31, 63, 39, 31, 63, 47, 31, 63, 55, 31, 63, 63, 31, 55, 63, +31, 47, 63, 31, 39, 63, 45, 45, 63, 49, 45, 63, 54, 45, 63, 58, 45, 63, +63, 45, 63, 63, 45, 58, 63, 45, 54, 63, 45, 49, 63, 45, 45, 63, 49, 45, +63, 54, 45, 63, 58, 45, 63, 63, 45, 58, 63, 45, 54, 63, 45, 49, 63, 45, +45, 63, 45, 45, 63, 49, 45, 63, 54, 45, 63, 58, 45, 63, 63, 45, 58, 63, +45, 54, 63, 45, 49, 63, 0, 0, 28, 7, 0, 28, 14, 0, 28, 21, 0, 28, +28, 0, 28, 28, 0, 21, 28, 0, 14, 28, 0, 7, 28, 0, 0, 28, 7, 0, +28, 14, 0, 28, 21, 0, 28, 28, 0, 21, 28, 0, 14, 28, 0, 7, 28, 0, + 0, 28, 0, 0, 28, 7, 0, 28, 14, 0, 28, 21, 0, 28, 28, 0, 21, 28, + 0, 14, 28, 0, 7, 28, 14, 14, 28, 17, 14, 28, 21, 14, 28, 24, 14, 28, +28, 14, 28, 28, 14, 24, 28, 14, 21, 28, 14, 17, 28, 14, 14, 28, 17, 14, +28, 21, 14, 28, 24, 14, 28, 28, 14, 24, 28, 14, 21, 28, 14, 17, 28, 14, +14, 28, 14, 14, 28, 17, 14, 28, 21, 14, 28, 24, 14, 28, 28, 14, 24, 28, +14, 21, 28, 14, 17, 28, 20, 20, 28, 22, 20, 28, 24, 20, 28, 26, 20, 28, +28, 20, 28, 28, 20, 26, 28, 20, 24, 28, 20, 22, 28, 20, 20, 28, 22, 20, +28, 24, 20, 28, 26, 20, 28, 28, 20, 26, 28, 20, 24, 28, 20, 22, 28, 20, +20, 28, 20, 20, 28, 22, 20, 28, 24, 20, 28, 26, 20, 28, 28, 20, 26, 28, +20, 24, 28, 20, 22, 28, 0, 0, 16, 4, 0, 16, 8, 0, 16, 12, 0, 16, +16, 0, 16, 16, 0, 12, 16, 0, 8, 16, 0, 4, 16, 0, 0, 16, 4, 0, +16, 8, 0, 16, 12, 0, 16, 16, 0, 12, 16, 0, 8, 16, 0, 4, 16, 0, + 0, 16, 0, 0, 16, 4, 0, 16, 8, 0, 16, 12, 0, 16, 16, 0, 12, 16, + 0, 8, 16, 0, 4, 16, 8, 8, 16, 10, 8, 16, 12, 8, 16, 14, 8, 16, +16, 8, 16, 16, 8, 14, 16, 8, 12, 16, 8, 10, 16, 8, 8, 16, 10, 8, +16, 12, 8, 16, 14, 8, 16, 16, 8, 14, 16, 8, 12, 16, 8, 10, 16, 8, + 8, 16, 8, 8, 16, 10, 8, 16, 12, 8, 16, 14, 8, 16, 16, 8, 14, 16, + 8, 12, 16, 8, 10, 16, 11, 11, 16, 12, 11, 16, 13, 11, 16, 15, 11, 16, +16, 11, 16, 16, 11, 15, 16, 11, 13, 16, 11, 12, 16, 11, 11, 16, 12, 11, +16, 13, 11, 16, 15, 11, 16, 16, 11, 15, 16, 11, 13, 16, 11, 12, 16, 11, +11, 16, 11, 11, 16, 12, 11, 16, 13, 11, 16, 15, 11, 16, 16, 11, 15, 16, +11, 13, 16, 11, 12, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 63, 63 +}; diff --git a/16/tauron/C_SRC/TAURON.H b/16/tauron/C_SRC/TAURON.H new file mode 100755 index 00000000..f14f3120 --- /dev/null +++ b/16/tauron/C_SRC/TAURON.H @@ -0,0 +1,105 @@ +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- -= +//=- Tauron VGA Utilities Version 3.0 -= +//=- Released September 20, 1998 -= +//=- -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +//=- All Rights Reserved. =-= that you put my name some- -= +//=- =-= where in your credits. -= +//=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- I assume no responsibility whatsoever for any effect that this package, -= +//=- the information contained therein or the use thereof has on you, your -= +//=- sanity, computer, spouse, children, pets or anything else related to -= +//=- you or your existance. No warranty is provided nor implied with this -= +//=- source code. -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +#ifndef __TAURON_H__ +#define __TAURON_H__ + +// VGA register port addresses +#define ATTRCON_ADDR 0x03C0 +#define MISC_ADDR 0x03C2 +#define VGAENABLE_ADDR 0x03C3 +#define SEQ_ADDR 0x03C4 +#define GRACON_ADDR 0x03CE +#define CRTC_ADDR 0x03D4 +#define STATUS_ADDR 0x03DA + +// Video mode numbers +#define MODE00H 0x00 +#define MODE01H 0x00 +#define MODE02H 0x03 +#define MODE03H 0x03 +#define MODE04H 0x04 +#define MODE05H 0x05 +#define MODE06H 0x06 +#define MODE07H 0x07 +#define MODE0DH 0x0D +#define MODE0EH 0x0E +#define MODE0FH 0x0F +#define MODE10H 0x10 +#define MODE11H 0x11 +#define MODE12H 0x12 +#define MODE13H 0x13 +#define CHAIN4 0x14 +#define MODE_X 0x15 +#define MODE_A 0x16 +#define MODE_B 0x17 +#define MODE_C 0x18 +#define MODE_D 0x19 +#define MODE_E 0x1A +#define MODE_F 0x1B +#define MODE_G 0x1C +#define MODE_H 0x1D +#define MODE_I 0x1E +#define MODE_J 0x1F +#define MODE_K 0x20 +#define MODE_L 0x21 +#define MODE_M 0x22 + +// Keypresses +#define Escape 0x001b + +// Videomode attributes +#define TVU_TEXT 0x0001 +#define TVU_GRAPHICS 0x0002 +#define TVU_MONOCHROME 0x0004 +#define TVU_PLANAR 0x0008 +#define TVU_UNCHAINED 0x0010 + +// Videomode Info Structure +struct Vmode { + int mode; // Videomode Number + int width; // Width in pixels + int height; // Height in pixels + unsigned int width_bytes; // Number of bytes per screen + int colors; // Number of colors + int attrib; // Videomode attributes +}; + +extern Vmode Mode; + +// MODES.CPP Function Prototypes +void SetVideoMode(int mode); +void ReadBIOSfont(int fontnum, int bytesperchar); +void SetMode(unsigned int regs); +void setpal(int color, char r, char g, char b); + +// CLEAR.CPP Function Prototypes +void TextClear(char attrib); +void PlanarClear(char Color); +void UnchainedClear(char Color); +void Clear13H(char color); +void Clear04H(); +void Clear06H(); +void Clear0DH(char color); + +// TESTS.CPP Function Prototypes +void ModeTest(); +void TextTest(); + +// DUAL.CPP Function Prototypes +void DualTest(); + +#endif \ No newline at end of file diff --git a/16/tauron/C_SRC/TESTS.CPP b/16/tauron/C_SRC/TESTS.CPP new file mode 100755 index 00000000..e89084fd --- /dev/null +++ b/16/tauron/C_SRC/TESTS.CPP @@ -0,0 +1,376 @@ +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- -= +//=- Tauron VGA Utilities Version 3.0 -= +//=- Released September 20, 1998 -= +//=- -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +//=- All Rights Reserved. =-= that you put my name some- -= +//=- =-= where in your credits. -= +//=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- I assume no responsibility whatsoever for any effect that this package, -= +//=- the information contained therein or the use thereof has on you, your -= +//=- sanity, computer, spouse, children, pets or anything else related to -= +//=- you or your existance. No warranty is provided nor implied with this -= +//=- source code. -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +#include +#include +#include +#include "tauron.h" +#define ABS(a) ((a < 0) ? -a : a) +#define SGN(a) ((a < 0) ? -1 : 1) + +void Pixel13H(int x, int y, char color) +{ + int width = Mode.width; + asm { + MOV AX,0A000H // video memory segment number + MOV ES,AX // place it in es + + MOV DX,03C4H + MOV AL,2 + OUT DX,AL + INC DX + + MOV AL,1 + MOV CX,x + AND CX,3 + SHL AL,CL + OUT DX,AL + + XOR DI,DI + +// Calculate the Offset + mov ax,width // width + mul y // (Y * width)) + mov bx,x // (X + (Y * width)) + add ax,bx +// Done! + + ADD DI,AX + mov ah,color // move the Color into ah + mov es:[di],ah // move the value to the screen + } +} + +void pixel(int x, int y, char color) +{ + int width = Mode.width; + if (Mode.mode == MODE13H) + Pixel13H(x,y,color); + else if (Mode.attrib & TVU_UNCHAINED) { + asm { + MOV AX,0A000H // video memory segment number + MOV ES,AX // place it in es + + MOV DX,03C4H + MOV AL,2 + OUT DX,AL + INC DX + + MOV AL,1 + MOV CX,x + AND CX,3 + SHL AL,CL + OUT DX,AL + + XOR DI,DI + +// Calculate the Offset + mov ax,width // width / 4 + SHR AX,2 + mul y // (Y * (width / 4)) + mov bx,x // (X / 4) + (Y * (width / 4)) + shr bx,2 + add ax,bx +// Done! + + ADD DI,AX + mov ah,color // move the Color into ah + mov es:[di],ah // move the value to the screen + }} + else if (Mode.attrib & TVU_PLANAR) + { + asm { + MOV AX,0A000H // video memory segment number + MOV ES,AX // place it in es + + MOV BX,x // X Value + MOV CX,BX + MOV AX,y // Y Value + MOV SI,80 + MUL SI + SHR BX,3 // /8 + ADD AX,BX + MOV DI,AX + + AND CL,7 + XOR CL,7 + MOV AH,1 + + SHL AH,CL + + MOV DX,03CEH + MOV AL,8 + OUT DX,AX + + MOV AL,0 + XCHG ES:[DI],AL + + MOV DX,03C4H + MOV AH,color + MOV AL,2 + OUT DX,AX + + MOV BYTE PTR ES:[DI],0FFh + + MOV AX,0F02H + OUT DX,AX + + MOV DX,03CEH + MOV AX,0FF08h + OUT DX,AX + }} +} + +// This is Bresenham's Line Drawing Algorithm +void drawline(int x1, int y1, int x2, int y2, char col) +{ + int d, x, y, ax, ay, sx, sy, dx, dy; + + dx = x2-x1; + ax = ABS(dx) << 1; + sx = SGN(dx); + dy = y2-y1; + ay = ABS(dy) << 1; + sy = SGN(dy); + + x = x1; + y = y1; + if( ax > ay ) + { + d = ay - (ax >> 1); + while( x != x2 ) + { + pixel( x, y, col ); + if( d >= 0 ) + { + y += sy; + d -= ax; + } + x += sx; + d += ay; + } + } + else + { + d = ax - (ay >> 1); + while( y != y2 ) + { + pixel( x, y, col ); + if( d >= 0 ) + { + x += sx; + d -= ay; + } + y += sy; + d += ax; + } + } + return; +} + +void drawrect(int x1, int y1, int x2, int y2, char color) +{ + drawline(x1,y1,x2,y1,color); + drawline(x1,y2,x2,y2,color); + drawline(x1,y1,x1,y2,color); + drawline(x2,y1,x2,y2+1,color); +} + +void hline(int x1, int x2, int y, char color) +{ + drawline(x1,y,x2,y,color); +} + +void vline(int y1, int y2, int x, char color) +{ + drawline(x,y1,x,y2,color); +} + +void fillrect(int x1, int y1, int x2, int y2, char color) +{ + for (int i = y1; i < y2; i++) + hline(x1,x2,i,color); +} + +void ModeTest() +{ + if (Mode.mode == MODE13H) + { + Clear13H(0); + } + else if (Mode.attrib & TVU_PLANAR) + { + PlanarClear(0); + } + else if (Mode.attrib & TVU_UNCHAINED) + { + UnchainedClear(0); + } + + /* Print mode stats + * + */ + + drawrect(0,0,Mode.width-1,Mode.height-1,15); + for (int i = 50; i < Mode.height; i += 100) + { + hline(0,10,i,15); + hline(0,25,i+50,15); + } + + for (int i = 40; i < Mode.width; i += 80) + { + vline(0,15,i,15); + vline(0,30,i+40,15); + } + + if (Mode.colors == 2) + { + int x,y; + x = Mode.width - 420; + y = Mode.height - 220; + fillrect(x,y,x+200,y+200,0); + x+=200; + fillrect(x,y,x+200,y+200,15); + drawrect(x-200,y,x+200,y+200,15); + } + else if (Mode.colors == 16) + { + int x,y; + x = Mode.width - 522; + y = Mode.height - 135; + for (int i = 0; i < 8; i++) + { + fillrect(x,y,x+64,y+64,i); + x+=64; + } + x = Mode.width - 522; + y += 64; + for (int i = 8; i < 16; i++) + { + fillrect(x,y,x+64,y+64,i); + x+=64; + } + drawrect(x-512,y-64,x,y+64,15); + } + else if (Mode.colors == 256) + { + int x,y,k; + x = Mode.width - 165; + y = Mode.height - 165; + k = 0; + for (int i = 0; i < 16; i++) + { + for (int j = 0; j < 16; j++) + { + fillrect(x,y,x+10,y+10,k); + x+=10; + k++; + } + x = Mode.width - 165; + y += 10; + } + drawrect(Mode.width - 165,Mode.height - 165,Mode.width -5,Mode.height - 5,15); + } +} + +void TextTest() +{ + TextClear(0x1F); + gotoxy(1,1); + if (Mode.mode == MODE00H) + { + // ** NOTE ** the gotoxy's here are a hack so that i could use the + // standard C functions to program this mode. Normally you would just + // calculate the proper address and display the text but since DOS still + // thinks we are in mode 03h (it checks the BIOS), this is necessary. + gotoxy(1,1); + printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n"); + gotoxy(41,1); + printf("³Text Mode: 00H ³\n"); + gotoxy(1,2); + printf("³Width: 40 Height: 25³\n"); + gotoxy(41,2); + printf("³Bytes per screen: 2000³\n"); + gotoxy(1,3); + printf("³Number of pages: 8 ³\n"); + gotoxy(41,3); + printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n"); + } + else if (Mode.mode == MODE03H) + { + printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n"); + printf("³Text Mode: 03H ³\n"); + printf("³Width: 80 Height: 25³\n"); + printf("³Bytes per screen: 4000³\n"); + printf("³Number of pages: 8 ³\n"); + printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n"); + } + else if (Mode.mode == MODE_J) + { + printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n"); + printf("³Text Mode K ³\n"); + printf("³Width: 80 Height: 43³\n"); + printf("³Bytes per screen: 3440³\n"); + printf("³Number of pages: 8 ³\n"); + printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n"); + } + else if (Mode.mode == MODE_K) + { + printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n"); + printf("³Text Mode K ³\n"); + printf("³Width: 80 Height: 50³\n"); + printf("³Bytes per screen: 4000³\n"); + printf("³Number of pages: 8 ³\n"); + printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n"); + } + else if (Mode.mode == MODE_L) + { + // ** NOTE ** the gotoxy's here are a hack so that i could use the + // standard C functions to program this mode. Normally you would just + // calculate the proper address and display the text but since DOS still + // thinks we are in mode 03h (it checks the BIOS), this is necessary. + printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n"); + gotoxy(41,1); + printf("³Text Mode L ³\n"); + gotoxy(1,2); + printf("³Width: 40 Height: 43³\n"); + gotoxy(41,2); + printf("³Bytes per screen: 3440³\n"); + gotoxy(1,3); + printf("³Number of pages: 8 ³\n"); + gotoxy(41,3); + printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n"); + } + else if (Mode.mode == MODE_M) + { + // ** NOTE ** the gotoxy's here are a hack so that i could use the + // standard C functions to program this mode. Normally you would just + // calculate the proper address and display the text but since DOS still + // thinks we are in mode 03h (it checks the BIOS), this is necessary. + printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n"); + gotoxy(41,1); + printf("³Text Mode K ³\n"); + printf("³Width: 40 Height: 50³\n"); + gotoxy(1,2); + gotoxy(41,2); + printf("³Bytes per screen: 4000³\n"); + gotoxy(1,3); + printf("³Number of pages: 8 ³\n"); + gotoxy(41,3); + printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n"); + } +} diff --git a/16/tauron/FEDIT.EXE b/16/tauron/FEDIT.EXE new file mode 100755 index 00000000..98d5c46b Binary files /dev/null and b/16/tauron/FEDIT.EXE differ diff --git a/16/tauron/FEDIT.TXT b/16/tauron/FEDIT.TXT new file mode 100755 index 00000000..42883ec6 --- /dev/null +++ b/16/tauron/FEDIT.TXT @@ -0,0 +1,93 @@ +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- -= +=- Tauron VGA Utilities Version 3.0 -= +=- Released September 20, 1998 -= +=- Font Editor Docs -= +=- -= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +=- All Rights Reserved. =-= that you put my name some- -= +=- =-= where in your credits. -= +=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- I assume no responsibility whatsoever for any effect that this package, -= +=- the information contained therein or the use thereof has on you, your -= +=- sanity, computer, spouse, children, pets or anything else related to -= +=- you or your existance. No warranty is provided nor implied with this -= +=- source code. -= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +A mouse is required to run this program. + +On the main screen is a blue box with a white solid line surrounding it. +This is the MAIN EDIT BOX. Inside of this box is where the font is created. +Left click with the mouse to turn a bit on, right click with the mouse to +turn a bit off. + +In the bottom left corner there is the ACTIONS box. Inside is all of the +options that you have available. **NOTE** The delete this character action +is not operational. + + Update this character -- This action puts the curently edited character + into its final font position. There is a charcter buffer and a character + list. When editing you are editing the buffer. If you don't want to keep + the current changes, then don't hit update character. But if you do want to + keep the changes, then hit update character before hitting anything else. If + you don't the cnages will be lost. + + Display next character -- Hit the left or right arrows to go up or down the + list character list. As you display each character, it is editable and you + must hit update character if you want to save the changes. + + Goto character -- Goes to a certain character in the list. + + Read font from BIOS -- Read in a font from the BIOS which can now be + edited. + + Add a character -- Adds a charcter to the end of the list. No more than + 256 characters can be added. + + Delete a character -- Not operational + + Dump font to FONT.ASM -- This dumps the font to a text file ready to be + assembled with an assembler. + + +Along the bottom of the screen is a menu bar with choices: +Alt+N New This creates a new font with dimensions you specify. + +Alt+O Open Opens a file. Careful using the dialog as it may no be + intuitive at first glance. + +Alt+S Save Savess a file. Careful using the dialog as it may no be + intuitive at first glance. + +Alt+A About Opens a window containing information about the program. + Also has contact information + +Alt+X Exit Exits the program. This does not prompt you to save the file + you are working on so be careful. + + + +Here is the structure for the files saved in binary : +Header 7 bytes 'KINFIRA' +Width Word +Height Word +Number of characters Word +Bytes per character Word + +The rest of the file is the font saved in bitwise form. +For example: This is a partial text dump from an 8x14 font from BIOS +Every byte (8 bits) is one scanline. Notice there are 14 bytes per character +DB 000H,000H,07EH,081H,0A5H,081H,081H,0BDH,099H,081H,07EH,000H,000H,000H + +If this font was say a 16x14 font, every word (16 bits) would be a scanline. +Take the same line as above, represented as a 16 bit wide font: + +DB 000H,000H, <====== First scanline + 000H,000H, <====== Second scanline + 000H,07EH, + 000H,081H, + 000H,0A5H, + and so on... +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= diff --git a/16/tauron/MAIN.EXE b/16/tauron/MAIN.EXE new file mode 100755 index 00000000..f8caffeb Binary files /dev/null and b/16/tauron/MAIN.EXE differ diff --git a/16/tauron/MAINC.EXE b/16/tauron/MAINC.EXE new file mode 100755 index 00000000..2668a905 Binary files /dev/null and b/16/tauron/MAINC.EXE differ diff --git a/16/tauron/README.TXT b/16/tauron/README.TXT new file mode 100755 index 00000000..06cdfc72 --- /dev/null +++ b/16/tauron/README.TXT @@ -0,0 +1,226 @@ +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- -= +=- Tauron VGA Utilities Version 3.0 -= +=- Released September 20, 1998 -= +=- -= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +=- All Rights Reserved. =-= that you put my name some- -= +=- =-= where in your credits. -= +=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- I assume no responsibility whatsoever for any effect that this package, -= +=- the information contained therein or the use thereof has on you, your -= +=- sanity, computer, spouse, children, pets or anything else related to -= +=- you or your existance. No warranty is provided nor implied with this -= +=- source code. -= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +The code in this package will switch video modes on any standard VGA video +card. This is accomplished by programming the VGA Registers directly. + +############################################################################## +#### Mode 07H and Mode 0FH are still being worked on. #### +############################################################################## + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- Files included in this package: -= -= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -= +=- Assembly version compiles with TASM 4.1 and TLINK 7.0 -= +=- C version compiles with Borland C++ 5.01 -= +=- -= +=- README.TXT You are reading it. -= +=- WHATSNEW.TXT Whats new in this version -= +=- USAGE.TXT How to use these routines. Also -= +=- contains a complete list of the -= +=- videomodes supported. -= +=- -= +=- MAIN.EXE Assembly version executable demo -= +=- MAINC.EXE C version executable demo -= +=- FEDIT.EXE Font editor -= +=- FEDIT.TXT Docs for the font editor -= +=- -= +=- ASM_SRC The assembly source directory -= +=- +->MAIN.ASM The Main source file -= +=- +->MODES.ASM The mode switching file -= +=- +->CLEAR.ASM The clear screen routines -= +=- +->TESTS.ASM The videomode tests -= +=- +->DUAL.ASM The dual font setup and test -= +=- +->FONT1.ASM Font 1 for dual font test -= +=- +->FONT2.ASM Font 2 for dual font test -= +=- +->MODES.INC The includes for each videomode -= +=- -= +=- C_SRC The C source directory -= +=- +->MAINC.CPP The main source file -= +=- +->MODES.CPP The mode switching file -= +=- +->CLEAR.CPP The clear screen routines -= +=- +->TESTS.CPP The videomode tests -= +=- +->TAURON.H The main header file -= +=- +->FONT1.H Font 1 for dual font test -= +=- +->FONT2.H Font 2 for dual font test -= +=- +->MODES_C.INC The includes for each videomode -= +=- +->PALETTE.INC The standard palette -= +=- -= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +When running the demo: + + In graphics modes, there is a vertical line every 40 pixels with a longer + vertical line every 80 pixels. + + I have not yet figured out how to program modes 04H, 05H, or 06H. Once + the mode is set, I only clear the mode to a specified color. + + + +The VGA BIOS must be called once at the beginning of the routines so that we +know where the fonts are stored. Once this information is known we no longer +need the BIOS. + +The reason for starting this package is that I am writing an Operating +System. (There are a lot of us out there I know.) I wanted to be able to +program standard VGA cards for my OS. + +This is not a graphics library although there are some clear screen and pixel +routines around. It only sets the video mode. This works in real mode as +well as protected mode. To use it in protected mode you will have to modify +it to suit your own needs. + +The use of the fonts stored in BIOS ROM is now included. We are using what is +already built into the VGA BIOS. + + +E-mail: kinfira@hotmail.com +Homepage: http://home.onestop.net/kinfira/ + +Drop me a line if you find this package useful. + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=-= Credits: =-= =-= +=-=-=-=-=-=-=-=-= =-= +=-= A great book: "Programmer's Guide to the EGA, VGA, and Super VGA =-= +=-= Cards" 3rd Edition Richard F. Ferraro ISBN 0-201-62490-7 =-= +=-= Addison-Wesley Publishing Company. =-= +=-= =-= +=-= A very excellent book: "Programmer's Guide to the EGA & VGA Cards" =-= +=-= Richard F. Ferraro ISBN 0-201-12692-3 =-= +=-= Addison-Wesley Publishing Company. =-= +=-= =-= +=-= Anthony A.J. Williams for writing MODES.ASM, which I used to help =-= +=-= write the Text Mode routine. I specifically used the SetFont =-= +=-= procedure which was instrumental in getting the code for Mode 03h =-= +=-= working. =-= +=-= =-= +=-= Boone (boone@ucsd.edu) for the docs on programming the VGA Registers. =-= +=-= =-= +=-= I also used a really great program called TWEAK to get some of the =-= +=-= values for the non-standard modes. =-= +=-= =-= +=-= Denthor of ASPHYXIA for his trainer on Chain-4 Mode. =-= +=-= =-= +=-= Robert Schmidt for the great doc in PCGPE 1.0 =-= +=-= about Mode X. This helped a great deal. =-= +=-= =-= +=-= Michael Abrash for his super excellent VGA articles on everything, =-= +=-= plus all of his books and public domain code. =-= +=-= =-= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + + +=-=-=-=-=-=-=-=-=-=-=-= +=- Revision History: -= +=-=-=-=-=-=-=-=-=-=-=-= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Version 3.0 released September 20, 1998 + I added 2 new text modes, 40x43 and 40x50. Also I have added a new dual + font test which uses 2 of the VGA's 8 font maps. + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Version 2.1 released July 5, 1998 + The only change is that in the C version, the routine to read fronts from + BIOS is now working. This routine reads a font from the BIOS and places + it in memory for use in a textmode. + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Version 2.0 released June 22, 1998 + I have added more videomodes. I have also written a version of the + source in C. So the routines are available in Assembly and C. I have + also written some documentation for the font editor. So now the only + modes that are not implemented are the monochrome modes which will still + be worked on. + + +Tauron VGA Utilities +Version 1.0 released June 14, 1998 + I changed the name because that other was a little too long. B-> + I have packaged in a small font editor. I have also rearranged the mode + numbers and added a few more video modes that will be implemented. + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Source code for switching videomodes without using BIOS +Version 4.1 released May 28, 1998 + +New in this version: + We call a BIOS function to find out where in memory the fonts are stored. + Since this is different on every cards' VGA BIOS, it is absolutely + necessary so that in text modes, the proper fonts are displayed. + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Version 4.0 released March 5, 1998 + +New in this version: + All VGA Modes are supported! Plus Chain-4 Mode, ModeX, ModeA, + ModeB and ModeC. Modes 07H and 0FH are still being worked on. + + Use of Fonts stored in ROM. + Custom Font data stored in system memory is no longer needed. + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Version 3.0 released January 2, 1998 + Includes Modes 03h, 10h, 12h, and 13h plus Chain-4 Mode, ModeX, ModeA, + ModeB and ModeC. + +New in this version: Mode 10h (640x350x16), Mode C (640x400x16) + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Version 2.5 not released + Includes Modes 03h, 12h, and 13h plus Chain-4 Mode, ModeX, ModeA, and + ModeB. + +New in this version: VGA register data takes up less space. + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Version 2.1 released Nov. 21, 1997 + Includes Modes 03h, 12h, and 13h plus Chain-4 Mode, ModeX, ModeA, and + ModeB. + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Version 2.0 released Nov. 10, 1997 + Includes Modes 03h, 12h, and 13h plus Chain-4 Mode and ModeX. + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Version 1.5 released late Oct. 1997 + Includes Modes 03h, 12h, and 13h. Fully functional + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Version 1.1 released in Oct. 12, 1997 + Includes Mode 13h, Mode 03h finally works. Realized that I needed to reset + the text mode font. + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Version 1.0 released in Oct. 7, 1997 + Included Mode 13h, Mode 03h partially. (Did not have setfont routine) + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= diff --git a/16/tauron/USAGE.TXT b/16/tauron/USAGE.TXT new file mode 100755 index 00000000..939c2dec --- /dev/null +++ b/16/tauron/USAGE.TXT @@ -0,0 +1,118 @@ +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- -= +=- Tauron VGA Utilities Version 3.0 -= +=- Released September 20, 1998 -= +=- -= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +=- All Rights Reserved. =-= that you put my name some- -= +=- =-= where in your credits. -= +=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- I assume no responsibility whatsoever for any effect that this package, -= +=- the information contained therein or the use thereof has on you, your -= +=- sanity, computer, spouse, children, pets or anything else related to -= +=- you or your existance. No warranty is provided nor implied with this -= +=- source code. -= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +** Note ** This code does not update BIOS when in real mode. So if you need +that particular functionality, you will have to add this yourself. + + + Use MODE NUMBER to set the video mode with the procedure provided. + + A star (*) next to the mode number indicates that it is not yet + implemented. + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- Currently supported Video Modes: -= MODE NUMBER =-= Type -= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- -= =-= -= +=- 00H,01H -- 40 x 25 x 16 -= 00H,01H =-= Text -= +=- -= =-= -= +=- 02H,03H -- 80 x 25 x 16 -= 02H,03H =-= Text -= +=- -= =-= -= +=- 04H,05H -- 320 x 200 x 4 -= 04H,05H =-= Graphics -= +=- -= =-= -= +=- 06H -- 640 x 200 x 2 -= 06H =-= Graphics -= +=- -= =-= -= +=- 07H -- 80 x 25 x 2 (Monochrome) -= * 07H =-= Text -= +=- -= =-= -= +=- 0DH -- 320 x 200 x 16 -= 0DH =-= Graphics -= +=- -= =-= -= +=- 0EH -- 640 x 200 x 16 -= 0EH =-= Graphics -= +=- -= =-= -= +=- 0FH -- 640 x 350 x 2 (Monochrome) -= * 0FH =-= Graphics -= +=- -= =-= -= +=- 10H -- 640 x 350 x 16 -= 10H =-= Graphics -= +=- -= =-= -= +=- 11H -- 640 x 480 x 2 -= 11H =-= Graphics -= +=- -= =-= -= +=- 12H -- 640 x 480 x 16 -= 12H =-= Graphics -= +=- -= =-= -= +=- 13H -- 320 x 200 x 256 -= 13H =-= Graphics -= +=- -= =-= -= +=- Chain 4 -- unchained 320 x 200 x 256 -= 14H =-= Graphics -= +=- -= =-= -= +=- Mode X -- unchained 320 x 240 x 256 -= 15H =-= Graphics -= +=- -= =-= -= +=- Mode A -- unchained 320 x 350 x 256 -= 16H =-= Graphics -= +=- -= =-= -= +=- Mode B -- unchained 320 x 400 x 256 -= 17H =-= Graphics -= +=- -= =-= -= +=- Mode C -- unchained 320 x 480 x 256 -= 18H =-= Graphics -= +=- -= =-= -= +=- Mode D -- unchained 360 x 200 x 256 -= 19H =-= Graphics -= +=- -= =-= -= +=- Mode E -- unchained 360 x 240 x 256 -= 1AH =-= Graphics -= +=- -= =-= -= +=- Mode F -- unchained 360 x 350 x 256 -= 1BH =-= Graphics -= +=- -= =-= -= +=- Mode G -- unchained 360 x 400 x 256 -= 1CH =-= Graphics -= +=- -= =-= -= +=- Mode H -- unchained 360 x 480 x 256 -= 1DH =-= Graphics -= +=- -= =-= -= +=- Mode I -- 640 x 400 x 16 -= 1EH =-= Graphics -= +=- -= =-= -= +=- Mode J -- 80 x 43 x 16 -= 1FH =-= Text -= +=- -= =-= -= +=- Mode K -- 80 x 50 x 16 -= 20H =-= Text -= +=- -= =-= -= +=- Mode K -- 40 x 43 x 16 -= 21H =-= Text -= +=- -= =-= -= +=- Mode K -- 40 x 50 x 16 -= 22H =-= Text -= +=- -= =-= -= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + + +To set a video mode using the procedure I already have written: + +PUSH *VALUE* ; Where value is the mode number +CALL SETVIDEOMODE + +and thats it the videomode gets set. + +Once the video mode is set, you can program each video mode as normal. + +Just remember, you can't rely on BIOS so if you need the palette set to the +proper values, you need to set them yourself. + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +If you want to use this code in your programs, all you need is which ever +mode you want from MODES.INC and also the procedure SETMODE. + +Just + +MOV SI, OFFSET *MODE* ; Where mode is the mode from MODES.INC +CALL SETMODE + +If you want the unchained modes, you also need a bit of code from the +SETVIDEOMODE procedure in MAIN.ASM. + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +I have also included some source for clearing the screen and plotting pixels. +If you notice that since all of the chained modes use the same memory +structure the same code can be used to program all with only a few +modifications. This also goes for the planar modes 10h, 12h, Mode C, etc. + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= diff --git a/16/tauron/WHATSNEW.TXT b/16/tauron/WHATSNEW.TXT new file mode 100755 index 00000000..72ab292c --- /dev/null +++ b/16/tauron/WHATSNEW.TXT @@ -0,0 +1,32 @@ +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- -= +=- Tauron VGA Utilities Version 3.0 -= +=- Released September 20, 1998 -= +=- -= +=- What new with this release??? -= +=- -= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +=- All Rights Reserved. =-= that you put my name some- -= +=- =-= where in your credits. -= +=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- I assume no responsibility whatsoever for any effect that this package, -= +=- the information contained therein or the use thereof has on you, your -= +=- sanity, computer, spouse, children, pets or anything else related to -= +=- you or your existance. No warranty is provided nor implied with this -= +=- source code. -= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + + I added 2 new text modes, 40x43 and 40x50. + + There is now a dual font test. What this does is load 2 fonts into VGA + memory and display text from both fonts on the screen at the same time. + This is possible by reprogramming the charcter map select register. You + can have up to 8 fonts present in memory at any time but can only use 2 + at a time. + + I was trying to add some more high-res video modes but so far they don't + quite work. I'm shooting for 720x200 first just to see if I can make it + work. + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= diff --git a/16/tauron/tauron30.zip b/16/tauron/tauron30.zip new file mode 100755 index 00000000..05e65c0f Binary files /dev/null and b/16/tauron/tauron30.zip differ diff --git a/16/tauron30/ASM_SRC/CLEAR.ASM b/16/tauron30/ASM_SRC/CLEAR.ASM new file mode 100755 index 00000000..f7b4bbe6 --- /dev/null +++ b/16/tauron30/ASM_SRC/CLEAR.ASM @@ -0,0 +1,241 @@ +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- -= +;=- Tauron VGA Utilities Version 3.0 -= +;=- Released September 20, 1998 -= +;=- -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +;=- All Rights Reserved. =-= that you put my name some- -= +;=- =-= where in your credits. -= +;=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- I assume no responsibility whatsoever for any effect that this package, -= +;=- the information contained therein or the use thereof has on you, your -= +;=- sanity, computer, spouse, children, pets or anything else related to -= +;=- you or your existance. No warranty is provided nor implied with this -= +;=- source code. -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +TEXTCLEAR PROC + PUSH BP + MOV BP,SP + + MOV AX,0B800H + MOV ES,AX + XOR DI,DI + + MOV AH,byte ptr [bp+4] + MOV AL,' ' + MOV CX,Mode.width_bytes + CLD + REP STOSW + + POP BP + RET 2 +TEXTCLEAR ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +CLEAR_B8000H PROC + PUSH BP + MOV BP,SP + PUSHA + + MOV AX,0B800H + MOV ES,AX + XOR DI,DI + + MOV AX,WORD PTR [BP+4] + CLD + MOV CX,Mode.width_bytes + REP STOSW + + POPA + POP BP + RET 2 +CLEAR_B8000H ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +; Mode 0Dh clear screen +CLEAR0DH PROC + PUSH BP + MOV BP,SP + + MOV AX,0A000H + MOV ES,AX + XOR DI,DI + + MOV CX,2000H +CLEAR_LOOP: + MOV DX,03CEH + MOV AX,0FF08H + OUT DX,AX + + MOV EAX,0 + XCHG DWORD PTR ES:[DI],EAX + + MOV DX,03C4H + MOV AH,BYTE PTR [BP+4] + MOV AL,2 + OUT DX,AX + + MOV DWORD PTR ES:[DI],0FFFFFFFFH + + MOV AX,0F02H + OUT DX,AX + + MOV DX,03CEH + MOV AX,0FF08h + OUT DX,AX + + ADD DI,4 + LOOP CLEAR_LOOP + + POP BP + RET 2 +CLEAR0DH ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +; Mode 0Eh clear screen +CLEAR0EH PROC + PUSH BP + MOV BP,SP + + MOV AX,0A000H + MOV ES,AX + XOR DI,DI + + MOV CX,4000H +CLEAR_LOOP2: + MOV DX,03CEH + MOV AX,0FF08H + OUT DX,AX + + MOV EAX,0 + XCHG DWORD PTR ES:[DI],EAX + + MOV DX,03C4H + MOV AH,BYTE PTR [BP+4] + MOV AL,2 + OUT DX,AX + + MOV DWORD PTR ES:[DI],0FFFFFFFFH + + MOV AX,0F02H + OUT DX,AX + + MOV DX,03CEH + MOV AX,0FF08h + OUT DX,AX + + ADD DI,4 + LOOP CLEAR_LOOP2 + + POP BP + RET 2 +CLEAR0EH ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +CLEAR11H PROC + MOV AX,0A000H + MOV ES,AX + XOR DI,DI + + MOV AX,0FFFFH + CLD + MOV CX,4B00H + REP STOSW + RET +CLEAR11H ENDP + +; 0d 0e 11 have bytes /2 +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +PLANARCLEAR PROC + PUSH BP + MOV BP,SP + + MOV AX,0A000H + MOV ES,AX + XOR DI,DI + + MOV CX,Mode.width_bytes + SHR CX,1 +CLEAR_LOOP3: + + MOV DX,03CEH + MOV AX,0FF08H + OUT DX,AX + + MOV AX,0 + XCHG WORD PTR ES:[DI],AX + + MOV DX,03C4H + MOV AH,byte ptr [bp+4] + MOV AL,2 + OUT DX,AX + + MOV WORD PTR ES:[DI],0FFFFH + + MOV AX,0F02H + OUT DX,AX + + MOV DX,03CEH + MOV AX,0FF08h + OUT DX,AX + + ADD DI,2 + LOOP CLEAR_LOOP3 + + POP BP + RET 2 +PLANARCLEAR ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +CLEAR13H PROC + PUSH BP + MOV BP,SP + + MOV AX,0A000H + MOV ES,AX + XOR DI,DI + + MOV AL,byte ptr [bp+4] + MOV AH,AL + CLD + MOV CX,8000H + REP STOSW + + POP BP + RET 2 +CLEAR13H ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +UNCHAINEDCLEAR PROC + PUSH BP + MOV BP,SP + + mov dx, 03C4h ; 03c4h + mov al, 2 ; Map Mask Register + out dx, al + inc dx + mov al,00001111B ; Select all planes to write to + out dx, al ; Doing this to clear all planes at once + + mov ax,0A000H + mov es, ax + XOR DI,DI ; set es:di = Screen Mem + mov ah,byte ptr [bp+4] ; move the color into ah + mov al,ah ; copy the value to al + mov cx,Mode.width_bytes ; Number of words + SHR CX,1 + cld + rep stosw ; clear it + + POP BP + RET 2 +UNCHAINEDCLEAR ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= diff --git a/16/tauron30/ASM_SRC/DUAL.ASM b/16/tauron30/ASM_SRC/DUAL.ASM new file mode 100755 index 00000000..0ee31055 --- /dev/null +++ b/16/tauron30/ASM_SRC/DUAL.ASM @@ -0,0 +1,275 @@ +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- -= +;=- Tauron VGA Utilities Version 3.0 -= +;=- Released September 20, 1998 -= +;=- -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +;=- All Rights Reserved. =-= that you put my name some- -= +;=- =-= where in your credits. -= +;=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- I assume no responsibility whatsoever for any effect that this package, -= +;=- the information contained therein or the use thereof has on you, your -= +;=- sanity, computer, spouse, children, pets or anything else related to -= +;=- you or your existance. No warranty is provided nor implied with this -= +;=- source code. -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +; 3C4H, 03H +; Bit positions for font maps: +; +; +--7--+--6--+--5--+--4--+--3--+--2--+--1--+--0--+ +; | | | SAH | SBH | SA | SB | +; +-----+-----+-----+-----+-----+-----+-----+-----+ +; +; SA - bits 1, 0 of Character Map A +; SAH - bit 2 (high order) of Charcter Map A +; +; SB - bits 1, 0 of Character Map B +; SBH - bit 2 (high order) of Charcter Map B +; + +; Points to fonts for Map A Memory Address +DFM_MAPA_FONT1 EQU 00H ; 0K +DFM_MAPA_FONT2 EQU 04H ; 16K +DFM_MAPA_FONT3 EQU 08H ; 32K +DFM_MAPA_FONT4 EQU 0CH ; 48K +DFM_MAPA_FONT5 EQU 20H ; 8K +DFM_MAPA_FONT6 EQU 24H ; 24K +DFM_MAPA_FONT7 EQU 28H ; 40K +DFM_MAPA_FONT8 EQU 2CH ; 56K + +; Points to fonts for Map B +DFM_MAPB_FONT1 EQU 00H ; 0K +DFM_MAPB_FONT2 EQU 01H ; 16K +DFM_MAPB_FONT3 EQU 02H ; 32K +DFM_MAPB_FONT4 EQU 03H ; 48K +DFM_MAPB_FONT5 EQU 10H ; 8K +DFM_MAPB_FONT6 EQU 11H ; 24K +DFM_MAPB_FONT7 EQU 12H ; 40K +DFM_MAPB_FONT8 EQU 13H ; 56K + + +; To set dual font mode, just set the character map select register to point +; to 2 different fonts. There can be up to 8 fonts resident in memory at +; once but only 2 can be active at a time. +; +; ** NOTE ** If you set both font maps the same you are no longer in dual font +; mode. But what this allows you to do is to put up to 8 fonts in VGA memory +; and switch between them at any time. +; +; Both fonts were made with my font editor. I just read the BIOS and +; modified the second font so a solid line goes through the middle of it. +; +; This procedure sets up dual font mode and loads 2 fonts into video memory. +SETDUAL PROC + + ; Sequencer address + MOV DX,SEQ_ADDR + + ; 2 different font maps + MOV AH,DFM_MAPA_FONT1 + OR AH,DFM_MAPB_FONT5 + + ; Sequencer register + MOV AL,03H + + ; Send it + OUT DX,AX + + ; Load font 1 into 0K + PUSH 16 ; Bytes per character + PUSH 0 ; Offset of font in Video Memory + PUSH 0A000H + PUSH OFFSET FONT1 ; Offset of Font in our Data Segment + PUSH DS + CALL LOADFONT + + ; Load font 2 into 8K + PUSH 16 ; Bytes per character + PUSH 0 ; Offset of font in Video Memory + PUSH 0A200H + PUSH OFFSET FONT2 ; Offset of Font in our Data Segment + PUSH DS + CALL LOADFONT + + RET +SETDUAL ENDP + +; This procedure reset the character map select register to point to only +; one font. +UNSETDUAL PROC + + ; Set both fonts to point to font 1 + MOV DX,SEQ_ADDR + MOV AX,0003H + OUT DX,AX + + RET +UNSETDUAL ENDP + +; In dual font modes, the palette is in effect half of what it is. The +; bottom 8 colors for the first font, and the top 8 colors for the second +; font. +; +; What I do here is to set them to the same 8 colors. +; Black, Blue, Green, Red, Purple, Yellow, Light Gray, and White +; +SETDUALPALETTE PROC + + PUSH 0 + PUSH 0 + PUSH 0 + PUSH 0 + CALL SETPAL + + PUSH 42 + PUSH 0 + PUSH 0 + PUSH 1 + CALL SETPAL + + PUSH 0 + PUSH 42 + PUSH 0 + PUSH 2 + CALL SETPAL + + PUSH 42 + PUSH 42 + PUSH 0 + PUSH 3 + CALL SETPAL + + PUSH 0 + PUSH 0 + PUSH 42 + PUSH 4 + CALL SETPAL + + PUSH 21 + PUSH 63 + PUSH 63 + PUSH 5 + CALL SETPAL + + PUSH 42 + PUSH 42 + PUSH 42 + PUSH 6 + CALL SETPAL + + PUSH 63 + PUSH 63 + PUSH 63 + PUSH 7 + CALL SETPAL + + PUSH 0 + PUSH 0 + PUSH 0 + PUSH 8 + CALL SETPAL + + PUSH 42 + PUSH 0 + PUSH 0 + PUSH 9 + CALL SETPAL + + PUSH 0 + PUSH 42 + PUSH 0 + PUSH 10 + CALL SETPAL + + PUSH 42 + PUSH 42 + PUSH 0 + PUSH 11 + CALL SETPAL + + PUSH 0 + PUSH 0 + PUSH 42 + PUSH 12 + CALL SETPAL + + PUSH 21 + PUSH 63 + PUSH 63 + PUSH 13 + CALL SETPAL + + PUSH 42 + PUSH 42 + PUSH 42 + PUSH 14 + CALL SETPAL + + PUSH 63 + PUSH 63 + PUSH 63 + PUSH 15 + CALL SETPAL + + RET +SETDUALPALETTE ENDP + +DUALTEST PROC + + MOV SI,OFFSET MODE03H + CALL SETMODE + + CALL SETDUAL + CALL SETDUALPALETTE + + PUSH 1FH + CALL TEXTCLEAR + + ; Attribute to print text in. + ; + ; In dual font mode, attrubute bit 3 is the deciding factor as to which + ; font is printed. 0001X111B where X is 0 for font 1 or 1 for font 2. + ; The Charcter Map Select Register determines where font 1 and font 2 + ; reside. + ; 00011111B - Font 2, Blue Background, with color 7 text. + MOV ATT, 1Fh + + MOV BX,5 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_D + CALL PRINTSTRING + MOV BX,6 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_E + CALL PRINTSTRING + MOV BX,7 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_F + CALL PRINTSTRING + + ; 00010111B - Font 1, Blue Background, with color 7 text. + MOV ATT, 17h + + MOV BX,0 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_D + CALL PRINTSTRING + MOV BX,1 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_E + CALL PRINTSTRING + MOV BX,2 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_F + CALL PRINTSTRING + + ; Wait for a keypress + MOV AH,0 + INT 16H + + CALL UNSETDUAL + RET +DUALTEST ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= diff --git a/16/tauron30/ASM_SRC/FONT1.ASM b/16/tauron30/ASM_SRC/FONT1.ASM new file mode 100755 index 00000000..772d612e --- /dev/null +++ b/16/tauron30/ASM_SRC/FONT1.ASM @@ -0,0 +1,266 @@ +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- Created with FEDIT written by Kinfira (Jeffrey Morgan) -= +;=- -= +;=- Tauron VGA Utilities Version 1.0 -= +;=- Released June 14, 1998 -= +;=- -= +;=- Font Width: 8 -= +;=- Font Height: 16 -= +;=- Bytes per character: 16 -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,07EH,081H,0A5H,081H,081H,0BDH,099H,081H,081H,07EH,000H,000H,000H,000H +DB 000H,000H,07EH,0FFH,0DBH,0FFH,0FFH,0C3H,0E7H,0FFH,0FFH,07EH,000H,000H,000H,000H +DB 000H,000H,000H,000H,06CH,0FEH,0FEH,0FEH,0FEH,07CH,038H,010H,000H,000H,000H,000H +DB 000H,000H,000H,000H,010H,038H,07CH,0FEH,07CH,038H,010H,000H,000H,000H,000H,000H +DB 000H,000H,000H,018H,03CH,03CH,0E7H,0E7H,0E7H,099H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,000H,018H,03CH,07EH,0FFH,0FFH,07EH,018H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,018H,03CH,03CH,018H,000H,000H,000H,000H,000H,000H +DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0E7H,0C3H,0C3H,0E7H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH +DB 000H,000H,000H,000H,000H,03CH,066H,042H,042H,066H,03CH,000H,000H,000H,000H,000H +DB 0FFH,0FFH,0FFH,0FFH,0FFH,0C3H,099H,0BDH,0BDH,099H,0C3H,0FFH,0FFH,0FFH,0FFH,0FFH +DB 000H,000H,01EH,00EH,01AH,032H,078H,0CCH,0CCH,0CCH,0CCH,078H,000H,000H,000H,000H +DB 000H,000H,03CH,066H,066H,066H,066H,03CH,018H,07EH,018H,018H,000H,000H,000H,000H +DB 000H,000H,03FH,033H,03FH,030H,030H,030H,030H,070H,0F0H,0E0H,000H,000H,000H,000H +DB 000H,000H,07FH,063H,07FH,063H,063H,063H,063H,067H,0E7H,0E6H,0C0H,000H,000H,000H +DB 000H,000H,000H,018H,018H,0DBH,03CH,0E7H,03CH,0DBH,018H,018H,000H,000H,000H,000H +DB 000H,080H,0C0H,0E0H,0F0H,0F8H,0FEH,0F8H,0F0H,0E0H,0C0H,080H,000H,000H,000H,000H +DB 000H,002H,006H,00EH,01EH,03EH,0FEH,03EH,01EH,00EH,006H,002H,000H,000H,000H,000H +DB 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,07EH,03CH,018H,000H,000H,000H,000H +DB 000H,000H,066H,066H,066H,066H,066H,066H,066H,000H,066H,066H,000H,000H,000H,000H +DB 000H,000H,07FH,0DBH,0DBH,0DBH,07BH,01BH,01BH,01BH,01BH,01BH,000H,000H,000H,000H +DB 000H,07CH,0C6H,060H,038H,06CH,0C6H,0C6H,06CH,038H,00CH,0C6H,07CH,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,0FEH,0FEH,0FEH,0FEH,000H,000H,000H,000H +DB 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,07EH,03CH,018H,07EH,000H,000H,000H +DB 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,018H,018H,018H,000H,000H,000H,000H +DB 000H,000H,018H,018H,018H,018H,018H,018H,018H,07EH,03CH,018H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,018H,00CH,0FEH,00CH,018H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,030H,060H,0FEH,060H,030H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0C0H,0C0H,0C0H,0C0H,0FEH,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,028H,06CH,0FEH,06CH,028H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,010H,038H,038H,07CH,07CH,0FEH,0FEH,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,0FEH,0FEH,07CH,07CH,038H,038H,010H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,018H,03CH,03CH,03CH,018H,018H,018H,000H,018H,018H,000H,000H,000H,000H +DB 000H,066H,066H,066H,024H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,06CH,06CH,0FEH,06CH,06CH,06CH,0FEH,06CH,06CH,000H,000H,000H,000H +DB 018H,018H,07CH,0C6H,0C2H,0C0H,07CH,006H,086H,0C6H,07CH,018H,018H,000H,000H,000H +DB 000H,000H,000H,000H,0C2H,0C6H,00CH,018H,030H,060H,0C6H,086H,000H,000H,000H,000H +DB 000H,000H,038H,06CH,06CH,038H,076H,0DCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,030H,030H,030H,060H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,00CH,018H,030H,030H,030H,030H,030H,030H,018H,00CH,000H,000H,000H,000H +DB 000H,000H,030H,018H,00CH,00CH,00CH,00CH,00CH,00CH,018H,030H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,066H,03CH,0FFH,03CH,066H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,018H,018H,07EH,018H,018H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,018H,018H,018H,030H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,0FEH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,018H,018H,000H,000H,000H,000H +DB 000H,000H,000H,000H,002H,006H,00CH,018H,030H,060H,0C0H,080H,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,0C6H,0CEH,0D6H,0D6H,0E6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,018H,038H,078H,018H,018H,018H,018H,018H,018H,07EH,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,006H,00CH,018H,030H,060H,0C0H,0C6H,0FEH,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,006H,006H,03CH,006H,006H,006H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,00CH,01CH,03CH,06CH,0CCH,0FEH,00CH,00CH,00CH,01EH,000H,000H,000H,000H +DB 000H,000H,0FEH,0C0H,0C0H,0C0H,0FCH,00EH,006H,006H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,038H,060H,0C0H,0C0H,0FCH,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,0FEH,0C6H,006H,006H,00CH,018H,030H,030H,030H,030H,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,0C6H,0C6H,07CH,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,0C6H,0C6H,07EH,006H,006H,006H,00CH,078H,000H,000H,000H,000H +DB 000H,000H,000H,000H,018H,018H,000H,000H,000H,018H,018H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,018H,018H,000H,000H,000H,018H,018H,030H,000H,000H,000H,000H +DB 000H,000H,000H,006H,00CH,018H,030H,060H,030H,018H,00CH,006H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,0FEH,000H,000H,0FEH,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,060H,030H,018H,00CH,006H,00CH,018H,030H,060H,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,0C6H,00CH,018H,018H,018H,000H,018H,018H,000H,000H,000H,000H +DB 000H,000H,000H,07CH,0C6H,0C6H,0DEH,0DEH,0DEH,0DCH,0C0H,07CH,000H,000H,000H,000H +DB 000H,000H,010H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 000H,000H,0FCH,066H,066H,066H,07CH,066H,066H,066H,066H,0FCH,000H,000H,000H,000H +DB 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0C0H,0C0H,0C2H,066H,03CH,000H,000H,000H,000H +DB 000H,000H,0F8H,06CH,066H,066H,066H,066H,066H,066H,06CH,0F8H,000H,000H,000H,000H +DB 000H,000H,0FEH,066H,062H,068H,078H,068H,060H,062H,066H,0FEH,000H,000H,000H,000H +DB 000H,000H,0FEH,066H,062H,068H,078H,068H,060H,060H,060H,0F0H,000H,000H,000H,000H +DB 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0DEH,0C6H,0C6H,066H,03AH,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 000H,000H,03CH,018H,018H,018H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,01EH,00CH,00CH,00CH,00CH,00CH,0CCH,0CCH,0CCH,078H,000H,000H,000H,000H +DB 000H,000H,0E6H,066H,06CH,06CH,078H,078H,06CH,066H,066H,0E6H,000H,000H,000H,000H +DB 000H,000H,0F0H,060H,060H,060H,060H,060H,060H,062H,066H,0FEH,000H,000H,000H,000H +DB 000H,000H,0C6H,0EEH,0FEH,0FEH,0D6H,0C6H,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 000H,000H,0C6H,0E6H,0F6H,0FEH,0DEH,0CEH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 000H,000H,038H,06CH,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,06CH,038H,000H,000H,000H,000H +DB 000H,000H,0FCH,066H,066H,066H,07CH,060H,060H,060H,060H,0F0H,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0D6H,0DEH,07CH,00CH,00EH,000H,000H +DB 000H,000H,0FCH,066H,066H,066H,07CH,06CH,066H,066H,066H,0E6H,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,0C6H,060H,038H,00CH,006H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,07EH,07EH,05AH,018H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,06CH,038H,010H,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0D6H,0D6H,0FEH,06CH,06CH,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,06CH,06CH,038H,038H,06CH,06CH,0C6H,0C6H,000H,000H,000H,000H +DB 000H,000H,066H,066H,066H,066H,03CH,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,0FEH,0C6H,086H,00CH,018H,030H,060H,0C2H,0C6H,0FEH,000H,000H,000H,000H +DB 000H,000H,03CH,030H,030H,030H,030H,030H,030H,030H,030H,03CH,000H,000H,000H,000H +DB 000H,000H,000H,080H,0C0H,0E0H,070H,038H,01CH,00EH,006H,002H,000H,000H,000H,000H +DB 000H,000H,03CH,00CH,00CH,00CH,00CH,00CH,00CH,00CH,00CH,03CH,000H,000H,000H,000H +DB 010H,038H,06CH,0C6H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,0FFH,000H,000H +DB 030H,030H,018H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,0E0H,060H,060H,078H,06CH,066H,066H,066H,066H,0DCH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,07CH,0C6H,0C0H,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,01CH,00CH,00CH,03CH,06CH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,038H,06CH,064H,060H,0F0H,060H,060H,060H,060H,0F0H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,076H,0CCH,0CCH,0CCH,0CCH,0CCH,07CH,00CH,0CCH,078H,000H +DB 000H,000H,0E0H,060H,060H,06CH,076H,066H,066H,066H,066H,0E6H,000H,000H,000H,000H +DB 000H,000H,018H,018H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,006H,006H,000H,00EH,006H,006H,006H,006H,006H,006H,066H,066H,03CH,000H +DB 000H,000H,0E0H,060H,060H,066H,06CH,078H,078H,06CH,066H,0E6H,000H,000H,000H,000H +DB 000H,000H,038H,018H,018H,018H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0ECH,0FEH,0D6H,0D6H,0D6H,0D6H,0D6H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0DCH,066H,066H,066H,066H,066H,066H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0DCH,066H,066H,066H,066H,066H,07CH,060H,060H,0F0H,000H +DB 000H,000H,000H,000H,000H,076H,0CCH,0CCH,0CCH,0CCH,0CCH,07CH,00CH,00CH,01EH,000H +DB 000H,000H,000H,000H,000H,0DCH,076H,062H,060H,060H,060H,0F0H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,07CH,0C6H,060H,038H,00CH,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,010H,030H,030H,0FCH,030H,030H,030H,030H,036H,01CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,066H,066H,066H,066H,066H,03CH,018H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0C6H,0C6H,0C6H,0D6H,0D6H,0FEH,06CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0C6H,06CH,038H,038H,038H,06CH,0C6H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07EH,006H,00CH,0F8H,000H +DB 000H,000H,000H,000H,000H,0FEH,0CCH,018H,030H,060H,0C6H,0FEH,000H,000H,000H,000H +DB 000H,000H,00EH,018H,018H,018H,070H,018H,018H,018H,018H,00EH,000H,000H,000H,000H +DB 000H,000H,018H,018H,018H,018H,000H,018H,018H,018H,018H,018H,000H,000H,000H,000H +DB 000H,000H,070H,018H,018H,018H,00EH,018H,018H,018H,018H,070H,000H,000H,000H,000H +DB 000H,000H,076H,0DCH,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,010H,038H,06CH,0C6H,0C6H,0C6H,0FEH,000H,000H,000H,000H,000H +DB 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0C0H,0C2H,066H,03CH,00CH,006H,07CH,000H,000H +DB 000H,000H,0CCH,0CCH,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,00CH,018H,030H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H +DB 000H,010H,038H,06CH,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,0CCH,0CCH,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,060H,030H,018H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,038H,06CH,038H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,000H,000H,03CH,066H,060H,060H,066H,03CH,00CH,006H,03CH,000H,000H,000H +DB 000H,010H,038H,06CH,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H +DB 000H,060H,030H,018H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,066H,066H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,018H,03CH,066H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,060H,030H,018H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,0C6H,0C6H,010H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 038H,06CH,038H,000H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 018H,030H,060H,000H,0FEH,066H,060H,07CH,060H,060H,066H,0FEH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0CCH,076H,036H,07EH,0D8H,0D8H,06EH,000H,000H,000H,000H +DB 000H,000H,03EH,06CH,0CCH,0CCH,0FEH,0CCH,0CCH,0CCH,0CCH,0CEH,000H,000H,000H,000H +DB 000H,010H,038H,06CH,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,060H,030H,018H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,030H,078H,0CCH,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,060H,030H,018H,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07EH,006H,00CH,078H,000H +DB 000H,0C6H,0C6H,000H,038H,06CH,0C6H,0C6H,0C6H,0C6H,06CH,038H,000H,000H,000H,000H +DB 000H,0C6H,0C6H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,018H,018H,03CH,066H,060H,060H,060H,066H,03CH,018H,018H,000H,000H,000H,000H +DB 000H,038H,06CH,064H,060H,0F0H,060H,060H,060H,060H,0E6H,0FCH,000H,000H,000H,000H +DB 000H,000H,066H,066H,03CH,018H,07EH,018H,07EH,018H,018H,018H,000H,000H,000H,000H +DB 000H,0F8H,0CCH,0CCH,0F8H,0C4H,0CCH,0DEH,0CCH,0CCH,0CCH,0C6H,000H,000H,000H,000H +DB 000H,00EH,01BH,018H,018H,018H,07EH,018H,018H,018H,018H,018H,0D8H,070H,000H,000H +DB 000H,018H,030H,060H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,00CH,018H,030H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,018H,030H,060H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,018H,030H,060H,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,076H,0DCH,000H,0DCH,066H,066H,066H,066H,066H,066H,000H,000H,000H,000H +DB 076H,0DCH,000H,0C6H,0E6H,0F6H,0FEH,0DEH,0CEH,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 000H,03CH,06CH,06CH,03EH,000H,07EH,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,038H,06CH,06CH,038H,000H,07CH,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,030H,030H,000H,030H,030H,060H,0C0H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,0FEH,0C0H,0C0H,0C0H,0C0H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,0FEH,006H,006H,006H,006H,000H,000H,000H,000H,000H +DB 000H,0C0H,0C0H,0C2H,0C6H,0CCH,018H,030H,060H,0CEH,093H,006H,00CH,01FH,000H,000H +DB 000H,0C0H,0C0H,0C2H,0C6H,0CCH,018H,030H,066H,0CEH,09AH,03FH,006H,00FH,000H,000H +DB 000H,000H,018H,018H,000H,018H,018H,018H,03CH,03CH,03CH,018H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,033H,066H,0CCH,066H,033H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0CCH,066H,033H,066H,0CCH,000H,000H,000H,000H,000H,000H +DB 011H,044H,011H,044H,011H,044H,011H,044H,011H,044H,011H,044H,011H,044H,011H,044H +DB 055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH +DB 0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H +DB 018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,018H,018H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,0F8H,018H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H +DB 036H,036H,036H,036H,036H,036H,036H,0F6H,036H,036H,036H,036H,036H,036H,036H,036H +DB 000H,000H,000H,000H,000H,000H,000H,0FEH,036H,036H,036H,036H,036H,036H,036H,036H +DB 000H,000H,000H,000H,000H,0F8H,018H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H +DB 036H,036H,036H,036H,036H,0F6H,006H,0F6H,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H +DB 000H,000H,000H,000H,000H,0FEH,006H,0F6H,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,0F6H,006H,0FEH,000H,000H,000H,000H,000H,000H,000H,000H +DB 036H,036H,036H,036H,036H,036H,036H,0FEH,000H,000H,000H,000H,000H,000H,000H,000H +DB 018H,018H,018H,018H,018H,0F8H,018H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,018H,018H,01FH,000H,000H,000H,000H,000H,000H,000H,000H +DB 018H,018H,018H,018H,018H,018H,018H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,018H,018H,01FH,018H,018H,018H,018H,018H,018H,018H,018H +DB 000H,000H,000H,000H,000H,000H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 018H,018H,018H,018H,018H,018H,018H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,01FH,018H,01FH,018H,018H,018H,018H,018H,018H,018H,018H +DB 036H,036H,036H,036H,036H,036H,036H,037H,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,037H,030H,03FH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,03FH,030H,037H,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,0F7H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0FFH,000H,0F7H,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,037H,030H,037H,036H,036H,036H,036H,036H,036H,036H,036H +DB 000H,000H,000H,000H,000H,0FFH,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 036H,036H,036H,036H,036H,0F7H,000H,0F7H,036H,036H,036H,036H,036H,036H,036H,036H +DB 018H,018H,018H,018H,018H,0FFH,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 036H,036H,036H,036H,036H,036H,036H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0FFH,000H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H +DB 000H,000H,000H,000H,000H,000H,000H,0FFH,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,036H,036H,03FH,000H,000H,000H,000H,000H,000H,000H,000H +DB 018H,018H,018H,018H,018H,01FH,018H,01FH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,01FH,018H,01FH,018H,018H,018H,018H,018H,018H,018H,018H +DB 000H,000H,000H,000H,000H,000H,000H,03FH,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,036H,036H,0FFH,036H,036H,036H,036H,036H,036H,036H,036H +DB 018H,018H,018H,018H,018H,0FFH,018H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,018H,018H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,01FH,018H,018H,018H,018H,018H,018H,018H,018H +DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH +DB 000H,000H,000H,000H,000H,000H,000H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH +DB 0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H +DB 00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH +DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,076H,0DCH,0D8H,0D8H,0D8H,0DCH,076H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0FCH,0C6H,0FCH,0C6H,0C6H,0FCH,0C0H,0C0H,0C0H,000H,000H +DB 000H,000H,0FEH,0C6H,0C6H,0C0H,0C0H,0C0H,0C0H,0C0H,0C0H,0C0H,000H,000H,000H,000H +DB 000H,000H,000H,000H,080H,0FEH,06CH,06CH,06CH,06CH,06CH,06CH,000H,000H,000H,000H +DB 000H,000H,000H,0FEH,0C6H,060H,030H,018H,030H,060H,0C6H,0FEH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,07EH,0D8H,0D8H,0D8H,0D8H,0D8H,070H,000H,000H,000H,000H +DB 000H,000H,000H,000H,066H,066H,066H,066H,066H,07CH,060H,060H,0C0H,000H,000H,000H +DB 000H,000H,000H,000H,076H,0DCH,018H,018H,018H,018H,018H,018H,000H,000H,000H,000H +DB 000H,000H,000H,07EH,018H,03CH,066H,066H,066H,03CH,018H,07EH,000H,000H,000H,000H +DB 000H,000H,000H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,06CH,038H,000H,000H,000H,000H +DB 000H,000H,038H,06CH,0C6H,0C6H,0C6H,06CH,06CH,06CH,06CH,0EEH,000H,000H,000H,000H +DB 000H,000H,01EH,030H,018H,00CH,03EH,066H,066H,066H,066H,03CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,07EH,0DBH,0DBH,0DBH,07EH,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,003H,006H,07EH,0CFH,0DBH,0F3H,07EH,060H,0C0H,000H,000H,000H,000H +DB 000H,000H,01CH,030H,060H,060H,07CH,060H,060H,060H,030H,01CH,000H,000H,000H,000H +DB 000H,000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 000H,000H,000H,000H,0FEH,000H,000H,0FEH,000H,000H,0FEH,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,018H,018H,07EH,018H,018H,000H,000H,0FFH,000H,000H,000H,000H +DB 000H,000H,000H,030H,018H,00CH,006H,00CH,018H,030H,000H,07EH,000H,000H,000H,000H +DB 000H,000H,000H,00CH,018H,030H,060H,030H,018H,00CH,000H,07EH,000H,000H,000H,000H +DB 000H,000H,00EH,01BH,01BH,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,018H,018H,018H,0D8H,0D8H,0D8H,070H,000H,000H,000H,000H +DB 000H,000H,000H,000H,018H,018H,000H,07EH,000H,018H,018H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,076H,0DCH,000H,076H,0DCH,000H,000H,000H,000H,000H,000H +DB 000H,038H,06CH,06CH,038H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,018H,018H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,018H,000H,000H,000H,000H,000H,000H,000H +DB 000H,00FH,00CH,00CH,00CH,00CH,00CH,0ECH,06CH,06CH,03CH,01CH,000H,000H,000H,000H +DB 000H,0D8H,06CH,06CH,06CH,06CH,06CH,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,070H,098H,030H,060H,0C8H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,07CH,07CH,07CH,07CH,07CH,07CH,07CH,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H diff --git a/16/tauron30/ASM_SRC/FONT2.ASM b/16/tauron30/ASM_SRC/FONT2.ASM new file mode 100755 index 00000000..9c84bf90 --- /dev/null +++ b/16/tauron30/ASM_SRC/FONT2.ASM @@ -0,0 +1,266 @@ +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- Created with FEDIT written by Kinfira (Jeffrey Morgan) -= +;=- -= +;=- Tauron VGA Utilities Version 1.0 -= +;=- Released June 14, 1998 -= +;=- -= +;=- Font Width: 8 -= +;=- Font Height: 16 -= +;=- Bytes per character: 16 -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,07EH,081H,0A5H,081H,081H,0BDH,099H,081H,081H,07EH,000H,000H,000H,000H +DB 000H,000H,07EH,0FFH,0DBH,0FFH,0FFH,0C3H,0E7H,0FFH,0FFH,07EH,000H,000H,000H,000H +DB 000H,000H,000H,000H,06CH,0FEH,0FEH,0FEH,0FEH,07CH,038H,010H,000H,000H,000H,000H +DB 000H,000H,000H,000H,010H,038H,07CH,0FEH,07CH,038H,010H,000H,000H,000H,000H,000H +DB 000H,000H,000H,018H,03CH,03CH,0E7H,0E7H,0E7H,099H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,000H,018H,03CH,07EH,0FFH,0FFH,07EH,018H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,018H,03CH,03CH,018H,000H,000H,000H,000H,000H,000H +DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0E7H,0C3H,0C3H,0E7H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH +DB 000H,000H,000H,000H,000H,03CH,066H,042H,042H,066H,03CH,000H,000H,000H,000H,000H +DB 0FFH,0FFH,0FFH,0FFH,0FFH,0C3H,099H,0BDH,0BDH,099H,0C3H,0FFH,0FFH,0FFH,0FFH,0FFH +DB 000H,000H,01EH,00EH,01AH,032H,078H,0CCH,0CCH,0CCH,0CCH,078H,000H,000H,000H,000H +DB 000H,000H,03CH,066H,066H,066H,066H,03CH,018H,07EH,018H,018H,000H,000H,000H,000H +DB 000H,000H,03FH,033H,03FH,030H,030H,030H,030H,070H,0F0H,0E0H,000H,000H,000H,000H +DB 000H,000H,07FH,063H,07FH,063H,063H,063H,063H,067H,0E7H,0E6H,0C0H,000H,000H,000H +DB 000H,000H,000H,018H,018H,0DBH,03CH,0E7H,03CH,0DBH,018H,018H,000H,000H,000H,000H +DB 000H,080H,0C0H,0E0H,0F0H,0F8H,0FEH,0F8H,0F0H,0E0H,0C0H,080H,000H,000H,000H,000H +DB 000H,002H,006H,00EH,01EH,03EH,0FEH,03EH,01EH,00EH,006H,002H,000H,000H,000H,000H +DB 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,07EH,03CH,018H,000H,000H,000H,000H +DB 000H,000H,066H,066H,066H,066H,066H,066H,066H,000H,066H,066H,000H,000H,000H,000H +DB 000H,000H,07FH,0DBH,0DBH,0DBH,07BH,01BH,01BH,01BH,01BH,01BH,000H,000H,000H,000H +DB 000H,07CH,0C6H,060H,038H,06CH,0C6H,0C6H,06CH,038H,00CH,0C6H,07CH,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,0FEH,0FEH,0FEH,0FEH,000H,000H,000H,000H +DB 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,07EH,03CH,018H,07EH,000H,000H,000H +DB 000H,000H,018H,03CH,07EH,018H,018H,018H,018H,018H,018H,018H,000H,000H,000H,000H +DB 000H,000H,018H,018H,018H,018H,018H,018H,018H,07EH,03CH,018H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,018H,00CH,0FEH,00CH,018H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,030H,060H,0FEH,060H,030H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0C0H,0C0H,0C0H,0C0H,0FEH,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,028H,06CH,0FEH,06CH,028H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,010H,038H,038H,07CH,07CH,0FEH,0FEH,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,0FEH,0FEH,07CH,07CH,038H,038H,010H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,018H,03CH,03CH,03CH,018H,018H,018H,000H,018H,018H,000H,000H,000H,000H +DB 000H,066H,066H,066H,024H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,06CH,06CH,0FEH,06CH,06CH,06CH,0FEH,06CH,06CH,000H,000H,000H,000H +DB 018H,018H,07CH,0C6H,0C2H,0C0H,07CH,006H,086H,0C6H,07CH,018H,018H,000H,000H,000H +DB 000H,000H,000H,000H,0C2H,0C6H,00CH,018H,030H,060H,0C6H,086H,000H,000H,000H,000H +DB 000H,000H,038H,06CH,06CH,038H,076H,0DCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,030H,030H,030H,060H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,00CH,018H,030H,030H,030H,030H,030H,030H,018H,00CH,000H,000H,000H,000H +DB 000H,000H,030H,018H,00CH,00CH,00CH,00CH,00CH,00CH,018H,030H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,066H,03CH,0FFH,03CH,066H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,018H,018H,07EH,018H,018H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,018H,018H,018H,030H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,0FEH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,018H,018H,000H,000H,000H,000H +DB 000H,000H,000H,000H,002H,006H,00CH,018H,030H,060H,0C0H,080H,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,0C6H,0CEH,0D6H,0D6H,0E6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,018H,038H,078H,018H,018H,018H,018H,018H,018H,07EH,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,006H,00CH,018H,030H,060H,0C0H,0C6H,0FEH,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,006H,006H,03CH,006H,006H,006H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,00CH,01CH,03CH,06CH,0CCH,0FEH,00CH,00CH,00CH,01EH,000H,000H,000H,000H +DB 000H,000H,0FEH,0C0H,0C0H,0C0H,0FCH,00EH,006H,006H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,038H,060H,0C0H,0C0H,0FCH,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,0FEH,0C6H,006H,006H,00CH,018H,030H,030H,030H,030H,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,0C6H,0C6H,07CH,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,0C6H,0C6H,07EH,006H,006H,006H,00CH,078H,000H,000H,000H,000H +DB 000H,000H,000H,000H,018H,018H,000H,000H,000H,018H,018H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,018H,018H,000H,000H,000H,018H,018H,030H,000H,000H,000H,000H +DB 000H,000H,000H,006H,00CH,018H,030H,060H,030H,018H,00CH,006H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,0FEH,000H,000H,0FEH,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,060H,030H,018H,00CH,006H,00CH,018H,030H,060H,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,0C6H,00CH,018H,018H,018H,000H,018H,018H,000H,000H,000H,000H +DB 000H,000H,000H,07CH,0C6H,0C6H,0DEH,0DEH,0DEH,0DCH,0C0H,07CH,000H,000H,000H,000H +DB 000H,000H,010H,038H,06CH,0C6H,0C6H,0FFH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 000H,000H,0FCH,066H,066H,066H,07CH,0FFH,066H,066H,066H,0FCH,000H,000H,000H,000H +DB 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0FFH,0C0H,0C2H,066H,03CH,000H,000H,000H,000H +DB 000H,000H,0F8H,06CH,066H,066H,066H,0FFH,066H,066H,06CH,0F8H,000H,000H,000H,000H +DB 000H,000H,0FEH,066H,062H,068H,078H,0FFH,060H,062H,066H,0FEH,000H,000H,000H,000H +DB 000H,000H,0FEH,066H,062H,068H,078H,0FFH,060H,060H,060H,0F0H,000H,000H,000H,000H +DB 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0FFH,0C6H,0C6H,066H,03AH,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0FEH,0FFH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 000H,000H,03CH,018H,018H,018H,018H,0FFH,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,01EH,00CH,00CH,00CH,00CH,0FFH,0CCH,0CCH,0CCH,078H,000H,000H,000H,000H +DB 000H,000H,0E6H,066H,06CH,06CH,078H,0FFH,06CH,066H,066H,0E6H,000H,000H,000H,000H +DB 000H,000H,0F0H,060H,060H,060H,060H,0FFH,060H,062H,066H,0FEH,000H,000H,000H,000H +DB 000H,000H,0C6H,0EEH,0FEH,0FEH,0D6H,0FFH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 000H,000H,0C6H,0E6H,0F6H,0FEH,0DEH,0FFH,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 000H,000H,038H,06CH,0C6H,0C6H,0C6H,0FFH,0C6H,0C6H,06CH,038H,000H,000H,000H,000H +DB 000H,000H,0FCH,066H,066H,066H,07CH,0FFH,060H,060H,060H,0F0H,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0FFH,0C6H,0D6H,0DEH,07CH,00CH,00EH,000H,000H +DB 000H,000H,0FCH,066H,066H,066H,07CH,0FFH,066H,066H,066H,0E6H,000H,000H,000H,000H +DB 000H,000H,07CH,0C6H,0C6H,060H,038H,0FFH,006H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,07EH,07EH,05AH,018H,018H,0FFH,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0FFH,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0FFH,0C6H,06CH,038H,010H,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0FFH,0D6H,0FEH,06CH,06CH,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,06CH,06CH,038H,0FFH,06CH,06CH,0C6H,0C6H,000H,000H,000H,000H +DB 000H,000H,066H,066H,066H,066H,03CH,0FFH,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,0FEH,0C6H,086H,00CH,018H,0FFH,060H,0C2H,0C6H,0FEH,000H,000H,000H,000H +DB 000H,000H,03CH,030H,030H,030H,030H,0FFH,030H,030H,030H,03CH,000H,000H,000H,000H +DB 000H,000H,000H,080H,0C0H,0E0H,070H,0FFH,01CH,00EH,006H,002H,000H,000H,000H,000H +DB 000H,000H,03CH,00CH,00CH,00CH,00CH,0FFH,00CH,00CH,00CH,03CH,000H,000H,000H,000H +DB 010H,038H,06CH,0C6H,000H,000H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,0FFH,000H,000H,000H,000H,000H,0FFH,000H,000H +DB 030H,030H,018H,000H,000H,000H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,0E0H,060H,060H,078H,06CH,066H,066H,066H,066H,0DCH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,07CH,0C6H,0C0H,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,01CH,00CH,00CH,03CH,06CH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,038H,06CH,064H,060H,0F0H,060H,060H,060H,060H,0F0H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,076H,0CCH,0CCH,0CCH,0CCH,0CCH,07CH,00CH,0CCH,078H,000H +DB 000H,000H,0E0H,060H,060H,06CH,076H,066H,066H,066H,066H,0E6H,000H,000H,000H,000H +DB 000H,000H,018H,018H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,006H,006H,000H,00EH,006H,006H,006H,006H,006H,006H,066H,066H,03CH,000H +DB 000H,000H,0E0H,060H,060H,066H,06CH,078H,078H,06CH,066H,0E6H,000H,000H,000H,000H +DB 000H,000H,038H,018H,018H,018H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0ECH,0FEH,0D6H,0D6H,0D6H,0D6H,0D6H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0DCH,066H,066H,066H,066H,066H,066H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0DCH,066H,066H,066H,066H,066H,07CH,060H,060H,0F0H,000H +DB 000H,000H,000H,000H,000H,076H,0CCH,0CCH,0CCH,0CCH,0CCH,07CH,00CH,00CH,01EH,000H +DB 000H,000H,000H,000H,000H,0DCH,076H,062H,060H,060H,060H,0F0H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,07CH,0C6H,060H,038H,00CH,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,010H,030H,030H,0FCH,030H,030H,030H,030H,036H,01CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,066H,066H,066H,066H,066H,03CH,018H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0C6H,0C6H,0C6H,0D6H,0D6H,0FEH,06CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0C6H,06CH,038H,038H,038H,06CH,0C6H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07EH,006H,00CH,0F8H,000H +DB 000H,000H,000H,000H,000H,0FEH,0CCH,018H,030H,060H,0C6H,0FEH,000H,000H,000H,000H +DB 000H,000H,00EH,018H,018H,018H,070H,018H,018H,018H,018H,00EH,000H,000H,000H,000H +DB 000H,000H,018H,018H,018H,018H,000H,018H,018H,018H,018H,018H,000H,000H,000H,000H +DB 000H,000H,070H,018H,018H,018H,00EH,018H,018H,018H,018H,070H,000H,000H,000H,000H +DB 000H,000H,076H,0DCH,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,010H,038H,06CH,0C6H,0C6H,0C6H,0FEH,000H,000H,000H,000H,000H +DB 000H,000H,03CH,066H,0C2H,0C0H,0C0H,0C0H,0C2H,066H,03CH,00CH,006H,07CH,000H,000H +DB 000H,000H,0CCH,0CCH,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,00CH,018H,030H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H +DB 000H,010H,038H,06CH,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,0CCH,0CCH,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,060H,030H,018H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,038H,06CH,038H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,000H,000H,03CH,066H,060H,060H,066H,03CH,00CH,006H,03CH,000H,000H,000H +DB 000H,010H,038H,06CH,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H +DB 000H,060H,030H,018H,000H,07CH,0C6H,0FEH,0C0H,0C0H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,066H,066H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,018H,03CH,066H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,060H,030H,018H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,0C6H,0C6H,010H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 038H,06CH,038H,000H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 018H,030H,060H,000H,0FEH,066H,060H,07CH,060H,060H,066H,0FEH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0CCH,076H,036H,07EH,0D8H,0D8H,06EH,000H,000H,000H,000H +DB 000H,000H,03EH,06CH,0CCH,0CCH,0FEH,0CCH,0CCH,0CCH,0CCH,0CEH,000H,000H,000H,000H +DB 000H,010H,038H,06CH,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,060H,030H,018H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,030H,078H,0CCH,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,060H,030H,018H,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,0C6H,0C6H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07EH,006H,00CH,078H,000H +DB 000H,0C6H,0C6H,000H,038H,06CH,0C6H,0C6H,0C6H,0C6H,06CH,038H,000H,000H,000H,000H +DB 000H,0C6H,0C6H,000H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,018H,018H,03CH,066H,060H,060H,060H,066H,03CH,018H,018H,000H,000H,000H,000H +DB 000H,038H,06CH,064H,060H,0F0H,060H,060H,060H,060H,0E6H,0FCH,000H,000H,000H,000H +DB 000H,000H,066H,066H,03CH,018H,07EH,018H,07EH,018H,018H,018H,000H,000H,000H,000H +DB 000H,0F8H,0CCH,0CCH,0F8H,0C4H,0CCH,0DEH,0CCH,0CCH,0CCH,0C6H,000H,000H,000H,000H +DB 000H,00EH,01BH,018H,018H,018H,07EH,018H,018H,018H,018H,018H,0D8H,070H,000H,000H +DB 000H,018H,030H,060H,000H,078H,00CH,07CH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,00CH,018H,030H,000H,038H,018H,018H,018H,018H,018H,03CH,000H,000H,000H,000H +DB 000H,018H,030H,060H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,018H,030H,060H,000H,0CCH,0CCH,0CCH,0CCH,0CCH,0CCH,076H,000H,000H,000H,000H +DB 000H,000H,076H,0DCH,000H,0DCH,066H,066H,066H,066H,066H,066H,000H,000H,000H,000H +DB 076H,0DCH,000H,0C6H,0E6H,0F6H,0FEH,0DEH,0CEH,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 000H,03CH,06CH,06CH,03EH,000H,07EH,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,038H,06CH,06CH,038H,000H,07CH,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,030H,030H,000H,030H,030H,060H,0C0H,0C6H,0C6H,07CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,0FEH,0C0H,0C0H,0C0H,0C0H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,0FEH,006H,006H,006H,006H,000H,000H,000H,000H,000H +DB 000H,0C0H,0C0H,0C2H,0C6H,0CCH,018H,030H,060H,0CEH,093H,006H,00CH,01FH,000H,000H +DB 000H,0C0H,0C0H,0C2H,0C6H,0CCH,018H,030H,066H,0CEH,09AH,03FH,006H,00FH,000H,000H +DB 000H,000H,018H,018H,000H,018H,018H,018H,03CH,03CH,03CH,018H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,033H,066H,0CCH,066H,033H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0CCH,066H,033H,066H,0CCH,000H,000H,000H,000H,000H,000H +DB 011H,044H,011H,044H,011H,044H,011H,044H,011H,044H,011H,044H,011H,044H,011H,044H +DB 055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH,055H,0AAH +DB 0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H,0DDH,077H +DB 018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,018H,018H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,0F8H,018H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H +DB 036H,036H,036H,036H,036H,036H,036H,0F6H,036H,036H,036H,036H,036H,036H,036H,036H +DB 000H,000H,000H,000H,000H,000H,000H,0FEH,036H,036H,036H,036H,036H,036H,036H,036H +DB 000H,000H,000H,000H,000H,0F8H,018H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H +DB 036H,036H,036H,036H,036H,0F6H,006H,0F6H,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H,036H +DB 000H,000H,000H,000H,000H,0FEH,006H,0F6H,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,0F6H,006H,0FEH,000H,000H,000H,000H,000H,000H,000H,000H +DB 036H,036H,036H,036H,036H,036H,036H,0FEH,000H,000H,000H,000H,000H,000H,000H,000H +DB 018H,018H,018H,018H,018H,0F8H,018H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,0F8H,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,018H,018H,01FH,000H,000H,000H,000H,000H,000H,000H,000H +DB 018H,018H,018H,018H,018H,018H,018H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,018H,018H,01FH,018H,018H,018H,018H,018H,018H,018H,018H +DB 000H,000H,000H,000H,000H,000H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 018H,018H,018H,018H,018H,018H,018H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,01FH,018H,01FH,018H,018H,018H,018H,018H,018H,018H,018H +DB 036H,036H,036H,036H,036H,036H,036H,037H,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,037H,030H,03FH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,03FH,030H,037H,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,0F7H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0FFH,000H,0F7H,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,037H,030H,037H,036H,036H,036H,036H,036H,036H,036H,036H +DB 000H,000H,000H,000H,000H,0FFH,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 036H,036H,036H,036H,036H,0F7H,000H,0F7H,036H,036H,036H,036H,036H,036H,036H,036H +DB 018H,018H,018H,018H,018H,0FFH,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 036H,036H,036H,036H,036H,036H,036H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0FFH,000H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H +DB 000H,000H,000H,000H,000H,000H,000H,0FFH,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,036H,036H,03FH,000H,000H,000H,000H,000H,000H,000H,000H +DB 018H,018H,018H,018H,018H,01FH,018H,01FH,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,01FH,018H,01FH,018H,018H,018H,018H,018H,018H,018H,018H +DB 000H,000H,000H,000H,000H,000H,000H,03FH,036H,036H,036H,036H,036H,036H,036H,036H +DB 036H,036H,036H,036H,036H,036H,036H,0FFH,036H,036H,036H,036H,036H,036H,036H,036H +DB 018H,018H,018H,018H,018H,0FFH,018H,0FFH,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,018H,018H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,01FH,018H,018H,018H,018H,018H,018H,018H,018H +DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH +DB 000H,000H,000H,000H,000H,000H,000H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH +DB 0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H +DB 00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH,00FH +DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,076H,0DCH,0D8H,0D8H,0D8H,0DCH,076H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,0FCH,0C6H,0FCH,0C6H,0C6H,0FCH,0C0H,0C0H,0C0H,000H,000H +DB 000H,000H,0FEH,0C6H,0C6H,0C0H,0C0H,0C0H,0C0H,0C0H,0C0H,0C0H,000H,000H,000H,000H +DB 000H,000H,000H,000H,080H,0FEH,06CH,06CH,06CH,06CH,06CH,06CH,000H,000H,000H,000H +DB 000H,000H,000H,0FEH,0C6H,060H,030H,018H,030H,060H,0C6H,0FEH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,07EH,0D8H,0D8H,0D8H,0D8H,0D8H,070H,000H,000H,000H,000H +DB 000H,000H,000H,000H,066H,066H,066H,066H,066H,07CH,060H,060H,0C0H,000H,000H,000H +DB 000H,000H,000H,000H,076H,0DCH,018H,018H,018H,018H,018H,018H,000H,000H,000H,000H +DB 000H,000H,000H,07EH,018H,03CH,066H,066H,066H,03CH,018H,07EH,000H,000H,000H,000H +DB 000H,000H,000H,038H,06CH,0C6H,0C6H,0FEH,0C6H,0C6H,06CH,038H,000H,000H,000H,000H +DB 000H,000H,038H,06CH,0C6H,0C6H,0C6H,06CH,06CH,06CH,06CH,0EEH,000H,000H,000H,000H +DB 000H,000H,01EH,030H,018H,00CH,03EH,066H,066H,066H,066H,03CH,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,07EH,0DBH,0DBH,0DBH,07EH,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,003H,006H,07EH,0CFH,0DBH,0F3H,07EH,060H,0C0H,000H,000H,000H,000H +DB 000H,000H,01CH,030H,060H,060H,07CH,060H,060H,060H,030H,01CH,000H,000H,000H,000H +DB 000H,000H,000H,07CH,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,0C6H,000H,000H,000H,000H +DB 000H,000H,000H,000H,0FEH,000H,000H,0FEH,000H,000H,0FEH,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,018H,018H,07EH,018H,018H,000H,000H,0FFH,000H,000H,000H,000H +DB 000H,000H,000H,030H,018H,00CH,006H,00CH,018H,030H,000H,07EH,000H,000H,000H,000H +DB 000H,000H,000H,00CH,018H,030H,060H,030H,018H,00CH,000H,07EH,000H,000H,000H,000H +DB 000H,000H,00EH,01BH,01BH,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H,018H +DB 018H,018H,018H,018H,018H,018H,018H,018H,0D8H,0D8H,0D8H,070H,000H,000H,000H,000H +DB 000H,000H,000H,000H,018H,018H,000H,07EH,000H,018H,018H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,076H,0DCH,000H,076H,0DCH,000H,000H,000H,000H,000H,000H +DB 000H,038H,06CH,06CH,038H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,018H,018H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,018H,000H,000H,000H,000H,000H,000H,000H +DB 000H,00FH,00CH,00CH,00CH,00CH,00CH,0ECH,06CH,06CH,03CH,01CH,000H,000H,000H,000H +DB 000H,0D8H,06CH,06CH,06CH,06CH,06CH,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,070H,098H,030H,060H,0C8H,0F8H,000H,000H,000H,000H,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,07CH,07CH,07CH,07CH,07CH,07CH,07CH,000H,000H,000H,000H,000H +DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H diff --git a/16/tauron30/ASM_SRC/MAIN.ASM b/16/tauron30/ASM_SRC/MAIN.ASM new file mode 100755 index 00000000..8bf81cef --- /dev/null +++ b/16/tauron30/ASM_SRC/MAIN.ASM @@ -0,0 +1,788 @@ +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- -= +;=- Tauron VGA Utilities Version 3.0 -= +;=- Released September 20, 1998 -= +;=- -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +;=- All Rights Reserved. =-= that you put my name some- -= +;=- =-= where in your credits. -= +;=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- I assume no responsibility whatsoever for any effect that this package, -= +;=- the information contained therein or the use thereof has on you, your -= +;=- sanity, computer, spouse, children, pets or anything else related to -= +;=- you or your existance. No warranty is provided nor implied with this -= +;=- source code. -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +.MODEL SMALL +.386 +JUMPS +LOCALS +.STACK 200h +.DATA + +ATTRCON_ADDR EQU 03C0H +MISC_ADDR EQU 03C2H +VGAENABLE_ADDR EQU 03C3H +SEQ_ADDR EQU 03C4H +GRACON_ADDR EQU 03CEH +CRTC_ADDR EQU 03D4H +STATUS_ADDR EQU 03DAH + +; Videomode defines +VMODE_00H EQU 00H +VMODE_01H EQU 00H +VMODE_02H EQU 03H +VMODE_03H EQU 03H +VMODE_04H EQU 04H +VMODE_05H EQU 04H +VMODE_06H EQU 06H +VMODE_07H EQU 07H +VMODE_0DH EQU 0DH +VMODE_0EH EQU 0EH +VMODE_0FH EQU 0FH +VMODE_10H EQU 10H +VMODE_11H EQU 11H +VMODE_12H EQU 12H +VMODE_13H EQU 13H +VMODE_CHAIN4 EQU 14H +VMODE_MODE_X EQU 15H +VMODE_MODE_A EQU 16H +VMODE_MODE_B EQU 17H +VMODE_MODE_C EQU 18H +VMODE_MODE_D EQU 19H +VMODE_MODE_E EQU 1AH +VMODE_MODE_F EQU 1BH +VMODE_MODE_G EQU 1CH +VMODE_MODE_H EQU 1DH +VMODE_MODE_I EQU 1EH +VMODE_MODE_J EQU 1FH +VMODE_MODE_K EQU 20H +VMODE_MODE_L EQU 21H +VMODE_MODE_M EQU 22H +VMODE_MODE_N EQU 23H + +;These next four lines must be included for the text mode stuff to work. +oldmode db ? +oldmisc db ? +oldmask db ? +oldmem db ? + +PALETTE LABEL BYTE +DB 0, 0, 0, 0, 0, 42, 0, 42, 0, 0, 42, 42, 42, 0, 0, 42, 0, 42 +DB 42, 21, 0, 42, 42, 42, 21, 21, 21, 21, 21, 63, 21, 63, 21, 21, 63, 63 +DB 63, 21, 21, 63, 21, 63, 63, 63, 21, 63, 63, 63, 0, 0, 0, 5, 5, 5 +DB 8, 8, 8, 11, 11, 11, 14, 14, 14, 17, 17, 17, 20, 20, 20, 24, 24, 24 +DB 28, 28, 28, 32, 32, 32, 36, 36, 36, 40, 40, 40, 45, 45, 45, 50, 50, 50 +DB 56, 56, 56, 63, 63, 63, 0, 0, 63, 16, 0, 63, 31, 0, 63, 47, 0, 63 +DB 63, 0, 63, 63, 0, 47, 63, 0, 31, 63, 0, 16, 63, 0, 0, 63, 16, 0 +DB 63, 31, 0, 63, 47, 0, 63, 63, 0, 47, 63, 0, 31, 63, 0, 16, 63, 0 +DB 0, 63, 0, 0, 63, 16, 0, 63, 31, 0, 63, 47, 0, 63, 63, 0, 47, 63 +DB 0, 31, 63, 0, 16, 63, 31, 31, 63, 39, 31, 63, 47, 31, 63, 55, 31, 63 +DB 63, 31, 63, 63, 31, 55, 63, 31, 47, 63, 31, 39, 63, 31, 31, 63, 39, 31 +DB 63, 47, 31, 63, 55, 31, 63, 63, 31, 55, 63, 31, 47, 63, 31, 39, 63, 31 +DB 31, 63, 31, 31, 63, 39, 31, 63, 47, 31, 63, 55, 31, 63, 63, 31, 55, 63 +DB 31, 47, 63, 31, 39, 63, 45, 45, 63, 49, 45, 63, 54, 45, 63, 58, 45, 63 +DB 63, 45, 63, 63, 45, 58, 63, 45, 54, 63, 45, 49, 63, 45, 45, 63, 49, 45 +DB 63, 54, 45, 63, 58, 45, 63, 63, 45, 58, 63, 45, 54, 63, 45, 49, 63, 45 +DB 45, 63, 45, 45, 63, 49, 45, 63, 54, 45, 63, 58, 45, 63, 63, 45, 58, 63 +DB 45, 54, 63, 45, 49, 63, 0, 0, 28, 7, 0, 28, 14, 0, 28, 21, 0, 28 +DB 28, 0, 28, 28, 0, 21, 28, 0, 14, 28, 0, 7, 28, 0, 0, 28, 7, 0 +DB 28, 14, 0, 28, 21, 0, 28, 28, 0, 21, 28, 0, 14, 28, 0, 7, 28, 0 +DB 0, 28, 0, 0, 28, 7, 0, 28, 14, 0, 28, 21, 0, 28, 28, 0, 21, 28 +DB 0, 14, 28, 0, 7, 28, 14, 14, 28, 17, 14, 28, 21, 14, 28, 24, 14, 28 +DB 28, 14, 28, 28, 14, 24, 28, 14, 21, 28, 14, 17, 28, 14, 14, 28, 17, 14 +DB 28, 21, 14, 28, 24, 14, 28, 28, 14, 24, 28, 14, 21, 28, 14, 17, 28, 14 +DB 14, 28, 14, 14, 28, 17, 14, 28, 21, 14, 28, 24, 14, 28, 28, 14, 24, 28 +DB 14, 21, 28, 14, 17, 28, 20, 20, 28, 22, 20, 28, 24, 20, 28, 26, 20, 28 +DB 28, 20, 28, 28, 20, 26, 28, 20, 24, 28, 20, 22, 28, 20, 20, 28, 22, 20 +DB 28, 24, 20, 28, 26, 20, 28, 28, 20, 26, 28, 20, 24, 28, 20, 22, 28, 20 +DB 20, 28, 20, 20, 28, 22, 20, 28, 24, 20, 28, 26, 20, 28, 28, 20, 26, 28 +DB 20, 24, 28, 20, 22, 28, 0, 0, 16, 4, 0, 16, 8, 0, 16, 12, 0, 16 +DB 16, 0, 16, 16, 0, 12, 16, 0, 8, 16, 0, 4, 16, 0, 0, 16, 4, 0 +DB 16, 8, 0, 16, 12, 0, 16, 16, 0, 12, 16, 0, 8, 16, 0, 4, 16, 0 +DB 0, 16, 0, 0, 16, 4, 0, 16, 8, 0, 16, 12, 0, 16, 16, 0, 12, 16 +DB 0, 8, 16, 0, 4, 16, 8, 8, 16, 10, 8, 16, 12, 8, 16, 14, 8, 16 +DB 16, 8, 16, 16, 8, 14, 16, 8, 12, 16, 8, 10, 16, 8, 8, 16, 10, 8 +DB 16, 12, 8, 16, 14, 8, 16, 16, 8, 14, 16, 8, 12, 16, 8, 10, 16, 8 +DB 8, 16, 8, 8, 16, 10, 8, 16, 12, 8, 16, 14, 8, 16, 16, 8, 14, 16 +DB 8, 12, 16, 8, 10, 16, 11, 11, 16, 12, 11, 16, 13, 11, 16, 15, 11, 16 +DB 16, 11, 16, 16, 11, 15, 16, 11, 13, 16, 11, 12, 16, 11, 11, 16, 12, 11 +DB 16, 13, 11, 16, 15, 11, 16, 16, 11, 15, 16, 11, 13, 16, 11, 12, 16, 11 +DB 11, 16, 11, 11, 16, 12, 11, 16, 13, 11, 16, 15, 11, 16, 16, 11, 15, 16 +DB 11, 13, 16, 11, 12, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +DB 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 63, 63 + +; Must be included for any videomode to be set. +include modes.inc + +MAIN_MSG LABEL BYTE +DB 'Tauron VGA Utilities v3.0',13,10 +DB 'Copyright (c) 1998 Jeffrey Morgan. All Rights Reserved.',13,10 +DB 'Select a video mode to test: (Modes with a ! are not implemented)',13,10 +DB 'Key Videomode (Modes with a % are unchained)',13,10 +DB '================================================================================' +DB ' 0) 00H, 01H -- 40 x 25 x 16 %F) Mode D -- 360 x 200 x 256',13,10 +DB ' 1) Mode L -- 40 x 43 x 16 %G) Mode E -- 360 x 240 x 256',13,10 +DB ' 2) Mode M -- 40 x 50 x 16 %H) Mode F -- 360 x 350 x 256',13,10 +DB '!3) 07H -- 80 x 25 x 2 %I) Mode G -- 360 x 400 x 256',13,10 +DB ' 4) 02H, 03H -- 80 x 25 x 16 %J) Mode H -- 360 x 480 x 256',13,10 +DB ' 5) Mode J -- 80 x 43 x 16 K) 06H -- 640 x 200 x 2',13,10 +DB ' 6) Mode K -- 80 x 50 x 16 !L) 0FH -- 640 x 350 x 2',13,10 +DB ' 7) 04H, 05H -- 320 x 200 x 4 M) 11H -- 640 x 480 x 2',13,10 +DB ' 8) 0DH -- 320 x 200 x 16 N) 0EH -- 640 x 200 x 16',13,10 +DB ' 9) 13H -- 320 x 200 x 256 O) 10H -- 640 x 350 x 16',13,10 +DB '%A) Chain 4 -- 320 x 200 x 256 P) Mode I -- 640 x 400 x 16',13,10 +DB '%B) Mode X -- 320 x 240 x 256 Q) 12H -- 640 x 480 x 16',13,10 +DB '%C) Mode A -- 320 x 350 x 256',13,10 +DB '%D) Mode B -- 320 x 400 x 256 R) Dual Font Test',13,10 +DB '%E) Mode C -- 320 x 480 x 256',13,10 +DB '===============================================================================',13,10 +DB 'Hit ',39,'ESC',39,' to exit. Press a key [0-9 or A-O]>$' + +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 +TEXTMSG_2 DB 179,'Text Mode: 00H ',179,0 ; +13 +TEXTMSG_3 DB 179,'Width: 80 Height: 25',179,0 ; +8 +TEXTMSG_4 DB 179,'Bytes per screen: 4000',179,0 ; +19 +TEXTMSG_5 DB 179,'Number of pages: 8 ',179,0 +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 + +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 +TEXTMSG_8 DB 179,'Text Mode J ',179,0 ; +11 +TEXTMSG_9 DB 179,'Width: 80 Height: 43',179,0 ; +21, +22 +TEXTMSG_A DB 179,'Bytes per screen: 3440',179,0 ; +19, +20, +21, +22 +TEXTMSG_B DB 179,'Number of pages: 8 ',179,0 +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 + +TEXTMSG_D DB 218,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,191,0 +TEXTMSG_E DB 179,' DUAL FONT MODE ',179,0 ; +TEXTMSG_F DB 192,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,217,0 + +FONT_8x8_OFF DW ? +FONT_8x14_OFF DW ? + +; Attribute for text charcters +ATT DB 1FH + +FONT1 LABEL BYTE +include font1.asm +FONT2 LABEL BYTE +include font2.asm +.CODE + +IODELAY MACRO + REPT 8 + JMP $+2 + ENDM +ENDM + +Start: + MOV AX,@DATA + MOV DS,AX + + ; This must be here to ensure that the fonts are properly found because + ; the location of the fonts in ROM is different on every VGA BIOS. + ; Get location of the fonts for Modes J and K + MOV AH,11h + MOV AL,30h + MOV BH,03h + INT 10H + MOV FONT_8x8_OFF,BP + + ; Get location of the fonts for Modes 00H, 01H, 02H, 03H, and 07H + MOV AH,11h + MOV AL,30h + MOV BH,06h + INT 10H + MOV FONT_8x14_OFF,BP + + ; Reset the mode and clear the screen + MOV AX,0003H + INT 10H + + ; Print out the message + MOV DX,OFFSET MAIN_MSG + MOV AH,9 + INT 21H + +MAIN_LOOP: + + ; Wait for a keypress + MOV AH,0 + INT 16H + + CMP AL,27 + JE QUIT_PROGRAM + + CMP AL,'0' + JE MODE_00_TEST + + CMP AL,'1' + JE MODE_L_TEST + + CMP AL,'2' + JE MODE_M_TEST + + CMP AL,'4' + JE MODE_03_TEST + + CMP AL,'5' + JE MODE_J_TEST + + CMP AL,'6' + JE MODE_K_TEST + + CMP AL,'7' + JE MODE_04_TEST + + CMP AL,'8' + JE MODE_0D_TEST + + CMP AL,'9' + JE MODE_13_TEST + + CMP AL,'a' + JE MODE_C4_TEST + CMP AL,'A' + JE MODE_C4_TEST + + CMP AL,'b' + JE MODE_X_TEST + CMP AL,'B' + JE MODE_X_TEST + + CMP AL,'c' + JE MODE_A_TEST + CMP AL,'C' + JE MODE_A_TEST + + CMP AL,'d' + JE MODE_B_TEST + CMP AL,'D' + JE MODE_B_TEST + + CMP AL,'e' + JE MODE_C_TEST + CMP AL,'E' + JE MODE_C_TEST + + CMP AL,'f' + JE MODE_D_TEST + CMP AL,'F' + JE MODE_D_TEST + + CMP AL,'g' + JE MODE_E_TEST + CMP AL,'G' + JE MODE_E_TEST + + CMP AL,'h' + JE MODE_F_TEST + CMP AL,'H' + JE MODE_F_TEST + + CMP AL,'i' + JE MODE_G_TEST + CMP AL,'I' + JE MODE_G_TEST + + CMP AL,'j' + JE MODE_H_TEST + CMP AL,'J' + JE MODE_H_TEST + + CMP AL,'k' + JE MODE_06_TEST + CMP AL,'K' + JE MODE_06_TEST + + CMP AL,'m' + JE MODE_11_TEST + CMP AL,'M' + JE MODE_11_TEST + + CMP AL,'n' + JE MODE_0E_TEST + CMP AL,'N' + JE MODE_0E_TEST + + CMP AL,'o' + JE MODE_10_TEST + CMP AL,'O' + JE MODE_10_TEST + + CMP AL,'p' + JE MODE_I_TEST + CMP AL,'P' + JE MODE_I_TEST + + CMP AL,'q' + JE MODE_12_TEST + CMP AL,'Q' + JE MODE_12_TEST + + CMP AL,'r' + JE DUAL_TEST + CMP AL,'R' + JE DUAL_TEST + JMP MAIN_LOOP + +; ====================== New Video Mode ==================================== +MODE_00_TEST: + PUSH VMODE_00H + CALL SETVIDEOMODE + + CALL TEXTTEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_03_TEST: + PUSH VMODE_03H + CALL SETVIDEOMODE + + CALL TEXTTEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_04_TEST: + PUSH VMODE_04H + CALL SETVIDEOMODE + + PUSH 0AAAAH + CALL CLEAR_B8000H + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_06_TEST: + PUSH VMODE_06H + CALL SETVIDEOMODE + + PUSH 0FFFFH + CALL CLEAR_B8000H + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_0D_TEST: + PUSH VMODE_0DH + CALL SETVIDEOMODE + + PUSH 12 + CALL CLEAR0DH + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_0E_TEST: + PUSH VMODE_0EH + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_10_TEST: + PUSH VMODE_10H + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_11_TEST: + PUSH VMODE_11H + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_12_TEST: + PUSH VMODE_12H + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_13_TEST: + PUSH VMODE_13H + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_I_TEST: + PUSH VMODE_MODE_I + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_C4_TEST: + PUSH VMODE_CHAIN4 + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_X_TEST: + PUSH VMODE_MODE_X + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_A_TEST: + PUSH VMODE_MODE_A + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_B_TEST: + PUSH VMODE_MODE_B + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_C_TEST: + PUSH VMODE_MODE_C + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_D_TEST: + PUSH VMODE_MODE_D + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_E_TEST: + PUSH VMODE_MODE_E + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_F_TEST: + PUSH VMODE_MODE_F + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_G_TEST: + PUSH VMODE_MODE_G + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_H_TEST: + PUSH VMODE_MODE_H + CALL SETVIDEOMODE + + CALL MODETEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_J_TEST: + PUSH VMODE_MODE_J + CALL SETVIDEOMODE + + CALL TEXTTEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_K_TEST: + PUSH VMODE_MODE_K + CALL SETVIDEOMODE + + CALL TEXTTEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_L_TEST: + PUSH VMODE_MODE_L + CALL SETVIDEOMODE + + CALL TEXTTEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +MODE_M_TEST: + PUSH VMODE_MODE_M + CALL SETVIDEOMODE + + CALL TEXTTEST + + ; Wait for a keypress + MOV AH,0 + INT 16H + JMP RESET + +; ====================== New Video Mode ==================================== +DUAL_TEST: + CALL DUALTEST + +RESET: + ; Reset the mode and clear the screen + MOV AX,0003H + INT 10H + + ; Print out the message + MOV DX,OFFSET MAIN_MSG + MOV AH,9 + INT 21H + JMP MAIN_LOOP + +; ====================== New Video Mode ==================================== +QUIT_PROGRAM: + ; Set the BIOS mode 03h + MOV AX,0003H + INT 10H + + ; Exit to DOS + MOV AX,4C00H + INT 21H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +LOADFONT PROC + PUSH BP + MOV BP,SP + PUSHA + mov dx,GRACON_ADDR ;get graphics port + mov al,5 ;get write mode reg + out dx,al ;select the reg + IODELAY ;delay a bit + inc dx ;change DX + in al,dx ;get value + IODELAY ;pause + mov [oldmode],al ;store it + dec dx ;restore DX + mov al,6 ;get misc reg + out dx,al ;select the reg + IODELAY ;delay a bit + inc dx ;change DX + in al,dx ;get value + IODELAY ;pause + mov [oldmisc],al ;store it + dec dx ;restore DX + mov dx,SEQ_ADDR ;get sequencer port + mov al,2 ;get map mask reg + out dx,al ;select the reg + IODELAY ;delay a bit + inc dx ;change DX + in al,dx ;get value + IODELAY ;pause + mov [oldmask],al ;store it + dec dx ;restore DX + mov al,4 ;get memory selector reg + out dx,al ;select the reg + IODELAY ;delay a bit + inc dx ;change DX + in al,dx ;get value + IODELAY ;pause + mov [oldmem],al ;store it + + mov dx,GRACON_ADDR ;select graphics port + mov al,5 ;get write mode reg + mov ah,[oldmode] ;get old value + and ah,0fch ;mask it + out dx,ax ;set new value + IODELAY ;pause + mov al,6 ;get misc reg + mov ah,[oldmisc] ;get old value + and ah,0f1h ;mask it + or ah,4 ;set a flag + out dx,ax ;set it + IODELAY ;pause + mov dx,SEQ_ADDR ;select sequencer port + mov al,2 ;get mask reg + mov ah,4 ;get new value + out dx,ax ;set it + IODELAY ;pause + mov al,4 ;get memory reg + mov ah,[oldmem] ;get old value + or ah,4 ;set flag + out dx,ax ;set value + IODELAY ;pause + + PUSH DS + PUSH ES + + MOV AX,[BP+8] + MOV ES,AX + MOV DI,[BP+10] + + MOV AX,[BP+4] + MOV DS,AX + MOV SI,[BP+6] + +@@LOOP1: + PUSH DI + MOV CL,[BP+12] +@@LOOP2: + MOVSB + DEC CL + JNZ @@LOOP2 + + MOV CL,32 + SUB CL,byte ptr [BP+12] +@@LOOP3: + MOV AX,00H + STOSB + DEC CL + JNZ @@LOOP3 + + POP DI + ADD DI,32 + + DEC CH + JNZ @@LOOP1 + + POP ES + POP DS + + mov dx,GRACON_ADDR ;get graphics port + mov al,5 ;get 1st reg + mov ah,[oldmode] ;get old value + out dx,ax ;set it + IODELAY ;pause + mov al,6 ;get 2nd reg + mov ah,[oldmisc] ;get old value + out dx,ax ;set it + IODELAY ;pause + mov dx,SEQ_ADDR ;get seq port + mov al,2 ;get 3rd reg + mov ah,[oldmask] ;get old value + out dx,ax ;set it + IODELAY ;pause + mov al,4 ;get 4th reg + mov ah,[oldmem] ;get old value + out dx,ax ;set it + IODELAY ;pause + + POPA + POP BP + RET 10 +LOADFONT ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +include clear.asm +include modes.asm +include tests.asm +include dual.asm +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +END Start diff --git a/16/tauron30/ASM_SRC/MODES.ASM b/16/tauron30/ASM_SRC/MODES.ASM new file mode 100755 index 00000000..28e72a84 --- /dev/null +++ b/16/tauron30/ASM_SRC/MODES.ASM @@ -0,0 +1,1240 @@ +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- -= +;=- Tauron VGA Utilities Version 3.0 -= +;=- Released September 20, 1998 -= +;=- -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +;=- All Rights Reserved. =-= that you put my name some- -= +;=- =-= where in your credits. -= +;=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- I assume no responsibility whatsoever for any effect that this package, -= +;=- the information contained therein or the use thereof has on you, your -= +;=- sanity, computer, spouse, children, pets or anything else related to -= +;=- you or your existance. No warranty is provided nor implied with this -= +;=- source code. -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +SETVIDEOMODE PROC + PUSH BP + MOV BP,SP + + MOV AX,word ptr [BP+4] + MOV Mode.videomode, AX + CMP AX,VMODE_00H + JE SET00H + CMP AX,VMODE_03H + JE SET03H + CMP AX,VMODE_04H + JE SET04H + CMP AX,VMODE_06H + JE SET06H +; CMP AX,VMODE_07H +; JE SET07H + CMP AX,VMODE_0DH + JE SET0DH + CMP AX,VMODE_0EH + JE SET0EH +; CMP AX,VMODE_0FH +; JE SET0FH + CMP AX,VMODE_10H + JE SET10H + CMP AX,VMODE_11H + JE SET11H + CMP AX,VMODE_12H + JE SET12H + CMP AX,VMODE_13H + JE SET13H + CMP AX,VMODE_CHAIN4 + JE SETCHAIN4 + CMP AX,VMODE_MODE_X + JE SETMODE_X + CMP AX,VMODE_MODE_A + JE SETMODE_A + CMP AX,VMODE_MODE_B + JE SETMODE_B + CMP AX,VMODE_MODE_C + JE SETMODE_C + CMP AX,VMODE_MODE_D + JE SETMODE_D + CMP AX,VMODE_MODE_E + JE SETMODE_E + CMP AX,VMODE_MODE_F + JE SETMODE_F + CMP AX,VMODE_MODE_G + JE SETMODE_G + CMP AX,VMODE_MODE_H + JE SETMODE_H + CMP AX,VMODE_MODE_I + JE SETMODE_I + CMP AX,VMODE_MODE_J + JE SETMODE_J + CMP AX,VMODE_MODE_K + JE SETMODE_K + CMP AX,VMODE_MODE_L + JE SETMODE_L + CMP AX,VMODE_MODE_M + JE SETMODE_M + JMP SET_OUT + +SET00H: + MOV SI,OFFSET MODE00H + CALL SETMODE + + PUSH 16 ; Bytes per character + PUSH 0 ; Offset of font in Video Memory + PUSH 0A000H + PUSH FONT_8x14_OFF ; Offset of Font in BIOS + PUSH 0C000H + CALL LOADFONT + CALL SETPALETTE16 + MOV Mode.mode_width,40; + MOV Mode.mode_height,25; + MOV Mode.width_bytes,1000; + MOV Mode.colors,16; + MOV Mode.attrib,TVU_TEXT; + JMP SET_OUT + +SET03H: + MOV SI,OFFSET MODE03H + CALL SETMODE + + PUSH 16 ; Bytes per character + PUSH 0 ; Offset of font in Video Memory + PUSH 0A000H + PUSH FONT_8x14_OFF ; Offset of Font in BIOS + PUSH 0C000H + CALL LOADFONT +; CALL SETPALETTE16 + MOV Mode.mode_width,80; + MOV Mode.mode_height,25; + MOV Mode.width_bytes,2000; + MOV Mode.colors,16; + MOV Mode.attrib,TVU_TEXT; + JMP SET_OUT + +SET04H: + MOV SI,OFFSET MODE04H + CALL SETMODE + CALL SETPALETTE4 + MOV Mode.mode_width,320; + MOV Mode.mode_height,200; + MOV Mode.width_bytes,65535; + MOV Mode.colors,4; + MOV Mode.attrib,TVU_GRAPHICS; + OR Mode.attrib,TVU_B8000_ADDR + JMP SET_OUT + +SET06H: + MOV SI,OFFSET MODE06H + CALL SETMODE + CALL SETPALETTE4 + MOV Mode.mode_width,640; + MOV Mode.mode_height,200; + MOV Mode.width_bytes,16384; + MOV Mode.colors,4; + MOV Mode.attrib,TVU_GRAPHICS; + OR Mode.attrib,TVU_B8000_ADDR + OR Mode.attrib,TVU_PLANAR + JMP SET_OUT + +SET07H: + MOV SI,OFFSET MODE07H + CALL SETMODE + + PUSH 16 ; Bytes per character + PUSH 0 ; Offset of font in Video Memory + PUSH 0A000H + PUSH FONT_8x14_OFF ; Offset of Font in BIOS + PUSH 0C000H + CALL LOADFONT + MOV Mode.mode_width,80; + MOV Mode.mode_height,25; + MOV Mode.width_bytes,2000; + MOV Mode.colors,2; + MOV Mode.attrib,TVU_TEXT + OR Mode.attrib,TVU_MONOCHROME + JMP SET_OUT + +SET0DH: + MOV SI,OFFSET MODE0DH + CALL SETMODE + CALL SETPALETTE16 + MOV Mode.mode_width,320; + MOV Mode.mode_height,200; + MOV Mode.width_bytes,8000; + MOV Mode.colors,16; + MOV Mode.attrib,TVU_GRAPHICS; + OR Mode.attrib,TVU_PLANAR + JMP SET_OUT + +SET0EH: + MOV SI,OFFSET MODE0EH + CALL SETMODE + CALL SETPALETTE16 + MOV Mode.mode_width,640; + MOV Mode.mode_height,200; + MOV Mode.width_bytes,16000; + MOV Mode.colors,16; + MOV Mode.attrib,TVU_GRAPHICS; + OR Mode.attrib,TVU_PLANAR + JMP SET_OUT + +SET0FH: + MOV SI,OFFSET MODE0FH + CALL SETMODE + MOV Mode.mode_width,640; + MOV Mode.mode_height,350; + MOV Mode.width_bytes,28000; + MOV Mode.colors,2; + MOV Mode.attrib,TVU_GRAPHICS + OR Mode.attrib,TVU_MONOCHROME + JMP SET_OUT + +SET10H: + MOV SI,OFFSET MODE10H + CALL SETMODE + CALL SETPALETTE16 + MOV Mode.mode_width,640; + MOV Mode.mode_height,350; + MOV Mode.width_bytes,28000; + MOV Mode.colors,16; + MOV Mode.attrib,TVU_GRAPHICS; + OR Mode.attrib,TVU_PLANAR + JMP SET_OUT + +SET11H: + MOV SI,OFFSET MODE11H + CALL SETMODE + CALL SETPALETTE16 + MOV Mode.mode_width,640; + MOV Mode.mode_height,480; + MOV Mode.width_bytes,38400; + MOV Mode.colors,2; + MOV Mode.attrib,TVU_GRAPHICS; + OR Mode.attrib,TVU_PLANAR + JMP SET_OUT + +SET12H: + MOV SI,OFFSET MODE12H + CALL SETMODE + CALL SETPALETTE16 + MOV Mode.mode_width,640 + MOV Mode.mode_height,480 + MOV Mode.width_bytes,38400 + MOV Mode.colors,16 + MOV Mode.attrib,TVU_GRAPHICS + OR Mode.attrib,TVU_PLANAR + JMP SET_OUT + +SET13H: + MOV SI,OFFSET MODE13H + CALL SETMODE + CALL SETPALETTE256 + MOV Mode.mode_width,320; + MOV Mode.mode_height,200; + MOV Mode.width_bytes,64000; + MOV Mode.colors,256; + MOV Mode.attrib,TVU_GRAPHICS; + JMP SET_OUT + +SETCHAIN4: + MOV SI,OFFSET CHAIN4 + CALL SETMODE + CALL SETPALETTE256 + MOV Mode.mode_width,320; + MOV Mode.mode_height,200; + MOV Mode.width_bytes,16000; + MOV Mode.colors,256; + MOV Mode.attrib,TVU_GRAPHICS; + OR Mode.attrib,TVU_UNCHAINED + JMP SET_OUT + +SETMODE_X: + MOV SI,OFFSET CHAIN4 + CALL SETMODE + + MOV DX,MISC_ADDR + MOV AX,0E3H + OUT DX,AL + + MOV DX,CRTC_ADDR + + ; turn off write protect + MOV AX,02C11H + OUT DX,AX + ; vertical total + MOV AX,00D06H + OUT DX,AX + ; overflow register + MOV AX,03E07H + OUT DX,AX + ; vertical retrace start + MOV AX,0EA10H + OUT DX,AX + ; vertical retrace end AND wr.prot + MOV AX,0AC11H + OUT DX,AX + ; vertical display enable end + MOV AX,0DF12H + OUT DX,AX + ; start vertical blanking + MOV AX,0E715H + OUT DX,AX + ; end vertical blanking + MOV AX,00616H + OUT DX,AX + + CALL SETPALETTE256 + MOV Mode.mode_width,320; + MOV Mode.mode_height,240; + MOV Mode.width_bytes,19200; + MOV Mode.colors,256; + MOV Mode.attrib,TVU_GRAPHICS + OR Mode.attrib,TVU_UNCHAINED + JMP SET_OUT + +SETMODE_A: + MOV SI,OFFSET CHAIN4 + CALL SETMODE + + ; turn off double scanning mode + MOV DX,CRTC_ADDR + MOV AX,9 + OUT DX,AL + INC DX + IN AL,DX + AND AL,0E0h + OUT DX,AL + + ; change the vertical resolution flags to 350 + MOV DX,03CCH + IN AL,DX + AND AL,02Fh + OR AL,80h + MOV DX,MISC_ADDR + OUT DX,AL + + MOV DX,CRTC_ADDR + ; turn off write protect + MOV AX,02C11H + OUT DX,AX + ; vertical total + MOV AX,0BF06H + OUT DX,AX + ; overflow register + MOV AX,01F07H + OUT DX,AX + ; vertical retrace start + MOV AX,08310H + OUT DX,AX + ; vertical retrace end AND wr.prot + MOV AX,08511H + OUT DX,AX + ; vertical display enable end + MOV AX,05D12H + OUT DX,AX + ; start vertical blanking + MOV AX,06315H + OUT DX,AX + ; end vertical blanking + MOV AX,0BA16H + OUT DX,AX + + CALL SETPALETTE256 + + MOV Mode.mode_width,320; + MOV Mode.mode_height,350; + MOV Mode.width_bytes,28000; + MOV Mode.colors,256; + MOV Mode.attrib,TVU_GRAPHICS + OR Mode.attrib,TVU_UNCHAINED + JMP SET_OUT + +SETMODE_B: + MOV SI,OFFSET CHAIN4 + CALL SETMODE + + ; turn off double scanning mode + MOV DX,CRTC_ADDR + MOV AX,9 + OUT DX,AL + INC DX + IN AL,DX + AND AL,0E0h + OUT DX,AL + + ; change the vertical resolution flags to 400 + MOV DX,03CCH + IN AL,DX + AND AL,02Fh + OR AL,40h + MOV DX,MISC_ADDR + OUT DX,AL + + CALL SETPALETTE256 + + MOV Mode.mode_width,320; + MOV Mode.mode_height,400; + MOV Mode.width_bytes,32000; + MOV Mode.colors,256; + MOV Mode.attrib,TVU_GRAPHICS + OR Mode.attrib,TVU_UNCHAINED + JMP SET_OUT + +SETMODE_C: + MOV SI,OFFSET CHAIN4 + CALL SETMODE + + ; turn off double scanning mode + MOV DX,CRTC_ADDR + MOV AX,9 + OUT DX,AL + INC DX + IN AL,DX + AND AL,0E0h + OUT DX,AL + + ; change the vertical resolution flags to 480 + MOV DX,03CCH + IN AL,DX + AND AL,02Fh + OR AL,0C0h + MOV DX,MISC_ADDR + OUT DX,AL + + MOV DX,CRTC_ADDR + ; turn off write protect + MOV AX,02C11H + OUT DX,AX + ; vertical total + MOV AX,00D06H + OUT DX,AX + ; overflow register + MOV AX,03E07H + OUT DX,AX + ; vertical retrace start + MOV AX,0EA10H + OUT DX,AX + ; vertical retrace end AND wr.prot + MOV AX,0AC11H + OUT DX,AX + ; vertical display enable end + MOV AX,0DF12H + OUT DX,AX + ; start vertical blanking + MOV AX,0E715H + OUT DX,AX + ; end vertical blanking + MOV AX,00616H + OUT DX,AX + + CALL SETPALETTE256 + + MOV Mode.mode_width,320; + MOV Mode.mode_height,480; + MOV Mode.width_bytes,38400; + MOV Mode.colors,256; + MOV Mode.attrib,TVU_GRAPHICS + OR Mode.attrib,TVU_UNCHAINED + JMP SET_OUT + +SETMODE_D: + MOV SI,OFFSET MODE13H + CALL SETMODE + + ; Turn off Chain 4 + MOV DX,SEQ_ADDR + MOV AX,0604H + OUT DX,AX + ; Activate a synchronous reset + MOV AX,0100H + OUT DX,AX + ; Select 28 mhz pixel clock + MOV DX,MISC_ADDR + MOV AL,067H + OUT DX,AL + ; Release synchronous reset + MOV DX,SEQ_ADDR + MOV AX,0300H + OUT DX,AX + + ; change the vertical resolution flags to 400 + MOV DX,03CCH + IN AL,DX + AND AL,02Fh + OR AL,40h + MOV DX,MISC_ADDR + OUT DX,AL + CALL SETPALETTE256 + + MOV DX,CRTC_ADDR + ; turn off write protect + MOV AX,02C11H + OUT DX,AX + + MOV AX,06B00H + OUT DX,AX + MOV AX,05901H + OUT DX,AX + MOV AX,05A02H + OUT DX,AX + MOV AX,08E03H + OUT DX,AX + MOV AX,05E04H + OUT DX,AX + MOV AX,08A05H + OUT DX,AX + MOV AX,00008H + OUT DX,AX + MOV AX,0C009H + OUT DX,AX + MOV AX,0000AH + OUT DX,AX + MOV AX,0000BH + OUT DX,AX + MOV AX,0000CH + OUT DX,AX + MOV AX,0000DH + OUT DX,AX + MOV AX,0000EH + OUT DX,AX + MOV AX,0000FH + OUT DX,AX + MOV AX,0AC11H + OUT DX,AX + MOV AX,02D13H + OUT DX,AX + MOV AX,00014H + OUT DX,AX + MOV AX,0E317H + OUT DX,AX + MOV AX,0FF18H + OUT DX,AX + + CALL SETPALETTE256 + + MOV Mode.mode_width,360; + MOV Mode.mode_height,200; + MOV Mode.width_bytes,18000; + MOV Mode.colors,256; + MOV Mode.attrib,TVU_GRAPHICS + OR Mode.attrib,TVU_UNCHAINED + JMP SET_OUT + + +SETMODE_E: + MOV SI,OFFSET MODE13H + CALL SETMODE + + ; Turn off Chain 4 + MOV DX,SEQ_ADDR + MOV AX,0604H + OUT DX,AX + ; Activate a synchronous reset + MOV AX,0100H + OUT DX,AX + ; Select 28 mhz pixel clock + MOV DX,MISC_ADDR + MOV AL,067H + OUT DX,AL + ; Release synchronous reset + MOV DX,SEQ_ADDR + MOV AX,0300H + OUT DX,AX + + ; change the vertical resolution flags to 480 + MOV DX,03CCH + IN AL,DX + AND AL,02Fh + OR AL,0C0h + MOV DX,MISC_ADDR + OUT DX,AL + CALL SETPALETTE256 + + MOV DX,CRTC_ADDR + ; turn off write protect + MOV AX,02C11H + OUT DX,AX + + MOV AX,06B00H + OUT DX,AX + MOV AX,05901H + OUT DX,AX + MOV AX,05A02H + OUT DX,AX + MOV AX,08E03H + OUT DX,AX + MOV AX,05E04H + OUT DX,AX + MOV AX,08A05H + OUT DX,AX + MOV AX,00D06H + OUT DX,AX + MOV AX,03E07H + OUT DX,AX + MOV AX,00008H + OUT DX,AX + MOV AX,0C009H + OUT DX,AX + MOV AX,0000AH + OUT DX,AX + MOV AX,0000BH + OUT DX,AX + MOV AX,0000DH + OUT DX,AX + MOV AX,0000CH + OUT DX,AX + MOV AX,0000EH + OUT DX,AX + MOV AX,0000FH + OUT DX,AX + MOV AX,0EA10H + OUT DX,AX + MOV AX,0AC11H + OUT DX,AX + MOV AX,0DF12H + OUT DX,AX + MOV AX,02D13H + OUT DX,AX + MOV AX,00014H + OUT DX,AX + MOV AX,0E715H + OUT DX,AX + MOV AX,00616H + OUT DX,AX + MOV AX,0E317H + OUT DX,AX + MOV AX,0FF18H + OUT DX,AX + + CALL SETPALETTE256 + + MOV Mode.mode_width,360; + MOV Mode.mode_height,240; + MOV Mode.width_bytes,21600; + MOV Mode.colors,256; + MOV Mode.attrib,TVU_GRAPHICS + OR Mode.attrib,TVU_UNCHAINED + JMP SET_OUT + +SETMODE_F: + MOV SI,OFFSET MODE13H + CALL SETMODE + + ; Turn off Chain 4 + MOV DX,SEQ_ADDR + MOV AX,0604H + OUT DX,AX + ; Activate a synchronous reset + MOV AX,0100H + OUT DX,AX + ; Select 28 mhz pixel clock + MOV DX,MISC_ADDR + MOV AL,067H + OUT DX,AL + ; Release synchronous reset + MOV DX,SEQ_ADDR + MOV AX,0300H + OUT DX,AX + + ; change the vertical resolution flags to 350 + MOV DX,03CCH + IN AL,DX + AND AL,02Fh + OR AL,080h + MOV DX,MISC_ADDR + OUT DX,AL + CALL SETPALETTE256 + + MOV DX,CRTC_ADDR + ; turn off write protect + MOV AX,02C11H + OUT DX,AX + + MOV AX,06B00H + OUT DX,AX + MOV AX,05901H + OUT DX,AX + MOV AX,05A02H + OUT DX,AX + MOV AX,08E03H + OUT DX,AX + MOV AX,05E04H + OUT DX,AX + MOV AX,08A05H + OUT DX,AX + MOV AX,0BF06H + OUT DX,AX + MOV AX,01F07H + OUT DX,AX + MOV AX,00008H + OUT DX,AX + MOV AX,04009H + OUT DX,AX + MOV AX,0000AH + OUT DX,AX + MOV AX,0000BH + OUT DX,AX + MOV AX,0000DH + OUT DX,AX + MOV AX,0000CH + OUT DX,AX + MOV AX,0000EH + OUT DX,AX + MOV AX,0000FH + OUT DX,AX + MOV AX,08310H + OUT DX,AX + MOV AX,08511H + OUT DX,AX + MOV AX,05D12H + OUT DX,AX + MOV AX,02D13H + OUT DX,AX + MOV AX,00014H + OUT DX,AX + MOV AX,06315H + OUT DX,AX + MOV AX,0BA16H + OUT DX,AX + MOV AX,0E317H + OUT DX,AX + MOV AX,0FF18H + OUT DX,AX + + CALL SETPALETTE256 + + MOV Mode.mode_width,360; + MOV Mode.mode_height,350; + MOV Mode.width_bytes,31500; + MOV Mode.colors,256; + MOV Mode.attrib,TVU_GRAPHICS + OR Mode.attrib,TVU_UNCHAINED + JMP SET_OUT + +SETMODE_G: + MOV SI,OFFSET MODE13H + CALL SETMODE + + ; Turn off Chain 4 + MOV DX,SEQ_ADDR + MOV AX,0604H + OUT DX,AX + ; Activate a synchronous reset + MOV AX,0100H + OUT DX,AX + ; Select 28 mhz pixel clock + MOV DX,MISC_ADDR + MOV AL,067H + OUT DX,AL + ; Release synchronous reset + MOV DX,SEQ_ADDR + MOV AX,0300H + OUT DX,AX + + ; change the vertical resolution flags to 400 + MOV DX,03CCH + IN AL,DX + AND AL,02Fh + OR AL,040h + MOV DX,MISC_ADDR + OUT DX,AL + + MOV DX,CRTC_ADDR + ; turn off write protect + MOV AX,02C11H + OUT DX,AX + + MOV AX,06B00H + OUT DX,AX + MOV AX,05901H + OUT DX,AX + MOV AX,05A02H + OUT DX,AX + MOV AX,08E03H + OUT DX,AX + MOV AX,05E04H + OUT DX,AX + MOV AX,08A05H + OUT DX,AX + MOV AX,00008H + OUT DX,AX + MOV AX,04009H + OUT DX,AX + MOV AX,0000AH + OUT DX,AX + MOV AX,0000BH + OUT DX,AX + MOV AX,0000DH + OUT DX,AX + MOV AX,0000CH + OUT DX,AX + MOV AX,0000EH + OUT DX,AX + MOV AX,0000FH + OUT DX,AX + MOV AX,0AC11H + OUT DX,AX + MOV AX,02D13H + OUT DX,AX + MOV AX,00014H + OUT DX,AX + MOV AX,0E317H + OUT DX,AX + MOV AX,0FF18H + OUT DX,AX + + CALL SETPALETTE256 + + MOV Mode.mode_width,360; + MOV Mode.mode_height,400; + MOV Mode.width_bytes,36000; + MOV Mode.colors,256; + MOV Mode.attrib,TVU_GRAPHICS + OR Mode.attrib,TVU_UNCHAINED + JMP SET_OUT + +SETMODE_H: + + MOV SI,OFFSET MODE13H + CALL SETMODE + + ; Turn off Chain4 + MOV DX,SEQ_ADDR + MOV AX,0604H + OUT DX,AX + + ; Activate a synchronous reset + MOV AX,0100H + OUT DX,AX + + ; Select 28 mhz pixel clock + MOV DX,MISC_ADDR + MOV AL,067H + OUT DX,AL + + ; Release synchronous reset + MOV DX,SEQ_ADDR + MOV AX,0300H + OUT DX,AX + + ; change the vertical resolution flags to 480 + MOV DX,03CCH + IN AL,DX + AND AL,02Fh + OR AL,0C0h + MOV DX,MISC_ADDR + OUT DX,AL + + + MOV DX,CRTC_ADDR + ; turn off write protect + MOV AX,02C11H + OUT DX,AX + + MOV AX,06B00H + OUT DX,AX + MOV AX,05901H + OUT DX,AX + MOV AX,05A02H + OUT DX,AX + MOV AX,08E03H + OUT DX,AX + MOV AX,05E04H + OUT DX,AX + MOV AX,08A05H + OUT DX,AX + MOV AX,00D06H + OUT DX,AX + MOV AX,03E07H + OUT DX,AX + MOV AX,00008H + OUT DX,AX + MOV AX,04009H + OUT DX,AX + MOV AX,0000AH + OUT DX,AX + MOV AX,0000BH + OUT DX,AX + MOV AX,0000DH + OUT DX,AX + MOV AX,0000CH + OUT DX,AX + MOV AX,0000EH + OUT DX,AX + MOV AX,0000FH + OUT DX,AX + MOV AX,0EA10H + OUT DX,AX + MOV AX,0AC11H + OUT DX,AX + MOV AX,0DF12H + OUT DX,AX + MOV AX,02D13H + OUT DX,AX + MOV AX,00014H + OUT DX,AX + MOV AX,0E715H + OUT DX,AX + MOV AX,00616H + OUT DX,AX + MOV AX,0E317H + OUT DX,AX + MOV AX,0FF18H + OUT DX,AX + + CALL SETPALETTE256 + + MOV Mode.mode_width,360; + MOV Mode.mode_height,480; + MOV Mode.width_bytes,43200; + MOV Mode.colors,256; + MOV Mode.attrib,TVU_GRAPHICS + OR Mode.attrib,TVU_UNCHAINED + JMP SET_OUT + +SETMODE_I: + MOV SI,OFFSET MODE10H + CALL SETMODE + + MOV DX,03CCH + IN AL,DX + AND AL,03FH + OR AL,40H + + MOV DX,03C2H + OUT DX,AL + + MOV DX,CRTC_ADDR + MOV AX,9C10H + OUT DX,AX + IODELAY + + MOV AX,8311H + OUT DX,AX + IODELAY + + MOV AX,8F12H + OUT DX,AX + IODELAY + + MOV AX,9615H + OUT DX,AX + IODELAY + + MOV AX,0B916H + OUT DX,AX + IODELAY + + CALL SETPALETTE16 + MOV Mode.mode_width,640; + MOV Mode.mode_height,400; + MOV Mode.width_bytes,32000; + MOV Mode.colors,16; + MOV Mode.attrib,TVU_GRAPHICS + OR Mode.attrib,TVU_PLANAR + JMP SET_OUT + +SETMODE_J: + MOV SI,OFFSET MODEJ + CALL SETMODE + CALL SETPALETTE16 + + PUSH 8 ; Bytes per character + PUSH 0 ; Offset of font in Video Memory + PUSH 0A000H + PUSH FONT_8x8_OFF ; Offset of Font in BIOS + PUSH 0C000H + CALL LOADFONT + + MOV Mode.mode_width,80; + MOV Mode.mode_height,43; + MOV Mode.width_bytes,3440; + MOV Mode.colors,16; + MOV Mode.attrib,TVU_TEXT + JMP SET_OUT + +SETMODE_K: + MOV SI,OFFSET MODEK + CALL SETMODE + CALL SETPALETTE16 + + PUSH 8 ; Bytes per character + PUSH 0 ; Offset of font in Video Memory + PUSH 0A000H + PUSH FONT_8x8_OFF ; Offset of Font in BIOS + PUSH 0C000H + CALL LOADFONT + + MOV Mode.mode_width,80; + MOV Mode.mode_height,50; + MOV Mode.width_bytes,4000; + MOV Mode.colors,16; + MOV Mode.attrib,TVU_TEXT + JMP SET_OUT + +SETMODE_L: + MOV SI,OFFSET MODE_L + CALL SETMODE + CALL SETPALETTE16 + + PUSH 8 ; Bytes per character + PUSH 0 ; Offset of font in Video Memory + PUSH 0A000H + PUSH FONT_8x8_OFF ; Offset of Font in BIOS + PUSH 0C000H + CALL LOADFONT + + MOV Mode.mode_width,40; + MOV Mode.mode_height,43; + MOV Mode.width_bytes,3440; + MOV Mode.colors,16; + MOV Mode.attrib,TVU_TEXT + JMP SET_OUT + +SETMODE_M: + MOV SI,OFFSET MODEM + CALL SETMODE + CALL SETPALETTE16 + + PUSH 8 ; Bytes per character + PUSH 0 ; Offset of font in Video Memory + PUSH 0A000H + PUSH FONT_8x8_OFF ; Offset of Font in BIOS + PUSH 0C000H + CALL LOADFONT + + MOV Mode.mode_width,40; + MOV Mode.mode_height,50; + MOV Mode.width_bytes,4000; + MOV Mode.colors,16; + MOV Mode.attrib,TVU_TEXT + +SET_OUT: + + POP BP + RET 2 +SETVIDEOMODE ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + + PUBLIC SETMODE +SETMODE PROC + + ; Send MISC regs + MOV DX,MISC_ADDR + MOV AL,[SI] + OUT DX,AL + IODELAY + INC SI + + MOV DX,STATUS_ADDR + MOV AL,[SI] + OUT DX,AL + IODELAY + INC SI + + ; Send SEQ regs + MOV CX,0 +REG_LOOP: + MOV DX,SEQ_ADDR + MOV AL,CL + OUT DX,AL + IODELAY + + MOV DX,SEQ_ADDR + INC DX + MOV AL,[SI] + OUT DX,AL + IODELAY + INC SI + INC CX + CMP CL,5 + JL REG_LOOP + + ; Clear Protection bits + MOV AH,0EH + MOV AL,11H + AND AH,7FH + MOV DX,CRTC_ADDR + OUT DX,AX + IODELAY + + ; Send CRTC regs + MOV CX,0 +REG_LOOP2: + MOV DX,CRTC_ADDR + MOV AL,CL + OUT DX,AL + IODELAY + + MOV DX,CRTC_ADDR + INC DX + MOV AL,[SI] + OUT DX,AL + IODELAY + + INC SI + INC CX + CMP CL,25 + JL REG_LOOP2 + + ; Send GRAPHICS regs + MOV CX,0 +REG_LOOP3: + MOV DX,GRACON_ADDR + MOV AL,CL + OUT DX,AL + IODELAY + + MOV DX,GRACON_ADDR + INC DX + MOV AL,[SI] + OUT DX,AL + IODELAY + + INC SI + INC CX + CMP CL,9 + JL REG_LOOP3 + + MOV DX,STATUS_ADDR + IN AL,DX + IODELAY + + ; Send ATTRCON regs + MOV CX,0 +REG_LOOP4: + MOV DX,ATTRCON_ADDR + IN AX,DX + + MOV AL,CL + OUT DX,AL + IODELAY + + MOV AL,[SI] + OUT DX,AL + IODELAY + + INC SI + INC CX + CMP CL,21 + JL REG_LOOP4 + + MOV AL,20H + OUT DX,AL + IODELAY + + RET +SETMODE ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +; Assumes [bp+4] = color +; Assumes [bp+6] = r value +; Assumes [bp+8] = g value +; Assumes [bp+10] = b value + PUBLIC SETPAL +SETPAL PROC + PUSH BP + MOV BP,SP + PUSHA + + MOV AX,WORD PTR [BP+4] + ; Send color + MOV DX,03C8H + OUT DX,AL + + ; Write R value + MOV DX,03C9H + MOV AL,BYTE PTR [BP+6] + OUT DX,AL + + ; Write G value + MOV DX,03C9H + MOV AL,BYTE PTR [BP+8] + OUT DX,AL + + ; Write B value + MOV DX,03C9H + MOV AL,BYTE PTR [BP+10] + OUT DX,AL + + POPA + POP BP + RET 8 +SETPAL ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +SETPALETTE4 PROC + PUSH 0 + PUSH 0 + PUSH 0 + PUSH 0 + CALL SETPAL + + PUSH 42 + PUSH 42 + PUSH 0 + PUSH 1 + CALL SETPAL + + PUSH 42 + PUSH 0 + PUSH 42 + PUSH 2 + CALL SETPAL + + PUSH 63 + PUSH 63 + PUSH 63 + PUSH 3 + CALL SETPAL + + RET +SETPALETTE4 ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +SETPALETTE16 PROC + + MOV SI,OFFSET PALETTE + MOV CX,16 + MOV DX,0 +PAL_LOOP: + PUSH WORD PTR [SI+2] + PUSH WORD PTR [SI+1] + PUSH WORD PTR [SI] + PUSH DX + CALL SETPAL + + INC DX + ADD SI,3 + LOOP PAL_LOOP + + RET +SETPALETTE16 ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +SETPALETTE256 PROC + + MOV SI,OFFSET PALETTE + MOV CX,256 + MOV DX,0 +PAL_LOOP2: + PUSH WORD PTR [SI+2] + PUSH WORD PTR [SI+1] + PUSH WORD PTR [SI] + PUSH DX + CALL SETPAL + + INC DX + ADD SI,3 + LOOP PAL_LOOP2 + + RET +SETPALETTE256 ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= diff --git a/16/tauron30/ASM_SRC/MODES.INC b/16/tauron30/ASM_SRC/MODES.INC new file mode 100755 index 00000000..3c8a84a0 --- /dev/null +++ b/16/tauron30/ASM_SRC/MODES.INC @@ -0,0 +1,196 @@ +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- -= +;=- Tauron VGA Utilities Version 3.0 -= +;=- Released September 20, 1998 -= +;=- -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +;=- All Rights Reserved. =-= that you put my name some- -= +;=- =-= where in your credits. -= +;=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- I assume no responsibility whatsoever for any effect that this package, -= +;=- the information contained therein or the use thereof has on you, your -= +;=- sanity, computer, spouse, children, pets or anything else related to -= +;=- you or your existance. No warranty is provided nor implied with this -= +;=- source code. -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- VGA register variables for the various videomodes -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +; Same as Mode 01H +MODE00H DB 67H, 00H, 03H,08H,03H,00H,02H + DB 2DH,27H,28H,90H,2BH,0A0H,0BFH,1FH,00H,4FH,06H,07H,00H,00H,00H,31H + DB 9CH,8EH,8FH,14H,1FH,96H,0B9H,0A3H,0FFH + DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH + DB 00H,01H,02H,03H,04H,05H,14H,07H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH + DB 0CH,00H,0FH,08H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +; Same as Mode 02H +MODE03H DB 67H, 00H, 03H,00H,03H,00H,02H + DB 5FH,4FH,50H,82H,55H,81H,0BFH,1FH,00H,4FH,0EH,0FH,00H,00H,00H,00H + DB 9CH,0EH,8FH,28H,01H,96H,0B9H,0A3H,0FFH + DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH + DB 00H,01H,02H,03H,04H,05H,14H,07H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH + DB 0CH,00H,0FH,08H,00H +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +; Same as Mode 05H +MODE04H DB 63H, 00H, 03H,09H,03H,00H,02H + DB 2DH,27H,28H,90H,2BH,80H,0BFH,1FH,00H,0C1H,00H,00H,00H,00H,00H,31H + DB 9CH,8EH,8FH,14H,00H,96H,0B9H,0A2H,0FFH + DB 00H,00H,00H,00H,00H,30H,0FH,00H,0FFH + DB 00H,3BH,3DH,3FH,02H,04H,06H,07H,10H,11H,12H,13H,14H,15H,16H,17H + DB 01H,00H,03H,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODE06H DB 63H, 00H, 03H,01H,01H,00H,06H + DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,0C1H,00H,00H,00H,00H,00H,00H + DB 9CH,8EH,8FH,28H,00H,96H,0B9H,0C2H,0FFH + DB 00H,00H,00H,00H,00H,00H,0DH,00H,0FFH + DB 00H,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH + DB 01H,00H,01H,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODE07H DB 066H, 00H, 03H,00H,03H,00H,02H + DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH + DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH + DB 00H,00H,00H,00H,00H,10H,0AH,00H,0FFH + DB 00H,08H,08H,08H,08H,08H,08H,08H,10H,18H,18H,18H,18H,18H,18H,18H + DB 0EH,00H,0FH,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODE0DH DB 063H, 00H, 03H,09H,0FH,00H,06H + DB 2DH,27H,28H,90H,2BH,80H,0BFH,1FH,00H,0C0H,00H,00H,00H,00H,00H,31H + DB 9CH,8EH,8FH,14H,00H,96H,0B9H,0E3H,0FFH + DB 00H,00H,00H,00H,00H,10H,05H,00H,0FFH + DB 00H,01H,02H,03H,04H,05H,14H,07H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH + DB 01H,00H,0FH,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODE0EH DB 63H, 00H, 03H,01H,0FH,00H,06H + DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,0C0H,00H,00H,00H,00H,00H,59H + DB 9CH,8EH,8FH,28H,00H,96H,0B9H,0E3H,0FFH + DB 00H,00H,00H,00H,00H,00H,05H,0FH,0FFH + DB 00H,01H,02H,03H,04H,05H,14H,07H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH + DB 01H,00H,0FH,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODE0FH DB 0A2H, 00H, 03H,01H,0FH,00H,06H + DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH + DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH + DB 00H,00H,00H,00H,00H,00H,05H,05H,0FFH + DB 00H,08H,00H,00H,18H,18H,00H,00H,00H,08H,00H,00H,00H,18H,00H,00H + DB 0BH,00H,05H,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODE10H DB 0A3H, 00H, 03H,01H,0FH,00H,06H + DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,40H,00H,00H,00H,00H,00H,00H + DB 83H,85H,5DH,28H,0FH,63H,0BAH,0E3H,0FFH + DB 00H,00H,00H,00H,00H,00H,05H,0FH,0FFH + DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH + DB 01H,00H,0FH,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODE11H DB 063H, 00H, 03H,01H,0FH,00H,06H + DB 5FH,4FH,50H,82H,54H,80H,0BH,3EH,00H,40H,00H,00H,00H,00H,00H,59H + DB 0EAH,8CH,0DFH,28H,0FH,0E7H,004H,0C3H,0FFH + DB 00H,00H,00H,00H,00H,00H,05H,05H,0FFH + DB 00H,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH + DB 01H,00H,0FH,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODE12H DB 063H, 00H, 03H,01H,0FH,00H,06H + DB 5FH,4FH,50H,82H,54H,80H,0BH,3EH,00H,40H,00H,00H,00H,00H,00H,59H + DB 0EAH,8CH,0DFH,28H,00H,0E7H,04H,0E3H,0FFH + DB 00H,00H,00H,00H,00H,00H,05H,0FH,0FFH + DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH + DB 01H,00H,0FH,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODE13H DB 63H, 00H, 03H,01H,0FH,00H,0EH + DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,41H,00H,00H,00H,00H,00H,00H + DB 9CH,0EH,8FH,28H,40H,96H,0B9H,0A3H,0FFH + DB 00H,00H,00H,00H,00H,40H,05H,0FH,0FFH + DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH + DB 41H,00H,0FH,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +CHAIN4 DB 63H, 00H, 03H,01H,0FH,00H,06H + DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,41H,00H,00H,00H,00H,00H,00H + DB 9CH,0EH,8FH,28H,00H,96H,0B9H,0E3H,0FFH + DB 00H,00H,00H,00H,00H,40H,05H,0FH,0FFH + DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH + DB 41H,00H,0FH,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODEJ DB 63H, 00H, 03H,01H,03H,00H,02H + DB 5FH,4FH,50H,82H,55H,81H,0BFH,1FH,00H,47H,06H,07H,00H,00H,00H + DB 00H,83H,85H,57H,28H,1FH,60H,0B8H,0A3H,0FFH + DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH + DB 00H,01H,02H,03H,04H,05H,14H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH + DB 0CH,00H,0FH,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODEK DB 63H, 00H, 03H,01H,03H,00H,02H + DB 5FH,4FH,50H,82H,55H,81H,0BFH,1FH,00H,47H,06H,07H,00H,00H,00H + DB 00H,9CH,8EH,8FH,28H,1FH,96H,0B9H,0A3H,0FFH + DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH + DB 00H,01H,02H,03H,04H,05H,14H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH + DB 0CH,00H,0FH,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + + +MODE_L DB 67H, 00H, 03H,08H,03H,00H,02H + DB 2DH,27H,28H,90H,2BH,0A0H,0BFH,1FH,00H,47H,06H,07H,00H,00H,00H + DB 31H,83H,85H,57H,14H,1FH,60H,0B8H,0A3H,0FFH + DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH + DB 00H,01H,02H,03H,04H,05H,14H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH + DB 0CH,00H,0FH,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODEM DB 67H, 00H, 03H,08H,03H,00H,02H + DB 2DH,27H,28H,90H,2BH,0A0H,0BFH,1FH,00H,47H,06H,07H,00H,00H,00H,31H + DB 9CH,8EH,8FH,14H,1FH,96H,0B9H,0A3H,0FFH + DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH + DB 00H,01H,02H,03H,04H,05H,14H,07H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH + DB 0CH,00H,0FH,00H,00H + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +; Videomode Structure Definition +VMODE STRUC + videomode DW ? ; Videomode Number + mode_width DW ? ; Width in pixels + mode_height DW ? ; height in pixels + width_bytes DW ? ; Number of bytes per screen + colors DW ? ; Number of colors + attrib DW ? ; Videomode attributes +VMODE ENDS + +; Videomode attributes +TVU_TEXT EQU 0001h +TVU_GRAPHICS EQU 0002h +TVU_MONOCHROME EQU 0004h +TVU_PLANAR EQU 0008h +TVU_UNCHAINED EQU 0010h +TVU_B8000_ADDR EQU 0020h + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +; Videomode Info Structure +MODE VMODE +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= diff --git a/16/tauron30/ASM_SRC/TESTS.ASM b/16/tauron30/ASM_SRC/TESTS.ASM new file mode 100755 index 00000000..7401c0ee --- /dev/null +++ b/16/tauron30/ASM_SRC/TESTS.ASM @@ -0,0 +1,676 @@ +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- -= +;=- Tauron VGA Utilities Version 3.0 -= +;=- Released September 20, 1998 -= +;=- -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +;=- All Rights Reserved. =-= that you put my name some- -= +;=- =-= where in your credits. -= +;=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +;=- I assume no responsibility whatsoever for any effect that this package, -= +;=- the information contained therein or the use thereof has on you, your -= +;=- sanity, computer, spouse, children, pets or anything else related to -= +;=- you or your existance. No warranty is provided nor implied with this -= +;=- source code. -= +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +PIXEL PROC + PUSH BP + MOV BP,SP + PUSHA + + TEST Mode.attrib,TVU_PLANAR + JNZ PLANAR_PIXEL + CMP Mode.videomode,VMODE_13H + JE MODE_13H_PIXEL + +; Unchained Modes Pixel + MOV AX,0A000H ; video memory segment number + MOV ES,AX ; place it in es + + MOV DX,03C4H + MOV AL,2 + OUT DX,AL + INC DX + + MOV AL,1 + MOV CX,word ptr [bp+4] + AND CX,3 + SHL AL,CL + OUT DX,AL + + XOR DI,DI + +; Calculate the Offset + mov ax,Mode.mode_width ; width / 4 + SHR AX,2 + mul word ptr [bp+6] ; (Y * (width / 4)) + mov bx,word ptr [bp+4] ; (X / 4) + (Y * (width / 4)) + shr bx,2 + add ax,bx +; Done! + + ADD DI,AX + mov ah,byte ptr [bp+8] ; move the Color into ah + mov es:[di],ah ; move the value to the screen + JMP PIXEL_OUT + +PLANAR_PIXEL: + MOV AX,0A000H ; video memory segment number + MOV ES,AX ; place it in es + + MOV BX,word ptr [bp+4] ; X Value + MOV CX,BX + MOV AX,word ptr [bp+6] ; Y Value + MOV SI,80 + MUL SI + SHR BX,3 ; /8 + ADD AX,BX + MOV DI,AX + + AND CL,7 + XOR CL,7 + MOV AH,1 + + SHL AH,CL + + MOV DX,03CEH + MOV AL,8 + OUT DX,AX + + MOV AL,0 + XCHG ES:[DI],AL + + MOV DX,03C4H + MOV AH,byte ptr [bp+8] + MOV AL,2 + OUT DX,AX + + MOV BYTE PTR ES:[DI],0FFh + + MOV AX,0F02H + OUT DX,AX + + MOV DX,03CEH + MOV AX,0FF08h + OUT DX,AX + JMP PIXEL_OUT + +MODE_13H_PIXEL: + + MOV AX,0A000H ; video memory segment number + MOV ES,AX ; place it in es + XOR DI,DI + +; Calculate the Offset + mov ax,Mode.mode_width ; width + mul word ptr [bp+6] ; (Y * width)) + mov bx,word ptr [bp+4] ; (X + (Y * width)) + add ax,bx +; Done! + + ADD DI,AX + mov ah,byte ptr [bp+8] ; move the Color into ah + mov es:[di],ah ; move the value to the screen + +PIXEL_OUT: + + POPA + POP BP + RET 6 +PIXEL ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +HLINE PROC + PUSH BP + MOV BP,SP + PUSHA + + MOV CX,WORD PTR [BP+4] +HLINE_LOOP: + PUSH WORD PTR [BP+10] ; Color + PUSH WORD PTR [BP+8] ; Y value + PUSH CX ; X value + CALL PIXEL + INC CX + CMP CX,WORD PTR [BP+6] + JLE HLINE_LOOP + + POPA + POP BP + RET 8 +HLINE ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +VLINE PROC + PUSH BP + MOV BP,SP + PUSHA + + MOV CX,WORD PTR [BP+4] +VLINE_LOOP: + PUSH WORD PTR [BP+10] ; Color + PUSH CX ; Y value + PUSH WORD PTR [BP+8] ; X value + CALL PIXEL + INC CX + CMP CX,WORD PTR [BP+6] + JLE VLINE_LOOP + + POPA + POP BP + RET 8 +VLINE ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +DRAWRECT PROC + PUSH BP + MOV BP,SP + + PUSH WORD PTR [BP+12] + PUSH WORD PTR [BP+6] + PUSH WORD PTR [BP+8] + PUSH WORD PTR [BP+4] + CALL HLINE + + PUSH WORD PTR [BP+12] + PUSH WORD PTR [BP+10] + PUSH WORD PTR [BP+8] + PUSH WORD PTR [BP+4] + CALL HLINE + + PUSH WORD PTR [BP+12] + PUSH WORD PTR [BP+4] + PUSH WORD PTR [BP+10] + PUSH WORD PTR [BP+6] + CALL VLINE + + PUSH WORD PTR [BP+12] + PUSH WORD PTR [BP+8] + PUSH WORD PTR [BP+10] + PUSH WORD PTR [BP+6] + CALL VLINE + + POP BP + RET 10 +DRAWRECT ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +FILLRECT PROC + PUSH BP + MOV BP,SP + PUSHA + + MOV CX,WORD PTR [BP+6] +HLINE_LOOP2: + PUSH WORD PTR [BP+12] ; Color + PUSH CX ; Y1 value + PUSH WORD PTR [BP+8] ; X2 value + PUSH WORD PTR [BP+4] ; X1 value + CALL HLINE + + INC CX + CMP CX,WORD PTR [BP+10] ; Y2 value + JLE HLINE_LOOP2 + + POPA + POP BP + RET 10 +FILLRECT ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +MODETEST PROC + PUSH BP + MOV BP,SP + SUB SP,2 + + TEST Mode.attrib,TVU_PLANAR + JNZ PLANAR_CLEAR + CMP Mode.videomode,VMODE_13H + JNE UNCHAINED_CLEAR + + PUSH 0 + CALL CLEAR13H + JMP CLEAROUT + +PLANAR_CLEAR: + PUSH 0 + CALL PLANARCLEAR + JMP CLEAROUT + +UNCHAINED_CLEAR: + PUSH 0 + CALL UNCHAINEDCLEAR + +CLEAROUT: + + PUSH 15 + + MOV AX,Mode.mode_height + DEC AX + PUSH AX + + MOV AX,Mode.mode_width + DEC AX + PUSH AX + + PUSH 0 + PUSH 0 + CALL DRAWRECT + + MOV CX,50 +LINE_LOOP: + PUSH 15 + PUSH CX + PUSH 10 + PUSH 0 + CALL HLINE + ADD CX,50 + + PUSH 15 + PUSH CX + PUSH 25 + PUSH 0 + CALL HLINE + ADD CX,50 + + CMP CX,Mode.mode_height + JLE LINE_LOOP + + MOV CX,40 +LINE_LOOP2: + PUSH 15 + PUSH CX + PUSH 15 + PUSH 0 + CALL VLINE + ADD CX,40 + + PUSH 15 + PUSH CX + PUSH 30 + PUSH 0 + CALL VLINE + ADD CX,40 + + CMP CX,Mode.mode_width + JLE LINE_LOOP2 + + CMP Mode.colors,16 + JE SETBLOCK16 + CMP Mode.colors,256 + JE SETBLOCK256 + + MOV AX,Mode.mode_width + SUB AX,420 + MOV DI,AX + ADD DI,200 + MOV BX,Mode.mode_height + SUB BX,220 + MOV SI,BX + ADD SI,200 + + PUSH 0 ; Color + PUSH SI ; Y2 + PUSH DI ; X2 + PUSH BX ; Y1 + PUSH AX ; X1 + CALL FILLRECT + ADD AX,200 + ADD DI,200 + PUSH 15 ; Color + PUSH SI ; Y2 + PUSH DI ; X2 + PUSH BX ; Y1 + PUSH AX ; X1 + CALL FILLRECT + + MOV AX,Mode.mode_width + SUB AX,420 + MOV DI,AX + ADD DI,400 + MOV BX,Mode.mode_height + SUB BX,220 + MOV SI,BX + ADD SI,200 + + PUSH 15 ; Color + PUSH SI ; Y2 + PUSH DI ; X2 + PUSH BX ; Y1 + PUSH AX ; X1 + CALL DRAWRECT + + JMP BLOCKOUT +SETBLOCK16: + + MOV AX,Mode.mode_width + SUB AX,522 + MOV DI,AX + ADD DI,64 + + MOV BX,Mode.mode_height + SUB BX,135 + MOV SI,BX + ADD SI,64 + MOV CX,0 + MOV DX,0 +LINE1_LOOP1: + + PUSH DX ; Color + PUSH SI ; Y2 + PUSH DI ; X2 + PUSH BX ; Y1 + PUSH AX ; X1 + CALL FILLRECT + ADD AX,64 + ADD DI,64 + INC CX + INC DX + CMP CX,8 + JL LINE1_LOOP1 + + MOV AX,Mode.mode_width + SUB AX,522 + MOV DI,AX + ADD DI,64 + ADD SI,64 + ADD BX,64 + MOV CX,0 +LINE1_LOOP2: + + PUSH DX ; Color + PUSH SI ; Y2 + PUSH DI ; X2 + PUSH BX ; Y1 + PUSH AX ; X1 + CALL FILLRECT + ADD AX,64 + ADD DI,64 + INC CX + INC DX + CMP CX,8 + JL LINE1_LOOP2 + + MOV AX,Mode.mode_width + SUB AX,522 + MOV DI,Mode.mode_width + SUB DI,10 + MOV BX,Mode.mode_height + SUB BX,135 + MOV SI,Mode.mode_height + SUB SI,7 + PUSH 15 ; Color + PUSH SI ; Y2 + PUSH DI ; X2 + PUSH BX ; Y1 + PUSH AX ; X1 + CALL DRAWRECT + JMP BLOCKOUT + +SETBLOCK256: + + MOV WORD PTR [BP-2],0 + MOV BX,Mode.mode_height + SUB BX,165 + MOV SI,BX + ADD SI,10 + MOV DX,0 +LINE2_LOOP2: + + MOV AX,Mode.mode_width + SUB AX,165 + MOV DI,Mode.mode_width + SUB DI,155 + + MOV CX,0 +LINE2_LOOP1: + + PUSH DX ; Color + PUSH SI ; Y2 + PUSH DI ; X2 + PUSH BX ; Y1 + PUSH AX ; X1 + CALL FILLRECT + ADD AX,10 + ADD DI,10 + INC CX + INC DX + CMP CX,16 + JL LINE2_LOOP1 + + ADD BX,10 + ADD SI,10 + INC WORD PTR [BP-2] + CMP WORD PTR [BP-2],16 + JL LINE2_LOOP2 + + MOV AX,Mode.mode_width + SUB AX,165 + MOV DI,Mode.mode_width + SUB DI,5 + MOV BX,Mode.mode_height + SUB BX,165 + MOV SI,Mode.mode_height + SUB SI,5 + PUSH 15 ; Color + PUSH SI ; Y2 + PUSH DI ; X2 + PUSH BX ; Y1 + PUSH AX ; X1 + CALL DRAWRECT + +BLOCKOUT: + ADD SP,2 + POP BP + RET +MODETEST ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +PUTCHAR PROC + PUSH BP + MOV BP,SP + SUB SP,2 + PUSHA + + CMP Mode.videomode,VMODE_00H + JE SET2 + CMP Mode.videomode,VMODE_MODE_L + JE SET2 + CMP Mode.videomode,VMODE_MODE_M + JE SET2 + MOV BYTE PTR [BP-2],160 + JMP NOSET2 +SET2: + MOV BYTE PTR [BP-2],80 + JMP NOSET2 +NOSET2: + + MOV AX,0B800h + MOV ES,AX + + MOV AX,WORD PTR [BP+6] ; Y value + MOV BL,BYTE PTR [BP-2] + MUL BL + SHL WORD PTR [BP+4],1 + ADD AX,WORD PTR [BP+4] ; X value + MOV DI,AX + MOV AH,ATT + MOV AL,BYTE PTR [BP+8] ; character + CLD + STOSW + + POPA + ADD SP,2 + POP BP + RET 6 +PUTCHAR ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +PRINTSTRING PROC + +TEXT_LOOP: + XOR DX,DX + MOV DL,BYTE PTR [SI] + PUSH DX + PUSH BX + PUSH AX + CALL PUTCHAR + + INC AX + INC SI + CMP BYTE PTR [SI],0 + JNE TEXT_LOOP + RET +PRINTSTRING ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +TEXTTEST PROC + PUSH 1FH + CALL TEXTCLEAR + + MOV AH,2h + MOV BH,0 + MOV DX,Mode.mode_height + MOV DH,DL + MOV DL,0 + INT 10h + + CMP Mode.videomode,VMODE_00H + JE SET_TEXT1 + CMP Mode.videomode,VMODE_MODE_J + JE SET_TEXT2 + CMP Mode.videomode,VMODE_MODE_K + JE SET_TEXT3 + CMP Mode.videomode,VMODE_MODE_L + JE SET_TEXT4 + CMP Mode.videomode,VMODE_MODE_M + JE SET_TEXT5 + ; Mode 03h + MOV TEXTMSG_2+13,'3' + MOV TEXTMSG_3+8,'8' + MOV TEXTMSG_4+19,'4' + JMP NOSET +SET_TEXT1: + ; Mode 00h + MOV TEXTMSG_2+13,'0' + MOV TEXTMSG_3+8,'4' + MOV TEXTMSG_4+19,'2' + JMP NOSET +SET_TEXT2: + ; Mode J + MOV TEXTMSG_8+11,'J' + MOV TEXTMSG_9+21,'4' + MOV TEXTMSG_9+22,'3' + MOV TEXTMSG_A+19,'3' + MOV TEXTMSG_A+20,'4' + MOV TEXTMSG_A+21,'4' + MOV TEXTMSG_A+22,'0' + JMP NOSET +SET_TEXT3: + ; Mode K + MOV TEXTMSG_8+11,'K' + MOV TEXTMSG_9+21,'5' + MOV TEXTMSG_9+22,'0' + MOV TEXTMSG_A+19,'4' + MOV TEXTMSG_A+20,'0' + MOV TEXTMSG_A+21,'0' + MOV TEXTMSG_A+22,'0' + JMP NOSET +SET_TEXT4: + ; Mode L + MOV TEXTMSG_8+11,'L' + MOV TEXTMSG_9+8,'4' + MOV TEXTMSG_9+21,'4' + MOV TEXTMSG_9+22,'3' + MOV TEXTMSG_A+19,'3' + MOV TEXTMSG_A+20,'4' + MOV TEXTMSG_A+21,'4' + MOV TEXTMSG_A+22,'0' + JMP NOSET +SET_TEXT5: + ; Mode M + MOV TEXTMSG_8+11,'M' + MOV TEXTMSG_9+8,'4' + MOV TEXTMSG_9+21,'5' + MOV TEXTMSG_9+22,'0' + MOV TEXTMSG_A+19,'4' + MOV TEXTMSG_A+20,'0' + MOV TEXTMSG_A+21,'0' + MOV TEXTMSG_A+22,'0' +NOSET: + + CMP Mode.videomode,VMODE_00H + JE WRITE1 + CMP Mode.videomode,VMODE_03H + JE WRITE1 + CMP Mode.videomode,VMODE_MODE_J + JE WRITE2 + JMP WRITE2 + +WRITE1: + MOV BX,0 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_1 + CALL PRINTSTRING + MOV BX,1 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_2 + CALL PRINTSTRING + MOV BX,2 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_3 + CALL PRINTSTRING + MOV BX,3 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_4 + CALL PRINTSTRING + MOV BX,4 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_5 + CALL PRINTSTRING + MOV BX,5 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_6 + CALL PRINTSTRING + JMP WRITEOUT + +WRITE2: + MOV BX,0 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_7 + CALL PRINTSTRING + MOV BX,1 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_8 + CALL PRINTSTRING + MOV BX,2 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_9 + CALL PRINTSTRING + MOV BX,3 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_A + CALL PRINTSTRING + MOV BX,4 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_B + CALL PRINTSTRING + MOV BX,5 + MOV AX,0 + MOV SI,OFFSET TEXTMSG_C + CALL PRINTSTRING +WRITEOUT: + RET +TEXTTEST ENDP + +;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= diff --git a/16/tauron30/C_SRC/CLEAR.CPP b/16/tauron30/C_SRC/CLEAR.CPP new file mode 100755 index 00000000..e201a055 --- /dev/null +++ b/16/tauron30/C_SRC/CLEAR.CPP @@ -0,0 +1,180 @@ +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- -= +//=- Tauron VGA Utilities Version 3.0 -= +//=- Released September 20, 1998 -= +//=- -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +//=- All Rights Reserved. =-= that you put my name some- -= +//=- =-= where in your credits. -= +//=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- I assume no responsibility whatsoever for any effect that this package, -= +//=- the information contained therein or the use thereof has on you, your -= +//=- sanity, computer, spouse, children, pets or anything else related to -= +//=- you or your existance. No warranty is provided nor implied with this -= +//=- source code. -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +#include +#include +#include +#include +#include "tauron.h" + +void TextClear(char attrib) +{ + unsigned int bytes = Mode.width_bytes; + asm { + MOV AX,0B800H + MOV ES,AX + XOR DI,DI + + MOV AH,attrib + MOV AL,' ' + MOV CX,bytes + CLD + REP STOSW + } +} + +void Clear04H() +{ + unsigned int bytes = Mode.width_bytes; + asm { + MOV AX,0B800H + MOV ES,AX + XOR DI,DI + + MOV AX,0AAAAH + CLD + MOV CX,bytes + REP STOSW + } +} + +void Clear06H() +{ + unsigned int bytes = Mode.width_bytes; + asm { + MOV AX,0B800H + MOV ES,AX + XOR DI,DI + + MOV AX,0FFFFH + CLD + MOV CX,bytes + REP STOSW + } +} + +void Clear0DH(char color) +{ + unsigned int bytes = Mode.width_bytes/2; + asm { + MOV AX,0A000H + MOV ES,AX + XOR DI,DI + + MOV CX,bytes + } +CLEAR_LOOP: + asm { + MOV DX,03CEH + MOV AX,0FF08H + OUT DX,AX + + MOV AX,0 + XCHG WORD PTR ES:[DI],AX + + MOV DX,03C4H + MOV AH,color + MOV AL,2 + OUT DX,AX + + MOV WORD PTR ES:[DI],0FFFFH + + MOV AX,0F02H + OUT DX,AX + + MOV DX,03CEH + MOV AX,0FF08h + OUT DX,AX + + ADD DI,2 + LOOP CLEAR_LOOP + } +} + +void PlanarClear(char Color) +{ + unsigned int bytes = Mode.width_bytes/2; + asm { + MOV AX,0A000H + MOV ES,AX + XOR DI,DI + + MOV CX,bytes + } +CLEAR_LOOP: + asm { + MOV DX,03CEH + MOV AX,0FF08H + OUT DX,AX + + MOV AX,0 + XCHG WORD PTR ES:[DI],AX + + MOV DX,03C4H + MOV AH,Color + MOV AL,2 + OUT DX,AX + + MOV WORD PTR ES:[DI],0FFFFH + + MOV AX,0F02H + OUT DX,AX + + MOV DX,03CEH + MOV AX,0FF08h + OUT DX,AX + + ADD DI,2 + LOOP CLEAR_LOOP + } +} + +void Clear13H(char Color) +{ + asm { + MOV AX,0A000H + MOV ES,AX + XOR DI,DI + + MOV AL,Color + MOV AH,AL + CLD + MOV CX,8000H + REP STOSW + } +} + +void UnchainedClear(char Color) +{ + unsigned int bytes = Mode.width_bytes/2; + asm { + mov dx, 03C4h // 03c4h + mov al, 2 // Map Mask Register + out dx, al + inc dx + mov al,00001111B // Select all planes to write to + out dx, al // Doing this to clear all planes at once + + mov ax,0A000H + mov es, ax + XOR DI,DI // set es:di = Screen Mem + mov ah,Color // move the color into ah + mov al,ah // copy the value to al + mov cx,bytes // Number of words + cld + rep stosw // clear it + } +} diff --git a/16/tauron30/C_SRC/DUAL.CPP b/16/tauron30/C_SRC/DUAL.CPP new file mode 100755 index 00000000..e60d1fb9 --- /dev/null +++ b/16/tauron30/C_SRC/DUAL.CPP @@ -0,0 +1,236 @@ +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- -= +//=- Tauron VGA Utilities Version 3.0 -= +//=- Released September 20, 1998 -= +//=- -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +//=- All Rights Reserved. =-= that you put my name some- -= +//=- =-= where in your credits. -= +//=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- I assume no responsibility whatsoever for any effect that this package, -= +//=- the information contained therein or the use thereof has on you, your -= +//=- sanity, computer, spouse, children, pets or anything else related to -= +//=- you or your existance. No warranty is provided nor implied with this -= +//=- source code. -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +// 3C4H, 03H +// Bit positions for font maps: +// +// +--7--+--6--+--5--+--4--+--3--+--2--+--1--+--0--+ +// | | | SAH | SBH | SA | SB | +// +-----+-----+-----+-----+-----+-----+-----+-----+ +// +// SA - bits 1, 0 of Character Map A +// SAH - bit 2 (high order) of Charcter Map A +// +// SB - bits 1, 0 of Character Map B +// SBH - bit 2 (high order) of Charcter Map B +// +#include +#include +#include +#include +#include +#include "tauron.h" +#include "font1.h" +#include "font2.h" +extern unsigned char mode03h[62]; +void LoadFonts(); + +// Points to fonts for Map A Memory Address +#define DFM_MAPA_FONT1 0x00 // 0K +#define DFM_MAPA_FONT2 0x04 // 16K +#define DFM_MAPA_FONT3 0x08 // 32K +#define DFM_MAPA_FONT4 0x0C // 48K +#define DFM_MAPA_FONT5 0x20 // 8K +#define DFM_MAPA_FONT6 0x24 // 24K +#define DFM_MAPA_FONT7 0x28 // 40K +#define DFM_MAPA_FONT8 0x2C // 56K + +// Points to fonts for Map B +#define DFM_MAPB_FONT1 0x00 // 0K +#define DFM_MAPB_FONT2 0x01 // 16K +#define DFM_MAPB_FONT3 0x02 // 32K +#define DFM_MAPB_FONT4 0x03 // 48K +#define DFM_MAPB_FONT5 0x10 // 8K +#define DFM_MAPB_FONT6 0x11 // 24K +#define DFM_MAPB_FONT7 0x12 // 40K +#define DFM_MAPB_FONT8 0x13 // 56K + + +// To set dual font mode, just set the character map select register to point +// to 2 different fonts. There can be up to 8 fonts resident in memory at +// once but only 2 can be active at a time. +// +// ** NOTE ** If you set both font maps the same you are no longer in dual font +// mode. But what this allows you to do is to put up to 8 fonts in VGA memory +// and switch between them at any time. +// +// Both fonts were made with my font editor. I just read the BIOS and +// modified the second font so a solid line goes through the middle of it. +// +// This procedure sets up dual font mode and loads 2 fonts into video memory. +void SetDual() +{ + outport(SEQ_ADDR, ((DFM_MAPA_FONT1 | DFM_MAPB_FONT5) << 8) | 0x03); + + // Load font 1 into 0K and font 2 into 8K + LoadFonts(); +} + +// This procedure reset the character map select register to point to only +// one font. +void UnSetDual() +{ + outport(0x3C4,0x0003); +} + +// In dual font modes, the palette is in effect half of what it is. The +// bottom 8 colors for the first font, and the top 8 colors for the second +// font. +// +// What I do here is to set them to the same 8 colors. +// Black, Blue, Green, Red, Purple, Yellow, Light Gray, and White +// +void SetDualPalette() +{ + // Font 1 + setpal( 0, 0, 0, 0); + setpal( 1, 0, 0, 42); + setpal( 2, 0, 42, 0); + setpal( 3, 0, 42, 42); + setpal( 4, 42, 0, 0); + setpal( 5, 63, 63, 21); + setpal( 6, 42, 42, 42); + setpal( 7, 63, 63, 63); + // Font 2 + setpal( 8, 0, 0, 0); + setpal( 9, 0, 0, 42); + setpal(10, 0, 42, 0); + setpal(11, 0, 42, 42); + setpal(12, 42, 0, 0); + setpal(13, 63, 63, 21); + setpal(14, 42, 42, 42); + setpal(15, 63, 63, 63); +} + +void pchar(int x, int y, char c, char att) +{ + char far *vidmem; + int off; + + // Make a pointer to the font + vidmem = (char far *)MK_FP( 0xB800, 0x0000); + off = y * 160 + x * 2; + vidmem += off; + *vidmem++ = c; + *vidmem = att; +} + +void print(int x, int y, char *Text, char attrib) +{ + for (int i = 0; i < strlen(Text); i++) + pchar(x++,y,Text[i],attrib); +} + +void DualTest() +{ + SetMode((unsigned int)&mode03h); + TextClear(0x1F); + SetDual(); + SetDualPalette(); + + /* ** NOTE ** when trying to print text on the screen, do not use the printf + * text functions. For some reason they do not select the proper VGA font. + */ + + print(0,0,"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿",0x17); + print(0,1,"³ DUAL FONT MODE ³",0x17); + print(0,2,"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ",0x17); + + print(0,4,"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿",0x1F); + print(0,5,"³ DUAL FONT MODE ³",0x1F); + print(0,6,"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ",0x1F); + + getch(); + UnSetDual(); + textcolor(7); + textbackground(0); +} + + +void LoadFonts() +{ + char far *vidmem; + int l = 0; + unsigned char oldmode,oldmisc,oldmem,oldmask; + unsigned char newmode,newmisc,newmem; + + // Make a pointer to the font + vidmem = (char far *)MK_FP( 0xA000, 0x0000); + + // Store the OLD 'Mode Register' value + outportb(GRACON_ADDR,5); + oldmode = inportb(GRACON_ADDR+1); + // Store the OLD 'Miscellaneous Register' value + outportb(GRACON_ADDR,6); + oldmisc = inportb(GRACON_ADDR+1); + // Store the OLD 'Mask Map' value + outportb(SEQ_ADDR,2); + oldmask = inportb(SEQ_ADDR+1); + // Store the OLD 'Memory Mode' value + outportb(SEQ_ADDR,4); + oldmem = inportb(SEQ_ADDR+1); + + // Write the NEW 'Mode Register' value + newmode = (oldmode & 0xFC); + outport(GRACON_ADDR, (newmode << 8) | 0x05); + // Write the NEW 'Miscellaneous Register' value + newmisc = ((oldmisc & 0xF1)|4); + outport(GRACON_ADDR, (newmisc << 8) | 0x06); + // Write the NEW 'Mask Map' value + outport(SEQ_ADDR, 0x0402); + // Write the NEW 'Memory Mode' value + newmem = (oldmem | 4); + outport(SEQ_ADDR, (newmem << 8) | 0x04); + + // Copy the font from BIOS + l = 0; + for (int i = 0; i < 256; i++) + { + for (int j = 0; j < 16; j++) + { + *vidmem++ = Font1[l++]; + } + for (int k = 0; k < 16; k++) + { + *vidmem++ = 0x00; + } + } + + vidmem = (char far *)MK_FP( 0xA000, 0x2000); + l = 0; + for (int i = 0; i < 256; i++) + { + for (int j = 0; j < 16; j++) + { + *vidmem++ = Font2[l++]; + } + for (int k = 0; k < 16; k++) + { + *vidmem++ = 0x00; + } + } + + // Write the OLD 'Mode Register' value + outport(GRACON_ADDR, (oldmode << 8) | 0x05); + // Write the OLD 'Miscellaneous Register' value + outport(GRACON_ADDR, (oldmisc << 8) | 0x06); + // Write the OLD 'Mask Map' value + outport(SEQ_ADDR,(oldmask << 8) | 0x02); + // Write the OLD 'Memory Mode' value + outport(SEQ_ADDR, (oldmem << 8) | 0x04); +} + +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= \ No newline at end of file diff --git a/16/tauron30/C_SRC/FONT1.H b/16/tauron30/C_SRC/FONT1.H new file mode 100755 index 00000000..ae20aa2c --- /dev/null +++ b/16/tauron30/C_SRC/FONT1.H @@ -0,0 +1,268 @@ +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- Created with FEDIT written by Kinfira (Jeffrey Morgan) -= +//=- -= +//=- Tauron VGA Utilities Version 1.0 -= +//=- Released June 14, 1998 -= +//=- -= +//=- Font Width: 8 -= +//=- Font Height: 16 -= +//=- Bytes per character: 16 -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +char Font1[] = { +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x07E,0x081,0x0A5,0x081,0x081,0x0BD,0x099,0x081,0x081,0x07E,0x000,0x000,0x000,0x000, +0x000,0x000,0x07E,0x0FF,0x0DB,0x0FF,0x0FF,0x0C3,0x0E7,0x0FF,0x0FF,0x07E,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x06C,0x0FE,0x0FE,0x0FE,0x0FE,0x07C,0x038,0x010,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x010,0x038,0x07C,0x0FE,0x07C,0x038,0x010,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x018,0x03C,0x03C,0x0E7,0x0E7,0x0E7,0x099,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x018,0x03C,0x07E,0x0FF,0x0FF,0x07E,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x03C,0x03C,0x018,0x000,0x000,0x000,0x000,0x000,0x000, +0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0E7,0x0C3,0x0C3,0x0E7,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF, +0x000,0x000,0x000,0x000,0x000,0x03C,0x066,0x042,0x042,0x066,0x03C,0x000,0x000,0x000,0x000,0x000, +0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0C3,0x099,0x0BD,0x0BD,0x099,0x0C3,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF, +0x000,0x000,0x01E,0x00E,0x01A,0x032,0x078,0x0CC,0x0CC,0x0CC,0x0CC,0x078,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x066,0x066,0x066,0x066,0x03C,0x018,0x07E,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x03F,0x033,0x03F,0x030,0x030,0x030,0x030,0x070,0x0F0,0x0E0,0x000,0x000,0x000,0x000, +0x000,0x000,0x07F,0x063,0x07F,0x063,0x063,0x063,0x063,0x067,0x0E7,0x0E6,0x0C0,0x000,0x000,0x000, +0x000,0x000,0x000,0x018,0x018,0x0DB,0x03C,0x0E7,0x03C,0x0DB,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x080,0x0C0,0x0E0,0x0F0,0x0F8,0x0FE,0x0F8,0x0F0,0x0E0,0x0C0,0x080,0x000,0x000,0x000,0x000, +0x000,0x002,0x006,0x00E,0x01E,0x03E,0x0FE,0x03E,0x01E,0x00E,0x006,0x002,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x03C,0x07E,0x018,0x018,0x018,0x018,0x07E,0x03C,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x066,0x066,0x066,0x066,0x066,0x066,0x066,0x000,0x066,0x066,0x000,0x000,0x000,0x000, +0x000,0x000,0x07F,0x0DB,0x0DB,0x0DB,0x07B,0x01B,0x01B,0x01B,0x01B,0x01B,0x000,0x000,0x000,0x000, +0x000,0x07C,0x0C6,0x060,0x038,0x06C,0x0C6,0x0C6,0x06C,0x038,0x00C,0x0C6,0x07C,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x0FE,0x0FE,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x03C,0x07E,0x018,0x018,0x018,0x018,0x07E,0x03C,0x018,0x07E,0x000,0x000,0x000, +0x000,0x000,0x018,0x03C,0x07E,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x07E,0x03C,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x018,0x00C,0x0FE,0x00C,0x018,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x030,0x060,0x0FE,0x060,0x030,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0C0,0x0C0,0x0C0,0x0C0,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x028,0x06C,0x0FE,0x06C,0x028,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x010,0x038,0x038,0x07C,0x07C,0x0FE,0x0FE,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x0FE,0x0FE,0x07C,0x07C,0x038,0x038,0x010,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x03C,0x03C,0x03C,0x018,0x018,0x018,0x000,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x066,0x066,0x066,0x024,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x06C,0x06C,0x0FE,0x06C,0x06C,0x06C,0x0FE,0x06C,0x06C,0x000,0x000,0x000,0x000, +0x018,0x018,0x07C,0x0C6,0x0C2,0x0C0,0x07C,0x006,0x086,0x0C6,0x07C,0x018,0x018,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x0C2,0x0C6,0x00C,0x018,0x030,0x060,0x0C6,0x086,0x000,0x000,0x000,0x000, +0x000,0x000,0x038,0x06C,0x06C,0x038,0x076,0x0DC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x030,0x030,0x030,0x060,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x00C,0x018,0x030,0x030,0x030,0x030,0x030,0x030,0x018,0x00C,0x000,0x000,0x000,0x000, +0x000,0x000,0x030,0x018,0x00C,0x00C,0x00C,0x00C,0x00C,0x00C,0x018,0x030,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x066,0x03C,0x0FF,0x03C,0x066,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x07E,0x018,0x018,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x018,0x030,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x002,0x006,0x00C,0x018,0x030,0x060,0x0C0,0x080,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x0C6,0x0CE,0x0D6,0x0D6,0x0E6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x038,0x078,0x018,0x018,0x018,0x018,0x018,0x018,0x07E,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x006,0x00C,0x018,0x030,0x060,0x0C0,0x0C6,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x006,0x006,0x03C,0x006,0x006,0x006,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x00C,0x01C,0x03C,0x06C,0x0CC,0x0FE,0x00C,0x00C,0x00C,0x01E,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FE,0x0C0,0x0C0,0x0C0,0x0FC,0x00E,0x006,0x006,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x038,0x060,0x0C0,0x0C0,0x0FC,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FE,0x0C6,0x006,0x006,0x00C,0x018,0x030,0x030,0x030,0x030,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x07E,0x006,0x006,0x006,0x00C,0x078,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x018,0x018,0x030,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x006,0x00C,0x018,0x030,0x060,0x030,0x018,0x00C,0x006,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x000,0x000,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x060,0x030,0x018,0x00C,0x006,0x00C,0x018,0x030,0x060,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x0C6,0x00C,0x018,0x018,0x018,0x000,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x07C,0x0C6,0x0C6,0x0DE,0x0DE,0x0DE,0x0DC,0x0C0,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x010,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FC,0x066,0x066,0x066,0x07C,0x066,0x066,0x066,0x066,0x0FC,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x066,0x0C2,0x0C0,0x0C0,0x0C0,0x0C0,0x0C2,0x066,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0F8,0x06C,0x066,0x066,0x066,0x066,0x066,0x066,0x06C,0x0F8,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FE,0x066,0x062,0x068,0x078,0x068,0x060,0x062,0x066,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FE,0x066,0x062,0x068,0x078,0x068,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x066,0x0C2,0x0C0,0x0C0,0x0DE,0x0C6,0x0C6,0x066,0x03A,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x01E,0x00C,0x00C,0x00C,0x00C,0x00C,0x0CC,0x0CC,0x0CC,0x078,0x000,0x000,0x000,0x000, +0x000,0x000,0x0E6,0x066,0x06C,0x06C,0x078,0x078,0x06C,0x066,0x066,0x0E6,0x000,0x000,0x000,0x000, +0x000,0x000,0x0F0,0x060,0x060,0x060,0x060,0x060,0x060,0x062,0x066,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0EE,0x0FE,0x0FE,0x0D6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0E6,0x0F6,0x0FE,0x0DE,0x0CE,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x06C,0x038,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FC,0x066,0x066,0x066,0x07C,0x060,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0D6,0x0DE,0x07C,0x00C,0x00E,0x000,0x000, +0x000,0x000,0x0FC,0x066,0x066,0x066,0x07C,0x06C,0x066,0x066,0x066,0x0E6,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x0C6,0x060,0x038,0x00C,0x006,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x07E,0x07E,0x05A,0x018,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x06C,0x038,0x010,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0D6,0x0D6,0x0FE,0x06C,0x06C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x06C,0x06C,0x038,0x038,0x06C,0x06C,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x066,0x066,0x066,0x066,0x03C,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FE,0x0C6,0x086,0x00C,0x018,0x030,0x060,0x0C2,0x0C6,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x030,0x030,0x030,0x030,0x030,0x030,0x030,0x030,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x080,0x0C0,0x0E0,0x070,0x038,0x01C,0x00E,0x006,0x002,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x00C,0x00C,0x00C,0x00C,0x00C,0x00C,0x00C,0x00C,0x03C,0x000,0x000,0x000,0x000, +0x010,0x038,0x06C,0x0C6,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x000, +0x030,0x030,0x018,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x0E0,0x060,0x060,0x078,0x06C,0x066,0x066,0x066,0x066,0x0DC,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x0C0,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x01C,0x00C,0x00C,0x03C,0x06C,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x038,0x06C,0x064,0x060,0x0F0,0x060,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x076,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x07C,0x00C,0x0CC,0x078,0x000, +0x000,0x000,0x0E0,0x060,0x060,0x06C,0x076,0x066,0x066,0x066,0x066,0x0E6,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x018,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x006,0x006,0x000,0x00E,0x006,0x006,0x006,0x006,0x006,0x006,0x066,0x066,0x03C,0x000, +0x000,0x000,0x0E0,0x060,0x060,0x066,0x06C,0x078,0x078,0x06C,0x066,0x0E6,0x000,0x000,0x000,0x000, +0x000,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0EC,0x0FE,0x0D6,0x0D6,0x0D6,0x0D6,0x0D6,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0DC,0x066,0x066,0x066,0x066,0x066,0x066,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0DC,0x066,0x066,0x066,0x066,0x066,0x07C,0x060,0x060,0x0F0,0x000, +0x000,0x000,0x000,0x000,0x000,0x076,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x07C,0x00C,0x00C,0x01E,0x000, +0x000,0x000,0x000,0x000,0x000,0x0DC,0x076,0x062,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x060,0x038,0x00C,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x010,0x030,0x030,0x0FC,0x030,0x030,0x030,0x030,0x036,0x01C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x066,0x066,0x066,0x066,0x066,0x03C,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0C6,0x0C6,0x0C6,0x0D6,0x0D6,0x0FE,0x06C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0C6,0x06C,0x038,0x038,0x038,0x06C,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07E,0x006,0x00C,0x0F8,0x000, +0x000,0x000,0x000,0x000,0x000,0x0FE,0x0CC,0x018,0x030,0x060,0x0C6,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x00E,0x018,0x018,0x018,0x070,0x018,0x018,0x018,0x018,0x00E,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x018,0x018,0x018,0x000,0x018,0x018,0x018,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x070,0x018,0x018,0x018,0x00E,0x018,0x018,0x018,0x018,0x070,0x000,0x000,0x000,0x000, +0x000,0x000,0x076,0x0DC,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x010,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x0FE,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x066,0x0C2,0x0C0,0x0C0,0x0C0,0x0C2,0x066,0x03C,0x00C,0x006,0x07C,0x000,0x000, +0x000,0x000,0x0CC,0x0CC,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x00C,0x018,0x030,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x010,0x038,0x06C,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x0CC,0x0CC,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x060,0x030,0x018,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x038,0x06C,0x038,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x03C,0x066,0x060,0x060,0x066,0x03C,0x00C,0x006,0x03C,0x000,0x000,0x000, +0x000,0x010,0x038,0x06C,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x060,0x030,0x018,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x066,0x066,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x018,0x03C,0x066,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x060,0x030,0x018,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x0C6,0x0C6,0x010,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x038,0x06C,0x038,0x000,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x018,0x030,0x060,0x000,0x0FE,0x066,0x060,0x07C,0x060,0x060,0x066,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0CC,0x076,0x036,0x07E,0x0D8,0x0D8,0x06E,0x000,0x000,0x000,0x000, +0x000,0x000,0x03E,0x06C,0x0CC,0x0CC,0x0FE,0x0CC,0x0CC,0x0CC,0x0CC,0x0CE,0x000,0x000,0x000,0x000, +0x000,0x010,0x038,0x06C,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x060,0x030,0x018,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x030,0x078,0x0CC,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x060,0x030,0x018,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07E,0x006,0x00C,0x078,0x000, +0x000,0x0C6,0x0C6,0x000,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x0C6,0x06C,0x038,0x000,0x000,0x000,0x000, +0x000,0x0C6,0x0C6,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x018,0x018,0x03C,0x066,0x060,0x060,0x060,0x066,0x03C,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x038,0x06C,0x064,0x060,0x0F0,0x060,0x060,0x060,0x060,0x0E6,0x0FC,0x000,0x000,0x000,0x000, +0x000,0x000,0x066,0x066,0x03C,0x018,0x07E,0x018,0x07E,0x018,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x0F8,0x0CC,0x0CC,0x0F8,0x0C4,0x0CC,0x0DE,0x0CC,0x0CC,0x0CC,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x00E,0x01B,0x018,0x018,0x018,0x07E,0x018,0x018,0x018,0x018,0x018,0x0D8,0x070,0x000,0x000, +0x000,0x018,0x030,0x060,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x00C,0x018,0x030,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x018,0x030,0x060,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x018,0x030,0x060,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x076,0x0DC,0x000,0x0DC,0x066,0x066,0x066,0x066,0x066,0x066,0x000,0x000,0x000,0x000, +0x076,0x0DC,0x000,0x0C6,0x0E6,0x0F6,0x0FE,0x0DE,0x0CE,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x03C,0x06C,0x06C,0x03E,0x000,0x07E,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x038,0x06C,0x06C,0x038,0x000,0x07C,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x030,0x030,0x000,0x030,0x030,0x060,0x0C0,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x0C0,0x0C0,0x0C0,0x0C0,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x006,0x006,0x006,0x006,0x000,0x000,0x000,0x000,0x000, +0x000,0x0C0,0x0C0,0x0C2,0x0C6,0x0CC,0x018,0x030,0x060,0x0CE,0x093,0x006,0x00C,0x01F,0x000,0x000, +0x000,0x0C0,0x0C0,0x0C2,0x0C6,0x0CC,0x018,0x030,0x066,0x0CE,0x09A,0x03F,0x006,0x00F,0x000,0x000, +0x000,0x000,0x018,0x018,0x000,0x018,0x018,0x018,0x03C,0x03C,0x03C,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x033,0x066,0x0CC,0x066,0x033,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0CC,0x066,0x033,0x066,0x0CC,0x000,0x000,0x000,0x000,0x000,0x000, +0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044, +0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA, +0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x0F8,0x018,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0F6,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x000,0x000,0x000,0x000,0x000,0x0F8,0x018,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x036,0x036,0x036,0x036,0x036,0x0F6,0x006,0x0F6,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x000,0x000,0x000,0x000,0x000,0x0FE,0x006,0x0F6,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x0F6,0x006,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x018,0x018,0x018,0x018,0x018,0x0F8,0x018,0x0F8,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x01F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x01F,0x018,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x037,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x037,0x030,0x03F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x03F,0x030,0x037,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x0F7,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x0F7,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x037,0x030,0x037,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x036,0x036,0x036,0x036,0x036,0x0F7,0x000,0x0F7,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x018,0x018,0x018,0x018,0x018,0x0FF,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x03F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x018,0x018,0x018,0x018,0x018,0x01F,0x018,0x01F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x01F,0x018,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x03F,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0FF,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x018,0x018,0x018,0x018,0x018,0x0FF,0x018,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0F8,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF, +0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0, +0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F, +0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x076,0x0DC,0x0D8,0x0D8,0x0D8,0x0DC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0FC,0x0C6,0x0FC,0x0C6,0x0C6,0x0FC,0x0C0,0x0C0,0x0C0,0x000,0x000, +0x000,0x000,0x0FE,0x0C6,0x0C6,0x0C0,0x0C0,0x0C0,0x0C0,0x0C0,0x0C0,0x0C0,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x080,0x0FE,0x06C,0x06C,0x06C,0x06C,0x06C,0x06C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x0FE,0x0C6,0x060,0x030,0x018,0x030,0x060,0x0C6,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x07E,0x0D8,0x0D8,0x0D8,0x0D8,0x0D8,0x070,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x066,0x066,0x066,0x066,0x066,0x07C,0x060,0x060,0x0C0,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x076,0x0DC,0x018,0x018,0x018,0x018,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x07E,0x018,0x03C,0x066,0x066,0x066,0x03C,0x018,0x07E,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x06C,0x038,0x000,0x000,0x000,0x000, +0x000,0x000,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x06C,0x06C,0x06C,0x06C,0x0EE,0x000,0x000,0x000,0x000, +0x000,0x000,0x01E,0x030,0x018,0x00C,0x03E,0x066,0x066,0x066,0x066,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x07E,0x0DB,0x0DB,0x0DB,0x07E,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x003,0x006,0x07E,0x0CF,0x0DB,0x0F3,0x07E,0x060,0x0C0,0x000,0x000,0x000,0x000, +0x000,0x000,0x01C,0x030,0x060,0x060,0x07C,0x060,0x060,0x060,0x030,0x01C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x0FE,0x000,0x000,0x0FE,0x000,0x000,0x0FE,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x018,0x018,0x07E,0x018,0x018,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x030,0x018,0x00C,0x006,0x00C,0x018,0x030,0x000,0x07E,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x00C,0x018,0x030,0x060,0x030,0x018,0x00C,0x000,0x07E,0x000,0x000,0x000,0x000, +0x000,0x000,0x00E,0x01B,0x01B,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0D8,0x0D8,0x0D8,0x070,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x07E,0x000,0x018,0x018,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x076,0x0DC,0x000,0x076,0x0DC,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x038,0x06C,0x06C,0x038,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x00F,0x00C,0x00C,0x00C,0x00C,0x00C,0x0EC,0x06C,0x06C,0x03C,0x01C,0x000,0x000,0x000,0x000, +0x000,0x0D8,0x06C,0x06C,0x06C,0x06C,0x06C,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x070,0x098,0x030,0x060,0x0C8,0x0F8,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x07C,0x07C,0x07C,0x07C,0x07C,0x07C,0x07C,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000 +}; diff --git a/16/tauron30/C_SRC/FONT2.H b/16/tauron30/C_SRC/FONT2.H new file mode 100755 index 00000000..1a2a5166 --- /dev/null +++ b/16/tauron30/C_SRC/FONT2.H @@ -0,0 +1,268 @@ +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- Created with FEDIT written by Kinfira (Jeffrey Morgan) -= +//=- -= +//=- Tauron VGA Utilities Version 1.0 -= +//=- Released June 14, 1998 -= +//=- -= +//=- Font Width: 8 -= +//=- Font Height: 16 -= +//=- Bytes per character: 16 -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +char Font2[] = { +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x07E,0x081,0x0A5,0x081,0x081,0x0BD,0x099,0x081,0x081,0x07E,0x000,0x000,0x000,0x000, +0x000,0x000,0x07E,0x0FF,0x0DB,0x0FF,0x0FF,0x0C3,0x0E7,0x0FF,0x0FF,0x07E,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x06C,0x0FE,0x0FE,0x0FE,0x0FE,0x07C,0x038,0x010,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x010,0x038,0x07C,0x0FE,0x07C,0x038,0x010,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x018,0x03C,0x03C,0x0E7,0x0E7,0x0E7,0x099,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x018,0x03C,0x07E,0x0FF,0x0FF,0x07E,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x03C,0x03C,0x018,0x000,0x000,0x000,0x000,0x000,0x000, +0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0E7,0x0C3,0x0C3,0x0E7,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF, +0x000,0x000,0x000,0x000,0x000,0x03C,0x066,0x042,0x042,0x066,0x03C,0x000,0x000,0x000,0x000,0x000, +0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0C3,0x099,0x0BD,0x0BD,0x099,0x0C3,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF, +0x000,0x000,0x01E,0x00E,0x01A,0x032,0x078,0x0CC,0x0CC,0x0CC,0x0CC,0x078,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x066,0x066,0x066,0x066,0x03C,0x018,0x07E,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x03F,0x033,0x03F,0x030,0x030,0x030,0x030,0x070,0x0F0,0x0E0,0x000,0x000,0x000,0x000, +0x000,0x000,0x07F,0x063,0x07F,0x063,0x063,0x063,0x063,0x067,0x0E7,0x0E6,0x0C0,0x000,0x000,0x000, +0x000,0x000,0x000,0x018,0x018,0x0DB,0x03C,0x0E7,0x03C,0x0DB,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x080,0x0C0,0x0E0,0x0F0,0x0F8,0x0FE,0x0F8,0x0F0,0x0E0,0x0C0,0x080,0x000,0x000,0x000,0x000, +0x000,0x002,0x006,0x00E,0x01E,0x03E,0x0FE,0x03E,0x01E,0x00E,0x006,0x002,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x03C,0x07E,0x018,0x018,0x018,0x018,0x07E,0x03C,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x066,0x066,0x066,0x066,0x066,0x066,0x066,0x000,0x066,0x066,0x000,0x000,0x000,0x000, +0x000,0x000,0x07F,0x0DB,0x0DB,0x0DB,0x07B,0x01B,0x01B,0x01B,0x01B,0x01B,0x000,0x000,0x000,0x000, +0x000,0x07C,0x0C6,0x060,0x038,0x06C,0x0C6,0x0C6,0x06C,0x038,0x00C,0x0C6,0x07C,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x0FE,0x0FE,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x03C,0x07E,0x018,0x018,0x018,0x018,0x07E,0x03C,0x018,0x07E,0x000,0x000,0x000, +0x000,0x000,0x018,0x03C,0x07E,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x07E,0x03C,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x018,0x00C,0x0FE,0x00C,0x018,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x030,0x060,0x0FE,0x060,0x030,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0C0,0x0C0,0x0C0,0x0C0,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x028,0x06C,0x0FE,0x06C,0x028,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x010,0x038,0x038,0x07C,0x07C,0x0FE,0x0FE,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x0FE,0x0FE,0x07C,0x07C,0x038,0x038,0x010,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x03C,0x03C,0x03C,0x018,0x018,0x018,0x000,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x066,0x066,0x066,0x024,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x06C,0x06C,0x0FE,0x06C,0x06C,0x06C,0x0FE,0x06C,0x06C,0x000,0x000,0x000,0x000, +0x018,0x018,0x07C,0x0C6,0x0C2,0x0C0,0x07C,0x006,0x086,0x0C6,0x07C,0x018,0x018,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x0C2,0x0C6,0x00C,0x018,0x030,0x060,0x0C6,0x086,0x000,0x000,0x000,0x000, +0x000,0x000,0x038,0x06C,0x06C,0x038,0x076,0x0DC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x030,0x030,0x030,0x060,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x00C,0x018,0x030,0x030,0x030,0x030,0x030,0x030,0x018,0x00C,0x000,0x000,0x000,0x000, +0x000,0x000,0x030,0x018,0x00C,0x00C,0x00C,0x00C,0x00C,0x00C,0x018,0x030,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x066,0x03C,0x0FF,0x03C,0x066,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x07E,0x018,0x018,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x018,0x030,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x002,0x006,0x00C,0x018,0x030,0x060,0x0C0,0x080,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x0C6,0x0CE,0x0D6,0x0D6,0x0E6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x038,0x078,0x018,0x018,0x018,0x018,0x018,0x018,0x07E,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x006,0x00C,0x018,0x030,0x060,0x0C0,0x0C6,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x006,0x006,0x03C,0x006,0x006,0x006,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x00C,0x01C,0x03C,0x06C,0x0CC,0x0FE,0x00C,0x00C,0x00C,0x01E,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FE,0x0C0,0x0C0,0x0C0,0x0FC,0x00E,0x006,0x006,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x038,0x060,0x0C0,0x0C0,0x0FC,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FE,0x0C6,0x006,0x006,0x00C,0x018,0x030,0x030,0x030,0x030,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x07E,0x006,0x006,0x006,0x00C,0x078,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x018,0x018,0x030,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x006,0x00C,0x018,0x030,0x060,0x030,0x018,0x00C,0x006,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x000,0x000,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x060,0x030,0x018,0x00C,0x006,0x00C,0x018,0x030,0x060,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x0C6,0x00C,0x018,0x018,0x018,0x000,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x07C,0x0C6,0x0C6,0x0DE,0x0DE,0x0DE,0x0DC,0x0C0,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x010,0x038,0x06C,0x0C6,0x0C6,0x0FF,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FC,0x066,0x066,0x066,0x07C,0x0FF,0x066,0x066,0x066,0x0FC,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x066,0x0C2,0x0C0,0x0C0,0x0FF,0x0C0,0x0C2,0x066,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0F8,0x06C,0x066,0x066,0x066,0x0FF,0x066,0x066,0x06C,0x0F8,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FE,0x066,0x062,0x068,0x078,0x0FF,0x060,0x062,0x066,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FE,0x066,0x062,0x068,0x078,0x0FF,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x066,0x0C2,0x0C0,0x0C0,0x0FF,0x0C6,0x0C6,0x066,0x03A,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0FE,0x0FF,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x018,0x018,0x018,0x018,0x0FF,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x01E,0x00C,0x00C,0x00C,0x00C,0x0FF,0x0CC,0x0CC,0x0CC,0x078,0x000,0x000,0x000,0x000, +0x000,0x000,0x0E6,0x066,0x06C,0x06C,0x078,0x0FF,0x06C,0x066,0x066,0x0E6,0x000,0x000,0x000,0x000, +0x000,0x000,0x0F0,0x060,0x060,0x060,0x060,0x0FF,0x060,0x062,0x066,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0EE,0x0FE,0x0FE,0x0D6,0x0FF,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0E6,0x0F6,0x0FE,0x0DE,0x0FF,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x0FF,0x0C6,0x0C6,0x06C,0x038,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FC,0x066,0x066,0x066,0x07C,0x0FF,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0FF,0x0C6,0x0D6,0x0DE,0x07C,0x00C,0x00E,0x000,0x000, +0x000,0x000,0x0FC,0x066,0x066,0x066,0x07C,0x0FF,0x066,0x066,0x066,0x0E6,0x000,0x000,0x000,0x000, +0x000,0x000,0x07C,0x0C6,0x0C6,0x060,0x038,0x0FF,0x006,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x07E,0x07E,0x05A,0x018,0x018,0x0FF,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0FF,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0FF,0x0C6,0x06C,0x038,0x010,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0FF,0x0D6,0x0FE,0x06C,0x06C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x06C,0x06C,0x038,0x0FF,0x06C,0x06C,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x066,0x066,0x066,0x066,0x03C,0x0FF,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0FE,0x0C6,0x086,0x00C,0x018,0x0FF,0x060,0x0C2,0x0C6,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x030,0x030,0x030,0x030,0x0FF,0x030,0x030,0x030,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x080,0x0C0,0x0E0,0x070,0x0FF,0x01C,0x00E,0x006,0x002,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x00C,0x00C,0x00C,0x00C,0x0FF,0x00C,0x00C,0x00C,0x03C,0x000,0x000,0x000,0x000, +0x010,0x038,0x06C,0x0C6,0x000,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x000, +0x030,0x030,0x018,0x000,0x000,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x0E0,0x060,0x060,0x078,0x06C,0x066,0x066,0x066,0x066,0x0DC,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x0C0,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x01C,0x00C,0x00C,0x03C,0x06C,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x038,0x06C,0x064,0x060,0x0F0,0x060,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x076,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x07C,0x00C,0x0CC,0x078,0x000, +0x000,0x000,0x0E0,0x060,0x060,0x06C,0x076,0x066,0x066,0x066,0x066,0x0E6,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x018,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x006,0x006,0x000,0x00E,0x006,0x006,0x006,0x006,0x006,0x006,0x066,0x066,0x03C,0x000, +0x000,0x000,0x0E0,0x060,0x060,0x066,0x06C,0x078,0x078,0x06C,0x066,0x0E6,0x000,0x000,0x000,0x000, +0x000,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0EC,0x0FE,0x0D6,0x0D6,0x0D6,0x0D6,0x0D6,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0DC,0x066,0x066,0x066,0x066,0x066,0x066,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0DC,0x066,0x066,0x066,0x066,0x066,0x07C,0x060,0x060,0x0F0,0x000, +0x000,0x000,0x000,0x000,0x000,0x076,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x07C,0x00C,0x00C,0x01E,0x000, +0x000,0x000,0x000,0x000,0x000,0x0DC,0x076,0x062,0x060,0x060,0x060,0x0F0,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x07C,0x0C6,0x060,0x038,0x00C,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x010,0x030,0x030,0x0FC,0x030,0x030,0x030,0x030,0x036,0x01C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x066,0x066,0x066,0x066,0x066,0x03C,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0C6,0x0C6,0x0C6,0x0D6,0x0D6,0x0FE,0x06C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0C6,0x06C,0x038,0x038,0x038,0x06C,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07E,0x006,0x00C,0x0F8,0x000, +0x000,0x000,0x000,0x000,0x000,0x0FE,0x0CC,0x018,0x030,0x060,0x0C6,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x00E,0x018,0x018,0x018,0x070,0x018,0x018,0x018,0x018,0x00E,0x000,0x000,0x000,0x000, +0x000,0x000,0x018,0x018,0x018,0x018,0x000,0x018,0x018,0x018,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x070,0x018,0x018,0x018,0x00E,0x018,0x018,0x018,0x018,0x070,0x000,0x000,0x000,0x000, +0x000,0x000,0x076,0x0DC,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x010,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x0FE,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x03C,0x066,0x0C2,0x0C0,0x0C0,0x0C0,0x0C2,0x066,0x03C,0x00C,0x006,0x07C,0x000,0x000, +0x000,0x000,0x0CC,0x0CC,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x00C,0x018,0x030,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x010,0x038,0x06C,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x0CC,0x0CC,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x060,0x030,0x018,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x038,0x06C,0x038,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x03C,0x066,0x060,0x060,0x066,0x03C,0x00C,0x006,0x03C,0x000,0x000,0x000, +0x000,0x010,0x038,0x06C,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x060,0x030,0x018,0x000,0x07C,0x0C6,0x0FE,0x0C0,0x0C0,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x066,0x066,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x018,0x03C,0x066,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x060,0x030,0x018,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x0C6,0x0C6,0x010,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x038,0x06C,0x038,0x000,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x018,0x030,0x060,0x000,0x0FE,0x066,0x060,0x07C,0x060,0x060,0x066,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0CC,0x076,0x036,0x07E,0x0D8,0x0D8,0x06E,0x000,0x000,0x000,0x000, +0x000,0x000,0x03E,0x06C,0x0CC,0x0CC,0x0FE,0x0CC,0x0CC,0x0CC,0x0CC,0x0CE,0x000,0x000,0x000,0x000, +0x000,0x010,0x038,0x06C,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x060,0x030,0x018,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x030,0x078,0x0CC,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x060,0x030,0x018,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x0C6,0x0C6,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07E,0x006,0x00C,0x078,0x000, +0x000,0x0C6,0x0C6,0x000,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x0C6,0x06C,0x038,0x000,0x000,0x000,0x000, +0x000,0x0C6,0x0C6,0x000,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x018,0x018,0x03C,0x066,0x060,0x060,0x060,0x066,0x03C,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x038,0x06C,0x064,0x060,0x0F0,0x060,0x060,0x060,0x060,0x0E6,0x0FC,0x000,0x000,0x000,0x000, +0x000,0x000,0x066,0x066,0x03C,0x018,0x07E,0x018,0x07E,0x018,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x0F8,0x0CC,0x0CC,0x0F8,0x0C4,0x0CC,0x0DE,0x0CC,0x0CC,0x0CC,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x00E,0x01B,0x018,0x018,0x018,0x07E,0x018,0x018,0x018,0x018,0x018,0x0D8,0x070,0x000,0x000, +0x000,0x018,0x030,0x060,0x000,0x078,0x00C,0x07C,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x00C,0x018,0x030,0x000,0x038,0x018,0x018,0x018,0x018,0x018,0x03C,0x000,0x000,0x000,0x000, +0x000,0x018,0x030,0x060,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x018,0x030,0x060,0x000,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x0CC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x076,0x0DC,0x000,0x0DC,0x066,0x066,0x066,0x066,0x066,0x066,0x000,0x000,0x000,0x000, +0x076,0x0DC,0x000,0x0C6,0x0E6,0x0F6,0x0FE,0x0DE,0x0CE,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x03C,0x06C,0x06C,0x03E,0x000,0x07E,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x038,0x06C,0x06C,0x038,0x000,0x07C,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x030,0x030,0x000,0x030,0x030,0x060,0x0C0,0x0C6,0x0C6,0x07C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x0C0,0x0C0,0x0C0,0x0C0,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x006,0x006,0x006,0x006,0x000,0x000,0x000,0x000,0x000, +0x000,0x0C0,0x0C0,0x0C2,0x0C6,0x0CC,0x018,0x030,0x060,0x0CE,0x093,0x006,0x00C,0x01F,0x000,0x000, +0x000,0x0C0,0x0C0,0x0C2,0x0C6,0x0CC,0x018,0x030,0x066,0x0CE,0x09A,0x03F,0x006,0x00F,0x000,0x000, +0x000,0x000,0x018,0x018,0x000,0x018,0x018,0x018,0x03C,0x03C,0x03C,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x033,0x066,0x0CC,0x066,0x033,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0CC,0x066,0x033,0x066,0x0CC,0x000,0x000,0x000,0x000,0x000,0x000, +0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044,0x011,0x044, +0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA,0x055,0x0AA, +0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077,0x0DD,0x077, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x0F8,0x018,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0F6,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FE,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x000,0x000,0x000,0x000,0x000,0x0F8,0x018,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x036,0x036,0x036,0x036,0x036,0x0F6,0x006,0x0F6,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x000,0x000,0x000,0x000,0x000,0x0FE,0x006,0x0F6,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x0F6,0x006,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x018,0x018,0x018,0x018,0x018,0x0F8,0x018,0x0F8,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0F8,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x01F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x01F,0x018,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x037,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x037,0x030,0x03F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x03F,0x030,0x037,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x0F7,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x0F7,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x037,0x030,0x037,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x036,0x036,0x036,0x036,0x036,0x0F7,0x000,0x0F7,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x018,0x018,0x018,0x018,0x018,0x0FF,0x000,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0FF,0x000,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x03F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x018,0x018,0x018,0x018,0x018,0x01F,0x018,0x01F,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x01F,0x018,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x03F,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x0FF,0x036,0x036,0x036,0x036,0x036,0x036,0x036,0x036, +0x018,0x018,0x018,0x018,0x018,0x0FF,0x018,0x0FF,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0F8,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x01F,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF, +0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0,0x0F0, +0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F,0x00F, +0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x0FF,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x076,0x0DC,0x0D8,0x0D8,0x0D8,0x0DC,0x076,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x0FC,0x0C6,0x0FC,0x0C6,0x0C6,0x0FC,0x0C0,0x0C0,0x0C0,0x000,0x000, +0x000,0x000,0x0FE,0x0C6,0x0C6,0x0C0,0x0C0,0x0C0,0x0C0,0x0C0,0x0C0,0x0C0,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x080,0x0FE,0x06C,0x06C,0x06C,0x06C,0x06C,0x06C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x0FE,0x0C6,0x060,0x030,0x018,0x030,0x060,0x0C6,0x0FE,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x07E,0x0D8,0x0D8,0x0D8,0x0D8,0x0D8,0x070,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x066,0x066,0x066,0x066,0x066,0x07C,0x060,0x060,0x0C0,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x076,0x0DC,0x018,0x018,0x018,0x018,0x018,0x018,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x07E,0x018,0x03C,0x066,0x066,0x066,0x03C,0x018,0x07E,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x038,0x06C,0x0C6,0x0C6,0x0FE,0x0C6,0x0C6,0x06C,0x038,0x000,0x000,0x000,0x000, +0x000,0x000,0x038,0x06C,0x0C6,0x0C6,0x0C6,0x06C,0x06C,0x06C,0x06C,0x0EE,0x000,0x000,0x000,0x000, +0x000,0x000,0x01E,0x030,0x018,0x00C,0x03E,0x066,0x066,0x066,0x066,0x03C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x07E,0x0DB,0x0DB,0x0DB,0x07E,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x003,0x006,0x07E,0x0CF,0x0DB,0x0F3,0x07E,0x060,0x0C0,0x000,0x000,0x000,0x000, +0x000,0x000,0x01C,0x030,0x060,0x060,0x07C,0x060,0x060,0x060,0x030,0x01C,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x07C,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x0C6,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x0FE,0x000,0x000,0x0FE,0x000,0x000,0x0FE,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x018,0x018,0x07E,0x018,0x018,0x000,0x000,0x0FF,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x030,0x018,0x00C,0x006,0x00C,0x018,0x030,0x000,0x07E,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x00C,0x018,0x030,0x060,0x030,0x018,0x00C,0x000,0x07E,0x000,0x000,0x000,0x000, +0x000,0x000,0x00E,0x01B,0x01B,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018, +0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x018,0x0D8,0x0D8,0x0D8,0x070,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x07E,0x000,0x018,0x018,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x076,0x0DC,0x000,0x076,0x0DC,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x038,0x06C,0x06C,0x038,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x018,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x018,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x00F,0x00C,0x00C,0x00C,0x00C,0x00C,0x0EC,0x06C,0x06C,0x03C,0x01C,0x000,0x000,0x000,0x000, +0x000,0x0D8,0x06C,0x06C,0x06C,0x06C,0x06C,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x070,0x098,0x030,0x060,0x0C8,0x0F8,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x07C,0x07C,0x07C,0x07C,0x07C,0x07C,0x07C,0x000,0x000,0x000,0x000,0x000, +0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000 +}; diff --git a/16/tauron30/C_SRC/MAINC.CPP b/16/tauron30/C_SRC/MAINC.CPP new file mode 100755 index 00000000..34a1247a --- /dev/null +++ b/16/tauron30/C_SRC/MAINC.CPP @@ -0,0 +1,181 @@ +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- -= +//=- Tauron VGA Utilities Version 3.0 -= +//=- Released September 20, 1998 -= +//=- -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +//=- All Rights Reserved. =-= that you put my name some- -= +//=- =-= where in your credits. -= +//=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- I assume no responsibility whatsoever for any effect that this package, -= +//=- the information contained therein or the use thereof has on you, your -= +//=- sanity, computer, spouse, children, pets or anything else related to -= +//=- you or your existance. No warranty is provided nor implied with this -= +//=- source code. -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +#include +#include +#include +#include +#include "tauron.h" + +void MainScreen() +{ + clrscr(); + printf("Tauron VGA Utilities v3.0\n" + "Copyright (c) 1998 Jeffrey Morgan. All Rights Reserved.\n"); + textcolor(12); + cprintf("Modes with a ! are not implemented Modes with a % are unchained\r\n"); + textcolor(7); + printf("Select a video mode to test:\n" + "Key Videomode Key Videomode\n" + "================================================================================" + " 0) 00H, 01H -- 40 x 25 x 16 %F) Mode D -- 360 x 200 x 256\n" + " 1) Mode L -- 40 x 43 x 16 %G) Mode E -- 360 x 240 x 256\n" + " 2) Mode M -- 40 x 50 x 16 %H) Mode F -- 360 x 350 x 256\n" + "!3) 07H -- 80 x 25 x 2 %I) Mode G -- 360 x 400 x 256\n" + " 4) 02H, 03H -- 80 x 25 x 16 %J) Mode H -- 360 x 480 x 256\n" + " 5) Mode J -- 80 x 43 x 16 K) 06H -- 640 x 200 x 2\n" + " 6) Mode K -- 80 x 50 x 16 !L) 0FH -- 640 x 350 x 2\n" + " 7) 04H, 05H -- 320 x 200 x 4 M) 11H -- 640 x 480 x 2\n" + " 8) 0DH -- 320 x 200 x 16 N) 0EH -- 640 x 200 x 16\n" + " 9) 13H -- 320 x 200 x 256 O) 10H -- 640 x 350 x 16\n" + "%A) Chain 4 -- 320 x 200 x 256 P) Mode I -- 640 x 400 x 16\n" + "%B) Mode X -- 320 x 240 x 256 Q) 12H -- 640 x 480 x 16\n" + "%C) Mode A -- 320 x 350 x 256\n" + "%D) Mode B -- 320 x 400 x 256 R) Dual Font Test\n" + "%E) Mode C -- 320 x 480 x 256\n" + "===============================================================================\n" + "Hit 'ESC' to exit. Press a key [0-9 or A-O]>"); +} + +void SetMode03h() +{ + asm MOV AX,0003H + asm INT 10H +} + +void main() +{ + int ok, key; + ok = 1; + MainScreen(); + while (ok) + { + if( (key = getch()) == 0 ) + key = 256 * getch(); + switch( key ) + { + case Escape : ok = 0; break; + + case '0' : + SetVideoMode(MODE00H); TextTest(); getch(); + SetMode03h(); MainScreen(); break; + + case '1': + SetVideoMode(MODE_L); TextTest(); getch(); + SetMode03h(); MainScreen(); break; + + case '2': + SetVideoMode(MODE_M); TextTest(); getch(); + SetMode03h(); MainScreen(); break; + + case '4' : + SetVideoMode(MODE03H); TextTest(); getch(); + SetMode03h(); MainScreen(); break; + + case '5': + SetVideoMode(MODE_J); TextTest(); getch(); + SetMode03h(); MainScreen(); break; + + case '6': + SetVideoMode(MODE_K); TextTest(); getch(); + SetMode03h(); MainScreen(); break; + + case '7': + SetVideoMode(MODE04H); Clear04H(); getch(); + SetMode03h(); MainScreen(); break; + + case '8' : + SetVideoMode(MODE0DH); Clear0DH(12); /*ModeTest();*/ getch(); + SetMode03h(); MainScreen(); break; + + case '9': + SetVideoMode(MODE13H); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'a': case 'A': + SetVideoMode(CHAIN4); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'b': case 'B': + SetVideoMode(MODE_X); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'c': case 'C': + SetVideoMode(MODE_A); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'd': case 'D': + SetVideoMode(MODE_B); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'e': case 'E': + SetVideoMode(MODE_C); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'f': case 'F': + SetVideoMode(MODE_D); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'g': case 'G': + SetVideoMode(MODE_E); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'h': case 'H': + SetVideoMode(MODE_F); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'i': case 'I': + SetVideoMode(MODE_G); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'j': case 'J': + SetVideoMode(MODE_H); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'k': case 'K': + SetVideoMode(MODE06H); Clear06H(); getch(); + SetMode03h(); MainScreen(); break; + + case 'm': case 'M': + SetVideoMode(MODE11H); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'n': case 'N': + SetVideoMode(MODE0EH); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'o': case 'O': + SetVideoMode(MODE10H); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'p': case 'P': + SetVideoMode(MODE_I); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'q': case 'Q': + SetVideoMode(MODE12H); ModeTest(); getch(); + SetMode03h(); MainScreen(); break; + + case 'r': case 'R': + SetVideoMode(MODE03H); DualTest(); + SetMode03h(); MainScreen(); break; + + default : break; + } + } + asm MOV AX,0003h + asm int 10h +} diff --git a/16/tauron30/C_SRC/MODES.CPP b/16/tauron30/C_SRC/MODES.CPP new file mode 100755 index 00000000..72e11c94 --- /dev/null +++ b/16/tauron30/C_SRC/MODES.CPP @@ -0,0 +1,833 @@ +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- -= +//=- Tauron VGA Utilities Version 3.0 -= +//=- Released September 20, 1998 -= +//=- -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +//=- All Rights Reserved. =-= that you put my name some- -= +//=- =-= where in your credits. -= +//=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- I assume no responsibility whatsoever for any effect that this package, -= +//=- the information contained therein or the use thereof has on you, your -= +//=- sanity, computer, spouse, children, pets or anything else related to -= +//=- you or your existance. No warranty is provided nor implied with this -= +//=- source code. -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +#include +#include +#include +#include +#include "tauron.h" +#include "modes_c.inc" +#include "palette.inc" + +void setpalette4(); +void setpalette16(); +void setpalette256(); +Vmode Mode; + +#define SEQ_ADDR 0x03C4 +#define GRACON_ADDR 0x03CE +#define CRTC_ADDR 0x03D4 + +void ReadBIOSfont(int fontnum, int bytesperchar) +{ + char far *biosfont,*vidmem; + struct REGPACK reg; + unsigned char oldmode,oldmisc,oldmem,oldmask; + unsigned char newmode,newmisc,newmem; + + // get the location of the font stroed in BIOS + reg.r_ax = 0x1130; + reg.r_bx = fontnum << 8; + intr(0x10, ®); + + // Make a pointer to the font + biosfont = (char far *)MK_FP( reg.r_es, reg.r_bp); + vidmem = (char far *)MK_FP( 0xA000, 0x0000); + + // Store the OLD 'Mode Register' value + outportb(GRACON_ADDR,5); + oldmode = inportb(GRACON_ADDR+1); + // Store the OLD 'Miscellaneous Register' value + outportb(GRACON_ADDR,6); + oldmisc = inportb(GRACON_ADDR+1); + // Store the OLD 'Mask Map' value + outportb(SEQ_ADDR,2); + oldmask = inportb(SEQ_ADDR+1); + // Store the OLD 'Memory Mode' value + outportb(SEQ_ADDR,4); + oldmem = inportb(SEQ_ADDR+1); + + // Write the NEW 'Mode Register' value + newmode = (oldmode & 0xFC); + outport(GRACON_ADDR, (newmode << 8) | 0x05); + // Write the NEW 'Miscellaneous Register' value + newmisc = ((oldmisc & 0xF1)|4); + outport(GRACON_ADDR, (newmisc << 8) | 0x06); + // Write the NEW 'Mask Map' value + outport(SEQ_ADDR, 0x0402); + // Write the NEW 'Memory Mode' value + newmem = (oldmem | 4); + outport(SEQ_ADDR, (newmem << 8) | 0x04); + + // Copy the font from BIOS + for (int i = 0; i < 256; i++) + { + for (int j = 0; j < bytesperchar; j++) + { + *vidmem++ = *biosfont++; + } + for (int k = 0; k < 32-bytesperchar; k++) + { + *vidmem++ = 0x00; + } + } + + // Write the OLD 'Mode Register' value + outport(GRACON_ADDR, (oldmode << 8) | 0x05); + // Write the OLD 'Miscellaneous Register' value + outport(GRACON_ADDR, (oldmisc << 8) | 0x06); + // Write the OLD 'Mask Map' value + outport(SEQ_ADDR,(oldmask << 8) | 0x02); + // Write the OLD 'Memory Mode' value + outport(SEQ_ADDR, (oldmem << 8) | 0x04); +} + +void SetMode(unsigned int regs) +{ + asm { + MOV SI, regs + + // Send MISC regs + MOV DX,MISC_ADDR + MOV AL,[SI] + OUT DX,AL + INC SI + + MOV DX,STATUS_ADDR + MOV AL,[SI] + OUT DX,AL + INC SI + + // Send SEQ regs + MOV CX,0 +REG_LOOP: + MOV DX,SEQ_ADDR + MOV AL,CL + OUT DX,AL + + MOV DX,SEQ_ADDR + INC DX + MOV AL,[SI] + OUT DX,AL + + INC SI + INC CX + CMP CL,5 + JL REG_LOOP + + // Clear Protection bits + MOV AH,0EH + MOV AL,11H + AND AH,7FH + MOV DX,CRTC_ADDR + OUT DX,AX + + // Send CRTC regs + MOV CX,0 +REG_LOOP2: + MOV DX,CRTC_ADDR + MOV AL,CL + OUT DX,AL + + MOV DX,CRTC_ADDR + INC DX + MOV AL,[SI] + OUT DX,AL + + INC SI + INC CX + CMP CL,25 + JL REG_LOOP2 + + // Send GRAPHICS regs + MOV CX,0 +REG_LOOP3: + MOV DX,GRACON_ADDR + MOV AL,CL + OUT DX,AL + + MOV DX,GRACON_ADDR + INC DX + MOV AL,[SI] + OUT DX,AL + + INC SI + INC CX + CMP CL,9 + JL REG_LOOP3 + + MOV DX,STATUS_ADDR + IN AL,DX + + // Send ATTRCON regs + MOV CX,0 +REG_LOOP4: + MOV DX,ATTRCON_ADDR + IN AX,DX + + MOV AL,CL + OUT DX,AL + + MOV AL,[SI] + OUT DX,AL + + INC SI + INC CX + CMP CL,21 + JL REG_LOOP4 + + MOV AL,20H + OUT DX,AL + } +} + +void SetVideoMode(int mode) +{ + Mode.mode = mode; + if (mode == MODE00H) // 40 x 25 x 16 + { + SetMode((unsigned int)&mode00h); + setpalette16(); + ReadBIOSfont(6,16); + + Mode.width = 40; + Mode.height = 25; + Mode.width_bytes = 1000; + Mode.colors = 16; + Mode.attrib = TVU_TEXT; + } + else if (mode == MODE03H) // 80 x 25 x 16 + { + SetMode((unsigned int)&mode03h); + setpalette16(); + ReadBIOSfont(6,16); + + Mode.width = 80; + Mode.height = 25; + Mode.width_bytes = 2000; + Mode.colors = 16; + Mode.attrib = TVU_TEXT; + } + else if (mode == MODE04H) // 320 x 200 x 4 + { + SetMode((unsigned int)&mode04h); + setpalette4(); + + Mode.width = 320; + Mode.height = 200; + Mode.width_bytes = 8192; + Mode.colors = 4; + Mode.attrib = TVU_GRAPHICS; + } + else if (mode == MODE06H) // 640 x 200 x 2 + { + SetMode((unsigned int)&mode06h); + + Mode.width = 640; + Mode.height = 200; + Mode.width_bytes = 8192; + Mode.colors = 2; + Mode.attrib = TVU_GRAPHICS; + } + else if (mode == MODE07H) // 80 x 25 x 2 + { + SetMode((unsigned int)&mode07h); + + Mode.width = 80; + Mode.height = 25; + Mode.width_bytes = 2000; + Mode.colors = 2; + Mode.attrib = TVU_TEXT | TVU_MONOCHROME; + } + else if (mode == MODE0DH) // 320 x 200 x 16 + { + SetMode((unsigned int)&mode0Dh); + setpalette16(); + + Mode.width = 320; + Mode.height = 200; + Mode.width_bytes = 8000; + Mode.colors = 16; + Mode.attrib = TVU_GRAPHICS | TVU_PLANAR; + } + else if (mode == MODE0EH) // 640 x 200 x 16 + { + SetMode((unsigned int)&mode0Eh); + setpalette16(); + + Mode.width = 640; + Mode.height = 200; + Mode.width_bytes = 16000; + Mode.colors = 16; + Mode.attrib = TVU_GRAPHICS | TVU_PLANAR; + } + else if (mode == MODE0FH) // 640 x 350 x 2 + { + SetMode((unsigned int)&mode0Fh); + + Mode.width = 640; + Mode.height = 350; + Mode.width_bytes = 28000; + Mode.colors = 2; + Mode.attrib = TVU_GRAPHICS | TVU_MONOCHROME; + } + else if (mode == MODE10H) // 640 x 350 x 16 + { + SetMode((unsigned int)&mode10h); + setpalette16(); + + Mode.width = 640; + Mode.height = 350; + Mode.width_bytes = 28000; + Mode.colors = 16; + Mode.attrib = TVU_GRAPHICS | TVU_PLANAR; + } + else if (mode == MODE11H) // 640 x 480 x 2 + { + SetMode((unsigned int)&mode11h); + + Mode.width = 640; + Mode.height = 480; + Mode.width_bytes = 38400u; + Mode.colors = 2; + Mode.attrib = TVU_GRAPHICS | TVU_PLANAR; + } + else if (mode == MODE12H) // 640 x 480 x 16 + { + SetMode((unsigned int)&mode12h); + setpalette16(); + + Mode.width = 640; + Mode.height = 480; + Mode.width_bytes = 38400u; + Mode.colors = 16; + Mode.attrib = TVU_GRAPHICS | TVU_PLANAR; + } + else if (mode == MODE13H) // 320 x 200 x 256 + { + SetMode((unsigned int)&mode13h); + setpalette256(); + + Mode.width = 320; + Mode.height = 200; + Mode.width_bytes = 64000u; + Mode.colors = 256; + Mode.attrib = TVU_GRAPHICS; + } + else if (mode == CHAIN4) // unchained 320 x 200 x 256 + { + SetMode((unsigned int)&modeC4); + setpalette256(); + + Mode.width = 320; + Mode.height = 200; + Mode.width_bytes = 16000; + Mode.colors = 256; + Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED; + } + else if (mode == MODE_X) // unchained 320 x 240 x 256 + { + SetMode((unsigned int)&modeC4); + + outportb(MISC_ADDR,0xE3); + // turn off write protect + outport(CRTC_ADDR,0x2C11); + // vertical total + outport(CRTC_ADDR,0x0D06); + // overflow register + outport(CRTC_ADDR,0x3E07); + // vertical retrace start + outport(CRTC_ADDR,0xEA10); + // vertical retrace end AND wr.prot + outport(CRTC_ADDR,0xAC11); + // vertical display enable end + outport(CRTC_ADDR,0xDF12); + // start vertical blanking + outport(CRTC_ADDR,0xE715); + // end vertical blanking + outport(CRTC_ADDR,0x0616); + + setpalette256(); + Mode.width = 320; + Mode.height = 240; + Mode.width_bytes = 19200; + Mode.colors = 256; + Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED; + } + else if (mode == MODE_A) // unchained 320 x 350 x 256 + { + SetMode((unsigned int)&modeC4); + + // turn off double scanning mode + outportb(CRTC_ADDR,9); + outportb(CRTC_ADDR+1,inportb(CRTC_ADDR+1) & ~0x1F); + // change the vertical resolution flags to 350 + outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0x80); + // turn off write protect + outport(CRTC_ADDR,0x2C11); + // vertical total + outport(CRTC_ADDR,0xBF06); + // overflow register + outport(CRTC_ADDR,0x1F07); + // vertical retrace start + outport(CRTC_ADDR,0x8310); + // vertical retrace end AND wr.prot + outport(CRTC_ADDR,0x8511); + // vertical display enable end + outport(CRTC_ADDR,0x5D12); + // start vertical blanking + outport(CRTC_ADDR,0x6315); + // end vertical blanking + outport(CRTC_ADDR,0xBA16); + + setpalette256(); + Mode.width = 320; + Mode.height = 350; + Mode.width_bytes = 28000u; + Mode.colors = 256; + Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED; + } + else if (mode == MODE_B) // unchained 320 x 400 x 256 + { + SetMode((unsigned int)&modeC4); + // turn off double scanning mode + outportb(CRTC_ADDR,9); + outportb(CRTC_ADDR+1,inportb(CRTC_ADDR+1) & ~0x1F); + // change the vertical resolution flags to 400 + outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0x40); + + setpalette256(); + Mode.width = 320; + Mode.height = 400; + Mode.width_bytes = 32000; + Mode.colors = 256; + Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED; + } + else if (mode == MODE_C) // unchained 320 x 480 x 256 + { + SetMode((unsigned int)&modeC4); + + // turn off double scanning mode + outportb(CRTC_ADDR,9); + outportb(CRTC_ADDR+1,inportb(CRTC_ADDR+1) & ~0x1F); + // change the vertical resolution flags to 480 + outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0xC0); + // turn off write protect + outport(CRTC_ADDR,0x2C11); + // vertical total + outport(CRTC_ADDR,0x0D06); + // overflow register + outport(CRTC_ADDR,0x3E07); + // vertical retrace start + outport(CRTC_ADDR,0xEA10); + // vertical retrace end AND wr.prot + outport(CRTC_ADDR,0xAC11); + // vertical display enable end + outport(CRTC_ADDR,0xDF12); + // start vertical blanking + outport(CRTC_ADDR,0xE715); + // end vertical blanking + outport(CRTC_ADDR,0x0616); + + setpalette256(); + Mode.width = 320; + Mode.height = 480; + Mode.width_bytes = 38400u; + Mode.colors = 256; + Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED; + } + else if (mode == MODE_D) // unchained 360 x 200 x 256 + { + SetMode((unsigned int)&mode13h); + + // Turn off Chain 4 + outport(SEQ_ADDR,0x0604); + // Activate a synchronous reset + outport(SEQ_ADDR,0x0100); + // Select 28 mhz pixel clock + outportb(MISC_ADDR,0xE7); + // Release synchronous reset + outport(SEQ_ADDR,0x0300); + + // change the vertical resolution flags to 400 + outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0x40); + + // turn off write protect + outport(CRTC_ADDR,0x2C11); + + outport(CRTC_ADDR,0x6B00); + outport(CRTC_ADDR,0x5901); + outport(CRTC_ADDR,0x5A02); + outport(CRTC_ADDR,0x8E03); + outport(CRTC_ADDR,0x5E04); + outport(CRTC_ADDR,0x8A05); + outport(CRTC_ADDR,0x0008); + outport(CRTC_ADDR,0xC009); + outport(CRTC_ADDR,0x000A); + outport(CRTC_ADDR,0x000B); + outport(CRTC_ADDR,0x000C); + outport(CRTC_ADDR,0x000D); + outport(CRTC_ADDR,0x000E); + outport(CRTC_ADDR,0x000F); + outport(CRTC_ADDR,0xAC11); + outport(CRTC_ADDR,0x2D13); + outport(CRTC_ADDR,0x0014); + outport(CRTC_ADDR,0xE317); + outport(CRTC_ADDR,0xFF18); + + setpalette256(); + Mode.width = 360; + Mode.height = 200; + Mode.width_bytes = 18000u; + Mode.colors = 256; + Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED; + } + else if (mode == MODE_E) // unchained 360 x 240 x 256 + { + SetMode((unsigned int)&mode13h); + + // Turn off Chain 4 + outport(SEQ_ADDR,0x0604); + // Activate a synchronous reset + outport(SEQ_ADDR,0x0100); + // Select 28 mhz pixel clock + outportb(MISC_ADDR,0xE7); + // Release synchronous reset + outport(SEQ_ADDR,0x0300); + + // change the vertical resolution flags to 480 + outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0xC0); + + // turn off write protect + outport(CRTC_ADDR,0x2C11); + + outport(CRTC_ADDR,0x6B00); + outport(CRTC_ADDR,0x5901); + outport(CRTC_ADDR,0x5A02); + outport(CRTC_ADDR,0x8E03); + outport(CRTC_ADDR,0x5E04); + outport(CRTC_ADDR,0x8A05); + outport(CRTC_ADDR,0x0D06); + outport(CRTC_ADDR,0x3E07); + outport(CRTC_ADDR,0x0008); + outport(CRTC_ADDR,0xC009); + outport(CRTC_ADDR,0x000A); + outport(CRTC_ADDR,0x000B); + outport(CRTC_ADDR,0x000C); + outport(CRTC_ADDR,0x000D); + outport(CRTC_ADDR,0x000E); + outport(CRTC_ADDR,0x000F); + outport(CRTC_ADDR,0xEA10); + outport(CRTC_ADDR,0xAC11); + outport(CRTC_ADDR,0xDF12); + outport(CRTC_ADDR,0x2D13); + outport(CRTC_ADDR,0x0014); + outport(CRTC_ADDR,0xE715); + outport(CRTC_ADDR,0x0616); + outport(CRTC_ADDR,0xE317); + outport(CRTC_ADDR,0xFF18); + + setpalette256(); + Mode.width = 360; + Mode.height = 240; + Mode.width_bytes = 21600; + Mode.colors = 256; + Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED; + } + else if (mode == MODE_F) // unchained 360 x 350 x 256 + { + SetMode((unsigned int)&mode13h); + + // Turn off Chain 4 + outport(SEQ_ADDR,0x0604); + // Activate a synchronous reset + outport(SEQ_ADDR,0x0100); + // Select 28 mhz pixel clock + outportb(MISC_ADDR,0xE7); + // Release synchronous reset + outport(SEQ_ADDR,0x0300); + + // change the vertical resolution flags to 350 + outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0x80); + + // turn off write protect + outport(CRTC_ADDR,0x2C11); + + outport(CRTC_ADDR,0x6B00); + outport(CRTC_ADDR,0x5901); + outport(CRTC_ADDR,0x5A02); + outport(CRTC_ADDR,0x8E03); + outport(CRTC_ADDR,0x5E04); + outport(CRTC_ADDR,0x8A05); + outport(CRTC_ADDR,0xBF06); + outport(CRTC_ADDR,0x1F07); + outport(CRTC_ADDR,0x0008); + outport(CRTC_ADDR,0x4009); + outport(CRTC_ADDR,0x000A); + outport(CRTC_ADDR,0x000B); + outport(CRTC_ADDR,0x000C); + outport(CRTC_ADDR,0x000D); + outport(CRTC_ADDR,0x000E); + outport(CRTC_ADDR,0x000F); + outport(CRTC_ADDR,0x8310); + outport(CRTC_ADDR,0x8511); + outport(CRTC_ADDR,0x5D12); + outport(CRTC_ADDR,0x2D13); + outport(CRTC_ADDR,0x0014); + outport(CRTC_ADDR,0x6315); + outport(CRTC_ADDR,0xBA16); + outport(CRTC_ADDR,0xE317); + outport(CRTC_ADDR,0xFF18); + + setpalette256(); + Mode.width = 360; + Mode.height = 350; + Mode.width_bytes = 31500; + Mode.colors = 256; + Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED; + } + else if (mode == MODE_G) // unchained 360 x 400 x 256 + { + SetMode((unsigned int)&mode13h); + + // Turn off Chain 4 + outport(SEQ_ADDR,0x0604); + // Activate a synchronous reset + outport(SEQ_ADDR,0x0100); + // Select 28 mhz pixel clock + outportb(MISC_ADDR,0xE7); + // Release synchronous reset + outport(SEQ_ADDR,0x0300); + + // change the vertical resolution flags to 400 + outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0x40); + + // turn off write protect + outport(CRTC_ADDR,0x2C11); + + outport(CRTC_ADDR,0x6B00); + outport(CRTC_ADDR,0x5901); + outport(CRTC_ADDR,0x5A02); + outport(CRTC_ADDR,0x8E03); + outport(CRTC_ADDR,0x5E04); + outport(CRTC_ADDR,0x8A05); + outport(CRTC_ADDR,0x0008); + outport(CRTC_ADDR,0x4009); + outport(CRTC_ADDR,0x000A); + outport(CRTC_ADDR,0x000B); + outport(CRTC_ADDR,0x000C); + outport(CRTC_ADDR,0x000D); + outport(CRTC_ADDR,0x000E); + outport(CRTC_ADDR,0x000F); + outport(CRTC_ADDR,0xAC11); + outport(CRTC_ADDR,0x2D13); + outport(CRTC_ADDR,0x0014); + outport(CRTC_ADDR,0xE317); + outport(CRTC_ADDR,0xFF18); + + setpalette256(); + Mode.width = 360; + Mode.height = 400; + Mode.width_bytes = 36000u; + Mode.colors = 256; + Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED; + } + else if (mode == MODE_H) // unchained 360 x 480 x 256 + { + SetMode((unsigned int)&mode13h); + + // Turn off Chain 4 + outport(SEQ_ADDR,0x0604); + // Activate a synchronous reset + outport(SEQ_ADDR,0x0100); + // Select 28 mhz pixel clock + outportb(MISC_ADDR,0xE7); + // Release synchronous reset + outport(SEQ_ADDR,0x0300); + + // change the vertical resolution flags to 480 + outportb(MISC_ADDR,(inportb(0x3CC) & ~0xC0) | 0xC0); + + // turn off write protect + outport(CRTC_ADDR,0x2C11); + + outport(CRTC_ADDR,0x6B00); + outport(CRTC_ADDR,0x5901); + outport(CRTC_ADDR,0x5A02); + outport(CRTC_ADDR,0x8E03); + outport(CRTC_ADDR,0x5E04); + outport(CRTC_ADDR,0x8A05); + outport(CRTC_ADDR,0x0D06); + outport(CRTC_ADDR,0x3E07); + outport(CRTC_ADDR,0x0008); + outport(CRTC_ADDR,0x4009); + outport(CRTC_ADDR,0x000A); + outport(CRTC_ADDR,0x000B); + outport(CRTC_ADDR,0x000C); + outport(CRTC_ADDR,0x000D); + outport(CRTC_ADDR,0x000E); + outport(CRTC_ADDR,0x000F); + outport(CRTC_ADDR,0xEA10); + outport(CRTC_ADDR,0xAC11); + outport(CRTC_ADDR,0xDF12); + outport(CRTC_ADDR,0x2D13); + outport(CRTC_ADDR,0x0014); + outport(CRTC_ADDR,0xE715); + outport(CRTC_ADDR,0x0616); + outport(CRTC_ADDR,0xE317); + outport(CRTC_ADDR,0xFF18); + + setpalette256(); + Mode.width = 360; + Mode.height = 480; + Mode.width_bytes = 43200u; + Mode.colors = 256; + Mode.attrib = TVU_GRAPHICS | TVU_UNCHAINED; + } + else if (mode == MODE_I) // 640 x 400 x 16 + { + SetMode((unsigned int)&mode10h); + asm { + + MOV DX,03CCH + IN AL,DX + AND AL,03FH + OR AL,40H + + MOV DX,03C2H + OUT DX,AL + + MOV DX,CRTC_ADDR + MOV AX,9C10H + OUT DX,AX + + MOV AX,8311H + OUT DX,AX + + MOV AX,8F12H + OUT DX,AX + + MOV AX,9615H + OUT DX,AX + + MOV AX,0B916H + OUT DX,AX + } + setpalette16(); + Mode.width = 640; + Mode.height = 400; + Mode.width_bytes = 32000; + Mode.colors = 16; + Mode.attrib = TVU_GRAPHICS | TVU_PLANAR; + } + else if (mode == MODE_J) // 80 x 43 x 16 + { + SetMode((unsigned int)&modeJ); + ReadBIOSfont(3,8); + + Mode.width = 80; + Mode.height = 43; + Mode.width_bytes = 3440; + Mode.colors = 16; + Mode.attrib = TVU_TEXT; + } + else if (mode == MODE_K) // 80 x 50 x 16 + { + SetMode((unsigned int)&modeK); + ReadBIOSfont(3,8); + + Mode.width = 80; + Mode.height = 50; + Mode.width_bytes = 4000; + Mode.colors = 16; + Mode.attrib = TVU_TEXT; + } + else if (mode == MODE_L) // 40 x 43 x 16 + { + SetMode((unsigned int)&modeL); + ReadBIOSfont(3,8); + + Mode.width = 40; + Mode.height = 43; + Mode.width_bytes = 4000; + Mode.colors = 16; + Mode.attrib = TVU_TEXT; + } + else if (mode == MODE_M) // 40 x 50 x 16 + { + SetMode((unsigned int)&modeM); + ReadBIOSfont(3,8); + + Mode.width = 40; + Mode.height = 50; + Mode.width_bytes = 4000; + Mode.colors = 16; + Mode.attrib = TVU_TEXT; + } +} + +void setpal(int color, char r, char g, char b) +{ + asm { + // Send color + MOV AX,color + MOV DX,03C8H + OUT DX,AL + + // Write R value + MOV DX,03C9H + MOV AL,r + OUT DX,AL + + // Write G value + MOV DX,03C9H + MOV AL,g + OUT DX,AL + + // Write B value + MOV DX,03C9H + MOV AL,b + OUT DX,AL + } +} + +void setpalette4() +{ + setpal( 0, 0, 0, 0); + setpal( 1, 0, 42, 42); + setpal( 2, 42, 0, 42); + setpal( 3, 63, 63, 63); +} + +void setpalette16() +{ + int j = 0; + for (int i = 0; i < 48; i+=3) + { + setpal(j, Pal[i], Pal[i+1], Pal[i+2]); + j++; + } +} + +void setpalette256() +{ + int j = 0; + for (int i = 0; i < 768; i+=3) + { + setpal(j, Pal[i], Pal[i+1], Pal[i+2]); + j++; + } +} diff --git a/16/tauron30/C_SRC/MODES_C.INC b/16/tauron30/C_SRC/MODES_C.INC new file mode 100755 index 00000000..585af88d --- /dev/null +++ b/16/tauron30/C_SRC/MODES_C.INC @@ -0,0 +1,262 @@ +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- -= +//=- Tauron VGA Utilities Version 3.0 -= +//=- Released September 20, 1998 -= +//=- -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +//=- All Rights Reserved. =-= that you put my name some- -= +//=- =-= where in your credits. -= +//=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- I assume no responsibility whatsoever for any effect that this package, -= +//=- the information contained therein or the use thereof has on you, your -= +//=- sanity, computer, spouse, children, pets or anything else related to -= +//=- you or your existance. No warranty is provided nor implied with this -= +//=- source code. -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- VGA register variables for the various videomodes -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +// Same as Mode 01H +unsigned char mode00h[62] = { +// MISC reg, STATUS reg, SEQ regs + 0x67, 0x00, 0x03,0x08,0x03,0x00,0x02, +// CRTC regs +0x2D,0x27,0x28,0x90,0x2B,0xA0,0xBF,0x1F,0x00,0x4F,0x06,0x07,0x00,0x00,0x00, +0x31,0x9C,0x8E,0x8F,0x14,0x1F,0x96,0xB9,0xA3,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x10,0x0E,0x00,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x10,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, +0x0C,0x00,0x0F,0x08,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + + +// Same as Mode 02H +unsigned char mode03h[62] = { +// MISC reg, STATUS reg, SEQ regs + 0x67, 0x00, 0x03,0x00,0x03,0x00,0x02, +// CRTC regs +0x5F,0x4F,0x50,0x82,0x55,0x81,0xBF,0x1F,0x00,0x4F,0x0E,0x0F,0x00,0x00,0x00, +0x00,0x9C,0x0E,0x8F,0x28,0x01,0x96,0xB9,0xA3,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x10,0x0E,0x00,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x10,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, +0x0C,0x00,0x0F,0x08,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +// Same as Mode 05, +unsigned char mode04h[62] = { +// MISC reg, STATUS reg, SEQ regs + 0x63, 0x00, 0x03,0x09,0x03,0x00,0x02, +// CRTC regs +0x2D,0x27,0x28,0x90,0x2B,0x80,0x0BF,0x1F,0x00,0x0C1,0x00,0x00,0x00,0x00,0x00, +0x31,0x9C,0x8E,0x8F,0x14,0x00,0x96,0xB9,0x0A2,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x30,0x0F,0x00,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x3B,0x3D,0x3F,0x02,0x04,0x06,0x07,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, +0x01,0x00,0x03,0x00,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char mode06h[62] = { +// MISC reg, STATUS reg, SEQ regs + 0x63, 0x00, 0x03,0x01,0x01,0x00,0x06, +// CRTC regs +0x5F,0x4F,0x50,0x82,0x54,0x80,0x0BF,0x1F,0x00,0x0C1,0x00,0x00,0x00,0x00,0x00, +0x00,0x9C,0x8E,0x8F,0x28,0x00,0x96,0xB9,0x0C2,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0x00,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F, +0x01,0x00,0x01,0x00,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char mode07h[62] = { +// MISC reg, STATUS reg, SEQ regs + 0x066, 0x00, 0x03,0x00,0x03,0x00,0x02, +// CRTC regs +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x10,0x0A,0x00,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x10,0x18,0x18,0x18,0x18,0x18,0x18,0x18, +0x0E,0x00,0x0F,0x00,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char mode0Dh[62] = { +// MISC reg, STATUS reg, SEQ regs + 0x063, 0x00, 0x03,0x09,0x0F,0x00,0x06, +// CRTC regs +0x2D,0x27,0x28,0x90,0x2B,0x80,0x0BF,0x1F,0x00,0xC0,0x00,0x00,0x00,0x00,0x00, +0x31,0x9C,0x8E,0x8F,0x14,0x00,0x96,0xB9,0xE3,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x10,0x05,0x00,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x10,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, +0x01,0x00,0x0F,0x00,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char mode0Eh[62] = { +// MISC reg, STATUS reg, SEQ regs + 0x63, 0x00, 0x03,0x01,0x0F,0x00,0x06, +// CRTC regs +0x5F,0x4F,0x50,0x82,0x54,0x80,0x0BF,0x1F,0x00,0xC0,0x00,0x00,0x00,0x00,0x00, +0x59,0x9C,0x8E,0x8F,0x28,0x00,0x96,0xB9,0xE3,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0F,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x08,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, +0x01,0x00,0x0F,0x00,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char mode0Fh[62] = { +// MISC reg, STATUS reg, SEQ regs + 0x0A2, 0x00, 0x03,0x01,0x0F,0x00,0x06, +// CRTC regs +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x05,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x08,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x18,0x00,0x00, +0x0B,0x00,0x05,0x00,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char mode10h[62] = { +// MISC reg, STATUS reg, SEQ regs + 0x0A3, 0x00, 0x03,0x01,0x0F,0x00,0x06, +// CRTC regs +0x5F,0x4F,0x50,0x82,0x54,0x80,0x0BF,0x1F,0x00,0x40,0x00,0x00,0x00,0x00,0x00, +0x00,0x83,0x85,0x5D,0x28,0x0F,0x63,0x0BA,0xE3,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0F,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, +0x01,0x00,0x0F,0x00,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char mode11h[62] = { +// MISC reg, STATUS reg, SEQ regs + 0xE3, 0x00, 0x03,0x01,0x0F,0x00,0x06, +// CRTC regs +0x5F,0x4F,0x50,0x82,0x54,0x80,0x0B,0x3E,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x59, +0xEA,0x8C,0x0DF,0x28,0x0F,0x0E7,0x004,0x0C3,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x05,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x08,0x3F,0x3F,0x18,0x18,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F, +0x01,0x00,0x0F,0x00,0x00 + +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char mode12h[62] = { +// MISC reg, STATUS reg, SEQ regs + 0xE3, 0x00, 0x03,0x01,0x0F,0x00,0x06, +// CRTC regs +0x5F,0x4F,0x50,0x82,0x54,0x80,0x0B,0x3E,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x59, +0xEA,0x8C,0x0DF,0x28,0x00,0x0E7,0x04,0xE3,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0F,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, +0x01,0x00,0x0F,0x00,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char mode13h[62] = { +// MISC reg, STATUS reg, SEQ regs + 0x63, 0x00, 0x03,0x01,0x0F,0x00,0x0E, +// CRTC regs +0x5F,0x4F,0x50,0x82,0x54,0x80,0x0BF,0x1F,0x00,0x41,0x00,0x00,0x00,0x00,0x00, +0x00,0x9C,0x0E,0x8F,0x28,0x40,0x96,0xB9,0x0A3,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, +0x41,0x00,0x0F,0x00,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char modeC4[62] = { +// MISC reg, STATUS reg, SEQ regs + 0x63, 0x00, 0x03,0x01,0x0F,0x00,0x06, +// CRTC regs +0x5F,0x4F,0x50,0x82,0x54,0x80,0x0BF,0x1F,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00, +0x9C,0x0E,0x8F,0x28,0x00,0x96,0xB9,0xE3,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0F,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, +0x41,0x00,0x0F,0x00,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char modeJ[62] = { +// MISC reg, STATUS reg, SEQ regs + 0xa3, 0x00, 0x03,0x01,0x03,0x00,0x02, +// CRTC regs +0x5F,0x4F,0x50,0x82,0x55,0x81,0xBF,0x1F,0x00,0x47,0x0E,0x0F,0x00,0x00,0x00, +0x00,0x83,0x85,0x57,0x28,0x1F,0x60,0xB8,0xA3,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x10,0x0E,0x00,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x10,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, +0x0C,0x00,0x0F,0x00,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char modeK[62] = { +// MISC reg, STATUS reg, SEQ regs + 0x63, 0x00, 0x03,0x01,0x03,0x00,0x02, +// CRTC regs +0x5F,0x4F,0x50,0x82,0x55,0x81,0xBF,0x1F,0x00,0x47,0x0E,0x0F,0x00,0x00,0x00, +0x00,0x9C,0x8E,0x8F,0x28,0x1F,0x96,0xB9,0xA3,0xFF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x10,0x0E,0x00,0xFF, +// ATTRIBUTE CONTROLLER regs +0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x10,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, +0x0C,0x00,0x0F,0x00,0x00 +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +unsigned char modeL[62] = { +// MISC reg, STATUS reg, SEQ regs +0x67,0x00,0x03,0x08,0x03,0x00,0x02, +// CRTC regs +0x2D,0x27,0x28,0x90,0x2B,0x0A0,0x0BF,0x1F,0x00,0x47,0x06,0x07,0x00,0x00,0x00, +0x31,0x83,0x85,0x57,0x14,0x1F,0x60,0x0B8,0x0A3,0x0FF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x10,0x0E,0x00,0x0FF, +// ATTRIBUTE CONTROLLER regs +0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x10,0x11,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, +0x0C,0x00,0x0F,0x00,0x00, +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + + +unsigned char modeM[62] = { +// MISC reg, STATUS reg, SEQ regs +0x67,0x00,0x03,0x08,0x03,0x00,0x02, +// CRTC regs +0x2D,0x27,0x28,0x90,0x2B,0x0A0,0x0BF,0x1F,0x00,0x47,0x06,0x07,0x00,0x00,0x00,0x31, +0x9C,0x8E,0x8F,0x14,0x1F,0x96,0x0B9,0x0A3,0x0FF, +// GRAPHICS regs +0x00,0x00,0x00,0x00,0x00,0x10,0x0E,0x00,0x0FF, +// ATTRIBUTE CONTROLLER regs +0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, +0x0C,0x00,0x0F,0x00,0x00, +}; +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= diff --git a/16/tauron30/C_SRC/PALETTE.INC b/16/tauron30/C_SRC/PALETTE.INC new file mode 100755 index 00000000..a89ce796 --- /dev/null +++ b/16/tauron30/C_SRC/PALETTE.INC @@ -0,0 +1,62 @@ +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- -= +//=- Tauron VGA Utilities Version 3.0 -= +//=- Released September 20, 1998 -= +//=- -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +//=- All Rights Reserved. =-= that you put my name some- -= +//=- =-= where in your credits. -= +//=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- I assume no responsibility whatsoever for any effect that this package, -= +//=- the information contained therein or the use thereof has on you, your -= +//=- sanity, computer, spouse, children, pets or anything else related to -= +//=- you or your existance. No warranty is provided nor implied with this -= +//=- source code. -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +char Pal[768] = { + 0, 0, 0, 0, 0, 42, 0, 42, 0, 0, 42, 42, 42, 0, 0, 42, 0, 42, +42, 21, 0, 42, 42, 42, 21, 21, 21, 21, 21, 63, 21, 63, 21, 21, 63, 63, +63, 21, 21, 63, 21, 63, 63, 63, 21, 63, 63, 63, 0, 0, 0, 5, 5, 5, + 8, 8, 8, 11, 11, 11, 14, 14, 14, 17, 17, 17, 20, 20, 20, 24, 24, 24, +28, 28, 28, 32, 32, 32, 36, 36, 36, 40, 40, 40, 45, 45, 45, 50, 50, 50, +56, 56, 56, 63, 63, 63, 0, 0, 63, 16, 0, 63, 31, 0, 63, 47, 0, 63, +63, 0, 63, 63, 0, 47, 63, 0, 31, 63, 0, 16, 63, 0, 0, 63, 16, 0, +63, 31, 0, 63, 47, 0, 63, 63, 0, 47, 63, 0, 31, 63, 0, 16, 63, 0, + 0, 63, 0, 0, 63, 16, 0, 63, 31, 0, 63, 47, 0, 63, 63, 0, 47, 63, + 0, 31, 63, 0, 16, 63, 31, 31, 63, 39, 31, 63, 47, 31, 63, 55, 31, 63, +63, 31, 63, 63, 31, 55, 63, 31, 47, 63, 31, 39, 63, 31, 31, 63, 39, 31, +63, 47, 31, 63, 55, 31, 63, 63, 31, 55, 63, 31, 47, 63, 31, 39, 63, 31, +31, 63, 31, 31, 63, 39, 31, 63, 47, 31, 63, 55, 31, 63, 63, 31, 55, 63, +31, 47, 63, 31, 39, 63, 45, 45, 63, 49, 45, 63, 54, 45, 63, 58, 45, 63, +63, 45, 63, 63, 45, 58, 63, 45, 54, 63, 45, 49, 63, 45, 45, 63, 49, 45, +63, 54, 45, 63, 58, 45, 63, 63, 45, 58, 63, 45, 54, 63, 45, 49, 63, 45, +45, 63, 45, 45, 63, 49, 45, 63, 54, 45, 63, 58, 45, 63, 63, 45, 58, 63, +45, 54, 63, 45, 49, 63, 0, 0, 28, 7, 0, 28, 14, 0, 28, 21, 0, 28, +28, 0, 28, 28, 0, 21, 28, 0, 14, 28, 0, 7, 28, 0, 0, 28, 7, 0, +28, 14, 0, 28, 21, 0, 28, 28, 0, 21, 28, 0, 14, 28, 0, 7, 28, 0, + 0, 28, 0, 0, 28, 7, 0, 28, 14, 0, 28, 21, 0, 28, 28, 0, 21, 28, + 0, 14, 28, 0, 7, 28, 14, 14, 28, 17, 14, 28, 21, 14, 28, 24, 14, 28, +28, 14, 28, 28, 14, 24, 28, 14, 21, 28, 14, 17, 28, 14, 14, 28, 17, 14, +28, 21, 14, 28, 24, 14, 28, 28, 14, 24, 28, 14, 21, 28, 14, 17, 28, 14, +14, 28, 14, 14, 28, 17, 14, 28, 21, 14, 28, 24, 14, 28, 28, 14, 24, 28, +14, 21, 28, 14, 17, 28, 20, 20, 28, 22, 20, 28, 24, 20, 28, 26, 20, 28, +28, 20, 28, 28, 20, 26, 28, 20, 24, 28, 20, 22, 28, 20, 20, 28, 22, 20, +28, 24, 20, 28, 26, 20, 28, 28, 20, 26, 28, 20, 24, 28, 20, 22, 28, 20, +20, 28, 20, 20, 28, 22, 20, 28, 24, 20, 28, 26, 20, 28, 28, 20, 26, 28, +20, 24, 28, 20, 22, 28, 0, 0, 16, 4, 0, 16, 8, 0, 16, 12, 0, 16, +16, 0, 16, 16, 0, 12, 16, 0, 8, 16, 0, 4, 16, 0, 0, 16, 4, 0, +16, 8, 0, 16, 12, 0, 16, 16, 0, 12, 16, 0, 8, 16, 0, 4, 16, 0, + 0, 16, 0, 0, 16, 4, 0, 16, 8, 0, 16, 12, 0, 16, 16, 0, 12, 16, + 0, 8, 16, 0, 4, 16, 8, 8, 16, 10, 8, 16, 12, 8, 16, 14, 8, 16, +16, 8, 16, 16, 8, 14, 16, 8, 12, 16, 8, 10, 16, 8, 8, 16, 10, 8, +16, 12, 8, 16, 14, 8, 16, 16, 8, 14, 16, 8, 12, 16, 8, 10, 16, 8, + 8, 16, 8, 8, 16, 10, 8, 16, 12, 8, 16, 14, 8, 16, 16, 8, 14, 16, + 8, 12, 16, 8, 10, 16, 11, 11, 16, 12, 11, 16, 13, 11, 16, 15, 11, 16, +16, 11, 16, 16, 11, 15, 16, 11, 13, 16, 11, 12, 16, 11, 11, 16, 12, 11, +16, 13, 11, 16, 15, 11, 16, 16, 11, 15, 16, 11, 13, 16, 11, 12, 16, 11, +11, 16, 11, 11, 16, 12, 11, 16, 13, 11, 16, 15, 11, 16, 16, 11, 15, 16, +11, 13, 16, 11, 12, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 63, 63 +}; diff --git a/16/tauron30/C_SRC/TAURON.H b/16/tauron30/C_SRC/TAURON.H new file mode 100755 index 00000000..f14f3120 --- /dev/null +++ b/16/tauron30/C_SRC/TAURON.H @@ -0,0 +1,105 @@ +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- -= +//=- Tauron VGA Utilities Version 3.0 -= +//=- Released September 20, 1998 -= +//=- -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +//=- All Rights Reserved. =-= that you put my name some- -= +//=- =-= where in your credits. -= +//=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- I assume no responsibility whatsoever for any effect that this package, -= +//=- the information contained therein or the use thereof has on you, your -= +//=- sanity, computer, spouse, children, pets or anything else related to -= +//=- you or your existance. No warranty is provided nor implied with this -= +//=- source code. -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +#ifndef __TAURON_H__ +#define __TAURON_H__ + +// VGA register port addresses +#define ATTRCON_ADDR 0x03C0 +#define MISC_ADDR 0x03C2 +#define VGAENABLE_ADDR 0x03C3 +#define SEQ_ADDR 0x03C4 +#define GRACON_ADDR 0x03CE +#define CRTC_ADDR 0x03D4 +#define STATUS_ADDR 0x03DA + +// Video mode numbers +#define MODE00H 0x00 +#define MODE01H 0x00 +#define MODE02H 0x03 +#define MODE03H 0x03 +#define MODE04H 0x04 +#define MODE05H 0x05 +#define MODE06H 0x06 +#define MODE07H 0x07 +#define MODE0DH 0x0D +#define MODE0EH 0x0E +#define MODE0FH 0x0F +#define MODE10H 0x10 +#define MODE11H 0x11 +#define MODE12H 0x12 +#define MODE13H 0x13 +#define CHAIN4 0x14 +#define MODE_X 0x15 +#define MODE_A 0x16 +#define MODE_B 0x17 +#define MODE_C 0x18 +#define MODE_D 0x19 +#define MODE_E 0x1A +#define MODE_F 0x1B +#define MODE_G 0x1C +#define MODE_H 0x1D +#define MODE_I 0x1E +#define MODE_J 0x1F +#define MODE_K 0x20 +#define MODE_L 0x21 +#define MODE_M 0x22 + +// Keypresses +#define Escape 0x001b + +// Videomode attributes +#define TVU_TEXT 0x0001 +#define TVU_GRAPHICS 0x0002 +#define TVU_MONOCHROME 0x0004 +#define TVU_PLANAR 0x0008 +#define TVU_UNCHAINED 0x0010 + +// Videomode Info Structure +struct Vmode { + int mode; // Videomode Number + int width; // Width in pixels + int height; // Height in pixels + unsigned int width_bytes; // Number of bytes per screen + int colors; // Number of colors + int attrib; // Videomode attributes +}; + +extern Vmode Mode; + +// MODES.CPP Function Prototypes +void SetVideoMode(int mode); +void ReadBIOSfont(int fontnum, int bytesperchar); +void SetMode(unsigned int regs); +void setpal(int color, char r, char g, char b); + +// CLEAR.CPP Function Prototypes +void TextClear(char attrib); +void PlanarClear(char Color); +void UnchainedClear(char Color); +void Clear13H(char color); +void Clear04H(); +void Clear06H(); +void Clear0DH(char color); + +// TESTS.CPP Function Prototypes +void ModeTest(); +void TextTest(); + +// DUAL.CPP Function Prototypes +void DualTest(); + +#endif \ No newline at end of file diff --git a/16/tauron30/C_SRC/TESTS.CPP b/16/tauron30/C_SRC/TESTS.CPP new file mode 100755 index 00000000..e89084fd --- /dev/null +++ b/16/tauron30/C_SRC/TESTS.CPP @@ -0,0 +1,376 @@ +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- -= +//=- Tauron VGA Utilities Version 3.0 -= +//=- Released September 20, 1998 -= +//=- -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +//=- All Rights Reserved. =-= that you put my name some- -= +//=- =-= where in your credits. -= +//=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +//=- I assume no responsibility whatsoever for any effect that this package, -= +//=- the information contained therein or the use thereof has on you, your -= +//=- sanity, computer, spouse, children, pets or anything else related to -= +//=- you or your existance. No warranty is provided nor implied with this -= +//=- source code. -= +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +#include +#include +#include +#include "tauron.h" +#define ABS(a) ((a < 0) ? -a : a) +#define SGN(a) ((a < 0) ? -1 : 1) + +void Pixel13H(int x, int y, char color) +{ + int width = Mode.width; + asm { + MOV AX,0A000H // video memory segment number + MOV ES,AX // place it in es + + MOV DX,03C4H + MOV AL,2 + OUT DX,AL + INC DX + + MOV AL,1 + MOV CX,x + AND CX,3 + SHL AL,CL + OUT DX,AL + + XOR DI,DI + +// Calculate the Offset + mov ax,width // width + mul y // (Y * width)) + mov bx,x // (X + (Y * width)) + add ax,bx +// Done! + + ADD DI,AX + mov ah,color // move the Color into ah + mov es:[di],ah // move the value to the screen + } +} + +void pixel(int x, int y, char color) +{ + int width = Mode.width; + if (Mode.mode == MODE13H) + Pixel13H(x,y,color); + else if (Mode.attrib & TVU_UNCHAINED) { + asm { + MOV AX,0A000H // video memory segment number + MOV ES,AX // place it in es + + MOV DX,03C4H + MOV AL,2 + OUT DX,AL + INC DX + + MOV AL,1 + MOV CX,x + AND CX,3 + SHL AL,CL + OUT DX,AL + + XOR DI,DI + +// Calculate the Offset + mov ax,width // width / 4 + SHR AX,2 + mul y // (Y * (width / 4)) + mov bx,x // (X / 4) + (Y * (width / 4)) + shr bx,2 + add ax,bx +// Done! + + ADD DI,AX + mov ah,color // move the Color into ah + mov es:[di],ah // move the value to the screen + }} + else if (Mode.attrib & TVU_PLANAR) + { + asm { + MOV AX,0A000H // video memory segment number + MOV ES,AX // place it in es + + MOV BX,x // X Value + MOV CX,BX + MOV AX,y // Y Value + MOV SI,80 + MUL SI + SHR BX,3 // /8 + ADD AX,BX + MOV DI,AX + + AND CL,7 + XOR CL,7 + MOV AH,1 + + SHL AH,CL + + MOV DX,03CEH + MOV AL,8 + OUT DX,AX + + MOV AL,0 + XCHG ES:[DI],AL + + MOV DX,03C4H + MOV AH,color + MOV AL,2 + OUT DX,AX + + MOV BYTE PTR ES:[DI],0FFh + + MOV AX,0F02H + OUT DX,AX + + MOV DX,03CEH + MOV AX,0FF08h + OUT DX,AX + }} +} + +// This is Bresenham's Line Drawing Algorithm +void drawline(int x1, int y1, int x2, int y2, char col) +{ + int d, x, y, ax, ay, sx, sy, dx, dy; + + dx = x2-x1; + ax = ABS(dx) << 1; + sx = SGN(dx); + dy = y2-y1; + ay = ABS(dy) << 1; + sy = SGN(dy); + + x = x1; + y = y1; + if( ax > ay ) + { + d = ay - (ax >> 1); + while( x != x2 ) + { + pixel( x, y, col ); + if( d >= 0 ) + { + y += sy; + d -= ax; + } + x += sx; + d += ay; + } + } + else + { + d = ax - (ay >> 1); + while( y != y2 ) + { + pixel( x, y, col ); + if( d >= 0 ) + { + x += sx; + d -= ay; + } + y += sy; + d += ax; + } + } + return; +} + +void drawrect(int x1, int y1, int x2, int y2, char color) +{ + drawline(x1,y1,x2,y1,color); + drawline(x1,y2,x2,y2,color); + drawline(x1,y1,x1,y2,color); + drawline(x2,y1,x2,y2+1,color); +} + +void hline(int x1, int x2, int y, char color) +{ + drawline(x1,y,x2,y,color); +} + +void vline(int y1, int y2, int x, char color) +{ + drawline(x,y1,x,y2,color); +} + +void fillrect(int x1, int y1, int x2, int y2, char color) +{ + for (int i = y1; i < y2; i++) + hline(x1,x2,i,color); +} + +void ModeTest() +{ + if (Mode.mode == MODE13H) + { + Clear13H(0); + } + else if (Mode.attrib & TVU_PLANAR) + { + PlanarClear(0); + } + else if (Mode.attrib & TVU_UNCHAINED) + { + UnchainedClear(0); + } + + /* Print mode stats + * + */ + + drawrect(0,0,Mode.width-1,Mode.height-1,15); + for (int i = 50; i < Mode.height; i += 100) + { + hline(0,10,i,15); + hline(0,25,i+50,15); + } + + for (int i = 40; i < Mode.width; i += 80) + { + vline(0,15,i,15); + vline(0,30,i+40,15); + } + + if (Mode.colors == 2) + { + int x,y; + x = Mode.width - 420; + y = Mode.height - 220; + fillrect(x,y,x+200,y+200,0); + x+=200; + fillrect(x,y,x+200,y+200,15); + drawrect(x-200,y,x+200,y+200,15); + } + else if (Mode.colors == 16) + { + int x,y; + x = Mode.width - 522; + y = Mode.height - 135; + for (int i = 0; i < 8; i++) + { + fillrect(x,y,x+64,y+64,i); + x+=64; + } + x = Mode.width - 522; + y += 64; + for (int i = 8; i < 16; i++) + { + fillrect(x,y,x+64,y+64,i); + x+=64; + } + drawrect(x-512,y-64,x,y+64,15); + } + else if (Mode.colors == 256) + { + int x,y,k; + x = Mode.width - 165; + y = Mode.height - 165; + k = 0; + for (int i = 0; i < 16; i++) + { + for (int j = 0; j < 16; j++) + { + fillrect(x,y,x+10,y+10,k); + x+=10; + k++; + } + x = Mode.width - 165; + y += 10; + } + drawrect(Mode.width - 165,Mode.height - 165,Mode.width -5,Mode.height - 5,15); + } +} + +void TextTest() +{ + TextClear(0x1F); + gotoxy(1,1); + if (Mode.mode == MODE00H) + { + // ** NOTE ** the gotoxy's here are a hack so that i could use the + // standard C functions to program this mode. Normally you would just + // calculate the proper address and display the text but since DOS still + // thinks we are in mode 03h (it checks the BIOS), this is necessary. + gotoxy(1,1); + printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n"); + gotoxy(41,1); + printf("³Text Mode: 00H ³\n"); + gotoxy(1,2); + printf("³Width: 40 Height: 25³\n"); + gotoxy(41,2); + printf("³Bytes per screen: 2000³\n"); + gotoxy(1,3); + printf("³Number of pages: 8 ³\n"); + gotoxy(41,3); + printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n"); + } + else if (Mode.mode == MODE03H) + { + printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n"); + printf("³Text Mode: 03H ³\n"); + printf("³Width: 80 Height: 25³\n"); + printf("³Bytes per screen: 4000³\n"); + printf("³Number of pages: 8 ³\n"); + printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n"); + } + else if (Mode.mode == MODE_J) + { + printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n"); + printf("³Text Mode K ³\n"); + printf("³Width: 80 Height: 43³\n"); + printf("³Bytes per screen: 3440³\n"); + printf("³Number of pages: 8 ³\n"); + printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n"); + } + else if (Mode.mode == MODE_K) + { + printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n"); + printf("³Text Mode K ³\n"); + printf("³Width: 80 Height: 50³\n"); + printf("³Bytes per screen: 4000³\n"); + printf("³Number of pages: 8 ³\n"); + printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n"); + } + else if (Mode.mode == MODE_L) + { + // ** NOTE ** the gotoxy's here are a hack so that i could use the + // standard C functions to program this mode. Normally you would just + // calculate the proper address and display the text but since DOS still + // thinks we are in mode 03h (it checks the BIOS), this is necessary. + printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n"); + gotoxy(41,1); + printf("³Text Mode L ³\n"); + gotoxy(1,2); + printf("³Width: 40 Height: 43³\n"); + gotoxy(41,2); + printf("³Bytes per screen: 3440³\n"); + gotoxy(1,3); + printf("³Number of pages: 8 ³\n"); + gotoxy(41,3); + printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n"); + } + else if (Mode.mode == MODE_M) + { + // ** NOTE ** the gotoxy's here are a hack so that i could use the + // standard C functions to program this mode. Normally you would just + // calculate the proper address and display the text but since DOS still + // thinks we are in mode 03h (it checks the BIOS), this is necessary. + printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n"); + gotoxy(41,1); + printf("³Text Mode K ³\n"); + printf("³Width: 40 Height: 50³\n"); + gotoxy(1,2); + gotoxy(41,2); + printf("³Bytes per screen: 4000³\n"); + gotoxy(1,3); + printf("³Number of pages: 8 ³\n"); + gotoxy(41,3); + printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n"); + } +} diff --git a/16/tauron30/FEDIT.EXE b/16/tauron30/FEDIT.EXE new file mode 100755 index 00000000..98d5c46b Binary files /dev/null and b/16/tauron30/FEDIT.EXE differ diff --git a/16/tauron30/FEDIT.TXT b/16/tauron30/FEDIT.TXT new file mode 100755 index 00000000..42883ec6 --- /dev/null +++ b/16/tauron30/FEDIT.TXT @@ -0,0 +1,93 @@ +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- -= +=- Tauron VGA Utilities Version 3.0 -= +=- Released September 20, 1998 -= +=- Font Editor Docs -= +=- -= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +=- All Rights Reserved. =-= that you put my name some- -= +=- =-= where in your credits. -= +=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- I assume no responsibility whatsoever for any effect that this package, -= +=- the information contained therein or the use thereof has on you, your -= +=- sanity, computer, spouse, children, pets or anything else related to -= +=- you or your existance. No warranty is provided nor implied with this -= +=- source code. -= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +A mouse is required to run this program. + +On the main screen is a blue box with a white solid line surrounding it. +This is the MAIN EDIT BOX. Inside of this box is where the font is created. +Left click with the mouse to turn a bit on, right click with the mouse to +turn a bit off. + +In the bottom left corner there is the ACTIONS box. Inside is all of the +options that you have available. **NOTE** The delete this character action +is not operational. + + Update this character -- This action puts the curently edited character + into its final font position. There is a charcter buffer and a character + list. When editing you are editing the buffer. If you don't want to keep + the current changes, then don't hit update character. But if you do want to + keep the changes, then hit update character before hitting anything else. If + you don't the cnages will be lost. + + Display next character -- Hit the left or right arrows to go up or down the + list character list. As you display each character, it is editable and you + must hit update character if you want to save the changes. + + Goto character -- Goes to a certain character in the list. + + Read font from BIOS -- Read in a font from the BIOS which can now be + edited. + + Add a character -- Adds a charcter to the end of the list. No more than + 256 characters can be added. + + Delete a character -- Not operational + + Dump font to FONT.ASM -- This dumps the font to a text file ready to be + assembled with an assembler. + + +Along the bottom of the screen is a menu bar with choices: +Alt+N New This creates a new font with dimensions you specify. + +Alt+O Open Opens a file. Careful using the dialog as it may no be + intuitive at first glance. + +Alt+S Save Savess a file. Careful using the dialog as it may no be + intuitive at first glance. + +Alt+A About Opens a window containing information about the program. + Also has contact information + +Alt+X Exit Exits the program. This does not prompt you to save the file + you are working on so be careful. + + + +Here is the structure for the files saved in binary : +Header 7 bytes 'KINFIRA' +Width Word +Height Word +Number of characters Word +Bytes per character Word + +The rest of the file is the font saved in bitwise form. +For example: This is a partial text dump from an 8x14 font from BIOS +Every byte (8 bits) is one scanline. Notice there are 14 bytes per character +DB 000H,000H,07EH,081H,0A5H,081H,081H,0BDH,099H,081H,07EH,000H,000H,000H + +If this font was say a 16x14 font, every word (16 bits) would be a scanline. +Take the same line as above, represented as a 16 bit wide font: + +DB 000H,000H, <====== First scanline + 000H,000H, <====== Second scanline + 000H,07EH, + 000H,081H, + 000H,0A5H, + and so on... +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= diff --git a/16/tauron30/MAIN.EXE b/16/tauron30/MAIN.EXE new file mode 100755 index 00000000..f8caffeb Binary files /dev/null and b/16/tauron30/MAIN.EXE differ diff --git a/16/tauron30/MAINC.EXE b/16/tauron30/MAINC.EXE new file mode 100755 index 00000000..2668a905 Binary files /dev/null and b/16/tauron30/MAINC.EXE differ diff --git a/16/tauron30/README.TXT b/16/tauron30/README.TXT new file mode 100755 index 00000000..06cdfc72 --- /dev/null +++ b/16/tauron30/README.TXT @@ -0,0 +1,226 @@ +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- -= +=- Tauron VGA Utilities Version 3.0 -= +=- Released September 20, 1998 -= +=- -= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +=- All Rights Reserved. =-= that you put my name some- -= +=- =-= where in your credits. -= +=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- I assume no responsibility whatsoever for any effect that this package, -= +=- the information contained therein or the use thereof has on you, your -= +=- sanity, computer, spouse, children, pets or anything else related to -= +=- you or your existance. No warranty is provided nor implied with this -= +=- source code. -= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +The code in this package will switch video modes on any standard VGA video +card. This is accomplished by programming the VGA Registers directly. + +############################################################################## +#### Mode 07H and Mode 0FH are still being worked on. #### +############################################################################## + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- Files included in this package: -= -= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -= +=- Assembly version compiles with TASM 4.1 and TLINK 7.0 -= +=- C version compiles with Borland C++ 5.01 -= +=- -= +=- README.TXT You are reading it. -= +=- WHATSNEW.TXT Whats new in this version -= +=- USAGE.TXT How to use these routines. Also -= +=- contains a complete list of the -= +=- videomodes supported. -= +=- -= +=- MAIN.EXE Assembly version executable demo -= +=- MAINC.EXE C version executable demo -= +=- FEDIT.EXE Font editor -= +=- FEDIT.TXT Docs for the font editor -= +=- -= +=- ASM_SRC The assembly source directory -= +=- +->MAIN.ASM The Main source file -= +=- +->MODES.ASM The mode switching file -= +=- +->CLEAR.ASM The clear screen routines -= +=- +->TESTS.ASM The videomode tests -= +=- +->DUAL.ASM The dual font setup and test -= +=- +->FONT1.ASM Font 1 for dual font test -= +=- +->FONT2.ASM Font 2 for dual font test -= +=- +->MODES.INC The includes for each videomode -= +=- -= +=- C_SRC The C source directory -= +=- +->MAINC.CPP The main source file -= +=- +->MODES.CPP The mode switching file -= +=- +->CLEAR.CPP The clear screen routines -= +=- +->TESTS.CPP The videomode tests -= +=- +->TAURON.H The main header file -= +=- +->FONT1.H Font 1 for dual font test -= +=- +->FONT2.H Font 2 for dual font test -= +=- +->MODES_C.INC The includes for each videomode -= +=- +->PALETTE.INC The standard palette -= +=- -= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +When running the demo: + + In graphics modes, there is a vertical line every 40 pixels with a longer + vertical line every 80 pixels. + + I have not yet figured out how to program modes 04H, 05H, or 06H. Once + the mode is set, I only clear the mode to a specified color. + + + +The VGA BIOS must be called once at the beginning of the routines so that we +know where the fonts are stored. Once this information is known we no longer +need the BIOS. + +The reason for starting this package is that I am writing an Operating +System. (There are a lot of us out there I know.) I wanted to be able to +program standard VGA cards for my OS. + +This is not a graphics library although there are some clear screen and pixel +routines around. It only sets the video mode. This works in real mode as +well as protected mode. To use it in protected mode you will have to modify +it to suit your own needs. + +The use of the fonts stored in BIOS ROM is now included. We are using what is +already built into the VGA BIOS. + + +E-mail: kinfira@hotmail.com +Homepage: http://home.onestop.net/kinfira/ + +Drop me a line if you find this package useful. + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=-= Credits: =-= =-= +=-=-=-=-=-=-=-=-= =-= +=-= A great book: "Programmer's Guide to the EGA, VGA, and Super VGA =-= +=-= Cards" 3rd Edition Richard F. Ferraro ISBN 0-201-62490-7 =-= +=-= Addison-Wesley Publishing Company. =-= +=-= =-= +=-= A very excellent book: "Programmer's Guide to the EGA & VGA Cards" =-= +=-= Richard F. Ferraro ISBN 0-201-12692-3 =-= +=-= Addison-Wesley Publishing Company. =-= +=-= =-= +=-= Anthony A.J. Williams for writing MODES.ASM, which I used to help =-= +=-= write the Text Mode routine. I specifically used the SetFont =-= +=-= procedure which was instrumental in getting the code for Mode 03h =-= +=-= working. =-= +=-= =-= +=-= Boone (boone@ucsd.edu) for the docs on programming the VGA Registers. =-= +=-= =-= +=-= I also used a really great program called TWEAK to get some of the =-= +=-= values for the non-standard modes. =-= +=-= =-= +=-= Denthor of ASPHYXIA for his trainer on Chain-4 Mode. =-= +=-= =-= +=-= Robert Schmidt for the great doc in PCGPE 1.0 =-= +=-= about Mode X. This helped a great deal. =-= +=-= =-= +=-= Michael Abrash for his super excellent VGA articles on everything, =-= +=-= plus all of his books and public domain code. =-= +=-= =-= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + + +=-=-=-=-=-=-=-=-=-=-=-= +=- Revision History: -= +=-=-=-=-=-=-=-=-=-=-=-= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Version 3.0 released September 20, 1998 + I added 2 new text modes, 40x43 and 40x50. Also I have added a new dual + font test which uses 2 of the VGA's 8 font maps. + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Version 2.1 released July 5, 1998 + The only change is that in the C version, the routine to read fronts from + BIOS is now working. This routine reads a font from the BIOS and places + it in memory for use in a textmode. + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Version 2.0 released June 22, 1998 + I have added more videomodes. I have also written a version of the + source in C. So the routines are available in Assembly and C. I have + also written some documentation for the font editor. So now the only + modes that are not implemented are the monochrome modes which will still + be worked on. + + +Tauron VGA Utilities +Version 1.0 released June 14, 1998 + I changed the name because that other was a little too long. B-> + I have packaged in a small font editor. I have also rearranged the mode + numbers and added a few more video modes that will be implemented. + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Source code for switching videomodes without using BIOS +Version 4.1 released May 28, 1998 + +New in this version: + We call a BIOS function to find out where in memory the fonts are stored. + Since this is different on every cards' VGA BIOS, it is absolutely + necessary so that in text modes, the proper fonts are displayed. + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Version 4.0 released March 5, 1998 + +New in this version: + All VGA Modes are supported! Plus Chain-4 Mode, ModeX, ModeA, + ModeB and ModeC. Modes 07H and 0FH are still being worked on. + + Use of Fonts stored in ROM. + Custom Font data stored in system memory is no longer needed. + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Version 3.0 released January 2, 1998 + Includes Modes 03h, 10h, 12h, and 13h plus Chain-4 Mode, ModeX, ModeA, + ModeB and ModeC. + +New in this version: Mode 10h (640x350x16), Mode C (640x400x16) + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Version 2.5 not released + Includes Modes 03h, 12h, and 13h plus Chain-4 Mode, ModeX, ModeA, and + ModeB. + +New in this version: VGA register data takes up less space. + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Version 2.1 released Nov. 21, 1997 + Includes Modes 03h, 12h, and 13h plus Chain-4 Mode, ModeX, ModeA, and + ModeB. + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Version 2.0 released Nov. 10, 1997 + Includes Modes 03h, 12h, and 13h plus Chain-4 Mode and ModeX. + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Version 1.5 released late Oct. 1997 + Includes Modes 03h, 12h, and 13h. Fully functional + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Version 1.1 released in Oct. 12, 1997 + Includes Mode 13h, Mode 03h finally works. Realized that I needed to reset + the text mode font. + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Version 1.0 released in Oct. 7, 1997 + Included Mode 13h, Mode 03h partially. (Did not have setfont routine) + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= diff --git a/16/tauron30/USAGE.TXT b/16/tauron30/USAGE.TXT new file mode 100755 index 00000000..939c2dec --- /dev/null +++ b/16/tauron30/USAGE.TXT @@ -0,0 +1,118 @@ +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- -= +=- Tauron VGA Utilities Version 3.0 -= +=- Released September 20, 1998 -= +=- -= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +=- All Rights Reserved. =-= that you put my name some- -= +=- =-= where in your credits. -= +=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- I assume no responsibility whatsoever for any effect that this package, -= +=- the information contained therein or the use thereof has on you, your -= +=- sanity, computer, spouse, children, pets or anything else related to -= +=- you or your existance. No warranty is provided nor implied with this -= +=- source code. -= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +** Note ** This code does not update BIOS when in real mode. So if you need +that particular functionality, you will have to add this yourself. + + + Use MODE NUMBER to set the video mode with the procedure provided. + + A star (*) next to the mode number indicates that it is not yet + implemented. + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- Currently supported Video Modes: -= MODE NUMBER =-= Type -= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- -= =-= -= +=- 00H,01H -- 40 x 25 x 16 -= 00H,01H =-= Text -= +=- -= =-= -= +=- 02H,03H -- 80 x 25 x 16 -= 02H,03H =-= Text -= +=- -= =-= -= +=- 04H,05H -- 320 x 200 x 4 -= 04H,05H =-= Graphics -= +=- -= =-= -= +=- 06H -- 640 x 200 x 2 -= 06H =-= Graphics -= +=- -= =-= -= +=- 07H -- 80 x 25 x 2 (Monochrome) -= * 07H =-= Text -= +=- -= =-= -= +=- 0DH -- 320 x 200 x 16 -= 0DH =-= Graphics -= +=- -= =-= -= +=- 0EH -- 640 x 200 x 16 -= 0EH =-= Graphics -= +=- -= =-= -= +=- 0FH -- 640 x 350 x 2 (Monochrome) -= * 0FH =-= Graphics -= +=- -= =-= -= +=- 10H -- 640 x 350 x 16 -= 10H =-= Graphics -= +=- -= =-= -= +=- 11H -- 640 x 480 x 2 -= 11H =-= Graphics -= +=- -= =-= -= +=- 12H -- 640 x 480 x 16 -= 12H =-= Graphics -= +=- -= =-= -= +=- 13H -- 320 x 200 x 256 -= 13H =-= Graphics -= +=- -= =-= -= +=- Chain 4 -- unchained 320 x 200 x 256 -= 14H =-= Graphics -= +=- -= =-= -= +=- Mode X -- unchained 320 x 240 x 256 -= 15H =-= Graphics -= +=- -= =-= -= +=- Mode A -- unchained 320 x 350 x 256 -= 16H =-= Graphics -= +=- -= =-= -= +=- Mode B -- unchained 320 x 400 x 256 -= 17H =-= Graphics -= +=- -= =-= -= +=- Mode C -- unchained 320 x 480 x 256 -= 18H =-= Graphics -= +=- -= =-= -= +=- Mode D -- unchained 360 x 200 x 256 -= 19H =-= Graphics -= +=- -= =-= -= +=- Mode E -- unchained 360 x 240 x 256 -= 1AH =-= Graphics -= +=- -= =-= -= +=- Mode F -- unchained 360 x 350 x 256 -= 1BH =-= Graphics -= +=- -= =-= -= +=- Mode G -- unchained 360 x 400 x 256 -= 1CH =-= Graphics -= +=- -= =-= -= +=- Mode H -- unchained 360 x 480 x 256 -= 1DH =-= Graphics -= +=- -= =-= -= +=- Mode I -- 640 x 400 x 16 -= 1EH =-= Graphics -= +=- -= =-= -= +=- Mode J -- 80 x 43 x 16 -= 1FH =-= Text -= +=- -= =-= -= +=- Mode K -- 80 x 50 x 16 -= 20H =-= Text -= +=- -= =-= -= +=- Mode K -- 40 x 43 x 16 -= 21H =-= Text -= +=- -= =-= -= +=- Mode K -- 40 x 50 x 16 -= 22H =-= Text -= +=- -= =-= -= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + + +To set a video mode using the procedure I already have written: + +PUSH *VALUE* ; Where value is the mode number +CALL SETVIDEOMODE + +and thats it the videomode gets set. + +Once the video mode is set, you can program each video mode as normal. + +Just remember, you can't rely on BIOS so if you need the palette set to the +proper values, you need to set them yourself. + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +If you want to use this code in your programs, all you need is which ever +mode you want from MODES.INC and also the procedure SETMODE. + +Just + +MOV SI, OFFSET *MODE* ; Where mode is the mode from MODES.INC +CALL SETMODE + +If you want the unchained modes, you also need a bit of code from the +SETVIDEOMODE procedure in MAIN.ASM. + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +I have also included some source for clearing the screen and plotting pixels. +If you notice that since all of the chained modes use the same memory +structure the same code can be used to program all with only a few +modifications. This also goes for the planar modes 10h, 12h, Mode C, etc. + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= diff --git a/16/tauron30/WHATSNEW.TXT b/16/tauron30/WHATSNEW.TXT new file mode 100755 index 00000000..72ab292c --- /dev/null +++ b/16/tauron30/WHATSNEW.TXT @@ -0,0 +1,32 @@ +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- -= +=- Tauron VGA Utilities Version 3.0 -= +=- Released September 20, 1998 -= +=- -= +=- What new with this release??? -= +=- -= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- Copyright (c) 1997, 1998 by Jeff Morgan =-= This code is FREE provided -= +=- All Rights Reserved. =-= that you put my name some- -= +=- =-= where in your credits. -= +=- DISCLAIMER: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=- I assume no responsibility whatsoever for any effect that this package, -= +=- the information contained therein or the use thereof has on you, your -= +=- sanity, computer, spouse, children, pets or anything else related to -= +=- you or your existance. No warranty is provided nor implied with this -= +=- source code. -= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + + I added 2 new text modes, 40x43 and 40x50. + + There is now a dual font test. What this does is load 2 fonts into VGA + memory and display text from both fonts on the screen at the same time. + This is possible by reprogramming the charcter map select register. You + can have up to 8 fonts present in memory at any time but can only use 2 + at a time. + + I was trying to add some more high-res video modes but so far they don't + quite work. I'm shooting for 720x200 first just to see if I can make it + work. + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=