| Index: rombios.c |
| =================================================================== |
| RCS file: /cvsroot/bochs/bochs/bios/rombios.c,v |
| retrieving revision 1.108 |
| diff -u -w -r1.108 rombios.c |
| --- rombios.c 9 Feb 2004 16:48:50 -0000 1.108 |
| +++ rombios.c 22 May 2004 15:47:51 -0000 |
| @@ -2254,6 +2254,7 @@ |
| type = read_byte(get_SS(),buffer+1) & 0x1f; |
| removable = (read_byte(get_SS(),buffer+0) & 0x80) ? 1 : 0; |
| mode = read_byte(get_SS(),buffer+96) ? ATA_MODE_PIO32 : ATA_MODE_PIO16; |
| + blksize = 2048; |
| |
| write_byte(ebda_seg,&EbdaData->ata.devices[device].device, type); |
| write_byte(ebda_seg,&EbdaData->ata.devices[device].removable, removable); |
| @@ -3378,6 +3379,8 @@ |
| and al,#0x10 |
| mov ah, al |
| |
| + or ecx, ecx |
| + je int1586_tick_end |
| int1586_tick: |
| in al, #0x61 |
| and al,#0x10 |
| @@ -3386,6 +3389,7 @@ |
| mov ah, al |
| dec ecx |
| jnz int1586_tick |
| +int1586_tick_end: |
| ASM_END |
| |
| break; |
| @@ -3781,7 +3785,17 @@ |
| write_word(ebda_seg, 0x0022, mouse_driver_offset); |
| write_word(ebda_seg, 0x0024, mouse_driver_seg); |
| mouse_flags_2 = read_byte(ebda_seg, 0x0027); |
| + if (mouse_driver_offset == 0 && |
| + mouse_driver_seg == 0) { |
| + /* remove handler */ |
| + if ( (mouse_flags_2 & 0x80) != 0 ) { |
| + mouse_flags_2 &= ~0x80; |
| + inhibit_mouse_int_and_events(); // disable IRQ12 and packets |
| + } |
| + } else { |
| + /* install handler */ |
| mouse_flags_2 |= 0x80; |
| + } |
| write_byte(ebda_seg, 0x0027, mouse_flags_2); |
| CLEAR_CF(); |
| regs.u.r8.ah = 0; |
| @@ -4409,7 +4423,8 @@ |
| mouse_flags_2 = read_byte(ebda_seg, 0x0027); |
| |
| if ( (mouse_flags_2 & 0x80) != 0x80 ) { |
| - BX_PANIC("int74_function:\n"); |
| + // BX_PANIC("int74_function:\n"); |
| + return; |
| } |
| |
| package_count = mouse_flags_2 & 0x07; |
| @@ -8401,57 +8416,69 @@ |
| cmp al, #0x08 |
| jne pci_pro_f09 |
| call pci_pro_select_reg |
| + push edx |
| mov dx, di |
| and dx, #0x03 |
| add dx, #0x0cfc |
| in al, dx |
| + pop edx |
| mov cl, al |
| jmp pci_pro_ok |
| pci_pro_f09: ;; read configuration word |
| cmp al, #0x09 |
| jne pci_pro_f0a |
| call pci_pro_select_reg |
| + push edx |
| mov dx, di |
| and dx, #0x02 |
| add dx, #0x0cfc |
| in ax, dx |
| + pop edx |
| mov cx, ax |
| jmp pci_pro_ok |
| pci_pro_f0a: ;; read configuration dword |
| cmp al, #0x0a |
| jne pci_pro_f0b |
| call pci_pro_select_reg |
| + push edx |
| mov dx, #0x0cfc |
| in eax, dx |
| + pop edx |
| mov ecx, eax |
| jmp pci_pro_ok |
| pci_pro_f0b: ;; write configuration byte |
| cmp al, #0x0b |
| jne pci_pro_f0c |
| call pci_pro_select_reg |
| + push edx |
| mov dx, di |
| and dx, #0x03 |
| add dx, #0x0cfc |
| mov al, cl |
| out dx, al |
| + pop edx |
| jmp pci_pro_ok |
| pci_pro_f0c: ;; write configuration word |
| cmp al, #0x0c |
| jne pci_pro_f0d |
| call pci_pro_select_reg |
| + push edx |
| mov dx, di |
| and dx, #0x02 |
| add dx, #0x0cfc |
| mov ax, cx |
| out dx, ax |
| + pop edx |
| jmp pci_pro_ok |
| pci_pro_f0d: ;; write configuration dword |
| cmp al, #0x0d |
| jne pci_pro_unknown |
| call pci_pro_select_reg |
| + push edx |
| mov dx, #0x0cfc |
| mov eax, ecx |
| out dx, eax |
| + pop edx |
| jmp pci_pro_ok |
| pci_pro_unknown: |
| mov ah, #0x81 |
| @@ -8468,6 +8495,7 @@ |
| retf |
| |
| pci_pro_select_reg: |
| + push edx |
| mov eax, #0x800000 |
| mov ax, bx |
| shl eax, #8 |
| @@ -8476,6 +8504,7 @@ |
| and al, #0xfc |
| mov dx, #0x0cf8 |
| out dx, eax |
| + pop edx |
| ret |
| |
| use16 386 |
| @@ -8536,57 +8565,69 @@ |
| cmp al, #0x08 |
| jne pci_real_f09 |
| call pci_real_select_reg |
| + push dx |
| mov dx, di |
| and dx, #0x03 |
| add dx, #0x0cfc |
| in al, dx |
| + pop dx |
| mov cl, al |
| jmp pci_real_ok |
| pci_real_f09: ;; read configuration word |
| cmp al, #0x09 |
| jne pci_real_f0a |
| call pci_real_select_reg |
| + push dx |
| mov dx, di |
| and dx, #0x02 |
| add dx, #0x0cfc |
| in ax, dx |
| + pop dx |
| mov cx, ax |
| jmp pci_real_ok |
| pci_real_f0a: ;; read configuration dword |
| cmp al, #0x0a |
| jne pci_real_f0b |
| call pci_real_select_reg |
| + push dx |
| mov dx, #0x0cfc |
| in eax, dx |
| + pop dx |
| mov ecx, eax |
| jmp pci_real_ok |
| pci_real_f0b: ;; write configuration byte |
| cmp al, #0x0b |
| jne pci_real_f0c |
| call pci_real_select_reg |
| + push dx |
| mov dx, di |
| and dx, #0x03 |
| add dx, #0x0cfc |
| mov al, cl |
| out dx, al |
| + pop dx |
| jmp pci_real_ok |
| pci_real_f0c: ;; write configuration word |
| cmp al, #0x0c |
| jne pci_real_f0d |
| call pci_real_select_reg |
| + push dx |
| mov dx, di |
| and dx, #0x02 |
| add dx, #0x0cfc |
| mov ax, cx |
| out dx, ax |
| + pop dx |
| jmp pci_real_ok |
| pci_real_f0d: ;; write configuration dword |
| cmp al, #0x0d |
| jne pci_real_unknown |
| call pci_real_select_reg |
| + push dx |
| mov dx, #0x0cfc |
| mov eax, ecx |
| out dx, eax |
| + pop dx |
| jmp pci_real_ok |
| pci_real_unknown: |
| mov ah, #0x81 |
| @@ -8599,6 +8640,7 @@ |
| ret |
| |
| pci_real_select_reg: |
| + push dx |
| mov eax, #0x800000 |
| mov ax, bx |
| shl eax, #8 |
| @@ -8607,6 +8649,7 @@ |
| and al, #0xfc |
| mov dx, #0x0cf8 |
| out dx, eax |
| + pop dx |
| ret |
| |
| .align 16 |