aboutsummaryrefslogtreecommitdiff
path: root/mubios/arch
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-11-09 01:57:05 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-11-09 01:57:05 +0800
commit9b380041e6ad178f96942fd3b2521c1aba21a068 (patch)
tree87d682c1940341b4968fb1452a474795f2b96525 /mubios/arch
parent3ef6001ab0e719c18cfd369ecd0df108a9520991 (diff)
downloadrcc-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.S20
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