Thomas Harte
|
57bfec285f
|
Makes it optional whether the Z80 supports the wait line. If the wait line isn't in use, runtime costs are decreased because the optional wait cycles need not be iterated over.
|
2017-08-26 23:08:57 -04:00 |
|
Thomas Harte
|
bdda701207
|
Reverts previous unevidenced change.
|
2017-08-26 22:58:16 -04:00 |
|
Thomas Harte
|
487fe83dca
|
Ensures that vertical sync and end-of-visible-lines conditions potentially trigger whenever line_counter_ changes, not only when it increments.
|
2017-08-26 17:54:54 -04:00 |
|
Thomas Harte
|
6c5a03187b
|
Relocates the HSYNC start test, in order to pass Arnold's cpctest HSYNC start position conformance test.
|
2017-08-26 17:22:48 -04:00 |
|
Thomas Harte
|
97f57a3948
|
Merge pull request #222 from TomHarte/6845GetState
Refines observable 6845 behaviour
|
2017-08-26 14:46:29 -04:00 |
|
Thomas Harte
|
7d7aa2f5d5
|
Eliminates repetition of the unpacking of register 3 into a horizontal sync count.
|
2017-08-26 14:37:03 -04:00 |
|
Thomas Harte
|
e7ad79c79a
|
Breaks apart the CPC's 6845 bus handler to obey phase 1 and phase 2, and now back-dates interrupts when appropriate.
|
2017-08-26 14:07:51 -04:00 |
|
Thomas Harte
|
28550c0227
|
Breaks the 6845 bus cycle into a phase 1 and a phase 2 per the belief that sync line changes, which are observable, happen at the end of the first phase rather than at the beginning of the next. This may have interrupt timing effects, as machines often derive an interrupt from sync.
|
2017-08-26 13:56:23 -04:00 |
|
Thomas Harte
|
6e99169348
|
Permits the 6845's bus state to be examined by an owner, eliminating the need to buffer it in the bus handler. But more than that it allows the CRTC to decide when it adjusts the various outputs respective to the main phase. So a net effect of the change is that the CPC now sees vsync a cycle earlier, because my current reading of the 6845 datasheet is that it is set at the end of phase 1, not the beginning of the next phase 1.
|
2017-08-26 12:59:59 -04:00 |
|
Thomas Harte
|
1017bb9f6b
|
Merge pull request #221 from TomHarte/6845UpCount
Regularises the 6845 sync counters
|
2017-08-26 12:51:39 -04:00 |
|
Thomas Harte
|
3caa4705ca
|
Limits sync counter size.
|
2017-08-26 12:31:19 -04:00 |
|
Thomas Harte
|
039aed1bd1
|
Switches the two sync counters to upward-going rather than downward, as a more likely match to the way the rest of the 6845 implementation.
|
2017-08-25 21:26:01 -04:00 |
|
Thomas Harte
|
d77d7fdd78
|
Merge pull request #220 from TomHarte/Analysis
Resolves all current analyser warnings.
|
2017-08-24 22:19:51 -04:00 |
|
Thomas Harte
|
c6e6c3fcfb
|
Resolves all current analyser warnings.
|
2017-08-24 22:18:44 -04:00 |
|
Thomas Harte
|
ecd3350a6f
|
Merge pull request #219 from TomHarte/ConstSafety
Makes all of PartialMachineCycle const
|
2017-08-24 22:04:06 -04:00 |
|
Thomas Harte
|
fa19e2d9c2
|
Removes some detritus.
|
2017-08-24 22:00:21 -04:00 |
|
Thomas Harte
|
95d360251d
|
Makes all of PartialMachineCycle const, with the exception of the target of *value, since that's intended to be writeable by recipients.
|
2017-08-24 21:32:33 -04:00 |
|
Thomas Harte
|
7af3de010e
|
Suspected my mode 1 interrupt timing might be off. Reminded myself of the sources. Persuaded myself that it wasn't. Added appropriate comments.
|
2017-08-23 22:25:31 -04:00 |
|
Thomas Harte
|
cefd421992
|
Merge pull request #218 from TomHarte/6845Factored
Refactors the 6845 to make end-of-line and end-of-frame conditions more explicit and to reduce repetition
|
2017-08-22 22:21:17 -04:00 |
|
Thomas Harte
|
a914eadc85
|
Ensured that register 6 is checked on every loop.
|
2017-08-22 22:17:45 -04:00 |
|
Thomas Harte
|
131b340d75
|
Dodges a lambda copy.
|
2017-08-22 21:55:10 -04:00 |
|
Thomas Harte
|
e956740c56
|
Refactors the 6845 more clearly to break out the acts of ending a line and ending a frame, changing the way the memory address is altered — the end-of-line value is provisionally stored and then used if necessary — in order to do so.
|
2017-08-22 21:54:48 -04:00 |
|
Thomas Harte
|
8afd83b91f
|
Merge pull request #217 from TomHarte/CompiletimeOptions
Introduces compile-time selection of minor CPU core features and applies forceinline when appropriate
|
2017-08-21 22:29:24 -04:00 |
|
Thomas Harte
|
40d7a603db
|
Ensured that forceinline does nothing in debug builds.
|
2017-08-21 22:04:15 -04:00 |
|
Thomas Harte
|
ee71be0e7e
|
Added the option not to include ready line support in the 6502 core, and took advantage of it in the Electron, Oric and Vic-20 implementations. Also tagged those as forceinline and/or override final where applicable.
|
2017-08-21 21:56:42 -04:00 |
|
Thomas Harte
|
cde29c4bf4
|
Added forceinlines and properly declared finals and overrides.
|
2017-08-21 21:07:10 -04:00 |
|
Thomas Harte
|
e1aded0d95
|
Allows Z80 users to opt out of support for the bus request line. Which both now do.
|
2017-08-21 20:43:12 -04:00 |
|
Thomas Harte
|
1237f174fe
|
Merge pull request #216 from TomHarte/NoiseReduciton
Cleans up issues affecting the sleeper mechanism and the CPC
|
2017-08-20 13:26:56 -04:00 |
|
Thomas Harte
|
0cbc1753b9
|
Quick fixes: the binary tape player now considers talk to the sleep observer only if motor control changes. The Amstrad CPC no longer attempts to use the component argument to identify the caller, since this will often be that of the superclass and not that of the derived class known to the CPC.
|
2017-08-20 13:18:46 -04:00 |
|
Thomas Harte
|
5cf0395936
|
Merge pull request #215 from TomHarte/Z80BusReq
Removes repeated checking of bus_request_line_ by the Z80.
|
2017-08-20 12:40:37 -04:00 |
|
Thomas Harte
|
6315c22b80
|
Removed repeated checking of bus_request_line_. It's now checked only after each outward perform_machine_cycle .
|
2017-08-20 12:39:45 -04:00 |
|
Thomas Harte
|
4614a56843
|
Merge pull request #214 from TomHarte/Sleeper
Experimentally introduces the concept of a 'sleeper' — a component that will volunteer to be unclocked for a period
|
2017-08-20 12:29:32 -04:00 |
|
Thomas Harte
|
8f5ae4a326
|
The CPC now responds to tape-originating sleeper observations.
|
2017-08-20 12:21:02 -04:00 |
|
Thomas Harte
|
8fdc5012e4
|
Updated TapePlayer and BinaryTapePlayer to be sleepers.
|
2017-08-20 12:18:36 -04:00 |
|
Thomas Harte
|
e88a51e75e
|
Worked logic all the way down to the CPC. If the 8272 announces that it is asleep, it is now no longer clocked. Also very slightly cut down on IRQ line chatter to the Z80.
|
2017-08-20 12:05:00 -04:00 |
|
Thomas Harte
|
49285e9caa
|
Attempted to implement Sleeper in Drive and therefore in DiskController. Also corrected a couple of nonconformant file names.
|
2017-08-20 11:54:54 -04:00 |
|
Thomas Harte
|
e3f2118757
|
Merge branch 'master' into Sleeper
|
2017-08-20 10:58:03 -04:00 |
|
Thomas Harte
|
daeaa4752f
|
Merge pull request #213 from TomHarte/MinorPalette
Makes a variety of minor performance improvements to the CPC
|
2017-08-20 10:57:41 -04:00 |
|
Thomas Harte
|
5344e3098b
|
Minor: made has_disk something that is decided on insertion/deletion.
|
2017-08-20 10:55:08 -04:00 |
|
Thomas Harte
|
cedb809c21
|
Sketched out a protocol designed to save processing time on anything that may sleep — probably just disk controllers for now but one can easily imagine it being applicable to printers, and possibly sound chips with suitable changes in guarantee for sound packet receivers.
|
2017-08-20 10:53:25 -04:00 |
|
Thomas Harte
|
2d9efccc98
|
Introduced a master 'is sleeping' flag. I'm starting to think there's a pattern forming here.
|
2017-08-20 10:43:53 -04:00 |
|
Thomas Harte
|
8ce46b6e49
|
Having spotted that I was using my single-character loop counter names incorrectly (quelle surprise!), got a bit more explicit. Also flattened into a single loop so that I can break rather than returning.
|
2017-08-20 10:32:09 -04:00 |
|
Thomas Harte
|
f2699a3f2b
|
Okay, even if releasing it is unsafe, I can at least move the typer so that it is no longer called.
|
2017-08-20 10:24:01 -04:00 |
|
Thomas Harte
|
85253a5876
|
Sought further to reduce the processing footprint of palette changes by updating only those table entries that are affected by a change.
|
2017-08-20 10:13:23 -04:00 |
|
Thomas Harte
|
911ee5a0d3
|
At least added a fast return.
|
2017-08-19 22:22:51 -04:00 |
|
Thomas Harte
|
57c5b38a6d
|
Step one towards cutting much of this cost: build only the table that's appropriate for the current mode, and at least declare when a more minimal change would be sufficient.
|
2017-08-19 22:19:46 -04:00 |
|
Thomas Harte
|
669e0caff5
|
Ensured the head_unload_delay values are properly seeded, and generalised the quick escape.
|
2017-08-19 22:06:56 -04:00 |
|
Thomas Harte
|
b24d04fc09
|
Merge pull request #212 from TomHarte/MFMParserDensity
Improves the variability of the MFM parser used for static analysis
|
2017-08-18 15:57:37 -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 |
|