Jeff Epler's blog

15 April 2022, 16:23 UTC

Generate the 64 GCR values used by Apple DOS 3.3 and ProDos


for i in range(128):
    b = f"{i:07b}"                    # All these tests apply to the low 7 bits
    if '000' in b: continue           # 3 consecutive zeros disallowed
    if b.count('00') > 1: continue    # only one pair of consecutive 0s allowed
    if not '11' in b: continue        # one pair of consecutive 1s required 
    print(hex(i | 128), bin(i | 128)) # top bit is always a 1

[permalink]

15 April 2022, 2:14 UTC

An interesting finding about Apple DOS 3.3 diskettes


I can't be the first to have noticed this, but if somebody wrote about it years ago there's no way a search engine today will turn it up since they over-value recency and pay little attention to little sites with niche information. So here's my write-up. It feels a little inconclusive, but so be it. I imagine that these disks were mastered in an unsual way, rather than by duplicating a disk written on an Apple II using normal Apple II RWTS code.

I've been working on an open source tool to convert .a2r to .woz. While doing so, I got pretty low level with the Apple flux encoding.

This encoding varied over the years, and of course what really matters is what would work on real machines in the wild.

But one central claim about Apple floppy formats is that early DOS before 3.3 used the repeated bit sequence "1111 1111 0" to allow the floppy interace's state machine to synchronize with the stream of bits on the floppy. Starting with DOS 3.3 and continuing with ProDOS, and ProDOS, the bit sequence "1111 1111 00" is used instead. The newer sequence (also called FF40, because its hex value is FF and it takes 10 bits or 40 microseconds to transmit; the old code is also called FF36) is longer, but fewer repetitions are required to guarantee synchronization.

So I was surprised to see the following when I peered into "DOS 3.3 System Master [1983] - Disk 1, Side A.a2r" from CowgodA2R on archive.org (as are all the a2r files I inspected for this blog post):

111111110    FF36
111111110    FF36
111111110    FF36
111111110    FF36
111111110    FF36
111111110    FF36
111111110    FF36
111111110    FF36
111111110    FF36
111111110    FF36
111111110    FF36
111111110    FF36
111111110    FF36
111111110    FF36
111111110    FF36
111111110    FF36
111111110    FF36
111111110    FF36
111111110    FF36
111111110    FF36
11111111     FF
11010101     D5
10101010     AA
10010110     96
11111111     FF
11111110     FE
10101010     AA
10101010     AA
10101111     AF
10101010     AA
11111010     FA
11111110     FE
11011110     DE
10101010     AA

That's right, the FF36 sequence appears in this DOS 3.3 floppy from 1983. Essentially the same sequence is seen on ProDOS User's Disk - Disk 1, Side A.a2r.

An even odder sequence is seen on the 1980 edition of DOS 3.3:

1111111100   FF40
1111111100   FF40
1111111100   FF40
1111111100   FF40
1111111100   FF40
1111111100   FF40
1111111100   FF40
1111111100   FF40
1111111100   FF40
1111111100   FF40
111111110    FF36
1111111100   FF40
11111111     FF
11111111     FF
11001111     CF
11110011     F3
11111100     FC
11111111     FF
11010101     D5
10101010     AA
10010110     96
11111111     FF
11111110     FE
10101010     AA
10101010     AA
10101011     AB
10101110     AE
11111110     FE
11111010     FA
11011110     DE
10101010     AA

The CF/F3/FC/FF sequence would be an FF40 sequence if the earlier FF bytes hadn't already left you synchronized, but .. there's absolutely no reason for it!

Finally, a disk from the "non-originals" section, which I assume means it's cracked software, has the sequence I expect (more or less) based on reading documentation from the time as well as modern emulator source code:

1111111100   FF40
1111111100   FF40
1111111100   FF40
1111111100   FF40
1111111100   FF40
1111111100   FF40
1111111100   FF40
1111111100   FF40
1111111100   FF40
1111111100   FF40
1111111100   FF40
11111111     FF
11010101     D5
10101010     AA
10010110     96
11111111     FF
11111110     FE
10101010     AA
10101010     AA
10101010     AA
10101011     AB
11111111     FF
11111111     FF
11111111     FF
11111111     FF
11101000     E8
10111111     BF
11111100     FC

[permalink]

15 March 2022, 21:13 UTC

An interesting Disk ][ Interface Card Fault


tl;dr: I recently got into 8-bit Apple retrocomputing due to my work with Adafruit. I had a Disk II setup that couldn't write to any floppy. I fixed it by replacing a 74LS05 IC on the Disk II Interface Card.

read more…

All older entries
Website Copyright © 2004-2024 Jeff Epler