1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-07-17 13:29:02 +00:00
Commit Graph

79 Commits

Author SHA1 Message Date
Thomas Harte
2222cb65d6 Split the status up into flags, assembled into a register upon demand. Attempted to implement some of the differences between the 1770/1772 and 1773/1793. Albeit with a motor fix still in place. 2016-11-30 22:26:02 -05:00
Thomas Harte
f44542c18c Improved naming: this now explains what, not the mechanics of how. 2016-11-26 23:35:11 +08:00
Thomas Harte
5c8ecd3051 It probably needs a better name, but hastily implemented track caching at the Disk level. 2016-11-26 14:27:06 +08:00
Thomas Harte
2f86b07cfa Added a parser for Oric-format MFM disks. Causing my first disk to load! 2016-11-26 13:40:10 +08:00
Thomas Harte
dcfdd73077 Switched to more conventional runtime polymorphism, also now allowing encoders (shifters as were) to be obtained, as a slightly lower-level interface than vector-of-sectors. 2016-11-26 13:39:20 +08:00
Thomas Harte
b180f04c87 Okay, so this file format wasn't what I hoped it was. It's another hack. Lots of work to do. 2016-11-26 10:19:10 +08:00
Thomas Harte
7613755f94 Fixed addressing: types are 1 and 2, not 0 and 1. 2016-11-26 10:13:12 +08:00
Thomas Harte
8499783b14 Dragged multibyte primitives and signature checks up to the base class. Implemented support for Oric MFM-style .DSK, at the file format level. 2016-11-21 20:47:16 +08:00
Thomas Harte
31c2548804 Created a base class for the boilerplate fopen stuff, switched as many classes as possible to its use, switched to postfix underscores and non-camelCase names. 2016-11-21 20:14:09 +08:00
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