Index: rombios.c =================================================================== RCS file: /cvsroot/bochs/bochs/bios/rombios.c,v retrieving revision 1.110 diff -u -w -r1.110 rombios.c --- rombios.c 31 May 2004 13:11:27 -0000 1.110 +++ rombios.c 20 Jun 2004 13:10:07 -0000 @@ -137,6 +137,7 @@ #define DEBUG_INT16 0 #define DEBUG_INT1A 0 #define DEBUG_INT74 0 +#define DEBUG_APM 0 #define BX_CPU 3 #define BX_USE_PS2_MOUSE 1 @@ -145,6 +146,7 @@ #define BX_SUPPORT_FLOPPY 1 #define BX_FLOPPY_ON_CNT 37 // 2 seconds #define BX_PCIBIOS 1 +#define BX_APM 1 #define BX_USE_ATADRV 1 #define BX_ELTORITO_BOOT 1 @@ -230,17 +232,6 @@ out dx,ax MEND -MACRO HALT2 - ;; the HALT macro is called with the line number of the HALT call. - ;; The line number is then sent to the PANIC_PORT, causing Bochs/Plex - ;; to print a BX_PANIC message. This will normally halt the simulation - ;; with a message such as "BIOS panic at rombios.c, line 4091". - ;; However, users can choose to make panics non-fatal and continue. - mov dx,#PANIC_PORT2 - mov ax,#?1 - out dx,ax -MEND - MACRO JMP_AP db 0xea dw ?2 @@ -1543,15 +1534,12 @@ } if (action & BIOS_PRINTF_HALT) { - // freeze in a busy loop. If I do a HLT instruction, then in versions - // 1.3.pre1 and earlier, it will panic without ever updating the VGA - // display, so the panic message will not be visible. By waiting - // forever, you are certain to see the panic message on screen. - // After a few more versions have passed, we can turn this back into - // a halt or something. - // do {} while (1); + // freeze in a busy loop. ASM_START - HALT2(__LINE__) + cli + halt2_loop: + hlt + jmp halt2_loop ASM_END } } @@ -8344,6 +8332,19 @@ pop ax iret + +;-------------------- +#if BX_APM +use32 386 +#define APM_PROT32 +#include "apmbios.S" +use16 386 + +#define APM_REAL +#include "apmbios.S" + +#endif + ;-------------------- #if BX_PCIBIOS use32 386 @@ -9560,6 +9561,10 @@ .org 0xf859 ; INT 15h System Services Entry Point int15_handler: pushf +#if BX_APM + cmp ah, #0x53 + je apm_call +#endif push ds push es pushad @@ -9570,6 +9575,10 @@ popf //JMPL(iret_modify_cf) jmp iret_modify_cf +#if BX_APM +apm_call: + jmp _apmreal_entry +#endif ;; Protected mode IDT descriptor ;;