]> 4ch.mooo.com Git - 16.git/blob - 16/tauron/C_SRC/CLEAR.CPP
added another library ^^
[16.git] / 16 / tauron / C_SRC / CLEAR.CPP
1 //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
2 //=-                                                                         -=\r
3 //=-                   Tauron VGA Utilities Version 3.0                      -=\r
4 //=-                      Released September 20, 1998                        -=\r
5 //=-                                                                         -=\r
6 //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
7 //=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
8 //=- All Rights Reserved.                     =-= that you put my name some- -=\r
9 //=-                                          =-= where in your credits.     -=\r
10 //=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
11 //=- I assume no responsibility whatsoever for any effect that this package, -=\r
12 //=- the information contained therein or the use thereof has on you, your   -=\r
13 //=- sanity, computer, spouse, children, pets or anything else related to    -=\r
14 //=- you or your existance. No warranty is provided nor implied with this    -=\r
15 //=- source code.                                                            -=\r
16 //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
17 #include <stdlib.h>\r
18 #include <stdio.h>\r
19 #include <conio.h>\r
20 #include <dos.h>\r
21 #include "tauron.h"\r
22 \r
23 void TextClear(char attrib)\r
24 {\r
25    unsigned int bytes = Mode.width_bytes;\r
26    asm {\r
27    MOV AX,0B800H\r
28    MOV ES,AX\r
29    XOR DI,DI\r
30 \r
31    MOV AH,attrib\r
32    MOV AL,' '\r
33    MOV CX,bytes\r
34    CLD\r
35    REP STOSW\r
36    }\r
37 }\r
38 \r
39 void Clear04H()\r
40 {\r
41    unsigned int bytes = Mode.width_bytes;\r
42    asm {\r
43    MOV AX,0B800H\r
44    MOV ES,AX\r
45    XOR DI,DI\r
46 \r
47    MOV AX,0AAAAH\r
48    CLD\r
49    MOV CX,bytes\r
50    REP STOSW\r
51    }\r
52 }\r
53 \r
54 void Clear06H()\r
55 {\r
56    unsigned int bytes = Mode.width_bytes;\r
57    asm {\r
58    MOV AX,0B800H\r
59    MOV ES,AX\r
60    XOR DI,DI\r
61 \r
62    MOV AX,0FFFFH\r
63    CLD\r
64    MOV CX,bytes\r
65    REP STOSW\r
66    }\r
67 }\r
68 \r
69 void Clear0DH(char color)\r
70 {\r
71    unsigned int bytes = Mode.width_bytes/2;\r
72    asm {\r
73    MOV AX,0A000H\r
74    MOV ES,AX\r
75    XOR DI,DI\r
76 \r
77    MOV CX,bytes\r
78    }\r
79 CLEAR_LOOP:\r
80    asm {\r
81    MOV DX,03CEH\r
82    MOV AX,0FF08H\r
83    OUT DX,AX\r
84 \r
85    MOV AX,0\r
86    XCHG WORD PTR ES:[DI],AX\r
87 \r
88    MOV DX,03C4H\r
89    MOV AH,color\r
90    MOV AL,2\r
91    OUT DX,AX\r
92 \r
93    MOV WORD PTR ES:[DI],0FFFFH\r
94 \r
95    MOV AX,0F02H\r
96    OUT DX,AX\r
97 \r
98    MOV DX,03CEH\r
99    MOV AX,0FF08h\r
100    OUT DX,AX\r
101 \r
102    ADD DI,2\r
103    LOOP CLEAR_LOOP\r
104    }\r
105 }\r
106 \r
107 void PlanarClear(char Color)\r
108 {\r
109    unsigned int bytes = Mode.width_bytes/2;\r
110    asm {\r
111    MOV AX,0A000H\r
112    MOV ES,AX\r
113    XOR DI,DI\r
114 \r
115    MOV CX,bytes\r
116    }\r
117 CLEAR_LOOP:\r
118    asm {\r
119    MOV DX,03CEH\r
120    MOV AX,0FF08H\r
121    OUT DX,AX\r
122 \r
123    MOV AX,0\r
124    XCHG WORD PTR ES:[DI],AX\r
125 \r
126    MOV DX,03C4H\r
127    MOV AH,Color\r
128    MOV AL,2\r
129    OUT DX,AX\r
130 \r
131    MOV WORD PTR ES:[DI],0FFFFH\r
132 \r
133    MOV AX,0F02H\r
134    OUT DX,AX\r
135 \r
136    MOV DX,03CEH\r
137    MOV AX,0FF08h\r
138    OUT DX,AX\r
139 \r
140    ADD DI,2\r
141    LOOP CLEAR_LOOP\r
142    }\r
143 }\r
144 \r
145 void Clear13H(char Color)\r
146 {\r
147    asm {\r
148    MOV AX,0A000H\r
149    MOV ES,AX\r
150    XOR DI,DI\r
151 \r
152    MOV AL,Color\r
153    MOV AH,AL\r
154    CLD\r
155    MOV CX,8000H\r
156    REP STOSW\r
157    }\r
158 }\r
159 \r
160 void UnchainedClear(char Color)\r
161 {\r
162    unsigned int bytes = Mode.width_bytes/2;\r
163    asm {\r
164    mov   dx, 03C4h         // 03c4h\r
165    mov   al, 2             // Map Mask Register\r
166    out   dx, al\r
167    inc   dx\r
168    mov   al,00001111B      // Select all planes to write to\r
169    out   dx, al            // Doing this to clear all planes at once\r
170 \r
171    mov   ax,0A000H\r
172    mov   es, ax\r
173    XOR DI,DI               // set es:di = Screen Mem\r
174    mov ah,Color            // move the color into ah\r
175    mov al,ah               // copy the value to al\r
176    mov   cx,bytes          // Number of words\r
177    cld\r
178    rep   stosw             // clear it\r
179    }\r
180 }\r