ברוכים הבאים לאתר תחרויות קודגורו! › פורומים › אקסטרים › The latest mamaliga source code…
- This topic has 0 תגובות, משתתף 1, and was last updated לפני 12 שנים, 11 חודשים by GalDor.
-
מאתתגובות
-
30 בדצמבר 2011 בשעה 06:30 #76802GalDorמשתתף
Below is the source code for mamaliga.
We will be glad to answer any questions you might have!;
mamaliga1
loop_length=0x180
jump_length=-6*loop_length
int_87_address=0x4242
bomb_spacing=0xA120@beginning:
JMP @startDB 0xCC
DB 0xCC
DB 0xCC@start1:
ADD ax,(@code-@beginning)
MOV si,ax;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Use int 0x87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH es
PUSH ds
POP esADD ax,(@zombie_code1-@code1)
MOV [int_87_address],axMOV ax,0xFB73
MOV dx,0x4DB8
MOV bx,0x26FF
MOV cx,int_87_address
STD
INT 0x87
CLDPOP es
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Replace the address at @address_to_replace with our private segment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV bx,es
MOV [si+(@address_to_replace1-@code1)+1],bx;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Save the location of @code for future use;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV bx,si
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Set ax to push ax, movsw;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV ax,0xA550
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Load survivor code to private segment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ADD di,2*loop_length
MOV cx,(@boom1-@code1)/2
REP MOVSW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Initialize segment registers;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH es
PUSH cs
POP es
POP ds
PUSH cs;MOV bp,cs
POP ss;MOV ss,bp;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Set si,di,sp to the locations of bombardment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
XOR si,si
MOV sp,bx
MOV di,bx;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Start at even address;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AND di,0xFFFE
MOVSW
NOP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Main loop code;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@code1:
MOVSW
MOVSW
MOV cx,0x1000
MOVSW
MOVSW
MOV ss,cx
MOVSW
MOVSW
MOV es,cxMOVSW
MOVSW
MOVSW
AND sp,0xFFFE
MOVSW
MOVSW
MOVSW
MOVSW
SUB sp,bomb_spacingMOVSW
MOVSW
MOVSW
MOV ax,0xA550MOVSW
MOVSW
MOVSW
@address_to_replace1:
MOV cx,int_87_addressMOVSW
MOVSW
MOVSW
AND dx,0x007F ;dx is the clock
MOVSW
DEC dx
MOVSW
MOVSW
MOVSW
MOVSW
JNZ @dont_die_yet1
MOV ds,cx
@dont_die_yet1:MOVSW
MOVSW
MOVSW
MOVSW
MOVSW
MOVSW
MOVSW
ADD di,jump_length
MOVSW
DB 0xE9
DW jump_lengthMOVSW
XOR si,si
MOVSW
@boom1:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Zombies and Int 0x87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@zombie_code1:CALL @here1
@here1:
POP bx
ADD bx,(@wait_loop1-@here1)
AND bx,0xFFFE
XOR dx,dx
MOV ax,0x204D
STOSW
JMP bx
@wait_loop1:
JMP bxDB 0xCC
DB 0xCC
DB 0xCC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Real survivor starts here;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@start:ADD ax,(@code-@beginning)
MOV si,ax;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Use int 0x87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH es
PUSH ds
POP esADD ax,(@zombie_code-@code)
MOV [int_87_address],axMOV ax,0xFB73
MOV dx,0x4DB8
MOV bx,0x26FF
MOV cx,int_87_address
STD
INT 0x87
CLDPOP es
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Replace the address at @address_to_replace with our private segment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV bx,es
MOV [si+(@address_to_replace-@code)+1],bx;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Save the location of @code for future use;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV bx,si
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Set ax to push ax, movsw;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV ax,0xA550
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Load survivor code to private segment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ADD di,2*loop_length
MOV cx,(@boom-@code)/2
REP MOVSW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Initialize segment registers;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH es
PUSH cs
POP es
POP ds
PUSH cs;MOV bp,cs
POP ss;MOV ss,bp;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Set si,di,sp to the locations of bombardment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
XOR si,si
MOV sp,bx
MOV di,bx;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Start at even address;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AND di,0xFFFE
MOVSW
NOP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Main loop code;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@code:
MOVSW
MOVSW
MOV cx,0x1000
MOVSW
MOVSW
MOV ss,cx
MOVSW
MOVSW
MOV es,cxMOVSW
MOVSW
MOVSW
AND sp,0xFFFE
MOVSW
MOVSW
MOVSW
MOVSW
SUB sp,bomb_spacingMOVSW
MOVSW
MOVSW
MOV ax,0xA550MOVSW
MOVSW
MOVSW
@address_to_replace:
MOV cx,int_87_addressMOVSW
MOVSW
MOVSW
AND dx,0x007F ;dx is the clock
MOVSW
DEC dx
MOVSW
MOVSW
MOVSW
MOVSW
JNZ @dont_die_yet
MOV ds,cx
@dont_die_yet:MOVSW
MOVSW
MOVSW
MOVSW
MOVSW
MOVSW
MOVSW
ADD di,jump_length
MOVSW
DB 0xE9
DW jump_lengthMOVSW
XOR si,si
MOVSW
@boom:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Zombies and Int 0x87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@zombie_code:CALL @here
@here:
POP bx
ADD bx,(@wait_loop-@here)
AND bx,0xFFFE
XOR dx,dx
MOV ax,0x204D
STOSW
JMP bx
@wait_loop:
JMP bxDB 0xCC
DB 0xCC
DB 0xCC@start2:
ADD ax,(@code-@beginning)
MOV si,ax;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Use int 0x87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH es
PUSH ds
POP esADD ax,(@zombie_code2-@code2)
MOV [int_87_address],axMOV ax,0xFB73
MOV dx,0x4DB8
MOV bx,0x26FF
MOV cx,int_87_address
STD
INT 0x87
CLDPOP es
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Replace the address at @address_to_replace with our private segment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV bx,es
MOV [si+(@address_to_replace2-@code2)+1],bx;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Save the location of @code for future use;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV bx,si
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Set ax to push ax, movsw;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV ax,0xA550
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Load survivor code to private segment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ADD di,2*loop_length
MOV cx,(@boom2-@code2)/2
REP MOVSW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Initialize segment registers;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH es
PUSH cs
POP es
POP ds
PUSH cs;MOV bp,cs
POP ss;MOV ss,bp;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Set si,di,sp to the locations of bombardment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
XOR si,si
MOV sp,bx
MOV di,bx;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Start at even address;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AND di,0xFFFE
MOVSW
NOP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Main loop code;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@code2:
MOVSW
MOVSW
MOV cx,0x1000
MOVSW
MOVSW
MOV ss,cx
MOVSW
MOVSW
MOV es,cxMOVSW
MOVSW
MOVSW
AND sp,0xFFFE
MOVSW
MOVSW
MOVSW
MOVSW
SUB sp,bomb_spacingMOVSW
MOVSW
MOVSW
MOV ax,0xA550MOVSW
MOVSW
MOVSW
@address_to_replace2:
MOV cx,int_87_addressMOVSW
MOVSW
MOVSW
AND dx,0x007F ;dx is the clock
MOVSW
DEC dx
MOVSW
MOVSW
MOVSW
MOVSW
JNZ @dont_die_yet2
MOV ds,cx
@dont_die_yet2:MOVSW
MOVSW
MOVSW
MOVSW
MOVSW
MOVSW
MOVSW
ADD di,jump_length
MOVSW
DB 0xE9
DW jump_lengthMOVSW
XOR si,si
MOVSW
@boom2:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Zombies and Int 0x87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@zombie_code2:CALL @here2
@here2:
POP bx
ADD bx,(@wait_loop2-@here2)
AND bx,0xFFFE
XOR dx,dx
MOV ax,0x204D
STOSW
JMP bx
@wait_loop2:
JMP bx;
mamaliga2
loop_length=0x180
jump_length=-6*loop_length
int_87_address=0x1324
bomb_spacing=0xA120@beginning:
JMP @startDB 0xCC
DB 0xCC
DB 0xCC@start2:
ADD ax,(@code-@beginning)
MOV si,ax;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Use int 0x87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH es
PUSH ds
POP esMOV word [0x4249],0x0040
ADD ax,(@zombie_code2-@code2)
MOV [int_87_address],axMOV ax,0xFB73
MOV dx,0x4DB8
MOV bx,0x26FF
MOV cx,int_87_address
STD
INT 0x87
CLDPOP es
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Replace the address at @address_to_replace with our private segment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Save the location of @code for future use;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Set ax to push ax, movsw;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MOV ax,0xA550
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Load survivor code to private segment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV dx,ax
INT 0x86
MOV cx,loop_length-0x100
INT 0x86
REP STOSW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Initialize segment registers;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH es
PUSH cs
POP es
POP ds
PUSH cs;MOV bp,cs
POP ss;MOV ss,bp;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Set si,di,sp to the locations of bombardment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV sp,si
MOV di,si
XOR si,si;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Start at even address;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AND di,0xFFFE
MOVSW
NOP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Main loop code;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@code2:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Zombies and Int 0x87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@zombie_code2:CALL @here2
@here2:
POP bx
ADD bx,(@wait_loop2-@here2)
AND bx,0xFFFE
XOR dx,dx
MOV ax,0x204D
STOSW
JMP bx
@wait_loop2:
JMP bxDB 0xCC
DB 0xCC
DB 0xCC@start1:
ADD ax,(@code-@beginning)
MOV si,ax;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Use int 0x87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH es
PUSH ds
POP esMOV word [0x4249],0x0040
ADD ax,(@zombie_code1-@code1)
MOV [int_87_address],axMOV ax,0xFB73
MOV dx,0x4DB8
MOV bx,0x26FF
MOV cx,int_87_address
STD
INT 0x87
CLDPOP es
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Replace the address at @address_to_replace with our private segment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Save the location of @code for future use;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Set ax to push ax, movsw;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MOV ax,0xA550
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Load survivor code to private segment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV dx,ax
INT 0x86
MOV cx,loop_length-0x100
INT 0x86
REP STOSW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Initialize segment registers;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH es
PUSH cs
POP es
POP ds
PUSH cs;MOV bp,cs
POP ss;MOV ss,bp;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Set si,di,sp to the locations of bombardment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV sp,si
MOV di,si
XOR si,si;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Start at even address;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AND di,0xFFFE
MOVSW
NOP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Main loop code;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@code1:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Zombies and Int 0x87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@zombie_code1:CALL @here1
@here1:
POP bx
ADD bx,(@wait_loop1-@here1)
AND bx,0xFFFE
XOR dx,dx
MOV ax,0x204D
STOSW
JMP bx
@wait_loop1:
JMP bxDB 0xCC
DB 0xCC
DB 0xCC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Real survivor starts here;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@start:ADD ax,(@code-@beginning)
MOV si,ax;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Use int 0x87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH es
PUSH ds
POP esMOV word [0x4249],0x0040
ADD ax,(@zombie_code-@code)
MOV [int_87_address],axMOV ax,0xFB73
MOV dx,0x4DB8
MOV bx,0x26FF
MOV cx,int_87_address
STD
INT 0x87
CLDPOP es
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Replace the address at @address_to_replace with our private segment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Save the location of @code for future use;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Set ax to push ax, movsw;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MOV ax,0xA550
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Load survivor code to private segment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV dx,ax
INT 0x86
MOV cx,loop_length-0x100
INT 0x86
REP STOSW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Initialize segment registers;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH es
PUSH cs
POP es
POP ds
PUSH cs;MOV bp,cs
POP ss;MOV ss,bp;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Set si,di,sp to the locations of bombardment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV sp,si
MOV di,si
XOR si,si;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Start at even address;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AND di,0xFFFE
MOVSW
NOP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Main loop code;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@code:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Zombies and Int 0x87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@zombie_code:CALL @here
@here:
POP bx
ADD bx,(@wait_loop-@here)
AND bx,0xFFFE
XOR dx,dx
MOV ax,0x204D
STOSW
JMP bx
@wait_loop:
JMP bxDB 0xCC
DB 0xCC
DB 0xCC@start3:
ADD ax,(@code-@beginning)
MOV si,ax;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Use int 0x87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH es
PUSH ds
POP esMOV word [0x4249],0x0040
ADD ax,(@zombie_code3-@code3)
MOV [int_87_address],axMOV ax,0xFB73
MOV dx,0x4DB8
MOV bx,0x26FF
MOV cx,int_87_address
STD
INT 0x87
CLDPOP es
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Replace the address at @address_to_replace with our private segment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Save the location of @code for future use;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Set ax to push ax, movsw;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MOV ax,0xA550
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Load survivor code to private segment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV dx,ax
INT 0x86
MOV cx,loop_length-0x100
INT 0x86
REP STOSW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Initialize segment registers;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH es
PUSH cs
POP es
POP ds
PUSH cs;MOV bp,cs
POP ss;MOV ss,bp;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Set si,di,sp to the locations of bombardment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV sp,si
MOV di,si
XOR si,si;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Start at even address;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AND di,0xFFFE
MOVSW
NOP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Main loop code;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@code3:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Zombies and Int 0x87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@zombie_code3:CALL @here3
@here3:
POP bx
ADD bx,(@wait_loop3-@here3)
AND bx,0xFFFE
XOR dx,dx
MOV ax,0x204D
STOSW
JMP bx
@wait_loop3:
JMP bxDB 0xCC
DB 0xCC
DB 0xCC@start4:
ADD ax,(@code-@beginning)
MOV si,ax;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Use int 0x87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH es
PUSH ds
POP esMOV word [0x4249],0x0040
ADD ax,(@zombie_code4-@code4)
MOV [int_87_address],axMOV ax,0xFB73
MOV dx,0x4DB8
MOV bx,0x26FF
MOV cx,int_87_address
STD
INT 0x87
CLDPOP es
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Replace the address at @address_to_replace with our private segment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Save the location of @code for future use;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Set ax to push ax, movsw;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MOV ax,0xA550
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Load survivor code to private segment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV dx,ax
INT 0x86
MOV cx,loop_length-0x100
INT 0x86
REP STOSW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Initialize segment registers;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH es
PUSH cs
POP es
POP ds
PUSH cs;MOV bp,cs
POP ss;MOV ss,bp;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Set si,di,sp to the locations of bombardment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV sp,si
MOV di,si
XOR si,si;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Start at even address;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AND di,0xFFFE
MOVSW
NOP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Main loop code;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@code4:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Zombies and Int 0x87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@zombie_code4:CALL @here4
@here4:
POP bx
ADD bx,(@wait_loop4-@here4)
AND bx,0xFFFE
XOR dx,dx
MOV ax,0x204D
STOSW
JMP bx
@wait_loop4:
JMP bxDB 0xCC
DB 0xCC
DB 0xCC -
מאתתגובות
- יש להתחבר למערכת על מנת להגיב.