                               FYI

(Note:  The origin of this information may be internal or
external to Novell.  Novell makes every effort within its means
to verify this information.  However, the information provided in
this document is FOR YOUR INFORMATION only.  Novell makes no
explicit or implied claims as to the validity of this
information.)

          TITLE:  USING SID INSTEAD OF DEBUG TO CREATE A PATCH
   DOCUMENT ID#:  FYI-M-1114
           DATE:  02JAN93
        PRODUCT:  DR DOS
PRODUCT VERSION:  6.0
     SUPERSEDES:  13APR92

        SYMPTOM:  CONFUSION BETWEEN SID & DEBUG COMMANDS

  ISSUE/PROBLEM:  Software manufacturers occasionally make
changes to their software after it has been released to
customers.  Usually these are small changes to the instructions
that make up the software, sometimes effecting only 1 or 2 bytes
out of the entire program.  Since the changes are so small, they
can often be  completed  by  the customer by following a patch
listing  from  the manufacturer. These patch listings depend on
the use of DEBUG.  A typical patch listing could look like this:

1) COPY BROKFILE.EXE BROKFILE.SAV
2) DEBUG BROKFILE.EXE
3) -S 100 L FFFF B2 01 7C 56 8B 1E
4) -E xxxx:yyyy 91 92 93 94 88 1F
5) -W
6) -Q

DR DOS has a similar utility called SID.  While the function of
the two applications is the same, the actual commands are a
little different.  What follows is a typical DEBUG listing, its
SID equivalent and a description of each step.



STEP 1, DEBUG COMMAND LINE:   COPY BROKFILE.EXE BROKFILE.BAK
STEP 1, SID COMMAND LINE:     same command

STEP 1, DESCRIPTION:          Just in case things do not go
asplanned, make a backup


STEP 2, DEBUG COMMAND LINE:   DEBUG BROKFILE.EXE
STEP 2, SID COMMAND LINE:     SID
                              #RBROKFILE.EXE,100

STEP 2, DESCRIPTION:          DEBUG is loading and reading the
subject file into memory. To accomplish this in SID, type SID at
the command line and then use the R command to read the subject
file into memory starting at memory offset address 100. SID will
display the starting and ending address of the file in memory in
a SEGMENT:OFFSET format. Note these addresses.


STEP 3, DEBUG COMMAND LINE:   -S 100 L FFFF B2 01 7C 56 8B 1E
STEP 3, SID COMMAND LINE:     #SR100,FFFF,B2 01 7c 56 8B 1E

STEP 3, DESCRIPTION:          DEBUG is searching from the offset
address 100 to the last address of FFFF (a hexadecimal number)
for the pattern of bytes listed (B2 01 7C 56 8B 1E).  This is a
pattern that is unique to the area or areas of the file that need
to be changed. DEBUG will return the addresses of the desired
patterns in a SEGMENT:OFFSET format like 2345:1DF5. The specific
values returned will vary. There may be more than one found. The
patch listing will usually refer to these values as 'xxxx:yyyy'.
The  SID SR command is very similar. Some  of  the arguments are
separated with commas instead of  spaces. The  address  or 
addresses that  contain  the  desired pattern will be returned in
the same xxxx:yyyy  format. Record the addresses returned.
      



STEP 4, DEBUG COMMAND LINE:   -E xxxx:yyyy 91 92 93 94 88 1F
STEP 4, SID COMMAND LINES:    #Sxxxx:yyyy
                              xxxx:yyyy B2 91
                              xxxx:yyyz 01 92
                              xxxx:yyya 7C 93
                              xxxx:yyyb 56 94
                              xxxx:yyyb 8B 88
                              xxxx:yyyb 1E 1F
                              xxxx:yyyb 22 .
                              #

STEP 4, DESCRIPTION:          DEBUG is entering new values for
the bytes in memory.  This is how the software is actually
changed.  The xxxx:yyyy is the address at which the new values
should be added.  The following numbers are the new values
themselves.  In SID, use the S command and specify where the new
values should start.  SID will display that starting address and
the current value in memory and be waiting for the new value. 
Enter the first value listed after xxxx:yyyy in the -E command
line of the patch listing.  Press Enter.  SID will now show the
next address and its current value and be waiting for the new
value.  Enter the next value in the DEBUG -E command line. 
Continue entering the remaining values.  After the last value has
been entered, SID will display the next address and be waiting
for a new value. Simply enter a '.' and press ENTER.  SID will
return to its '#' prompt.


STEP 5, DEBUG COMMAND LINE:   -W
STEP 5, SID COMMAND LINE:     #WBROKFILE.EXE

STEP 5, DESCRIPTION:          The updated version of the software
is written from memory to the original file name. In SID use the
W command followed by the filename.


STEP 6, DEBUG COMMAND LINE:   -Q
STEP 6, SID COMMAND LINE:     #Q

STEP 6, DESCRIPTION:          You're done. Quit. SID's command is
the same.


The following example shows what this patch looks like using SID.

[DR DOS] C:\MYFILES>SID
--------------------------------------------------
*** Symbolic Instruction Debugger ***  Release 3.2
      Copyright (c) 1983,1984,1985,1988,1990,1991
    Digital Research, Inc. All Rights Reserved
--------------------------------------------------

#RBROKFILE.EXE,100
  Start      End
1056:0100 2056:7BF2
#SR100,FFFF,B2 01 7C 56 8B 1E
1056:2344
#S1056:2344
1056:2344 B2 91
1056:2345 01 92
1056:2346 7C 93
1056:2347 56 94
1056:2348 8B 88
1056:2349 1E 1F
1056:234A B8 .
#WBROKFILE.EXE
#Q

[DR DOS] C:\MYFILES>
