summaryrefslogtreecommitdiffstats
path: root/qemu/roms/ipxe/src/tests/comboot/shuffle-simple.asm
blob: efc7d9b46baf558e45707493103a1669003d40c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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