Thomas Harte
|
da082673d7
|
Drives now have a finite number of heads.
The Amstrad volunteers itself to be single sided. Everything else stays as it was.
|
2017-09-15 21:18:36 -04:00 |
|
Thomas Harte
|
96bf133924
|
Withdraws requirement for DiskController users to specify a PLL multiplier or to provide rotation speed.
In the latter case because it's no longer of any interest to the controller, and in the former because I'd rather it be picked automatically.
|
2017-09-10 22:56:05 -04:00 |
|
Thomas Harte
|
8882aa496f
|
Corrected wiring to get advance signals through to Drive event delegates.
|
2017-09-10 20:51:05 -04:00 |
|
Thomas Harte
|
0622187ddf
|
Strips Controller of all capabilities now housed on the Drive.
|
2017-09-10 19:23:23 -04:00 |
|
Thomas Harte
|
523e1288fa
|
Updates the MFM parser to use SingleTrackDisk rather than the equivalent withdrawn Drive functionality.
|
2017-09-10 17:34:52 -04:00 |
|
Thomas Harte
|
90c7056d12
|
Started devolving timed event loop logic down to the drives, moving them closer to modelling real life.
|
2017-09-10 14:43:20 -04:00 |
|
Thomas Harte
|
c6e6c3fcfb
|
Resolves all current analyser warnings.
|
2017-08-24 22:18:44 -04:00 |
|
Thomas Harte
|
ef07c33741
|
Merge branch 'Plus10' into MFMParserDensity
|
2017-08-18 15:48:20 -04:00 |
|
Thomas Harte
|
e559a65ede
|
Ideally I would be able to kill this multiplier, as it could easily be derived at runtime. But, for now, just turned it up so that the analysis-oriented parser is better at parsing different bit rates.
|
2017-08-18 15:47:46 -04:00 |
|
Thomas Harte
|
0c1714b695
|
Relaxed a little to allow +10% in track length.
|
2017-08-17 21:36:14 -04:00 |
|
Thomas Harte
|
4f8b89772e
|
Improved logic for detecting when all sense has been derived from a track to spot any repeated track, not necessarily the first one. That avoids sectors that run over the index hold and obscure the first throwing things.
|
2017-08-17 15:31:53 -04:00 |
|
Thomas Harte
|
fedf5a44a6
|
Imposes a maximum track length.
|
2017-08-17 15:20:49 -04:00 |
|
Thomas Harte
|
1011143dbe
|
Sought to correct my interpretation of 'gap 3'.
|
2017-08-13 21:52:48 -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
|
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
|
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
|
8a2bdb8d22
|
Converted the TimedEventLoop and the things that sit atop it into ClockReceiver s.
|
2017-07-24 21:19:05 -04:00 |
|
Thomas Harte
|
1d01acce06
|
Fixed differing types of loop variables and targets.
|
2017-07-21 21:53:05 -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
|
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
|
cfbab1448c
|
Switched to a track parsing that disallows synchronisation values within sector contents.
|
2016-12-31 12:23:08 -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
|
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
|
d581294479
|
Added get_track to get the PLL output for a complete track.
|
2016-12-30 19:59:23 -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
|
82bb78fb2d
|
Ensured that get_sector copes even if any invalid sectors are encountered.
|
2016-12-30 14:21:14 -05:00 |
|
Thomas Harte
|
9cb902cc4f
|
Experimentally marked ADF as writable too, immediately discovering a mistake in the analysing MFM decoder.
|
2016-12-28 22:34:22 -05:00 |
|
Thomas Harte
|
46a93d2e12
|
Fixed errors to ensure that FM disks, at least, follow the same CRC generation rules when being built from sectors and when being parsed.
|
2016-12-28 19:48:46 -05:00 |
|
Thomas Harte
|
720b1e5802
|
Attempted to ensure proper CRC generation for FM-format input.
|
2016-12-28 18:56:53 -05:00 |
|
Thomas Harte
|
3a9ad3fb08
|
Fixed Oric .DSK handling, per my latest understanding. Which creates a desire to write shorts directly to the disk surface, so exposed that in the encoder.
|
2016-12-28 18:50:28 -05:00 |
|
Thomas Harte
|
a568172758
|
Made steps towards proper CRC generation. Am currently comparing against Oric disk images, as — amongst other things — they include precomputed CRCs.
|
2016-12-28 18:29:37 -05:00 |
|
Thomas Harte
|
0490a47058
|
Worked on the all-around framework for decoding sectors back from tracks when closing down a file. Hit the wall that the parser is more observant of CRCs than the WD. No, really. So I guess I have to stop avoiding that whole issue.
|
2016-12-26 14:24:33 -05:00 |
|
Thomas Harte
|
beaa868079
|
Factored the MFM parser out into encodings.
|
2016-12-25 20:00:57 -05: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
|
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
|
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
|
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 PCMSegment s 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
|
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
|
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
|
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
|
89a1881fef
|
Started turning the 1540 into an actual disk drive.
|
2016-07-29 11:03:09 -04:00 |
|