Statistics
| Branch: | Revision:

root / pc-bios / bios.diff @ 678f2df6

History | View | Annotate | Download (2.4 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 678f2df6 bellard
+++ rombios.c        20 Jun 2004 13:10:07 -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 678f2df6 bellard
@@ -8344,6 +8332,19 @@
64 678f2df6 bellard
   pop   ax
65 678f2df6 bellard
   iret
66 e58a7c24 bellard
 
67 678f2df6 bellard
+
68 678f2df6 bellard
+;--------------------
69 678f2df6 bellard
+#if BX_APM
70 678f2df6 bellard
+use32 386
71 678f2df6 bellard
+#define APM_PROT32
72 678f2df6 bellard
+#include "apmbios.S"
73 678f2df6 bellard
+use16 386
74 678f2df6 bellard
+
75 678f2df6 bellard
+#define APM_REAL
76 678f2df6 bellard
+#include "apmbios.S"
77 678f2df6 bellard
+
78 678f2df6 bellard
+#endif
79 678f2df6 bellard
+
80 678f2df6 bellard
 ;--------------------
81 678f2df6 bellard
 #if BX_PCIBIOS
82 678f2df6 bellard
 use32 386
83 678f2df6 bellard
@@ -9560,6 +9561,10 @@
84 678f2df6 bellard
 .org 0xf859 ; INT 15h System Services Entry Point
85 678f2df6 bellard
 int15_handler:
86 678f2df6 bellard
   pushf
87 678f2df6 bellard
+#if BX_APM
88 678f2df6 bellard
+  cmp ah, #0x53
89 678f2df6 bellard
+  je apm_call
90 678f2df6 bellard
+#endif
91 e58a7c24 bellard
   push  ds
92 678f2df6 bellard
   push  es
93 678f2df6 bellard
   pushad
94 678f2df6 bellard
@@ -9570,6 +9575,10 @@
95 e58a7c24 bellard
   popf
96 678f2df6 bellard
   //JMPL(iret_modify_cf)
97 678f2df6 bellard
   jmp iret_modify_cf
98 678f2df6 bellard
+#if BX_APM
99 678f2df6 bellard
+apm_call:
100 678f2df6 bellard
+  jmp _apmreal_entry
101 678f2df6 bellard
+#endif
102 fb9f9444 bellard
 
103 678f2df6 bellard
 ;; Protected mode IDT descriptor
104 678f2df6 bellard
 ;;