[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Mystery DOS 3.3 mod.



My Apple II and books are mostly buried. However, often a patch like
that could be used to abort a test condition and return with no error.
I often used it to disregard the trailer bytes and/or checksum routine
to copy a disk that was reporting sector data errors. Is the code
snippet in an area where that is possible?

The situation is usally one where the drive speed was off enough that
a "write" to the disk caused the closing "address trailer" bytes of a
sector to be overwritten. These didn't actually contain data; it was
just three bytes written after the checksum. RWTS checks the first two
of these (as I recall, the third could be disregarded) to confirm it
is at the end of the sector. However, since they don't contain any
real data, if the failure to read them correctly is all that's
preventing the sector from being read, then disregarding them may
allow you to recover the data. (You could additionally disregard the
checksum at the risk of having some bad data accepted, but in the
instance of a recovery this may also be desirable.)

Some copy protection schemes also monkey'd with the trailer bytes, and
a program might patch out the checksum routine (which had questionable
reliability anyway; I think one or two of the "accelerated DOSes"
patched it out as well for speed improvement) so that it could read
both "normal" and "protected" disks without major tricks.

This is all from 25+ year-old rememberence, so take it with the
appropriate-sized grain of salt. :)

In article <3B2B70CA.730E14C6@swbell.net>, Rubywand
<rubywand@swbell.net> wrote:

>Leslie Ayling writes ...
>
> ....
>
>> Are you sure that the the DOS on the disk is indeed standard
>> AppleDOS 3.3?
>> 
>> A quick disassembly of the area shows that these 2 pokes
>> would modify the last 2 bytes of a three byte instruction.
>>
>
>     Looks like you may be off by a byte. The mod overwrites the first two
>bytes of a three-byte instruction ...
>
>B925- BC 8C C0   LDY $C0C8,X
>
>becomes
>
>B925- 18         CLC
>B926- 60         RTS
>B927- xx         xxx
>
>
>The code in the routine after the RTS does not matter because the routine is
>terminated.
>
>
> 
>> Perhaps it is a modified RWTS routine that is on the disk?
>> 
> ....
>
>     It would be a very unusual RWTS modification. Again, though, it seems that
>you are just slightly misreading the code.
>
>     This part of DOS 3.3 is not changed in any Apple version I've come across.
>In the later 1980's, those writing Computist articles about "Enhanced" versions
>of COPYA (which include the POKEs mentioned) did not need to be concerned about
>the version of DOS 3.3 which was being patched.
>
>
>
>Rubywand

 --
Dennis Doms  SynABit@kc.invalid
[ObSpamFoil: substitute "rr.com" for "invalid" above to reply via mail.]
"In the end, only kindness matters." - "Hands", Jewel Kilcher