Thomas Harte
|
daafebe7ac
|
Moved curly bracket.
|
2017-08-11 19:19:04 -04:00 |
|
Thomas Harte
|
2d81acb82e
|
Upped C++ standard to C++14 and added an #if that's intended to use the built-in std::gcd when compiled on C++17 or better. Fixed for new signedness warnings resulting for taking the step to C++14.
|
2017-08-11 19:18:45 -04:00 |
|
Thomas Harte
|
82ca49c840
|
Adjusted to avoid calls to ::greatest_common_divisor(numerator % denominator, denominator) unless necessary.
|
2017-08-11 19:05:46 -04:00 |
|
Thomas Harte
|
0c8769e335
|
Just to be safe.
|
2017-08-11 18:41:08 -04:00 |
|
Thomas Harte
|
83c7d34df2
|
Switched to populating the sector cache with everything in a track the first time anything on that track is requested. That avoids the problem whereby each request of a non-existent sector costs two spins.
|
2017-08-11 18:40:16 -04:00 |
|
Thomas Harte
|
a12671010a
|
Sector size is now reported, and CRC failures are merely indicated, not cause for a sector to be thrown away.
|
2017-08-11 16:23:33 -04:00 |
|
Thomas Harte
|
edb088526f
|
Simplified slightly, and updated TODO as to still-missing functionality.
|
2017-08-11 14:33:34 -04:00 |
|
Thomas Harte
|
80ebc63101
|
Updated the SSD file format container to specify sector sizes, now that it's no longer implicit.
|
2017-08-11 14:30:35 -04:00 |
|
Thomas Harte
|
cf1403bc79
|
Increased documentation.
|
2017-08-11 14:27:07 -04:00 |
|
Thomas Harte
|
fcf63a7547
|
Expands the [M]FM encoder to respect some new Sector flags: it will now wilfully make CRC errors, omit data, include data that is different than the ID's declared length, write deleted data, and can be commanded as to header/data gaps and what should be within them. All based around expanding towards the needs for reproduction of the CPC's .DSK file format.
|
2017-08-11 14:24:50 -04:00 |
|
Thomas Harte
|
0411b51582
|
Added an attempt to deal with 16-bit allocation units, and to ensure middle-of-file holes are respected.
|
2017-08-11 10:59:37 -04:00 |
|
Thomas Harte
|
026101a268
|
Killed logic_extents_per_physical, since I don't know how to handle it, and instituted tracks, to allow a decision about short versus long allocation units.
|
2017-08-11 10:46:50 -04:00 |
|
Thomas Harte
|
734099a956
|
Threw a sector cache into my MFM parser, in an attempt to cut down analysis costs. Also made it aware of multiple heads.
|
2017-08-11 10:29:13 -04:00 |
|
Thomas Harte
|
6be5851484
|
Cleaned up.
|
2017-08-10 22:34:29 -04:00 |
|
Thomas Harte
|
994179f188
|
Taking a whole bunch of guesses, this might be correct.
|
2017-08-10 22:33:08 -04:00 |
|
Thomas Harte
|
6a65c7a52a
|
Started working on a CPC-oriented analyser; for now I just want to be able to make a good guess at the appropriate file to load from a disk. As it turns out, the CPC simply adopts the CP/M format, so a generic parser is appropriate. This is its beginning.
|
2017-08-10 17:10:21 -04:00 |
|
Thomas Harte
|
7d1023ea98
|
Added a 'ready' getter to Drive , formally to let the drive take ownership of that test.
|
2017-08-08 21:15:56 -04:00 |
|
Thomas Harte
|
2b0dcf8573
|
Transcribed the status bits that I think actually need to be obeyed.
|
2017-08-07 12:37:45 -04:00 |
|
Thomas Harte
|
47732ffb98
|
Prevented the 8272 from overreading ID fields (and, by doing so, overrunning its internal buffer). Exposed the MFMController's CRC generator for inspection.
|
2017-08-07 12:37:22 -04:00 |
|
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
|
a3b16b6dfa
|
Further beefs up the list of chunks that this TZX parser can either comprehend or skip.
|
2017-08-03 12:13:41 -04:00 |
|
Thomas Harte
|
2d2cefb0b0
|
Adjusted factoring to introduce support for block 10.
|
2017-08-02 14:36:47 -04:00 |
|
Thomas Harte
|
2fd071e45d
|
Made an honest attempt at outputting turbo speed data block data. The CPC now at least starts to load.
|
2017-08-02 14:24:34 -04:00 |
|
Thomas Harte
|
d7a5c3f49a
|
Added support for the ID 20 block and fixed a minor error in my skip-the-contents version of block 11: length is three bytes long, not two. This gives me enough structure properly to get to the end of my current test CDT, albeit without making any of the noises.
|
2017-08-02 14:12:34 -04:00 |
|
Thomas Harte
|
819761f9fb
|
Fixed another uninitialised pointer.
|
2017-08-02 13:56:35 -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
|
4b5e9ffb83
|
Ensured is_at_end_ is initially cleared by default.
|
2017-07-27 22:22: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
|
8d1dacd951
|
Clean ups along the Electron::Tape line: ensured that the ClockReceiver is opted into only once, and that its run_for propagates all the way along the chain.
|
2017-07-25 20:01:30 -04:00 |
|
Thomas Harte
|
d056f2e246
|
Updated comment.
|
2017-07-24 21:51:22 -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
|
6633537fb8
|
Discovering that there is such a thing as P81 — a ZX81 file without the name omitted — added support for it. Extended FileHolder while I was here to retain the file name and be able to supply its extension, as my quick-fix test-the-last-character approach to o/p/80/81 discrimination stops working with p81 thrown into the mix and this feels like the correct factoring.
|
2017-07-22 16:02:25 -04:00 |
|
Thomas Harte
|
313b36944f
|
Ensured that the final bit of a tape isn't dropped even if the tape ends exactly after it, by not posting a false pulse, being less restrictive about what can cap a bit, and in any case using a long gap as the end-of-file bookend.
|
2017-07-22 15:41:33 -04:00 |
|
Thomas Harte
|
456fdda6c2
|
Ensured that the mark_end step can't overwrite another recognised symbol.
|
2017-07-22 15:40:22 -04:00 |
|