%define REPTIMES ((( @end-@loop) +1) /2) + 100
%define JUMPSPACE 2049
%define BYTESCALLFAR 300
;
; 1. initialization
;
@start:
;Speed things up =D
mov cx, 010h
@waitloop:
wait
wait
wait
wait
loop @waitloop
;start the setting
;ES is set to be the same as DS so we write
;and read from the arena
mov dx, ds
mov es, dx
;sets stack postion to be code segment
mov ss,dx
;DX is set to the first byte of our
;copycat code (only the part that is copied
mov dx, ax
add dx, @loop-@start
; Copying loop
; and setting it to go forward
cld
mov bp, REPTIMES ; make it faster
mov ax, JUMPSPACE + (@end - @loop) ;make it faster
@loop: ;calls far here =D
;set stack pointer to be before the code
;maybe should be removed
mov si, dx
add dx, ax
mov di, dx
mov cx, bp
@write:
rep movsw
; mov cx, BYTESCALLFAR / 4
jmp dx ;calls to @loop
@end: