Thomas Harte
|
56d65ba6f3
|
Adapted slightly, to retain the ability to advertise an incorrect size, to adjust the confusion I've created by having two different types of thing both called new_sector, and to print a warning when ignoring error flags.
|
2017-08-07 12:12:04 -04:00 |
|
Thomas Harte
|
895a3cbf24
|
Corrected reading of the track size table for extended disks. My first extended disk has now loaded.
|
2017-08-07 11:38:19 -04:00 |
|
Thomas Harte
|
d951c8c1c2
|
Fixed search for track start position with extended disks: it's no longer an infinite loop. So that's a pretty good performance improvement.
|
2017-08-07 11:36:29 -04:00 |
|
Thomas Harte
|
a294963e98
|
Made an absolutely basic attempt to accommodate some extended disk images.
|
2017-08-07 11:26:15 -04:00 |
|
Thomas Harte
|
c839556a27
|
Fixed: rewind the file to check for 'EXTENDED' if 'MV - CPC' failed.
|
2017-08-06 19:47:10 -04:00 |
|
Thomas Harte
|
77da582e88
|
Switched the container in which events are passed to int , with the intention of subclasses extending the receivable range.
|
2017-08-06 12:35:20 -04:00 |
|
Thomas Harte
|
ffadb04761
|
Documented, and removed a couple of Event types that are WD-specific but had accidentally flown into here. Will need to figure out how best to expose the CRC result too, but I'm willing to let that one drop out naturally as I implement the 8272.
|
2017-08-06 11:36:36 -04:00 |
|
Thomas Harte
|
29288b690e
|
Switched disk controllers to be instantiated explicitly in terms of cycles, created an Amstrad-specific subclass of the 8272 to record the direct programmatic availability of all disk motors bundled together, and otherwise adjusted to ensure the thing is clocked and that the motor is enabled and disabled appropriately. The 8272 is also now formally a subclass of the incoming MDM controller.
|
2017-08-06 09:45:16 -04:00 |
|
Thomas Harte
|
4d60b8801c
|
Started trying to factor out just the PLL stream -> FM/MFM events part that is presently in the WD1770.
|
2017-08-05 22:26:15 -04:00 |
|
Thomas Harte
|
192f232d3f
|
Silenced warnings.
|
2017-08-05 11:53:29 -04:00 |
|
Thomas Harte
|
6e4d3b8a77
|
Added enough logic to produce some sort of version of a completely unprotected DSK. So enough to start bootstrapping an FDC emulation, at least.
|
2017-08-05 11:44:53 -04:00 |
|
Thomas Harte
|
8eda24261c
|
Removed unnecessary header — it's implied by being a child of FileHolder.
|
2017-08-05 11:44:06 -04:00 |
|
Thomas Harte
|
75c59fefab
|
Added an empty husk to begin support for Amstrad CPC disk image formats.
|
2017-08-05 10:02:10 -04:00 |
|
Thomas Harte
|
9d953421d8
|
After a quick check, added a couple of other _delegate initialisations. I should probably find a way to template this.
|
2017-08-01 07:07:43 -04:00 |
|
Thomas Harte
|
4abd62e62b
|
Standardises on const [Half]Cycles as the thing called and returned, rather than const [Half]Cycles & as it's explicitly defined to be only one int in size, so using a reference is overly weighty.
|
2017-07-27 22:05:29 -04:00 |
|
Thomas Harte
|
8361756dc4
|
Switched definitively to the works-for-now approach of requiring an explicit opt-in where somebody wants to clock a whole-cycle receiver from a half-cycle clock.
|
2017-07-27 07:40:02 -04:00 |
|
Thomas Harte
|
75d67ee770
|
Relocated ClockReceiver.hpp as it's a dependency for parts of the static analyser, and therefore needs to be distinct from the actual emulation parts.
|
2017-07-25 20:20:55 -04:00 |
|
Thomas Harte
|
a1e9a54765
|
Eliminated redundant uses of ClockReceiver and sought to ensure that proper run_for s are inherited all the way down.
|
2017-07-25 20:09:13 -04:00 |
|
Thomas Harte
|
8a2bdb8d22
|
Converted the TimedEventLoop and the things that sit atop it into ClockReceiver s.
|
2017-07-24 21:19:05 -04:00 |
|
Thomas Harte
|
b3ae920746
|
Converted the DPLL and disk controller classes to be ClockReceiver s.
|
2017-07-24 21:04:47 -04:00 |
|
Thomas Harte
|
45ec5f8eab
|
Eliminated implicit sign conversion.
|
2017-07-21 21:53:27 -04:00 |
|
Thomas Harte
|
1d01acce06
|
Fixed differing types of loop variables and targets.
|
2017-07-21 21:53:05 -04:00 |
|
Thomas Harte
|
163c0f1b44
|
Ensured offset means exactly one thing.
|
2017-07-21 20:58:17 -04:00 |
|
Thomas Harte
|
e5188a60dc
|
Settled on the new average-of-length approach to a PLL window sizing, eliminating the old errors-of-phase approach. Since it anchors automatically to the original target clocks per bit, killed the explicit mention of a tolerance.
|
2017-07-16 19:03:50 -04:00 |
|
Thomas Harte
|
e71d13c090
|
With the new PLL implementation, switching to a deeper window size returns the Acorn tape parser to: working.
|
2017-07-16 17:12:12 -04:00 |
|
Thomas Harte
|
51177e4e1f
|
Attempted a different implementation of the PLL, that responds to changes only once.
|
2017-07-16 16:49:04 -04:00 |
|
Thomas Harte
|
4489f120f9
|
Eliminated foolish double indirection on phase history.
|
2017-07-15 22:40:38 -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
|
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 |
|