| 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 |