Thomas Harte
698e4fe550
Tidies the Disk
file hierarchy.
2017-09-22 22:39:23 -04:00
Thomas Harte
b5406b90cd
Introduces a new class hierarchy for disk images.
...
Increasing independence of format-specific stuff and generic caching without mangling them into a common namespace, and allowing in some cases for a decrease in read/write blocking.
2017-09-22 20:28:11 -04:00
Thomas Harte
05a93ba237
Merge pull request #246 from TomHarte/MainThreadBackingSize
...
Ensures self.bounds and -convertSizeToBacking: are called only on the main queue.
2017-09-20 20:00:45 -04:00
Thomas Harte
77548d14db
Ensures self.bounds and -convertSizeToBacking: are called only on the main queue.
2017-09-20 19:59:34 -04:00
Thomas Harte
b85dd608e7
Merge pull request #245 from TomHarte/Xcode9
...
Updates to Swift 4 and Xcode 9's recommended project settings.
2017-09-20 19:54:31 -04:00
Thomas Harte
231f13d810
Updates to Swift 4 and Xcode 9's recommended project settings.
2017-09-19 23:06:37 -04:00
Thomas Harte
704bfa114c
Merge pull request #244 from TomHarte/FasterStartup
...
Improves CPC analysis times
2017-09-16 22:07:43 -04:00
Thomas Harte
44a56724cb
Speeds up byte decoding within sectors for the ahead-of-time MFM parser.
2017-09-16 20:28:24 -04:00
Thomas Harte
5fbea625ae
Switches the CPC static analyser to maintaining a vector of pointers rather than a complete copy of files.
...
Hence saves a lot of copying and moving — around a second's worth when dealing with the selected test disk.
2017-09-16 20:15:06 -04:00
Thomas Harte
ac57b37e96
Eliminates repetition of the 'untypable character' test.
2017-09-16 19:46:41 -04:00
Thomas Harte
e3e9baeaa4
Merge pull request #243 from TomHarte/Detection
...
Adds a test that file extension also be typeable.
2017-09-16 19:11:53 -04:00
Thomas Harte
e071123f90
Adds a test that file extension also be typeable.
2017-09-16 19:10:17 -04:00
Thomas Harte
98adb01721
Merge pull request #242 from TomHarte/8272ReadyInterruption
...
Improves CPC disk emulation
2017-09-16 18:28:00 -04:00
Thomas Harte
d6a5f9a29e
Revokes unnecessary change.
2017-09-16 18:24:13 -04:00
Thomas Harte
0d84b4b9dd
Removes some redundant end_writing calls.
2017-09-16 17:09:17 -04:00
Thomas Harte
a85909198f
Adds defences against double calls to end writing.
2017-09-16 17:07:36 -04:00
Thomas Harte
98751e6ac8
Ensures that all result phases are exactly the intended length by replacing accumulation with assignment.
...
Also attempts a different version of control mark behaviour. Experiments.
2017-09-15 22:59:26 -04:00
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
35fe4d50d4
Adds command termination upon drive becoming unready, and copies head and drive selection into ST0.
2017-09-15 20:26:41 -04:00
Thomas Harte
b835cb73e2
Merge pull request #241 from TomHarte/DriveEvents
...
Devolves `TimedEventLoop` ownership from disk controllers to drives
2017-09-15 19:15:44 -04:00
Thomas Harte
662d031e3c
Adds exposition on the meaning of a disk controller being in write mode.
2017-09-15 19:14:36 -04:00
Thomas Harte
bf20c717fb
The Drive now no longer produces input when in writing mode — other than announcing the index hole.
2017-09-14 22:32:13 -04:00
Thomas Harte
4d4a0cf1d2
Puts the disk controller back into the loop with knowledge about reading mode, and uses that knowledge to cut off the PLL.
2017-09-14 22:30:40 -04:00
Thomas Harte
b62f3e726a
Adds a start-of-execution-phase get-out for drives that aren't ready.
2017-09-12 20:43:53 -04:00
Thomas Harte
82b13e98f2
Implements the real hardware ready test for Drives — motor on plus two index holes.
2017-09-11 22:27:50 -04:00
Thomas Harte
9ac831b09c
Added an additional protection against overflow.
2017-09-11 22:24:24 -04:00
Thomas Harte
42616da7ff
Adjusts the Oric Microdisc to propagate motor control more widely.
2017-09-11 22:15:54 -04:00
Thomas Harte
2f13517f38
Adjusts the 1770 not to talk directly to the drive about motor status.
2017-09-11 22:10:56 -04:00
Thomas Harte
fb9fd26af7
Updates the 1540 for the slightly-more modern world of decoupled drives and disks (!).
2017-09-11 22:08:10 -04:00
Thomas Harte
d3c385b471
Separates the 8272's drive selection signalling from actual drive ownership.
...
Thereby returns working motor control to the CPC.
2017-09-11 21:25:26 -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
6d6cac429d
Fixes extra time accumulation during track running.
...
Introduces a bunch of further asserts, which aided me in determining the fix, i.e. that Drives being responsible for their own setup_track could double-pump the event loop.
2017-09-10 22:44:14 -04:00
Thomas Harte
dc0b65f9c9
Corrects initial event loop timing state.
2017-09-10 20:51:21 -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
1a96cce26f
Implements SingleTrackDisk, a Disk that contains only a single, specified, track.
2017-09-10 17:34:14 -04:00
Thomas Harte
a4e275e1fc
Provides an implementation of Drive's new interface.
...
Mostly lifted from DiskController. `set_disk_with_track` has been withdrawn in favour of providing a suitable wrapper `Disk` subclass, as being an unnecessary complexity and intermingling of concerns.
2017-09-10 17:33:01 -04:00
Thomas Harte
6075064400
Adds the ability to query a TimedEventLoop for its input clock rate.
2017-09-10 17:31:43 -04:00
Thomas Harte
ff6e65cca9
Introduces necessary storage and interface for writing.
2017-09-10 16:23:31 -04:00
Thomas Harte
90d2347c90
Extended to permit subclasses that are interested to get sub-run_for information about event times.
2017-09-10 14:44:38 -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
fed2bc9fc9
Merge pull request #240 from TomHarte/C1540
...
Simplifies the published C1540 interface and corrects a transcription bug.
2017-09-05 21:22:25 -04:00
Thomas Harte
ff510f3b84
Explicitly disallows copying of VIAs, and marks the constructor as noexcept.
2017-09-05 21:21:23 -04:00
Thomas Harte
3b12fca417
Corrects non-recurring-pattern adaptation bug: the 'SerialPortVIA' should keep a reference to its VIA, not a copy of it.
2017-09-05 21:19:56 -04:00
Thomas Harte
8eeb7e73cd
Adds a commented-out printf that I might like to use again later.
2017-09-05 21:15:56 -04:00
Thomas Harte
7fd6699e0b
Corrects comment indentation.
2017-09-05 21:15:15 -04:00
Thomas Harte
ed70b15fc9
Merge pull request #239 from TomHarte/6522Tests
...
Corrects 6522 bridge per has-a-not-is-a template switch.
2017-09-04 21:58:07 -04:00
Thomas Harte
ff24e1de31
Corrects 6522 bridge per has-a-not-is-a template switch.
2017-09-04 21:56:21 -04:00
Thomas Harte
6547102511
Attempts better to hide C1540 implementation details from the reader.
...
In this case not from the compiler, as it's desireable to keep `run_for` as a non-virtual call, and therefore everything else comes alone for the ride.
2017-09-04 20:58:00 -04:00