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 |
|
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 reset s 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 Time s 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 |
|
Thomas Harte
|
0350925c1e
|
Started sketching out greater support. Mostly TODOs right now, but pulse sequence and pure tone are implemented. I probably also need at least the CSW block to hit everything you might see in a ZX80 or ZX81 tape. Then I can worry about the rest when I have a way to test them.
|
2017-07-17 19:38:15 -04:00 |
|
Thomas Harte
|
94e3dd0d4f
|
Merge branch 'master' into TZX
|
2017-07-17 19:07:05 -04:00 |
|
Thomas Harte
|
eafdd7dbd7
|
Corrected decompressed size expectations: it may be up to five times the size of the number of waves, as waves are up to five bytes in length.
|
2017-07-17 19:04:25 -04:00 |
|
Thomas Harte
|
127b584e79
|
Ensured that resetting a TZX resets the is-at-end flag.
|
2017-07-17 07:52:28 -04:00 |
|
Thomas Harte
|
2179edc7fe
|
Adjusted to allow the very first thing found to be data, and ensured that unrecognised symbols break files just as gaps do.
|
2017-07-17 07:43:47 -04:00 |
|
Thomas Harte
|
9108495586
|
Added a safety seek.
|
2017-07-17 07:35:53 -04:00 |
|
Thomas Harte
|
fa617eac6b
|
Spotted that pilot and data segments have different encodings — of course! — and attempted to adapt.
|
2017-07-17 07:34:10 -04:00 |
|
Thomas Harte
|
b63971caf7
|
Took a first, incorrect, shot at TZX chunk 0x19, the generalised data block.
|
2017-07-16 22:40:38 -04:00 |
|
Thomas Harte
|
7327da6350
|
Switched the nascent TZX to use the new PulseQueuedTape .
|
2017-07-16 22:06:56 -04:00 |
|
Thomas Harte
|
8f72fc4a44
|
Factored out from the UEF implementation the concept of being a tape that has a queue of pending pulses and manages that queue.
|
2017-07-16 22:04:40 -04:00 |
|
Thomas Harte
|
238348c885
|
Performed the initial wiring to announce that this application supports TZX files and to route them to the ZX80/81 static analyser. The TZX class itself does not yet do much beyond basic validation. I think it'll be easiest if it follows in UEF's footsteps in queuing up pulses ahead of time, so some factoring out is now required.
|
2017-07-16 21:33:11 -04:00 |
|
Thomas Harte
|
b3861ff755
|
Reduced copying of Pulses.
|
2017-07-16 19:49:31 -04:00 |
|
Thomas Harte
|
c2bc34fd87
|
Eliminated the PLLParser class. I think the proper abstraction if and when another machine requires PLL-esque parsing is probably to template out the Acorn wiring of a PLL to a Parser, and/or generalise the Acorn shifter. It'll be easier to decide when the time comes.
|
2017-07-16 19:25:26 -04:00 |
|
Thomas Harte
|
1d3ae31755
|
Abstracted the concept of an Acorn shifter away from being a PLLParser. The Acorn tape parser now skips using that class and uses the shifter. The actual Electron also uses the shifter. So the two are completely aligned. Net result: the Electron should successfully load exactly when static analysis was successful.
|
2017-07-16 19:24:01 -04:00 |
|
Thomas Harte
|
e5188a60dc
|
Settled on the new average-of-length approach to a PLL window sizing, eliminating the old errors-of-phase approach. Since it anchors automatically to the original target clocks per bit, killed the explicit mention of a tolerance.
|
2017-07-16 19:03:50 -04:00 |
|
Thomas Harte
|
e71d13c090
|
With the new PLL implementation, switching to a deeper window size returns the Acorn tape parser to: working.
|
2017-07-16 17:12:12 -04:00 |
|
Thomas Harte
|
51177e4e1f
|
Attempted a different implementation of the PLL, that responds to changes only once.
|
2017-07-16 16:49:04 -04:00 |
|
Thomas Harte
|
c8575fe6e0
|
Mild clean ups, and a tweak to permitted top and bottom phase.
|
2017-07-16 13:39:08 -04:00 |
|
Thomas Harte
|
4489f120f9
|
Eliminated foolish double indirection on phase history.
|
2017-07-15 22:40:38 -04:00 |
|
Thomas Harte
|
253f9603ed
|
Split the normal tape parser class into two in order to add a new option: a PLL-driven tape parser. Decided to see what happens if I attempt to use that to parse CSW Acorn data.
|
2017-07-15 19:07:35 -04:00 |
|
Thomas Harte
|
b743566339
|
Corrected under-request of data: was erroneously supplying the size of input as the expected size of output.
|
2017-07-15 15:19:03 -04:00 |
|
Thomas Harte
|
648618d280
|
Tweaked bit timing decision.
|
2017-07-13 21:26:05 -04:00 |
|
Thomas Harte
|
ae1a130843
|
Fixed: length of 0 is a special case.
|
2017-07-13 20:57:27 -04:00 |
|
Thomas Harte
|
33d16ae0cd
|
Fixes: individual static analysers reset tapes, for potential successors. The ZX81 file analyser no longer overruns its buffer upon receiving a file that is shorter than 11 bytes.
|
2017-07-12 21:34:08 -04:00 |
|
Thomas Harte
|
f09fe30af5
|
Attempted a full implementation of CSW. All in memory for now.
|
2017-07-12 21:23:59 -04:00 |
|
Thomas Harte
|
33eadb5549
|
Started taking further steps towards CSW support; reading the ZLib documentation is next.
|
2017-07-11 22:41:10 -04:00 |
|
Thomas Harte
|
368bff1a82
|
Added a shell class that will one day be able to parse CSW files, plus the logic and metadata to instantiate it when a CSW presents itself.
|
2017-07-10 21:43:58 -04:00 |
|
Thomas Harte
|
d853841dd5
|
Further lightened up my file-is-ZX81 check.
|
2017-07-10 20:44:13 -04:00 |
|
Thomas Harte
|
bcb7c27cc4
|
Given that I'm not racing this any more, turned the intended 1 second back into 1 second.
|
2017-07-08 19:21:33 -04:00 |
|
Thomas Harte
|
2f42874fd3
|
Another fix to deal with real-time fighting: allow 8 and 18 pulses to be recognised as 1s and 0s. That's because the hand-off from ROM routines to parsing may occur very shortly before the first pulse of a valid sequence, making it look like there's a ghost. A cleaner solution needs to be found, probably revolving around allowing parsers to be attached to tapes and therefore to run constantly.
|
2017-07-06 22:33:03 -04:00 |
|
Thomas Harte
|
84d0e9b4cd
|
Accept a pulse that begins exactly on seek_time as being found while seeking.
|
2017-07-06 22:31:45 -04:00 |
|
Thomas Harte
|
a53011f778
|
Extended intro and outro length because right now I'm racing this myself. Can return to normal once tape motor control is implemented.
|
2017-07-06 22:31:12 -04:00 |
|
Thomas Harte
|
919fc48cc5
|
Fixed dumb out-of-bounds access error.
|
2017-06-22 22:28:50 -04:00 |
|
Thomas Harte
|
87ee8450fe
|
Minor rejig: it's much more likely that something that can't be distinguished is a ZX81 program. TODO: some sort of BASIC token parsing, to be more confident.
|
2017-06-22 20:23:14 -04:00 |
|
Thomas Harte
|
52d9ddf9e5
|
Gave the binary tape player a more logical assignment of wave level to output level. Which miraculously appears to have been the issue with the ZX80/81 tape loading — the inconsistency of silences seems to have been the issue.
|
2017-06-21 22:13:24 -04:00 |
|
Thomas Harte
|
e6e6e4e62b
|
Adds an extra character for padding the ZX81 table.
|
2017-06-12 22:08:11 -04:00 |
|
Thomas Harte
|
626737b9fa
|
Started mucking about with some string conversion routines. Not finished yet.
|
2017-06-12 21:32:36 -04:00 |
|
Thomas Harte
|
22de481557
|
Made an attempt to get .p/.80 checked and as far as the emulated machine.
|
2017-06-12 19:41:59 -04:00 |
|
Thomas Harte
|
77aa3c187e
|
Rebranded ZX80O as ZX80O81P, with an eye to making it accept ZX81 .p files. Adjusted the initial selection part of the static analyser appropriately.
|
2017-06-11 21:38:32 -04:00 |
|
Thomas Harte
|
ee0283c985
|
Modified to use an in-memory buffer for file contents.
|
2017-06-11 21:35:09 -04:00 |
|
Thomas Harte
|
2c6414ce11
|
Adjusted to allow inspect_waves to swallow a gap before a bit if necessary, increasing the opportunities for its call.
|
2017-06-11 18:31:09 -04:00 |
|
Thomas Harte
|
e5aea632ee
|
Updated curly bracket placement.
|
2017-06-11 17:29:22 -04:00 |
|
Thomas Harte
|
c2bc9a8c62
|
Ensured no namespace collision in double-include guards.
|
2017-06-11 16:41:15 -04:00 |
|
Thomas Harte
|
256ba4028b
|
Rejigged to eliminate semi-duplication of the is-a-file test.
|
2017-06-08 21:52:13 -04:00 |
|
Thomas Harte
|
b07af2660d
|
Adjusted to make sure that the very end of a tape is properly measured.
|
2017-06-08 21:33:35 -04:00 |
|
Thomas Harte
|
bc0d70b2f7
|
Added: a shout-out when the tape has been exhausted.
|
2017-06-08 21:32:27 -04:00 |
|
Thomas Harte
|
c6e48dfd56
|
Given that a final gap is semantically part of describing tape contents, ensured one formally appears before declaring that the tape has ended.
|
2017-06-08 21:31:54 -04:00 |
|
Thomas Harte
|
c775db50ef
|
Ensured no out-of-bounds accesses.
|
2017-06-08 21:31:03 -04:00 |
|
Thomas Harte
|
ee4c8b5ad2
|
Ensured final byte plays out.
|
2017-06-08 19:51:49 -04:00 |
|
Thomas Harte
|
d8b76e31c3
|
Added and improved the is-this-ZX80-stuff test. It seems some bytes are going missing in the to->from tape conversion.
|
2017-06-08 19:49:18 -04:00 |
|
Thomas Harte
|
7e10c7f9d8
|
Relocated the ZX80/81 concept of a 'file' out from Tape into Data, given that it's an exact duplicate of memory.
|
2017-06-08 19:09:51 -04:00 |
|
Thomas Harte
|
c47128f433
|
Widened tolerances and ensured zero bits aren't prematurely discarded.
|
2017-06-07 17:50:03 -04:00 |
|
Thomas Harte
|
8aab9acc10
|
Eliminated use of the zero level; now definitively returns a low/high input.
|
2017-06-07 17:39:29 -04:00 |
|
Thomas Harte
|
dbd2944c13
|
Took an initial run at the ZX80/81 parser.
|
2017-06-07 17:27:05 -04:00 |
|
Thomas Harte
|
4603fa6f24
|
Extended explicitly to support a token of lookahead, which is pretty much what was on offer anyway. Also corrected instance variable names, as per better adoption of C++ norms.
|
2017-06-07 17:21:57 -04:00 |
|
Thomas Harte
|
60300851ea
|
Started sketching out a tape parser for ZX80 and '81 files. I think this'll help me to verify whether the .O input is working.
|
2017-06-07 10:12:13 -04:00 |
|
Thomas Harte
|
58312ea2b7
|
Updated to new standardisation on curly bracket placement.
|
2017-06-07 10:05:43 -04:00 |
|
Thomas Harte
|
cb534d8b85
|
Corrected comment.
|
2017-06-07 10:05:16 -04:00 |
|
Thomas Harte
|
4677cebf40
|
Rejigged to correct: spaces go after bits, not after bytes.
|
2017-06-06 18:29:15 -04:00 |
|
Thomas Harte
|
7399f3d798
|
Caveman debugging in place, it looks like this file is returning nonsense.
|
2017-06-06 18:18:55 -04:00 |
|
Thomas Harte
|
faeecf7665
|
Made sure that there's nothing but silence at the end of the tape, even if the .O file is too long.
|
2017-06-06 18:16:47 -04:00 |
|
Thomas Harte
|
8c1769f157
|
Made a quick attempt at serialising from ZX80 .O to waves.
|
2017-06-04 16:59:26 -04:00 |
|
Thomas Harte
|
655809517c
|
Ensured that there is a subclass of file that is entrusted to load .O/.80 files, and that the code routes such files to it, noting that it should consider whether a ZX80 is required.
|
2017-06-04 16:37:03 -04:00 |
|
Thomas Harte
|
5d91a2600d
|
Permitted ROM-style PRGs that are not a power-of-two in size, and added extra safety checks on loading data from a tape.
|
2017-05-08 22:15:35 -04:00 |
|
Thomas Harte
|
2807e3134f
|
Implemented speedy header finding. So that's half of it.
|
2017-05-07 20:32:48 -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
|
b3c33d993a
|
Made an attempt to explain the requirements placed upon Disk subclasses that wish to support writing.
|
2016-12-31 15:30:48 -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
|
52b850a3f5
|
Quick extra: make sure parsed tracks don't overflow the 6400 byte space available in an MFM disk. Which might be better expressed as 6250?
|
2016-12-31 12:51:52 -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
|
12549ff412
|
Might as well get the file offset before entering the critical section; also moved the lock guard down more explicitly to group with the second set of actions.
|
2016-12-31 11:48:46 -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
|
ea4d85e1cd
|
The virtual disk constructed is the same across all tracks. So why not just request zero?
|
2016-12-31 00:10:35 -05:00 |
|
Thomas Harte
|
f217d508b8
|
Completed first attempt at write support for Oric disk images.
|
2016-12-30 23:12:46 -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
|
632b3c63b1
|
Added the infrastructure necessary for Oric disks to appear writeable to the machine and to receive changed tracks.
|
2016-12-30 22:51:48 -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
|
0f399b0a0c
|
Made type conversion explicit.
|
2016-12-30 19:59:01 -05:00 |
|
Thomas Harte
|
3b29e6a473
|
Ensured SSD and ADFs are grown if required.
|
2016-12-30 18:08:12 -05:00 |
|
Thomas Harte
|
07dacff42d
|
Added writing for Acorn ADF disks, plus appropriate TODOs in both similar bits of boilerplate.
|
2016-12-30 18:03:30 -05:00 |
|
Thomas Harte
|
c85450648f
|
Fix: make sure copies have proper event lengths. Also made it much clearer what's going on with the initial copy to the heap.
|
2016-12-30 17:55:46 -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
|
5d63556870
|
Period s need a custom copy constructor too, if they're going to avoid sharing an event_source.
|
2016-12-30 17:39:52 -05:00 |
|
Thomas Harte
|
81a3cbac45
|
Ensured a copy is passed for writing back rather than the original.
|
2016-12-30 17:26:44 -05:00 |
|
Thomas Harte
|
63ff5165a4
|
After a quick bit of reading, discovered the virtual copy constructor pattern really is only a convention in C++, and conformed to it. Which hopefully gives copyable tracks.
|
2016-12-30 17:25:39 -05:00 |
|
Thomas Harte
|
71dbd78cf2
|
If asynchronous background processing is to occur on tracks then, given that they inherently have state, they'll need to be copyable, and ideally 'cheaply' (though it's not too great a priority). So started implementing appropriate copy constructors. Also introduced an extra level of indirection to PCMSegmentEventSource so that it can copy itself without copying the underlying PCMSegment , which is 95% of the heft of a track in all currently-implemented cases.
|
2016-12-30 14:23:26 -05:00 |
|
Thomas Harte
|
f88f3c65e9
|
Removed duplicated newline.
|
2016-12-30 14:21:36 -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 |
|