diff options
| author | fishsoupisgood <github@madingley.org> | 2019-04-29 01:17:54 +0100 | 
|---|---|---|
| committer | fishsoupisgood <github@madingley.org> | 2019-05-27 03:43:43 +0100 | 
| commit | 3f2546b2ef55b661fd8dd69682b38992225e86f6 (patch) | |
| tree | 65ca85f13617aee1dce474596800950f266a456c /roms/ipxe/src/tests/comboot | |
| download | qemu-master.tar.gz qemu-master.tar.bz2 qemu-master.zip  | |
Diffstat (limited to 'roms/ipxe/src/tests/comboot')
| -rw-r--r-- | roms/ipxe/src/tests/comboot/shuffle-simple.asm | 40 | ||||
| -rw-r--r-- | roms/ipxe/src/tests/comboot/version.asm | 136 | 
2 files changed, 176 insertions, 0 deletions
diff --git a/roms/ipxe/src/tests/comboot/shuffle-simple.asm b/roms/ipxe/src/tests/comboot/shuffle-simple.asm new file mode 100644 index 00000000..efc7d9b4 --- /dev/null +++ b/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/roms/ipxe/src/tests/comboot/version.asm b/roms/ipxe/src/tests/comboot/version.asm new file mode 100644 index 00000000..01140423 --- /dev/null +++ b/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: $"  | 
