summaryrefslogtreecommitdiffstats
path: root/qemu/roms/ipxe/src/tests/comboot/shuffle-simple.asm
diff options
context:
space:
mode:
Diffstat (limited to 'qemu/roms/ipxe/src/tests/comboot/shuffle-simple.asm')
-rw-r--r--qemu/roms/ipxe/src/tests/comboot/shuffle-simple.asm40
1 files changed, 40 insertions, 0 deletions
diff --git a/qemu/roms/ipxe/src/tests/comboot/shuffle-simple.asm b/qemu/roms/ipxe/src/tests/comboot/shuffle-simple.asm
new file mode 100644
index 000000000..efc7d9b46
--- /dev/null
+++ b/qemu/roms/ipxe/src/tests/comboot/shuffle-simple.asm
@@ -0,0 +1,40 @@
+ bits 16
+ org 100h
+
+ jmp start
+
+shuffle_start:
+ push 0xB800
+ pop es
+ mov cx, 80*24*2
+ mov ax, 'AA'
+ xor di, di
+ rep stosw
+.lbl: jmp .lbl
+shuffle_end:
+ nop
+shuffle_len equ (shuffle_end - shuffle_start + 1)
+
+start:
+ ; calculate physical address of shuffled part
+ xor eax, eax
+ push ds
+ pop ax
+ shl eax, 4
+ add ax, shuffle_start
+ mov dword [source], eax
+
+ mov ax, 0012h
+ mov di, shuffle_descriptors
+ mov cx, num_shuffle_descriptors
+ mov ebp, 0x7c00
+ int 22h
+ int3
+
+shuffle_descriptors:
+ dd 0x7C00
+source: dd 0
+ dd shuffle_len
+
+num_shuffle_descriptors equ 1
+