The latest mamaliga source code…

עמוד
מוצגות 1 תגובות (מתוך 1 סה״כ)
  • מאת
    תגובות
  • #76802
    GalDor
    משתתף

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

    DB 0xCC
    DB 0xCC
    DB 0xCC

    @start1:

    ADD ax,(@code-@beginning)
    MOV si,ax

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Use int 0x87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    PUSH es
    PUSH ds
    POP es

    ADD ax,(@zombie_code1-@code1)
    MOV [int_87_address],ax

    MOV ax,0xFB73
    MOV dx,0x4DB8
    MOV bx,0x26FF
    MOV cx,int_87_address
    STD
    INT 0x87
    CLD

    POP 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,cx

    MOVSW
    MOVSW
    MOVSW
    AND sp,0xFFFE
    MOVSW
    MOVSW
    MOVSW
    MOVSW
    SUB sp,bomb_spacing

    MOVSW
    MOVSW
    MOVSW
    MOV ax,0xA550

    MOVSW
    MOVSW
    MOVSW
    @address_to_replace1:
    MOV cx,int_87_address

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

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

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

    ADD ax,(@zombie_code-@code)
    MOV [int_87_address],ax

    MOV ax,0xFB73
    MOV dx,0x4DB8
    MOV bx,0x26FF
    MOV cx,int_87_address
    STD
    INT 0x87
    CLD

    POP 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,cx

    MOVSW
    MOVSW
    MOVSW
    AND sp,0xFFFE
    MOVSW
    MOVSW
    MOVSW
    MOVSW
    SUB sp,bomb_spacing

    MOVSW
    MOVSW
    MOVSW
    MOV ax,0xA550

    MOVSW
    MOVSW
    MOVSW
    @address_to_replace:
    MOV cx,int_87_address

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

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

    DB 0xCC
    DB 0xCC
    DB 0xCC

    @start2:

    ADD ax,(@code-@beginning)
    MOV si,ax

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Use int 0x87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    PUSH es
    PUSH ds
    POP es

    ADD ax,(@zombie_code2-@code2)
    MOV [int_87_address],ax

    MOV ax,0xFB73
    MOV dx,0x4DB8
    MOV bx,0x26FF
    MOV cx,int_87_address
    STD
    INT 0x87
    CLD

    POP 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,cx

    MOVSW
    MOVSW
    MOVSW
    AND sp,0xFFFE
    MOVSW
    MOVSW
    MOVSW
    MOVSW
    SUB sp,bomb_spacing

    MOVSW
    MOVSW
    MOVSW
    MOV ax,0xA550

    MOVSW
    MOVSW
    MOVSW
    @address_to_replace2:
    MOV cx,int_87_address

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

    MOVSW
    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 @start

    DB 0xCC
    DB 0xCC
    DB 0xCC

    @start2:

    ADD ax,(@code-@beginning)
    MOV si,ax

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Use int 0x87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    PUSH es
    PUSH ds
    POP es

    MOV word [0x4249],0x0040

    ADD ax,(@zombie_code2-@code2)
    MOV [int_87_address],ax

    MOV ax,0xFB73
    MOV dx,0x4DB8
    MOV bx,0x26FF
    MOV cx,int_87_address
    STD
    INT 0x87
    CLD

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

    DB 0xCC
    DB 0xCC
    DB 0xCC

    @start1:

    ADD ax,(@code-@beginning)
    MOV si,ax

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Use int 0x87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    PUSH es
    PUSH ds
    POP es

    MOV word [0x4249],0x0040

    ADD ax,(@zombie_code1-@code1)
    MOV [int_87_address],ax

    MOV ax,0xFB73
    MOV dx,0x4DB8
    MOV bx,0x26FF
    MOV cx,int_87_address
    STD
    INT 0x87
    CLD

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

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

    MOV word [0x4249],0x0040

    ADD ax,(@zombie_code-@code)
    MOV [int_87_address],ax

    MOV ax,0xFB73
    MOV dx,0x4DB8
    MOV bx,0x26FF
    MOV cx,int_87_address
    STD
    INT 0x87
    CLD

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

    DB 0xCC
    DB 0xCC
    DB 0xCC

    @start3:

    ADD ax,(@code-@beginning)
    MOV si,ax

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Use int 0x87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    PUSH es
    PUSH ds
    POP es

    MOV word [0x4249],0x0040

    ADD ax,(@zombie_code3-@code3)
    MOV [int_87_address],ax

    MOV ax,0xFB73
    MOV dx,0x4DB8
    MOV bx,0x26FF
    MOV cx,int_87_address
    STD
    INT 0x87
    CLD

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

    DB 0xCC
    DB 0xCC
    DB 0xCC

    @start4:

    ADD ax,(@code-@beginning)
    MOV si,ax

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Use int 0x87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    PUSH es
    PUSH ds
    POP es

    MOV word [0x4249],0x0040

    ADD ax,(@zombie_code4-@code4)
    MOV [int_87_address],ax

    MOV ax,0xFB73
    MOV dx,0x4DB8
    MOV bx,0x26FF
    MOV cx,int_87_address
    STD
    INT 0x87
    CLD

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

    DB 0xCC
    DB 0xCC
    DB 0xCC

מוצגות 1 תגובות (מתוך 1 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.