Revision e58a7c24 pc-bios/bios.diff
b/pc-bios/bios.diff | ||
---|---|---|
4 | 4 |
retrieving revision 1.108 |
5 | 5 |
diff -u -w -r1.108 rombios.c |
6 | 6 |
--- rombios.c 9 Feb 2004 16:48:50 -0000 1.108 |
7 |
+++ rombios.c 22 May 2004 15:47:51 -0000
|
|
7 |
+++ rombios.c 23 May 2004 15:48:52 -0000
|
|
8 | 8 |
@@ -2254,6 +2254,7 @@ |
9 | 9 |
type = read_byte(get_SS(),buffer+1) & 0x1f; |
10 | 10 |
removable = (read_byte(get_SS(),buffer+0) & 0x80) ? 1 : 0; |
... | ... | |
58 | 58 |
} |
59 | 59 |
|
60 | 60 |
package_count = mouse_flags_2 & 0x07; |
61 |
@@ -8401,57 +8416,69 @@ |
|
61 |
@@ -4833,8 +4848,10 @@ |
|
62 |
// --------------------------------------------------------------------------- |
|
63 |
|
|
64 |
void |
|
65 |
-int13_cdrom(DI, SI, BP, SP, BX, DX, CX, AX, DS, ES, FLAGS) |
|
66 |
- Bit16u DI, SI, BP, SP, BX, DX, CX, AX, DS, ES, FLAGS; |
|
67 |
+int13_cdrom(DI, DIH, SI, SIH, BP, BPH, SP, SPH, BX, BXH, DX, DXH, CX, CXH, AX, AXH, |
|
68 |
+ DS, ES, FLAGS) |
|
69 |
+ Bit16u DI, DIH, SI, SIH, BP, BPH, SP, SPH, BX, BXH, DX, DXH, CX, CXH, AX, AXH, |
|
70 |
+ DS, ES, FLAGS; |
|
71 |
{ |
|
72 |
Bit16u ebda_seg=read_word(0x0040,0x000E); |
|
73 |
Bit8u device, status, locks; |
|
74 |
@@ -7692,9 +7709,12 @@ |
|
75 |
push ds |
|
76 |
push ss |
|
77 |
pop ds |
|
78 |
- pusha |
|
79 |
+ // ebx is modified: BSD 5.2.1 boot loader problem, so we save all |
|
80 |
+ // the 32 bit registers. It should be done in all the bios or no 32 |
|
81 |
+ // bit register should be used without saving it first. |
|
82 |
+ pushad |
|
83 |
call _int13_cdrom |
|
84 |
- popa |
|
85 |
+ popad |
|
86 |
pop ds |
|
87 |
pop es |
|
88 |
popf |
|
89 |
@@ -8401,57 +8421,69 @@ |
|
62 | 90 |
cmp al, #0x08 |
63 | 91 |
jne pci_pro_f09 |
64 | 92 |
call pci_pro_select_reg |
... | ... | |
128 | 156 |
jmp pci_pro_ok |
129 | 157 |
pci_pro_unknown: |
130 | 158 |
mov ah, #0x81 |
131 |
@@ -8468,6 +8495,7 @@
|
|
159 |
@@ -8468,6 +8500,7 @@
|
|
132 | 160 |
retf |
133 | 161 |
|
134 | 162 |
pci_pro_select_reg: |
... | ... | |
136 | 164 |
mov eax, #0x800000 |
137 | 165 |
mov ax, bx |
138 | 166 |
shl eax, #8 |
139 |
@@ -8476,6 +8504,7 @@
|
|
167 |
@@ -8476,6 +8509,7 @@
|
|
140 | 168 |
and al, #0xfc |
141 | 169 |
mov dx, #0x0cf8 |
142 | 170 |
out dx, eax |
... | ... | |
144 | 172 |
ret |
145 | 173 |
|
146 | 174 |
use16 386 |
147 |
@@ -8536,57 +8565,69 @@
|
|
175 |
@@ -8536,57 +8570,69 @@
|
|
148 | 176 |
cmp al, #0x08 |
149 | 177 |
jne pci_real_f09 |
150 | 178 |
call pci_real_select_reg |
... | ... | |
214 | 242 |
jmp pci_real_ok |
215 | 243 |
pci_real_unknown: |
216 | 244 |
mov ah, #0x81 |
217 |
@@ -8599,6 +8640,7 @@
|
|
245 |
@@ -8599,6 +8645,7 @@
|
|
218 | 246 |
ret |
219 | 247 |
|
220 | 248 |
pci_real_select_reg: |
... | ... | |
222 | 250 |
mov eax, #0x800000 |
223 | 251 |
mov ax, bx |
224 | 252 |
shl eax, #8 |
225 |
@@ -8607,6 +8649,7 @@
|
|
253 |
@@ -8607,6 +8654,7 @@
|
|
226 | 254 |
and al, #0xfc |
227 | 255 |
mov dx, #0x0cf8 |
228 | 256 |
out dx, eax |
Also available in: Unified diff