From: Philip.Belben(a)pgen.com
Subject: Re: Audio Cassette formats; Copy protection?
::There are plenty of ways of preventing a BASIC
program from being
listed.
::Dunno how you prevent it being saved (and say
'BAD PROGRAM'), but I
could
>::probably figure it out given time... Anyone else?
The popular (quick) way was to put an RTS in the second cassette buffer with a
SYS in the code pointing to it. (on the PET) and save the program from that to
the end using the MLM. Then if someone SAVEs it regular and tries it it just crashes.
The most ingenious PET protection was to put a bit of code in the FIRST
cassette buffer, so you had to save it from the second cassette port using the
MLM to make a runnable copy. Second would be to plug a bit of code into the
chargot (I think) routine in low memory which will trick the computer in
running the program once loaded (this could easily be bypassed on the PET, but
on the 64, it was pretty fool-proof.
On the 64 if you can get to the vectors before the user can try SAVing, you
change the jump address for SAVE (locations 818,819) to your own location.
On the 64, you
could type
10 remL
(rem, then a shifted-L)
and LIST will stop up with a ?SYNTAX ERROR when it hits that line.
Rather
easy to defeat but annoying as heck. :-)
Same on Basic 2 PETS. On BASIC 1 you used shift-K.
The character varys on the computer. I think Transactor or Compute did a
table of em once.
Possibility that I thought of, but didn't try.
Make the initial line a v.
high line number (>63999). Have the program start rem L, then disable the
stop key, then poke that line number to something smaller. Bit harder to
defeat but won't deter the determined cracker.
Mean trick I did use. In the middle of a subroutine I entered the line
REM@TURN
I then found the @ sign and poked the location with 20 (ctrl-T, the PET
backspace)
This now lists as RETURN but does nothing...
So was this to twart those modifying the code, or tracing it?... Oh... add a
REM shift-l after it, once the 'fix' it it still doesn't work.
Only problem with the delete character is if you list to a printer they will
all show up.
Philip.
That same PET program had an ingenious listing protection too, the first two
lines were only listable and they were effectively masked by rems with a bunch
of delete characters. What the programmer did was break the line links after
the second line so the computer thought it was a two line program. But when
run the two lines restored the link via POKEs, once it was running past that
point, it restored the line break.
If you are curious to see this marvel in action it is on-line; check out my
Flash Attack page and download either of the PET versions, this was written by
Tim Stryker years before he founded Galacticomm.