Thomas Harte
|
c2bc9a8c62
|
Ensured no namespace collision in double-include guards.
|
2017-06-11 16:41:15 -04:00 |
|
Thomas Harte
|
256ba4028b
|
Rejigged to eliminate semi-duplication of the is-a-file test.
|
2017-06-08 21:52:13 -04:00 |
|
Thomas Harte
|
b07af2660d
|
Adjusted to make sure that the very end of a tape is properly measured.
|
2017-06-08 21:33:35 -04:00 |
|
Thomas Harte
|
bc0d70b2f7
|
Added: a shout-out when the tape has been exhausted.
|
2017-06-08 21:32:27 -04:00 |
|
Thomas Harte
|
c6e48dfd56
|
Given that a final gap is semantically part of describing tape contents, ensured one formally appears before declaring that the tape has ended.
|
2017-06-08 21:31:54 -04:00 |
|
Thomas Harte
|
c775db50ef
|
Ensured no out-of-bounds accesses.
|
2017-06-08 21:31:03 -04:00 |
|
Thomas Harte
|
ee4c8b5ad2
|
Ensured final byte plays out.
|
2017-06-08 19:51:49 -04:00 |
|
Thomas Harte
|
d8b76e31c3
|
Added and improved the is-this-ZX80-stuff test. It seems some bytes are going missing in the to->from tape conversion.
|
2017-06-08 19:49:18 -04:00 |
|
Thomas Harte
|
7e10c7f9d8
|
Relocated the ZX80/81 concept of a 'file' out from Tape into Data, given that it's an exact duplicate of memory.
|
2017-06-08 19:09:51 -04:00 |
|
Thomas Harte
|
c47128f433
|
Widened tolerances and ensured zero bits aren't prematurely discarded.
|
2017-06-07 17:50:03 -04:00 |
|
Thomas Harte
|
8aab9acc10
|
Eliminated use of the zero level; now definitively returns a low/high input.
|
2017-06-07 17:39:29 -04:00 |
|
Thomas Harte
|
dbd2944c13
|
Took an initial run at the ZX80/81 parser.
|
2017-06-07 17:27:05 -04:00 |
|
Thomas Harte
|
4603fa6f24
|
Extended explicitly to support a token of lookahead, which is pretty much what was on offer anyway. Also corrected instance variable names, as per better adoption of C++ norms.
|
2017-06-07 17:21:57 -04:00 |
|
Thomas Harte
|
60300851ea
|
Started sketching out a tape parser for ZX80 and '81 files. I think this'll help me to verify whether the .O input is working.
|
2017-06-07 10:12:13 -04:00 |
|
Thomas Harte
|
58312ea2b7
|
Updated to new standardisation on curly bracket placement.
|
2017-06-07 10:05:43 -04:00 |
|
Thomas Harte
|
cb534d8b85
|
Corrected comment.
|
2017-06-07 10:05:16 -04:00 |
|
Thomas Harte
|
4677cebf40
|
Rejigged to correct: spaces go after bits, not after bytes.
|
2017-06-06 18:29:15 -04:00 |
|
Thomas Harte
|
7399f3d798
|
Caveman debugging in place, it looks like this file is returning nonsense.
|
2017-06-06 18:18:55 -04:00 |
|
Thomas Harte
|
faeecf7665
|
Made sure that there's nothing but silence at the end of the tape, even if the .O file is too long.
|
2017-06-06 18:16:47 -04:00 |
|
Thomas Harte
|
8c1769f157
|
Made a quick attempt at serialising from ZX80 .O to waves.
|
2017-06-04 16:59:26 -04:00 |
|
Thomas Harte
|
655809517c
|
Ensured that there is a subclass of file that is entrusted to load .O/.80 files, and that the code routes such files to it, noting that it should consider whether a ZX80 is required.
|
2017-06-04 16:37:03 -04:00 |
|
Thomas Harte
|
5d91a2600d
|
Permitted ROM-style PRGs that are not a power-of-two in size, and added extra safety checks on loading data from a tape.
|
2017-05-08 22:15:35 -04:00 |
|
Thomas Harte
|
2807e3134f
|
Implemented speedy header finding. So that's half of it.
|
2017-05-07 20:32:48 -04:00 |
|
Thomas Harte
|
e01f3f06c8
|
Completed curly bracket movement.
|
2017-03-26 14:34:47 -04: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
|
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
|
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
|
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
|
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 |
|