2008-08-28 23:52:19 +01:00
|
|
|
bits 16
|
|
|
|
|
org 100h
|
|
|
|
|
|
|
|
|
|
jmp start
|
2016-03-17 14:29:18 +00:00
|
|
|
|
2008-08-28 23:52:19 +01:00
|
|
|
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
|