1
0
mirror of https://github.com/TomHarte/CLK.git synced 2026-04-24 05:18:36 +00:00
Commit Graph

70 Commits

Author SHA1 Message Date
Thomas Harte ca53fac732 Switched to assuming a single-sided disk, moved out magic constants. 2016-09-26 21:20:30 -04:00
Thomas Harte 572d5587d9 Made a first stab at enabling multi-disk machines and thereby obeying (some of) the Plus 3's status register. 2016-09-25 21:24:16 -04:00
Thomas Harte 9bbcbd1001 Renamed class, intending to turn a Disk::Drive into literally just that, and have a thing with a PLL that consumes events be a Controller. 2016-09-25 20:05:56 -04:00
Thomas Harte 523dbb9678 This'll do for getting the ADF into the machine. 2016-09-25 18:32:26 -04:00
Thomas Harte de863719d0 Made a first attempt at Acorn ADFS support plus the start of a suitable analyser. 2016-09-25 17:46:11 -04:00
Thomas Harte a9e65e9b7a Tweaked disk side density, added call-outs to a WD1770 if the Electron had one (albeit without run_for_cycles yet as I need to figure out the clock rate), added a shell of the basic functions of the WD1770. No implementation yet. 2016-09-19 22:06:56 -04:00
Thomas Harte 64f2538b1f Added CRC checking to DFS comprehension; fixed a bunch of places where I'd used Objective-C's #import rather than #include. 2016-09-19 08:16:06 -04:00
Thomas Harte 8a1b805d11 Fixed file offset calculation for single-sided images. 2016-09-19 07:34:10 -04:00
Thomas Harte b1e7f2dfd0 There's no cache and no CRC checking yet, but this is probably a rough outline of an FM parser. 2016-09-18 22:03:06 -04:00
Thomas Harte d1c861d3a5 That should be that, I hope. 2016-09-18 21:09:32 -04:00
Thomas Harte 02c9a82cb5 Edging towards SSD/DSD support. Hold on! 2016-09-18 19:32:08 -04:00
Thomas Harte 91cd7e143b Started on the SSD/DSD support. Realised I had ommitted multiple head support from my disk class. Fixed that. 2016-09-18 19:21:02 -04:00
Thomas Harte 5409c8ec54 Switched PCMSegments to std::vector; ensured generated [M]FM tracks are correctly sized, thereby making sure the individual flux windows will be correctly sized. 2016-09-18 18:56:35 -04:00
Thomas Harte d9aaf456f0 Adapted pervasively to MSB-first output. Which seems to be correct. 2016-09-18 18:46:58 -04:00
Thomas Harte 180c3df2d4 Calling it 'number theory' probably isn't accurate but extracted the CRC stuff and started using it for [M]FM encoding. 2016-09-18 18:33:26 -04:00
Thomas Harte 55a7418cbf Parameterised to perform FM and MFM encodings, at least subject to CRCs still being missing. 2016-09-18 17:16:20 -04:00
Thomas Harte 22eed60d2b Started sketching out basic MFM track encoding. Which possibly even means that the shifters don't need to be public? 2016-09-18 16:53:21 -04:00
Thomas Harte 0089c830c6 This possibly correctly encapsultes the lowest level of FM and MFM rules. 2016-09-18 14:17:06 -04:00
Thomas Harte bcf91de7e9 Declared support for the Acorn disk files, started hammering out an encoder. 2016-09-18 13:35:54 -04:00
Thomas Harte 79ef38b123 Attempted to use the new get_cycles_until_next_event method to take some repetition outside of the PLL and drive event loops. 2016-09-17 22:02:38 -04:00
Thomas Harte 9d6dcb80a7 Started work on a GCR parser and the helper functions that lie behind that. 2016-09-13 21:53:36 -04:00
Thomas Harte 82c8459055 Minor tidying of namespace usage declarations. 2016-08-27 17:18:12 -04:00
Thomas Harte 56c0d70c1f Gave disks their own namespace. 2016-08-27 17:15:09 -04:00
Thomas Harte 9d76cd9b60 Removed dead instance storage. 2016-08-04 21:41:12 -04:00
Thomas Harte 3e90b85ff8 Made an attempt to insert proper conversions to/from rotational speed. The Time class is now really turning into a full-on quotient. Might need refactoring. 2016-08-04 21:36:39 -04:00
Thomas Harte e57ab1025d Fixed location calculation, up to a point. 2016-08-03 22:33:00 -04:00
Thomas Harte 9af9b28baf Made very first attempt at closing the loop on this. But it's time for work. 2016-08-03 08:16:23 -04:00
Thomas Harte e15241dc3c Added ability to query how long since the new interval was set to the timed event loop. Discovered that LCM will returning the net effect of the common factors only. Otherwise continued iterating towards time preservation. 2016-08-03 07:49:00 -04:00
Thomas Harte a3a3486f54 Okay, it's becoming more apparent where the (very mild) complexity will be here. But started moving towards retaining rotation between tracks. 2016-08-03 07:33:26 -04:00
Thomas Harte 21f1fa37a4 Fixed Time addition, added accumulation of distance into track into the disk drive, added a short circuit for LCM. 2016-08-03 07:26:05 -04:00
Thomas Harte 30f8b6baa4 Made an attempt to add the necessary extension to Track, with a concrete implementation in PCMTrack, to support time-based seeking, the intended mechanism for not magically spinning the disk back to the index hole upon every head step. 2016-08-03 06:59:45 -04:00
Thomas Harte d832e5e10d Reduced 1540 PLL to running at 4Mhz. Which is possibly correct (?) Made minor change to avoid divide if possible. 2016-08-02 21:28:50 -04:00
Thomas Harte bc10b3ee9a It appears the problem is as simple as sectors being counted from zero. 2016-08-01 10:08:38 -04:00
Thomas Harte f5e4ea3351 Some minor tidying, lots more of the caveman stuff as I try to determine what I'm doing wrong. 2016-08-01 09:43:08 -04:00
Thomas Harte a00f9adba3 Made a first attempt at D64 support. Made an error somewhere but this should be 90% of it. 2016-08-01 08:41:16 -04:00
Thomas Harte 58297f1baf Performed the basic metadata and routing for opening D64 files. Realised that I wasn't actually necessarily catching exceptions properly for all file opens, and fixed. 2016-08-01 07:09:15 -04:00
Thomas Harte 2799a87218 Reduced possibility of overflow on LCM, improved commenting widely, removed one stale piece of G64 bootstrapping caveman stuff. 2016-08-01 06:04:55 -04:00
Thomas Harte 198fbbedc7 Reeled back all appropriate pieces of caveman debugging. 2016-07-31 13:42:34 -04:00
Thomas Harte 2332f72875 Formalised clock-rate multiplication within disk drives, discovered that the stepper didn't have ideal behaviour for my timed event loop and hence nailed down the semantics a ilttle more.
(obiter: the 1540 now appears to discern the correct sequence of bits. Framing is off in my test printfs but that's neither here nor there).
2016-07-31 13:32:30 -04:00
Thomas Harte 6ee784a893 Increased logging; discovered I was packing events together too closely. Now getting some zeros. 2016-07-30 04:30:55 -04:00
Thomas Harte fead524eb5 Attempted to give the PLL a litte extra leeway, and fixed PCMTrack length test. 2016-07-29 18:52:50 -04:00
Thomas Harte 8f62211f5e Wired up the 1540 as a PLL delegate. Which prima facie means it should start receiving a bit stream. Except that I clearly have something in the timing way off — either my flux transitions are far too short or I need to significantly increase the clock rate on the PLL. 2016-07-29 12:08:18 -04:00
Thomas Harte 89a1881fef Started turning the 1540 into an actual disk drive. 2016-07-29 11:03:09 -04:00
Thomas Harte 6532b3a8c8 Filled in a calculation of clocks per bit that'll do. 2016-07-29 07:51:07 -04:00
Thomas Harte f984de42a3 Took some small steps towards having a disk drive that at least can select a track and pump relevant events into a PLL. 2016-07-29 07:31:02 -04:00
Thomas Harte e55db0cfe8 Made an attempt to eliminate creeping tape processing accuracy misses, which implied factoring out the GCM and LCD functions, which I then felt didn't really amount to signal processing. 2016-07-29 05:19:01 -04:00
Thomas Harte 5c1614ce7b Attempted to simplify, very slightly. 2016-07-28 14:35:39 -04:00
Thomas Harte 015cea494d Switched to a much-more straightforward PLL. I think I'm just fiddling now rather than moving forwards. Probably time to move on? 2016-07-28 11:32:14 -04:00
Thomas Harte e061e849d4 Had a second bash at the PLL. Probably I should read some of the literature. 2016-07-27 16:24:24 -04:00
Thomas Harte 63f39608a6 Added just enough to get back to a working build. 2016-07-15 20:35:19 -04:00