From e44e3482bdb4d0ebde2d8b41830ac2cdb07948fb Mon Sep 17 00:00:00 2001 From: Yang Zhang Date: Fri, 28 Aug 2015 09:58:54 +0800 Subject: Add qemu 2.4.0 Change-Id: Ic99cbad4b61f8b127b7dc74d04576c0bcbaaf4f5 Signed-off-by: Yang Zhang --- .../roms/ipxe/src/tests/comboot/shuffle-simple.asm | 40 ++++++ qemu/roms/ipxe/src/tests/comboot/version.asm | 136 +++++++++++++++++++++ 2 files changed, 176 insertions(+) create mode 100644 qemu/roms/ipxe/src/tests/comboot/shuffle-simple.asm create mode 100644 qemu/roms/ipxe/src/tests/comboot/version.asm (limited to 'qemu/roms/ipxe/src/tests/comboot') 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 + diff --git a/qemu/roms/ipxe/src/tests/comboot/version.asm b/qemu/roms/ipxe/src/tests/comboot/version.asm new file mode 100644 index 000000000..011404239 --- /dev/null +++ b/qemu/roms/ipxe/src/tests/comboot/version.asm @@ -0,0 +1,136 @@ + bits 16 + org 100h + +_start: + ; first check for SYSLINUX + mov ah, 30h + int 21h + + cmp eax, 59530000h + jne .not_syslinux + cmp ebx, 4c530000h + jne .not_syslinux + cmp ecx, 4e490000h + jne .not_syslinux + cmp edx, 58550000h + jne .not_syslinux + + ; now get syslinux version + mov ax, 0001h + int 22h + + push cx + push dx + push di + push si + push es + + ; print version string + mov dx, str_version + mov ah, 09h + int 21h + + pop es + pop bx + push es + mov ax, 0002h + int 22h + + ; print copyright string + mov dx, str_copyright + mov ah, 09h + int 21h + + pop es + pop bx + mov ax, 0002h + int 22h + + ; print syslinux derivative id + mov dx, str_derivative + mov ah, 09h + int 21h + + pop ax + call print_hex_byte + + ; print version number + mov dx, str_version_num + mov ah, 09h + int 21h + + pop cx + push cx + mov ax, cx + and ax, 0FFh + call print_dec_word + + mov dl, '.' + mov ah, 02h + int 21h + + pop cx + mov ax, cx + shr ax, 8 + call print_dec_word + + ret + + +.not_syslinux: + mov dx, str_not_syslinux + mov ah, 09h + int 21h + ret + +; input: al = byte to print in hex +print_hex_byte: + push ax + shr al, 4 + call print_hex_nybble + pop ax + call print_hex_nybble + ret + +; input: bottom half of al = nybble to print in hex +print_hex_nybble: + push ax + mov bl, al + and bx, 1111b + mov dl, [str_hex + bx] + mov ah, 02h + int 21h + pop ax + ret + +str_hex: db "01234567890abcdef" + +; input: ax = word to print +print_dec_word: + mov cx, 10 + mov word [.count], 0 +.loop: + xor dx, dx + div cx + inc word [.count] + push dx + test ax, ax + jnz .loop + +.print: + pop dx + add dx, '0' + mov ah, 02h + int 21h + dec word [.count] + jnz .print + + ret + +.count: dw 0 + +str_not_syslinux: db "Not SYSLINUX or derivative (running on DOS?)$" +str_version: db "Version: $" +str_copyright: db 10, "Copyright: $" +str_derivative: db 10, "Derivative ID: 0x$" +str_version_num: db 10, "Version number: $" -- cgit 1.2.3-korg