diff options
| author | Christian Krinitsin <mail@krinitsin.com> | 2025-05-21 21:21:26 +0200 |
|---|---|---|
| committer | Christian Krinitsin <mail@krinitsin.com> | 2025-05-21 21:21:26 +0200 |
| commit | 4b927bc37359dec23f67d3427fc982945f24f404 (patch) | |
| tree | 245449ef9146942dc7fffd0235b48b7e70a00bf2 /gitlab/issues/target_missing/host_missing/accel_missing/2959.toml | |
| parent | aa8bd79cec7bf6790ddb01d156c2ef2201abbaab (diff) | |
| download | emulator-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.toml | 85 |
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.""" |