← Back to context

Comment by dwgumby

3 days ago

I worked at Franklin and was one an early hire. Using the Apple ROM code was an explicit choice. There was no real defined API so a lot of apps called random routines in ROM or referenced arbitrary ROM data and if it wasn’t there the app broke. Franklin’s argument was that the ROM was the API and if you wanted to be compatible it had to be identical.

Court didn’t agree, probably rightfully so. But Franklin was a fun place to work. It survived for years after the court decision and pivoted to making handheld gadgets. Their electronic Bible was apparently really popular in some circles.

Honestly their argument works for me. It truly cannot be "100% compatible" without sharing the same memory layout/contents in this case.

Unfortunately for Franklin, that also meant that full compatibility comes hand and hand with trademark & copyright violations. I find it more "sad" than "upsetting" as the original author implies in this piece.

Personally, I love cloned hardware and software. I seek out clones when I can and even make my own (for fun, not profit.) I have a few Atari 2600 hardware clones I designed and built along with eprom cloning software and burning hardware. Not for any real reason, just because I like figuring out how hardware and software works and cloning is often a means to that end.

  • Right, but it took a couple tries to get the courts to understand this. The idea of "software compatibility" was completely novel to copyright judges, and there's no parallel in other creative endeavors. The closest thing I could think of would be writing in someone else's creative universe, but in that case, it's crystal clear you don't get to do that without a license[0]. The courts just decided - later on, when defendants armed with better arguments and copyright hygiene[1] showed up - that software copyright has to be thinner than other copyrights, else there is no way for the owner of a program to legally separate themselves from the software libraries, ROM code, or OS they run on.

    Even then, you don't get to just say "we need this for compatibility", you have to actually find software that breaks if you do it any other way. The act of reimplementation is both reverse engineering technique as well as legal technique - you are building up a series of excuses for specific acts of copying. What Franklin did the first time around was go straight for the conclusion they wanted, which courts really, really don't like. Courts want to see your struggle.

    [0] In fact, Oracle's argument against Android in Google v. Oracle hinged on their ability to make reimplementation of Java functions sound like plagiarizing Harry Potter.

    [1] The words "clean room reimplementation" get thrown around all the time, but it's not strictly necessary to be clean-room. The precedent for compatible reimplementations includes Sony v. Connectix, where the latter was very much copyright-tainted and won anyway.

  • > Unfortunately for Franklin, that also meant that full compatibility comes hand and hand with trademark & copyright violations.

    Franklin eventually released a couple of clones which were compatible and had a clean BIOS (the 500 and 2000). I'm not sure about full compatibility but I never encountered anything that wouldn't run on my 500. To be fair, I got the thing in the mid nineties and only ran a few programs on it...

    • "Copy protections" back in the day often looked for fixed strings in seemingly random places. In the worst cases, this even went outside the machine's memory addresses. Several programs I had would farm this task out to the users and ask for specific words from specific pages in manuals on particular lines. I had to hex dump the binary's lookup tables to even get older software to run many a time ;-)

  • How do you design Atari 2600 clones? Do you have to replicate the TIA?

    • Apparently my terse sister comment is beyond the edit timeout threshold, I had meant to follow up with more details.

      If there's interest around general "chip emulation" techniques I've employed, I could try and do a blog write-up. The first attempt was using a PIC32 with a bunch of lookup tables a couple decades ago. Then I played with fpgas (the cheap lattice ones.) My latest attempts relied on a combination of SoC and inline rom dumps using all the known bank switching schemes, which tbh was a pita to validate until I finally bought a harmony cart (I was eproming up until a decade ago.) The SoC design allowed me to use a ARM that could output HDMI (via daughter board) with various filters to mimic CRTs artifacts and the like which I found fun.

How big was the Franklin back then? My uncle worked there in the 1980s, but I was a kid and have no concept of if it was a scappy startup or a midsized company.

  • When it started it was a scrappy startup, a handful of people. I went there because my old boss, Dave McWherter, essentially was the engineering department. Grew slowly to maybe a hundred people. Then exploded to several times that at least. At the end there were active projects for: a portable Apple II clone, a PC clone, portable CP/M machine (think Osbourne One), MSX game machine, and probably more. Way too big way too fast.

    So I have to ask, who is your uncle and where did he work in Franklin?