From 75a445d29629e270ce483e170643959c295d8f26 Mon Sep 17 00:00:00 2001 From: bellard Date: Wed, 6 Apr 2005 23:01:24 +0000 Subject: [PATCH] new bochs BIOS - 16 bit APM support (initial patch by Struan Bartlett) --- pc-bios/bios.bin | Bin 65536 -> 65536 bytes pc-bios/bios.diff | 227 ++++++++++++++++-------------------------------------- 2 files changed, 65 insertions(+), 162 deletions(-) rewrite pc-bios/bios.bin (62%) rewrite pc-bios/bios.diff (95%) diff --git a/pc-bios/bios.bin b/pc-bios/bios.bin dissimilarity index 62% index fe9816e0a7750e5f8a1b185f1fbf1c49bc21175c..f3e40c240ad1dccbd5f04a1b28f703bec923868a 100644 GIT binary patch literal 65536 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 literal 65536 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 diff --git a/pc-bios/bios.diff b/pc-bios/bios.diff dissimilarity index 95% index 7850769642..7ba84d7c17 100644 --- a/pc-bios/bios.diff +++ b/pc-bios/bios.diff @@ -1,162 +1,65 @@ -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 7 Oct 2004 21:23:50 -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 - } - } -@@ -5412,8 +5400,8 @@ - case 0x03: SET_BL( 0x06 ); break; - } - -- DI = 0xefc7; -- ES = 0xf000; -+ DI = read_word(0x00, 0x1e*4); // INT vector 0x1E -+ ES = read_word(0x00, 0x1e*4+2); - goto int13_success; - break; - -@@ -6984,8 +6972,8 @@ - } - - /* set es & di to point to 11 byte diskette param table in ROM */ -- DI = 0xefc7; -- ES = 0xf000; -+ DI = read_word(0x00, 0x1e*4); // INT vector 0x1E -+ ES = read_word(0x00, 0x1e*4+2); - CLEAR_CF(); // success - /* disk status not changed upon success */ - return; -@@ -7880,7 +7868,7 @@ - mov al, #0x02 - out #0x0a, al ;; clear DMA-1 channel 2 mask bit - -- SET_INT_VECTOR(0x1E, #0xF000, #diskette_param_table) -+ SET_INT_VECTOR(0x1E, #0xF000, #diskette_param_table2) - SET_INT_VECTOR(0x40, #0xF000, #int13_diskette) - SET_INT_VECTOR(0x0E, #0xF000, #int0e_handler) ;; IRQ 6 - -@@ -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 -@@ -9515,6 +9516,26 @@ - pop ds - iret - -+diskette_param_table2: -+;; New diskette parameter table adding 3 parameters from IBM -+;; Since no provisions are made for multiple drive types, most -+;; values in this table are ignored. I set parameters for 1.44M -+;; floppy here -+db 0xAF -+db 0x02 ;; head load time 0000001, DMA used -+db 0x25 -+db 0x02 -+db 18 -+db 0x1B -+db 0xFF -+db 0x6C -+db 0xF6 -+db 0x0F -+db 0x08 -+db 79 ;; maximum track -+db 0 ;; data transfer rate -+db 4 ;; drive type in cmos -+ - .org 0xf045 ; INT 10 Functions 0-Fh Entry Point - HALT(__LINE__) - iret -@@ -9560,6 +9581,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 +9595,10 @@ - popf - //JMPL(iret_modify_cf) - jmp iret_modify_cf -+#if BX_APM -+apm_call: -+ jmp _apmreal_entry -+#endif - - ;; Protected mode IDT descriptor - ;; +Index: rombios.c +=================================================================== +RCS file: /cvsroot/bochs/bochs/bios/rombios.c,v +retrieving revision 1.130 +diff -u -w -r1.130 rombios.c +--- rombios.c 13 Feb 2005 08:47:30 -0000 1.130 ++++ rombios.c 6 Apr 2005 22:38:16 -0000 +@@ -8570,7 +8570,10 @@ + use32 386 + #define APM_PROT32 + #include "apmbios.S" ++ + use16 386 ++#define APM_PROT16 ++#include "apmbios.S" + + #define APM_REAL + #include "apmbios.S" +Index: apmbios.S +=================================================================== +RCS file: /cvsroot/bochs/bochs/bios/apmbios.S,v +retrieving revision 1.1 +diff -u -w -r1.1 apmbios.S +--- apmbios.S 20 Jun 2004 18:27:09 -0000 1.1 ++++ apmbios.S 6 Apr 2005 22:38:16 -0000 +@@ -1,6 +1,9 @@ + // APM BIOS support for the Bochs BIOS + // Copyright (C) 2004 Fabrice Bellard + // ++// 16-bit interface activation ++// Copyright (C) 2005 Struan Bartlett ++// + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either +@@ -111,13 +114,28 @@ + mov bl, #0x4d // 'M' + // bit 0 : 16 bit interface supported + // bit 1 : 32 bit interface supported +- mov cx, #0x2 ++ mov cx, #0x3 + jmp APMSYM(ok) + + ;----------------- + ; APM real mode interface connect + APMSYM(01): + cmp al, #0x01 ++ jne APMSYM(02) ++ jmp APMSYM(ok) ++ ++;----------------- ++; APM 16 bit protected mode interface connect ++APMSYM(02): ++ cmp al, #0x02 ++ jne APMSYM(03) ++ ++ mov bx, #_apm16_entry ++ ++ mov ax, #0xf000 // 16 bit code segment base ++ mov si, #0xfff0 // 16 bit code segment size ++ mov cx, #0xf000 // data segment address ++ mov di, #0xfff0 // data segment length + jne APMSYM(03) + jmp APMSYM(ok) + -- 2.11.4.GIT