1
0
mirror of https://github.com/TomHarte/CLK.git synced 2026-04-19 19:16:34 +00:00
Commit Graph

362 Commits

Author SHA1 Message Date
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_fors 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 ClockReceivers. 2017-07-24 21:19:05 -04:00
Thomas Harte b3ae920746 Converted the DPLL and disk controller classes to be ClockReceivers. 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
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 6d5807ec4b Fixed sign and ensured that the DataFromString implementation is of the thing declared in the header. 2017-07-21 21:24:28 -04:00
Thomas Harte 64865b3f41 Signedness fixes. 2017-07-21 21:23:34 -04:00
Thomas Harte 163c0f1b44 Ensured offset means exactly one thing. 2017-07-21 20:58:17 -04:00
Thomas Harte 2d8e7e9f8b Removed reference to a parameter long-since dead. 2017-07-21 20:46:25 -04:00
Thomas Harte a026998682 Marginally optimised set_offset to avoid resets when possible. 2017-07-21 20:43:20 -04:00
Thomas Harte 06ea81fdb2 Made sure that unrecognised waves don't block the symbol queue, and allowed any type of nonsense to be skipped before finding a byte. 2017-07-21 20:23:26 -04:00
Thomas Harte d69b1e2d11 Switched parsing logic to looking only for upward zero crossings, that being my new understanding of the ROM. 2017-07-21 19:39:38 -04:00
Thomas Harte a3e0024980 Chopped time accumulation out of the default Tape process because it's proving to be sufficiently expensive for a TZX as not to be worthwhile. Introduced a cheaper position capturing/restoring method. 2017-07-21 18:55:03 -04:00
Thomas Harte d9a2c32aca Made an attempt to obey the proper TZX rules on gaps, and to hit the common-clock-rate Time optimisation. 2017-07-21 18:21:12 -04:00
Thomas Harte e152ed2e61 Made an attempt to avoid GCD costs when accumulating Times with a common clock rate (/divisor). 2017-07-21 18:20:27 -04:00
Thomas Harte 70af075012 Determined what appears to be an appropriate workaround for the ZX81 TZX that I've managed to obtain. 2017-07-19 21:28:33 -04:00
Thomas Harte c8cee88e33 Ensured that a stopped tape outputs a false level and took an extra safety check in instantiation. 2017-07-18 22:49:11 -04:00
Thomas Harte 35296017b5 Clarified meaning of is_high_ flag and ensured it is honoured properly. 2017-07-17 21:36:05 -04:00
Thomas Harte 130d598ec9 Corrected some minor out-of-style breaks, and ensured that the name of ZX81 files is returned. 2017-07-17 19:52:54 -04:00