Thomas Harte
9d60172571
Merge pull request #93 from TomHarte/ReadWriteTrack
...
Implements the Type 3 WD177x commands
2017-01-01 21:01:56 -05:00
Thomas Harte
eca3995481
Added a CRC check for read address, ensured CRC, lost data and record not found are initially reset.
2017-01-01 21:00:25 -05:00
Thomas Harte
044c920a5b
Made it more explicit that there are no unhandled cases.
2017-01-01 20:56:52 -05:00
Thomas Harte
0df9ce5a76
Made an attempt at read address. So superficially that leaves only the force interrupts.
2017-01-01 20:55:09 -05:00
Thomas Harte
f94f34f053
Made an attempt at read track. Which means process_input_bit can't just swallow syncs any more; it now reports them as tokens of type ::Sync.
2017-01-01 20:39:19 -05:00
Thomas Harte
4ad2d2bedd
Merge branch 'master' into ReadWriteTrack
2017-01-01 20:04:22 -05:00
Thomas Harte
e28f72d919
Merge pull request #90 from TomHarte/TravisCI
...
Introduces a shared Xcode scheme plus a first attempt at Travis CI integration
2017-01-01 20:03:26 -05:00
Thomas Harte
c994fa39f6
Ensured spin-up doesn't occur if there's no motor line.
2016-12-31 16:18:30 -05:00
Thomas Harte
1ea4f0d79d
Made an attempt to implement 'write track' and ensure that 'write sector' can't end without announcing that it has ended writing.
2016-12-31 16:01:44 -05:00
Thomas Harte
0689df1349
Merge pull request #92 from TomHarte/MFMCleanup
...
Adds some documentation and tidies some of the new MFM infrastructure
2016-12-31 15:32:11 -05:00
Thomas Harte
b3c33d993a
Made an attempt to explain the requirements placed upon Disk
subclasses that wish to support writing.
2016-12-31 15:30:48 -05:00
Thomas Harte
8eb21c6702
The "MFM...Byte"s aren't MFM-specific, they're relevant to both FM and MFM encoding. So renamed them. Also slimmed syntax within MFM.cpp mostly where emigration from the Acorn disk analyser had left a residue of lengthy namespace specification.
2016-12-31 15:25:11 -05:00
Thomas Harte
4c62487e6e
Merge pull request #91 from TomHarte/TableCRC
...
Switches to a table-based implementation of CRC generation
2016-12-31 14:16:17 -05:00
Thomas Harte
a147d56ce6
Switched to a table-based implementation of CRC generation, adding construction cost to cheapen running cost.
2016-12-31 14:15:20 -05:00
Thomas Harte
7b696b0962
Switched scheme to shared.
2016-12-31 13:11:07 -05:00
Thomas Harte
57bb771fb7
It looks like spaces are automatically escaped (?)
2016-12-31 13:05:55 -05:00
Thomas Harte
5201a59c44
Attempted to introduce Travis CI.
2016-12-31 13:03:32 -05:00
Thomas Harte
df6e98fa52
Merge pull request #89 from TomHarte/OricDiskWrites
...
Adds write support for the Oric .DSK file format
2016-12-31 12:53:43 -05:00
Thomas Harte
52b850a3f5
Quick extra: make sure parsed tracks don't overflow the 6400 byte space available in an MFM disk. Which might be better expressed as 6250?
2016-12-31 12:51:52 -05:00
Thomas Harte
cfbab1448c
Switched to a track parsing that disallows synchronisation values within sector contents.
2016-12-31 12:23:08 -05:00
Thomas Harte
12549ff412
Might as well get the file offset before entering the critical section; also moved the lock guard down more explicitly to group with the second set of actions.
2016-12-31 11:48:46 -05:00
Thomas Harte
6f0b5427e4
Made an attempt to avoid repetition of sync bytes.
2016-12-31 00:20:00 -05:00
Thomas Harte
0123b37213
Made an attempt to include sync values in the stream and properly to align.
2016-12-31 00:11:31 -05:00
Thomas Harte
ea4d85e1cd
The virtual disk constructed is the same across all tracks. So why not just request zero?
2016-12-31 00:10:35 -05:00
Thomas Harte
f217d508b8
Completed first attempt at write support for Oric disk images.
2016-12-30 23:12:46 -05:00
Thomas Harte
1f625fad66
Decided that if this is an [M]FM parsing function then it should be something more intelligent than a mere PLL record. Which I guess conveniently implies Oric DSK-esque behaviour. But properly defined, rather than very vaguely.
2016-12-30 23:10:52 -05:00
Thomas Harte
632b3c63b1
Added the infrastructure necessary for Oric disks to appear writeable to the machine and to receive changed tracks.
2016-12-30 22:51:48 -05:00
Thomas Harte
d581294479
Added get_track
to get the PLL output for a complete track.
2016-12-30 19:59:23 -05:00
Thomas Harte
0f399b0a0c
Made type conversion explicit.
2016-12-30 19:59:01 -05:00
Thomas Harte
c6fcc40ac5
Merge pull request #88 from TomHarte/WDWrites
...
Implements write support for the WD.
2016-12-30 18:11:00 -05:00
Thomas Harte
3b29e6a473
Ensured SSD and ADFs are grown if required.
2016-12-30 18:08:12 -05:00
Thomas Harte
07dacff42d
Added writing for Acorn ADF disks, plus appropriate TODOs in both similar bits of boilerplate.
2016-12-30 18:03:30 -05:00
Thomas Harte
c85450648f
Fix: make sure copies have proper event lengths. Also made it much clearer what's going on with the initial copy to the heap.
2016-12-30 17:55:46 -05:00
Thomas Harte
c740d9655a
Fixed: index_count_ may have been left high by a previous call; reset it just in case.
2016-12-30 17:55:06 -05:00
Thomas Harte
d09e7ac1e8
Made an attempt at reacting appropriately if the very first thing that looks like a sector doesn't pan out.
2016-12-30 17:44:35 -05:00
Thomas Harte
5d63556870
Period
s need a custom copy constructor too, if they're going to avoid sharing an event_source.
2016-12-30 17:39:52 -05:00
Thomas Harte
e5cc77f22d
Added an extra sanity check.
2016-12-30 17:29:51 -05:00
Thomas Harte
81a3cbac45
Ensured a copy is passed for writing back rather than the original.
2016-12-30 17:26:44 -05:00
Thomas Harte
63ff5165a4
After a quick bit of reading, discovered the virtual copy constructor pattern really is only a convention in C++, and conformed to it. Which hopefully gives copyable tracks.
2016-12-30 17:25:39 -05:00
Thomas Harte
71dbd78cf2
If asynchronous background processing is to occur on tracks then, given that they inherently have state, they'll need to be copyable, and ideally 'cheaply' (though it's not too great a priority). So started implementing appropriate copy constructors. Also introduced an extra level of indirection to PCMSegmentEventSource
so that it can copy itself without copying the underlying PCMSegment
, which is 95% of the heft of a track in all currently-implemented cases.
2016-12-30 14:23:26 -05:00
Thomas Harte
f88f3c65e9
Removed duplicated newline.
2016-12-30 14:21:36 -05:00
Thomas Harte
82bb78fb2d
Ensured that get_sector copes even if any invalid sectors are encountered.
2016-12-30 14:21:14 -05:00
Thomas Harte
6fc692cd34
Attempted to switch to an asynchronous means for continuous file updates. Testing with SSD, as usual.
2016-12-29 22:15:58 -05:00
Thomas Harte
bbd94749f4
... and I guess an instant maximal simplification is also easy if length ends up being 0
2016-12-29 11:02:21 -05:00
Thomas Harte
54900ca3fb
Addition and subtraction can end immediately without performing any extra work if the operand is 0
2016-12-29 11:00:47 -05:00
Thomas Harte
a8bc9d830e
Removed leftover very temporary debugging aid.
2016-12-28 23:03:05 -05:00
Thomas Harte
b9fad184d7
Added just enough for a complete manual test of writing to a .ADF with the 1770 then getting the correct result parsing it back on the host side in order potentially to update a file.
...
... which means that now it's time to worry about when and how mounted files should actually update themselves. Which will make for some fun with threading, I dare say.
2016-12-28 23:00:47 -05:00
Thomas Harte
af1b396c9e
Found an ugly issue with Storage::Time
as implemented (i) to be unsigned; and (ii) automatically to simplify. Will need to fix. Here's a quick workaround for this one segment of code.
2016-12-28 22:57:11 -05:00
Thomas Harte
9cb902cc4f
Experimentally marked ADF as writable too, immediately discovering a mistake in the analysing MFM decoder.
2016-12-28 22:34:22 -05:00
Thomas Harte
e4000bd060
Added some even more verbose logging; slightly simplified write loop logic, and decided it's definitely write_byte
that's responsible for CRC generator feeding.
2016-12-28 21:24:19 -05:00