Changeset 40721 in vbox for trunk/src/VBox/Devices/PC
- Timestamp:
- Mar 30, 2012 10:02:19 AM (13 years ago)
- Location:
- trunk/src/VBox/Devices/PC/BIOS-new
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/PC/BIOS-new/biosint.h
r39589 r40721 111 111 } r16; 112 112 struct { 113 uint 16_tflagsl;114 uint 16_tflagsh;113 uint8_t flagsl; 114 uint8_t flagsh; 115 115 } r8; 116 116 } u; … … 132 132 typedef struct { 133 133 pusha_regs_t gr; 134 flags_t fl; 134 uint16_t es; 135 uint16_t ds; 136 iret_addr_t ra; 135 137 } kbd_regs_t; 136 138 … … 189 191 #define CLEAR_ZF() FLAGS &= 0xffbf 190 192 #define GET_ZF() (FLAGS & 0x0040) 193 194 #define SET_IF() FLAGS |= 0x0200 191 195 192 196 typedef unsigned short bx_bool; -
trunk/src/VBox/Devices/PC/BIOS-new/keyboard.c
r40236 r40721 573 573 #define BP r.gr.u.r16.bp 574 574 #define SP r.gr.u.r16.sp 575 #define FLAGS r. fl.u.r16.flags575 #define FLAGS r.ra.flags.u.r16.flags 576 576 577 577 /* Interrupt 16h service implementation. */ … … 615 615 616 616 case 0x01: /* check keyboard status */ 617 SET_IF(); /* Enable interrupts. Some callers depend on that! */ 617 618 if ( !dequeue_key(&scan_code, &ascii_code, 0) ) { 618 619 SET_ZF(); … … 691 692 692 693 case 0x11: /* check MF-II keyboard status */ 694 SET_IF(); 693 695 if ( !dequeue_key(&scan_code, &ascii_code, 0) ) { 694 696 SET_ZF(); -
trunk/src/VBox/Devices/PC/BIOS-new/notes.txt
r40150 r40721 8 8 - OS/2 (WSeB/MCP/ACP) and Windows 98 SE are some of the very few operating 9 9 systems which use the El Torito floppy emulation. 10 11 - Keystroke check (INT 16h, fn 01h/10h) always enables interrupts on return. 12 DOS POWER.EXE depends on that in some situations. 10 13 11 14 - MS-DOS 6.2/V is a rare user of the INT 15h keyboard intercept routines. -
trunk/src/VBox/Devices/PC/BIOS-new/orgs.asm
r39913 r40721 767 767 push es 768 768 push ds 769 ;; TODO: the caller already pushed flags (INT instruction)??770 pushf771 769 pusha 772 770 … … 780 778 call _int16_function 781 779 popa 782 popf783 780 pop ds 784 781 pop es 785 jz int16_zero_set786 787 ;; TODO: Could use SP directly here (386+)788 int16_zero_clear:789 push bp790 mov bp, sp791 and byte ptr [bp+6], 0BFh792 pop bp793 iret794 795 int16_zero_set:796 push bp797 mov bp, sp798 or byte ptr [bp+6], 040h799 pop bp800 782 iret 801 783 … … 823 805 call _int16_function 824 806 popa 825 popf826 807 pop ds 827 808 pop es 828 ; TODO: review/enable? 809 ; TODO: review/enable? If so, flags should be restored here? 829 810 if 0 830 811 push ax
Note:
See TracChangeset
for help on using the changeset viewer.