4am Profile picture
Sep 17, 2020 21 tweets 6 min read Read on X
I spent some quality time reading the Essential Data Duplicator manual, as one does. This was the best bit copier ever written for the Apple ][. It received updates until 1993 (!) and never branched out into general disk/file utilities. It was what it was and made no apology.

1/
The manual is well-written, extremely technical, and pulls no punches. Here it accuses the author of Locksmith (another popular bit copier) of inventing and productizing a copy protection scheme, i.e. playing both sides.

2/ GENERIC BITSLIP COPY-PROTEC...
And here it reveals how the popular "Lock-It-Up" protection worked.

3/ LOCK-IT-UP COPY-PROTECTION:...
Like several other bit copiers, Essential Data Duplicator invented what we would now call a DSL (domain-specific language) for declaring how to copy specific disks. Here is its annotated DSL routine for copying "Lock-It-Up".

4/ Image
In prose, this searches the track buffer for the address prologue for track $00 sector $0A, and replaces the entire data field with $00 nibbles. Due to limitations of the Apple ][ disk hardware, you can write $00 nibbles but they will get read back as random data.

5/
Since EDD can't distinguish this random nonsense data from, you know, actual data, it includes this routine to rewrite the sector. Note that the routine is not executed by default. You have to enable it per-disk.

6/
This is how all bit copiers worked. They included specialized routines for copying specific disks, but they punted the analysis to the end user. Then they sold parameter lists as updates, either on paper or on disk, that mapped programs to the routines that could copy them.

7/
There was a LOT of domain knowledge in these parameter lists, but sadly, there was not a lot of quality control. Many were submitted by end users. Others were scraped from questionable sources. Everything was aggregated and nothing ever removed, because you never know.

8/
Publishers frequently rereleased popular titles with new protection (which was productized and sold by disk duplication companies), so... maybe try this? Or that? Or one of these others from another company?

9/ Image
There were rumors.

10/ Image
There was history.

11/ Image
There were digs at competitors.

12/ Image
There were exclamation points!!!

13/ Image
There was even the occasional admission of defeat.

14/ Image
I knew basically none of this history when I started cracking (in 2014) or started writing Passport (in 2016). It's interesting to go back now and compare the collective wisdom of 1993 with what we've (re)learned in the modern era.

15/
For example, I rediscovered the "Lock-It-Up" protection because I kept finding it on individual disks, and I eventually realized it was productized, but I didn't know it had a name. Passport just called it "the $BB00 protection check" until yesterday: github.com/a2-4am/passpor…

16/
I rediscovered the "generic bit-slip" protection in 2015, reverse engineered it by looking at the protection code, and called it the E7 bitstream.

17/
I was not the first to figure out any of this. Here's a great write-up on "generic bit-slip" protection by Michael Kelsey in 1993, including a method of resynchronizing the bitstream: groups.google.com/d/msg/comp.sys…

18/
The defeat-by-resynchronization was rediscovered by @a2_qkumba in 2015: hackzapple.com/phpBB2/viewtop…

19/
I later minimized qkumba's resynchronization method down to a 12-byte patch, which I included in Passport. github.com/a2-4am/passpor…

20/
What I'm saying is that, in 2043, someone who's never heard of 4am or qkumba or Passport is going to rediscover how Apple ][ copy protection works, from the bits up, and I hope they enjoy it as much as I have.

That's not where I thought this thread was going, but okay.

/fin

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with 4am

4am Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @a2_4am

Oct 28, 2021
One of the improvements in the (unreleased) Total Replay 5 is a massive influx of super hi-res box art. @helix_nrg and other Apple IIgs fans have been on a mission to find, scan, and retouch the original artwork for Apple II games.
A lot of people have fond memories of their favorite Apple II games, but have you ever even seen the original box? But could you pick the box out of a line-up? Did you even know they came in boxes?
"Captain Goodnight and the Islands of Fear," scanned and retouched by @helix_nrg screenshot of Apple IIgs em...
Read 13 tweets
Feb 3, 2020
Fraktured Faebles

archive.org/details/Fraktu…

Passport log: archive.org/download/Frakt…

Video: archive.org/details/A2Vide…

Thanks to @A2_Canada for the disk! title screenshot from flux visualization of
Funny story about this game: it basically doesn't exist. The company was pivoting away from the Apple ][ right as it was going to production. The number of copies sold rounds to zero.
A classic crack exists and appears complete (modulo the defaced title screen). This crack uses side B of the classic crack, which does not appear to be defaced. (It contains compressed graphics, non-trivial to change without proper tooling.)
Read 6 tweets
Dec 14, 2019
Shortly after the release of Total Replay v2, @a2_qkumba and I embarked on a month-long refactoring binge, which eventually (d)evolved into the most ridiculous game of 6502 code golf you've ever seen.

1/
My first major refactor was to create the global variable gGameToLaunch and keep it updated. Previously, pressing RETURN would invoke a context-specific routine that figured out which game was showing on the screen, then launch it.
This commit <github.com/a2-4am/4cade/c…> creates gGameToLaunch and modifies routines throughout Total Replay to keep it up to date. Whenever we load a new screenshot — whether in search mode or browse mode or attract mode — we update that single variable.
Read 19 tweets
Nov 22, 2019
Lane Mastodon vs. The Blubbermen.woz

archive.org/details/wozada…

#wozaday title screenshot from "...credits screenshot from &qu...gameplay screenshot from &q...flux visualization of "...
Indiana Jones in Revenge of the Ancients

archive.org/details/wozada…

Thanks to @danc256 and mocagh.org for the disk!

#wozaday title screenshot from "...gameplay screenshot from &q...flux visualization of "...
Read 420 tweets
Nov 4, 2019
Some notes on Buck Rogers:

First off, sectors on tracks are normally delimited by "sync fields" of nibbles that allow the disk controller code to get in phase with the nibbles, no matter where it starts. (It can't tell where it is within a track when it seeks to it.)

1/
"Sync" nibbles are usually eight "1" bits (0xFF) followed two "0" bits. Because reasons (read "Beneath Apple DOS"), this allows 6502 disk reading code to get back in sync quickly if it happened to start reading data in the middle of a byte, which happens most of the time.
Furthermore, the Disk ][ has a hardware limitation that limits the stable representation of data on disk: it can only reliably read two "0" bits in a row. This is why sector data can't just be stored as-is on disk; there has to be an intermediate format (6-and-2 encoded nibbles).
Read 16 tweets
Sep 20, 2019
Story time.

In 1981, @jmechner tried and failed to publish an Asteroids clone for the Apple II. It looked like this: title screenshot from gameplay screenshot from
38 years later (so, this year), @a2_qkumba ported it to ProDOS and we included it in "Total Replay," our pack of 200+ Apple II games <archive.org/details/TotalR…>. Our version looked like this. gameplay screenshot of
Shortly thereafter, someone reported a bug against Total Replay that Asteroid Blaster had corrupted graphics. This is ironic since Jordan had gone to great lengths to ensure that the asteroids looked exactly like the original, and this is why the game was ultimately canceled.
Read 7 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(