home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
RBBS in a Box Volume 1 #3.1
/
RBBSIABOX31.cdr
/
xref
/
xcopy.pat
< prev
next >
Wrap
Text File
|
1987-05-16
|
4KB
|
94 lines
How to make XCOPY work with all versions of DOS
*******************************************************************************
Notes - My version of XCOPY is dated 30-Dec-85 (12-30-85), 12.00 PM.
The filesize is 11200 bytes.
If your copy is identical, the numbers which I give may be used in
the patch. If not, follow the entire procedure, in order to find
the correct locations.
I have been using the patched version with DOS 3.1 for several
months. It should also work with 3.0.
I DO NOT recommend using the patched program with any version of DOS
before 3.0 (ie, 1.0 2.0, 2.1...) I doubt that the former versions
have certain necessary functions for XCOPY's use. Try it on a scratch
disk - if it works, be happy - if it doesn't, invest in a copy of 3.1.
*******************************************************************************
Follow the procesure shown below, using SYMDEB (or DEBUG, or your favorite)
to patch the program file.
Segment addresses, the first 4 digits before the colons, are shown here as
'xxxx' as they will vary from machine to machine. The offsets, i.e. the 4
digits following the colons, must be as shown. You type the 4 digit
segment address you see before the indicated offset, when using the
'u' and 'a' commands.
C:>ren XCOPY.EXE XCOPY.XXX
C:>symdeb xcopy.xxx
Microsoft (R) Symbolic Debug Utility Version 4.00
Copyright (C) Microsoft Corp 1984, 1985. All rights reserved.
Processor is [80286]
-s ds:0000 ds:cx B4 30 ; You type: ds:0000 ds:cx B4 30
xxxx:292A
-u xxxx:292A ; You type: u xxxx:292A
xxxx:292A B430 MOV AH,30
xxxx:292C CD21 INT 21
xxxx:292E 86E0 XCHG AH,AL
xxxx:2930 3D1403 CMP AX,0314
xxxx:2933 7410 JZ 2945
xxxx:2935 8D16B022 LEA DX,[22B0]
xxxx:2939 B409 MOV AH,09
xxxx:293B CD21 INT 21
-a 2933 ; You type: a 2933
xxxx:2933 jmp short 2945 ; You type: jmp short 2945
xxxx:2935 <return> ; Press Return
-u xxxx:292A ; You type: u xxxx:292A
xxxx:292A B430 MOV AH,30
xxxx:292C CD21 INT 21
xxxx:292E 86E0 XCHG AH,AL
xxxx:2930 3D1403 CMP AX,0314
xxxx:2933 EB10 JMP 2945
xxxx:2935 8D16B022 LEA DX,[22B0]
xxxx:2939 B409 MOV AH,09
xxxx:293B CD21 INT 21
-w
Writing 2CB0 bytes
-q
C:>ren XCOPY.XXX XCOPY.EXE
*************************************************************************
What this procedure actually does:
A - REN XCOPY.EXE XCOPY.XXX
The rename is needed to fool SYMDEB (or DEBUG or whatever) into
thinking that we are patching a text file. Without the rename, it
would think that we are debugging the file, fix all memory references,
and later use would be impossible.
B - The "s" and "u" commands:
You are searching for the command MOV AH,30. This is the call to DOS
which returns the version number. After you dissassemble the returned
location, you can see that this version number is checked against the
the value 3.20 (high byte is 3, low byte is 20). If it is correct, a
jump (JZ, Jump if Zero) skips the code which displays a nasty message
and exits.
C - The "a" command:
With this, we replace the conditional jump by an unconditional jump.
We then do another dissassembly, to confirm that we haven't trashed
anything important.
D - REN XCOPY.XXX XCOPY.EXE
Makes it usable.