summary refs log tree commit diff stats
path: root/gitlab/issues/target_missing/host_missing/accel_missing/2959.toml
diff options
context:
space:
mode:
authorChristian Krinitsin <mail@krinitsin.com>2025-05-21 21:21:26 +0200
committerChristian Krinitsin <mail@krinitsin.com>2025-05-21 21:21:26 +0200
commit4b927bc37359dec23f67d3427fc982945f24f404 (patch)
tree245449ef9146942dc7fffd0235b48b7e70a00bf2 /gitlab/issues/target_missing/host_missing/accel_missing/2959.toml
parentaa8bd79cec7bf6790ddb01d156c2ef2201abbaab (diff)
downloademulator-bug-study-4b927bc37359dec23f67d3427fc982945f24f404.tar.gz
emulator-bug-study-4b927bc37359dec23f67d3427fc982945f24f404.zip
add gitlab issues in toml format
Diffstat (limited to 'gitlab/issues/target_missing/host_missing/accel_missing/2959.toml')
-rw-r--r--gitlab/issues/target_missing/host_missing/accel_missing/2959.toml85
1 files changed, 85 insertions, 0 deletions
diff --git a/gitlab/issues/target_missing/host_missing/accel_missing/2959.toml b/gitlab/issues/target_missing/host_missing/accel_missing/2959.toml
new file mode 100644
index 00000000..431c47f0
--- /dev/null
+++ b/gitlab/issues/target_missing/host_missing/accel_missing/2959.toml
@@ -0,0 +1,85 @@
+id = 2959
+title = "int 0x10 teletype output cuts final character in custom MBR on QEMU (i386 real mode)"
+state = "opened"
+created_at = "2025-05-09T05:37:00.393Z"
+closed_at = "n/a"
+labels = []
+url = "https://gitlab.com/qemu-project/qemu/-/issues/2959"
+host-os = "Ubuntu 12 (x86)"
+host-arch = "x86"
+qemu-version = "QEMU emulator version 7.2.15 (Debian 1:7.2+dfsg-7+deb12u12)"
+guest-os = "n/a"
+guest-arch = "n/a"
+description = """When using QEMU to test a custom bootloader in 16-bit real mode (i386), the BIOS interrupt `int 0x10` with AH=0x0E (teletype output) fails to display the last character of the printed message. For example, printing `"hello"` only renders `"hell"`.
+
+This happens only with this exact combination:
+
+real mode `int 0x10` teletype output
+
+message ends with `13, 10, 0`
+
+`QEMU` output cuts off the last character consistently
+
+All buffer and code logic has been verified to be correct. The same code, when run on Bochs or physical hardware, prints properly."""
+reproduce = """1.Assemble the following boot.asm:
+```nasm
+[org 0x7C00]
+[BITS 16]
+
+_start:
+    cli
+    xor ax, ax
+    mov ds, ax
+    mov es, ax
+    mov ss, ax
+    mov sp, 0x7C00
+
+    mov si, msg
+    call print
+
+    hlt
+    jmp $
+
+print:
+    pusha
+.loop:
+    lodsb
+    or al, al
+    jz .done
+    mov ah, 0x0E
+    int 0x10
+    jmp .loop
+.done:
+    popa
+    ret
+
+msg db 'hello', 13, 10, 0
+times 510 - ($ - $$) db 0
+dw 0xAA55
+```
+
+2. Compile and run:
+```bash
+$ nasm -f bin boot.asm -o boot.img
+$ qemu-system-i386 -nographic -boot a -drive format=raw,file=boot.img,index=0,if=floppy
+```
+
+3. Output will be:
+```text
+Booting from Floppy...
+hell
+```
+Expected output:
+```text
+Booting from Floppy...
+hello
+```"""
+additional = """- Adding padding (extra 13, 10) does not solve the problem.
+
+- Confirmed that boot.img includes all bytes (xxd dump is correct).
+
+- Tested on multiple machines with same QEMU version.
+
+- May relate to VGA character output buffer not flushing after last INT 0x10?
+
+- This makes QEMU inaccurate for BIOS-level debugging of bootloaders."""