diff options
| author | Richard Qin <richard.qin.x@gmail.com> | 2026-11-09 01:57:05 +0800 |
|---|---|---|
| committer | Richard Qin <richard.qin.x@gmail.com> | 2026-11-09 01:57:05 +0800 |
| commit | 9b380041e6ad178f96942fd3b2521c1aba21a068 (patch) | |
| tree | 87d682c1940341b4968fb1452a474795f2b96525 /mubios/arch | |
| parent | 3ef6001ab0e719c18cfd369ecd0df108a9520991 (diff) | |
| download | rcc-project-9b380041e6ad178f96942fd3b2521c1aba21a068.tar.gz rcc-project-9b380041e6ad178f96942fd3b2521c1aba21a068.tar.xz | |
[mubios] Add EDD parameters and normalize PS/2 input
Diffstat (limited to 'mubios/arch')
| -rw-r--r-- | mubios/arch/irq.S | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/mubios/arch/irq.S b/mubios/arch/irq.S index 0c192ff..99eb9b3 100644 --- a/mubios/arch/irq.S +++ b/mubios/arch/irq.S @@ -25,6 +25,7 @@ .equ BDA_BASE, 0x0400 .equ BDA_KBD_BUFFER_START, 0x001E .equ BDA_KBD_BUFFER_END, 0x003E + .equ BDA_KBD_BREAK_PREFIX, 0x0497 .equ TIMER_TICKS_PER_DAY_LOW, 0x00B0 .equ TIMER_TICKS_PER_DAY_HIGH, 0x0018 @@ -83,12 +84,25 @@ irq1_entry: in al, 0x60 mov dl, al - test dl, 0x80 - jnz irq1_send_eoi - xor ax, ax mov ds, ax + # Ignore a PS/2 set-2 break prefix and its following release code. + cmp dl, 0xF0 + jne irq1_check_break_prefix + mov byte ptr [BDA_KBD_BREAK_PREFIX], 1 + jmp irq1_send_eoi + +irq1_check_break_prefix: + cmp byte ptr [BDA_KBD_BREAK_PREFIX], 0 + je irq1_check_set1_break + mov byte ptr [BDA_KBD_BREAK_PREFIX], 0 + jmp irq1_send_eoi + +irq1_check_set1_break: + test dl, 0x80 + jnz irq1_send_eoi + mov bx, word ptr [0x041C] mov ax, bx add ax, 2 |
