Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!uunet!cs.utexas.edu!asuvax!anasaz!chad From: chad@anasaz.UUCP (Chad R. Larson) Newsgroups: comp.os.cpm Subject: Re: MOVCPM has copy protection Message-ID: <1288@anasaz.UUCP> Date: 11 Feb 90 22:02:59 GMT References: <1534@shell.shell.com> <9719@spool.cs.wisc.edu> Reply-To: chad@anasaz.UUCP (Chad R. Larson) Distribution: usa Organization: Anasazi, Inc. Lines: 43 In article <9719@spool.cs.wisc.edu> tonyrich@titanic.cs.wisc.edu (Anthony Rich) writes: +--------------- | If anyone has or can invent a workaround for the "Synchro error" copy | protection, I'd appreciate being informed so I can get my CP/M reconfigured | and booting happily again on my new drive. Apparently the copy protection | is smart enough that you can't simply step over it using DEBUG. +--------------- Ok, as much as I dislike postings that say "I think this is it" instead of "I know this is it"; I figured all this out a long time ago, and here is what I remember: The copy protection consists of checking the serial numbers of the CCP and/or the current running CP/M and the BDOS image contained in the MOVCPM program. You CAN use "debug" (you meant DDT or SID, right?) to make the serial numbers match. The serial number in the CCP must match the one in the BDOS also, or your CP/M won't boot. It will move the instruction pair DI, HALT to the beginning of the warm start code and jump to it. The serial number is the first 6 bytes in the BDOS (that is why your BDOS address is always something like E406 instead of E400). It is also contained in the CCP at about 0328H offset (if I remember correctly). In the MOVCPM code is a relocatable image of your CP/M, and a table of the offsets to the bytes that will have to be relocated to make a runnable image where you want it. The image is assembled to run at (??? -- for a 20K?? memory) and when you specify a different size memory the new high-order nybble of the addresses are plugged where indicated by the offsets. This is very much like what Digital Research wound up calling "Page Relocatable" (PRL) code in MP/M and CP/M 3.x systems. If you have documentation to either of them it could be helpful. Anyway, a little dissassembly and single-stepping of MOVCPM with DDT will show you where the "syncronization error" message is issued. Use DDT to make all the serial numbers match up (preferably to yours) and you should be OK. -crl -- Chad R. Larson ...{mcdphx,asuvax}!anasaz!chad or chad@anasaz.UUCP Anasazi, Inc. - 7500 North Dreamy Draw Drive, Suite 120, Phoenix, Az 85020 (602) 870-3330 "I read the news today, oh boy!" -- John Lennon