Statistics
| Branch: | Revision:

root / pc-bios / vgabios.diff @ 1c46d713

History | View | Annotate | Download (1.4 kB)

1
Index: clext.c
2
===================================================================
3
RCS file: /sources/vgabios/vgabios/clext.c,v
4
retrieving revision 1.10
5
diff -u -w -r1.10 clext.c
6
--- clext.c        25 Mar 2006 10:19:15 -0000        1.10
7
+++ clext.c        14 May 2006 20:49:29 -0000
8
@@ -544,6 +544,13 @@
9
 cirrus_set_video_mode_extended:
10
   call cirrus_switch_mode
11
   pop ax ;; mode
12
+  test al, #0x80
13
+  jnz cirrus_set_video_mode_extended_1
14
+  push ax
15
+  mov ax, #0xffff ; set to 0xff to keep win 2K happy
16
+  call cirrus_clear_vram
17
+  pop ax
18
+cirrus_set_video_mode_extended_1:
19
   and al, #0x7f
20
 
21
   push ds
22
@@ -1011,6 +1018,13 @@
23
   jnz cirrus_vesa_02h_3
24
   call cirrus_enable_16k_granularity
25
 cirrus_vesa_02h_3:
26
+  test bx, #0x8000 ;; no clear
27
+  jnz cirrus_vesa_02h_4
28
+  push ax
29
+  xor ax,ax
30
+  call cirrus_clear_vram
31
+  pop ax
32
+cirrus_vesa_02h_4:
33
   pop ax
34
   push ds
35
 #ifdef CIRRUS_VESA3_PMINFO
36
@@ -1479,6 +1493,38 @@
37
   pop  bx
38
   ret
39
 
40
+cirrus_clear_vram:
41
+  pusha
42
+  push es
43
+  mov si, ax
44
+
45
+  call cirrus_enable_16k_granularity
46
+  call cirrus_extbios_85h
47
+  shl al, #2
48
+  mov bl, al
49
+  xor ah,ah
50
+cirrus_clear_vram_1:
51
+  mov al, #0x09
52
+  mov dx, #0x3ce
53
+  out dx, ax
54
+  push ax
55
+  mov cx, #0xa000
56
+  mov es, cx
57
+  xor di, di
58
+  mov ax, si
59
+  mov cx, #8192
60
+  cld
61
+  rep 
62
+      stosw
63
+  pop ax
64
+  inc ah
65
+  cmp ah, bl
66
+  jne cirrus_clear_vram_1
67
+
68
+  pop es
69
+  popa
70
+  ret
71
+
72
 cirrus_extbios_handlers:
73
   ;; 80h
74
   dw cirrus_extbios_80h