Commit Graph

33 Commits

Author SHA1 Message Date
dg
0551ddc276 Add write support for Apple II 640kB disks. 2023-03-28 20:36:43 +00:00
dg
27a04ee22b Add initial support for the Basis-108. 2023-03-27 23:07:59 +00:00
David Given
d0fb85e712 Rename all the remaining layout and location variables to trackInfo (where
appropriate).
2022-09-16 00:20:54 +02:00
David Given
81cbd00cc8 Rename Track to TrackInfo, which better describes what it is. 2022-09-16 00:09:39 +02:00
David Given
4a565b5ea0 Split the Layout class. 2022-09-16 00:07:22 +02:00
David Given
82f61eee12 Eliminate Location in favour of Layout. 2022-09-15 23:52:07 +02:00
David Given
6b7e81d7fb Move requiredSectors() to the base class. 2022-09-13 00:32:04 +02:00
David Given
b48e1ba9e0 Remove the trivial collectSectors() methods which have been replaced by the
base class.
2022-09-12 23:55:52 +02:00
David Given
1267191e8e Abstract is for Java. 2022-09-12 23:52:24 +02:00
David Given
3cb098f9ba Rip out the old approach to soft sector remapping as it wasn't working. 2022-09-11 17:05:40 +02:00
David Given
dda713a6be Remove the rest of the mapper. 2022-09-10 22:47:35 +02:00
David Given
1a4caccd07 Rename Sector.logicalSector to Sector.physicalSector. 2022-09-10 18:59:06 +02:00
David Given
15eb88e922 Convert, hopefully, the remaining encoders to do automatic disk sizing. Ther e
may be bugs.
2022-03-29 01:23:35 +02:00
David Given
adff739a5d Partial conversion to do automatic scaling of flux based on the disk rotation
speed. Although, something seems to have broken for 5.25" disks.
2022-03-27 23:50:32 +02:00
David Given
178aa9d32f Remove the obsolete reader.* and rename writer.* to readerwriter.*. 2022-03-25 20:57:42 +01:00
David Given
86c5cccb08 Rename cylinder to track throughout (mostly). 2022-03-25 20:16:12 +01:00
David Given
d303067deb Massive refactor to work in logical cylinders everywhere. The logical/physical
mapping is now done at the last stage and should, ideally, be automatic. I'm
sure there are bugs everywhere.
2022-03-25 00:22:28 +01:00
Jeff Epler
61be3714a5 apple2: encoder: Fix writing of "FF40"
I was writing "FF40" as "FF48": 1111 1111 0000 instead of 1111 1111 00.
This sequence of four zeros will not allow the real hardware to synchronize
to the bitstream.

With this change, I was able to boot a DOS 3.3 disk I rearranged into
"physical" order; some 'there's a disk error' raspberries occur (probably
indicating a data error within a sector) during the boot process, so
something is still obviously marginal, but this is a huge step forward.
2022-03-08 07:44:03 -06:00
Jeff Epler
0aed615ee5 Fix crash when reading disks written on real apple2
`readRaw8` throws an exception if you run out of data. This did not
turn up during my testing, because I was reading back a disk written by
fluxengine, so everything was aligned to the index pulse and no sector
ever straddled a revolution. On a "real" apple2-written disk, this was
not the case.

Incidentally, the "extra 0" problem exists on a real apple2-written
floppy as well.
2022-03-07 22:40:33 -06:00
Jeff Epler
79eec41bcd Revamp how extra zeros are handled
It's not OK to call seek() here. Instead, add a function which can read
an apple 8-bit flux value in terms of readRaw8 and readRawBits. Apply
this function to all the data bytes, rather than just the first one.
2022-03-02 07:45:24 -06:00
Jeff Epler
d90fcbf7ad Handle extra 0-bits at the start of a sector 2022-03-02 07:43:45 -06:00
Jeff Epler
c4e4520058 apple2 decoder: explain the progression of sector status values 2022-03-02 07:43:43 -06:00
Jeff Epler
87cb4b6d18 Add apple2 encoder
This is tested with encodedecodetest.sh but is not tested on HW yet.
It's likely that the sector order (interleave) doesn't match real systems.
2022-02-28 16:22:53 -06:00
Howard M. Harte
8d04d17e39 Fix override warnings in decoders. 2022-02-22 22:45:39 -08:00
David Given
e8d1c90182 Fix, hopefully, the rest of the decoders. 2022-02-12 15:02:42 +01:00
David Given
0933dc1afa Partially complete rework of all the decoders to avoid seeking inside the
fluxmap. This requires resetting the FluxDecoder, which loses any pending
state, resulting in bad reads for (some) formats which don't have gaps between
sectors --- the DVK MX is the main victim.
2022-02-12 00:55:09 +01:00
David Given
42cacb18bd Lots of warning fixes. Can we switch to C++ 2A? 2021-08-04 20:29:04 +02:00
David Given
f589e094b2 Remove RawRecord, which is now obsolete. 2021-07-15 23:55:29 +02:00
David Given
ce463686dc Convert the Apple2 decoder. 2021-07-11 12:57:41 +02:00
David Given
f8674230ed Add prototypes for all the decoders because it's easier to do them in one go... 2021-07-11 12:52:34 +02:00
David Given
4ab8b4984d Rename all InputProto and OutputProtos for clarity. 2021-05-15 18:05:53 +02:00
David Given
1149ad86a2 Convert the Apple2 decoder. 2021-05-15 14:04:44 +02:00
David Given
4b07c38782 Mechanical refactor to rearrange the source files into a more pleasing order. 2019-08-06 22:25:11 +02:00