root / pc-bios / bios.diff @ a8d3431a
History | View | Annotate | Download (3.8 kB)
1 | 3f433d2c | bellard | Index: rombios.c
|
---|---|---|---|
2 | 3f433d2c | bellard | ===================================================================
|
3 | 3f433d2c | bellard | RCS file: /cvsroot/bochs/bochs/bios/rombios.c,v
|
4 | 678f2df6 | bellard | retrieving revision 1.110
|
5 | 678f2df6 | bellard | diff -u -w -r1.110 rombios.c
|
6 | 678f2df6 | bellard | --- rombios.c 31 May 2004 13:11:27 -0000 1.110
|
7 | a4c4785b | bellard | +++ rombios.c 7 Oct 2004 21:23:50 -0000
|
8 | 678f2df6 | bellard | @@ -137,6 +137,7 @@
|
9 | 678f2df6 | bellard | #define DEBUG_INT16 0 |
10 | 678f2df6 | bellard | #define DEBUG_INT1A 0 |
11 | 678f2df6 | bellard | #define DEBUG_INT74 0 |
12 | 678f2df6 | bellard | +#define DEBUG_APM 0
|
13 | 3f433d2c | bellard | |
14 | 678f2df6 | bellard | #define BX_CPU 3 |
15 | 678f2df6 | bellard | #define BX_USE_PS2_MOUSE 1 |
16 | 678f2df6 | bellard | @@ -145,6 +146,7 @@
|
17 | 678f2df6 | bellard | #define BX_SUPPORT_FLOPPY 1 |
18 | 678f2df6 | bellard | #define BX_FLOPPY_ON_CNT 37 // 2 seconds |
19 | 678f2df6 | bellard | #define BX_PCIBIOS 1 |
20 | 678f2df6 | bellard | +#define BX_APM 1
|
21 | 5b1214a4 | bellard | |
22 | 678f2df6 | bellard | #define BX_USE_ATADRV 1 |
23 | 678f2df6 | bellard | #define BX_ELTORITO_BOOT 1 |
24 | 678f2df6 | bellard | @@ -230,17 +232,6 @@
|
25 | 678f2df6 | bellard | out dx,ax |
26 | 678f2df6 | bellard | MEND |
27 | 3f433d2c | bellard | |
28 | 678f2df6 | bellard | -MACRO HALT2
|
29 | 678f2df6 | bellard | - ;; the HALT macro is called with the line number of the HALT call.
|
30 | 678f2df6 | bellard | - ;; The line number is then sent to the PANIC_PORT, causing Bochs/Plex
|
31 | 678f2df6 | bellard | - ;; to print a BX_PANIC message. This will normally halt the simulation
|
32 | 678f2df6 | bellard | - ;; with a message such as "BIOS panic at rombios.c, line 4091".
|
33 | 678f2df6 | bellard | - ;; However, users can choose to make panics non-fatal and continue.
|
34 | 678f2df6 | bellard | - mov dx,#PANIC_PORT2
|
35 | 678f2df6 | bellard | - mov ax,#?1
|
36 | 678f2df6 | bellard | - out dx,ax
|
37 | 678f2df6 | bellard | -MEND
|
38 | 678f2df6 | bellard | -
|
39 | 678f2df6 | bellard | MACRO JMP_AP |
40 | 678f2df6 | bellard | db 0xea
|
41 | 678f2df6 | bellard | dw ?2
|
42 | 678f2df6 | bellard | @@ -1543,15 +1534,12 @@
|
43 | 3f433d2c | bellard | } |
44 | 3f433d2c | bellard | |
45 | 678f2df6 | bellard | if (action & BIOS_PRINTF_HALT) {
|
46 | 678f2df6 | bellard | - // freeze in a busy loop. If I do a HLT instruction, then in versions
|
47 | 678f2df6 | bellard | - // 1.3.pre1 and earlier, it will panic without ever updating the VGA
|
48 | 678f2df6 | bellard | - // display, so the panic message will not be visible. By waiting
|
49 | 678f2df6 | bellard | - // forever, you are certain to see the panic message on screen.
|
50 | 678f2df6 | bellard | - // After a few more versions have passed, we can turn this back into
|
51 | 678f2df6 | bellard | - // a halt or something.
|
52 | 678f2df6 | bellard | - // do {} while (1);
|
53 | 678f2df6 | bellard | + // freeze in a busy loop.
|
54 | 678f2df6 | bellard | ASM_START |
55 | 678f2df6 | bellard | - HALT2(__LINE__)
|
56 | 678f2df6 | bellard | + cli
|
57 | 678f2df6 | bellard | + halt2_loop:
|
58 | 678f2df6 | bellard | + hlt
|
59 | 678f2df6 | bellard | + jmp halt2_loop
|
60 | 678f2df6 | bellard | ASM_END |
61 | 678f2df6 | bellard | } |
62 | 678f2df6 | bellard | } |
63 | a4c4785b | bellard | @@ -5412,8 +5400,8 @@
|
64 | a4c4785b | bellard | case 0x03: SET_BL( 0x06 ); break; |
65 | a4c4785b | bellard | } |
66 | a4c4785b | bellard | |
67 | a4c4785b | bellard | - DI = 0xefc7;
|
68 | a4c4785b | bellard | - ES = 0xf000;
|
69 | a4c4785b | bellard | + DI = read_word(0x00, 0x1e*4); // INT vector 0x1E
|
70 | a4c4785b | bellard | + ES = read_word(0x00, 0x1e*4+2);
|
71 | a4c4785b | bellard | goto int13_success;
|
72 | a4c4785b | bellard | break;
|
73 | a4c4785b | bellard | |
74 | a4c4785b | bellard | @@ -6984,8 +6972,8 @@
|
75 | a4c4785b | bellard | } |
76 | a4c4785b | bellard | |
77 | a4c4785b | bellard | /* set es & di to point to 11 byte diskette param table in ROM */
|
78 | a4c4785b | bellard | - DI = 0xefc7;
|
79 | a4c4785b | bellard | - ES = 0xf000;
|
80 | a4c4785b | bellard | + DI = read_word(0x00, 0x1e*4); // INT vector 0x1E
|
81 | a4c4785b | bellard | + ES = read_word(0x00, 0x1e*4+2);
|
82 | a4c4785b | bellard | CLEAR_CF(); // success
|
83 | a4c4785b | bellard | /* disk status not changed upon success */
|
84 | a4c4785b | bellard | return;
|
85 | a5ba1ca6 | bellard | @@ -7880,7 +7868,7 @@
|
86 | a5ba1ca6 | bellard | mov al, #0x02
|
87 | a5ba1ca6 | bellard | out #0x0a, al ;; clear DMA-1 channel 2 mask bit |
88 | a5ba1ca6 | bellard | |
89 | a5ba1ca6 | bellard | - SET_INT_VECTOR(0x1E, #0xF000, #diskette_param_table)
|
90 | a5ba1ca6 | bellard | + SET_INT_VECTOR(0x1E, #0xF000, #diskette_param_table2)
|
91 | a5ba1ca6 | bellard | SET_INT_VECTOR(0x40, #0xF000, #int13_diskette) |
92 | a5ba1ca6 | bellard | SET_INT_VECTOR(0x0E, #0xF000, #int0e_handler) ;; IRQ 6 |
93 | a5ba1ca6 | bellard | |
94 | 678f2df6 | bellard | @@ -8344,6 +8332,19 @@
|
95 | 678f2df6 | bellard | pop ax |
96 | 678f2df6 | bellard | iret |
97 | e58a7c24 | bellard | |
98 | 678f2df6 | bellard | +
|
99 | 678f2df6 | bellard | +;--------------------
|
100 | 678f2df6 | bellard | +#if BX_APM
|
101 | 678f2df6 | bellard | +use32 386
|
102 | 678f2df6 | bellard | +#define APM_PROT32
|
103 | 678f2df6 | bellard | +#include "apmbios.S"
|
104 | 678f2df6 | bellard | +use16 386
|
105 | 678f2df6 | bellard | +
|
106 | 678f2df6 | bellard | +#define APM_REAL
|
107 | 678f2df6 | bellard | +#include "apmbios.S"
|
108 | 678f2df6 | bellard | +
|
109 | 678f2df6 | bellard | +#endif
|
110 | 678f2df6 | bellard | +
|
111 | 678f2df6 | bellard | ;-------------------- |
112 | 678f2df6 | bellard | #if BX_PCIBIOS
|
113 | 678f2df6 | bellard | use32 386
|
114 | a5ba1ca6 | bellard | @@ -9515,6 +9516,26 @@
|
115 | a5ba1ca6 | bellard | pop ds |
116 | a5ba1ca6 | bellard | iret |
117 | a5ba1ca6 | bellard | |
118 | a5ba1ca6 | bellard | +diskette_param_table2:
|
119 | a5ba1ca6 | bellard | +;; New diskette parameter table adding 3 parameters from IBM
|
120 | a5ba1ca6 | bellard | +;; Since no provisions are made for multiple drive types, most
|
121 | a5ba1ca6 | bellard | +;; values in this table are ignored. I set parameters for 1.44M
|
122 | a5ba1ca6 | bellard | +;; floppy here
|
123 | a5ba1ca6 | bellard | +db 0xAF
|
124 | a5ba1ca6 | bellard | +db 0x02 ;; head load time 0000001, DMA used
|
125 | a5ba1ca6 | bellard | +db 0x25
|
126 | a5ba1ca6 | bellard | +db 0x02
|
127 | a5ba1ca6 | bellard | +db 18
|
128 | a5ba1ca6 | bellard | +db 0x1B
|
129 | a5ba1ca6 | bellard | +db 0xFF
|
130 | a5ba1ca6 | bellard | +db 0x6C
|
131 | a5ba1ca6 | bellard | +db 0xF6
|
132 | a5ba1ca6 | bellard | +db 0x0F
|
133 | a5ba1ca6 | bellard | +db 0x08
|
134 | a5ba1ca6 | bellard | +db 79 ;; maximum track
|
135 | a5ba1ca6 | bellard | +db 0 ;; data transfer rate
|
136 | a5ba1ca6 | bellard | +db 4 ;; drive type in cmos
|
137 | a5ba1ca6 | bellard | +
|
138 | a5ba1ca6 | bellard | .org 0xf045 ; INT 10 Functions 0-Fh Entry Point |
139 | a5ba1ca6 | bellard | HALT(__LINE__) |
140 | a5ba1ca6 | bellard | iret |
141 | a5ba1ca6 | bellard | @@ -9560,6 +9581,10 @@
|
142 | 678f2df6 | bellard | .org 0xf859 ; INT 15h System Services Entry Point |
143 | 678f2df6 | bellard | int15_handler:
|
144 | 678f2df6 | bellard | pushf |
145 | 678f2df6 | bellard | +#if BX_APM
|
146 | 678f2df6 | bellard | + cmp ah, #0x53
|
147 | 678f2df6 | bellard | + je apm_call
|
148 | 678f2df6 | bellard | +#endif
|
149 | e58a7c24 | bellard | push ds |
150 | 678f2df6 | bellard | push es |
151 | 678f2df6 | bellard | pushad |
152 | a5ba1ca6 | bellard | @@ -9570,6 +9595,10 @@
|
153 | e58a7c24 | bellard | popf |
154 | 678f2df6 | bellard | //JMPL(iret_modify_cf)
|
155 | 678f2df6 | bellard | jmp iret_modify_cf |
156 | 678f2df6 | bellard | +#if BX_APM
|
157 | 678f2df6 | bellard | +apm_call:
|
158 | 678f2df6 | bellard | + jmp _apmreal_entry
|
159 | 678f2df6 | bellard | +#endif
|
160 | fb9f9444 | bellard | |
161 | 678f2df6 | bellard | ;; Protected mode IDT descriptor |
162 | 678f2df6 | bellard | ;; |