Thomas Harte
5968c9a391
Corrects Apple II output audio.
2018-04-21 14:56:50 -07:00
Thomas Harte
aebe8a64a2
Removes empty printf.
2018-04-20 10:58:23 -04:00
Thomas Harte
b8ae283049
Implements correct text inverse/flashing.
2018-04-19 22:14:22 -04:00
Thomas Harte
e03a403a51
Adds exposition.
2018-04-19 20:41:09 -04:00
Thomas Harte
ba43b3e6b8
Reverses bit order of graphics stream; apparently the ROM is backwards.
2018-04-19 20:39:38 -04:00
Thomas Harte
b4a2d1395c
Ensures left and right cursor keys work.
2018-04-18 22:23:31 -04:00
Thomas Harte
f5ae8d0f79
Attempts to be more rigorous about clock rates.
2018-04-18 21:52:22 -04:00
Thomas Harte
5f1c210746
Simplifies and corrects low-resolution colour generation.
...
Possibly disproving the premise for this whole experiment, all colours seem immediately to work correctly. Hmmm.
2018-04-18 21:41:11 -04:00
Thomas Harte
f6c2f6e896
Slightly adjusts colour burst logic to fix transition lines in mixed mode.
2018-04-18 20:39:12 -04:00
Thomas Harte
6547560e52
Gives the CRT the ability to move iCoordinate multiplication outside of the fragment loop.
...
That resolves precision issues, as were plaguing the Apple II.
2018-04-18 19:29:03 -04:00
Thomas Harte
a167e3849b
Allows multiple ROMs to be inserted into the Electron.
2018-04-18 18:13:30 -04:00
Thomas Harte
f22c23cb4c
Attempts to bring audio to the Apple II.
...
By factoring the audio toggle out from the MSX.
2018-04-17 22:28:13 -04:00
Thomas Harte
a07c99d778
Completes first draft of Apple II video hardware.
2018-04-17 22:04:02 -04:00
Thomas Harte
1c605d58e3
Removes the CRT requirement for an integral relationship between cycles and samples.
2018-04-16 20:00:56 -04:00
Thomas Harte
6a79ce9eb1
Adds enough to the Apple II's video that I can see what's going on with soft switches.
2018-04-15 21:55:26 -04:00
Thomas Harte
465c38f03c
Extends the keyboard protocol and adds keyboard input to the Apple II.
2018-04-15 21:11:30 -04:00
Thomas Harte
be05d51e07
Now gives something a lot like the proper character output.
2018-04-15 20:31:04 -04:00
Thomas Harte
9bc470027e
Put enough in place to get a visual representation of video memory.
...
Not the correct one, and so as to indicate that the machine isn't booting, surprisingly.
2018-04-15 19:35:08 -04:00
Thomas Harte
335c633884
Retrenches temporarily to full 8bpp output; introduces extra half a colour cycle of pause.
2018-04-15 18:54:05 -04:00
Thomas Harte
cd26f11818
Fixes documentation misstatement.
2018-04-15 18:00:51 -04:00
Thomas Harte
abe47b6ed8
Makes first attempt at a stable display area. Not entirely successful.
2018-04-15 18:00:40 -04:00
Thomas Harte
61659faeaa
Adds the necessary call-outs to allow implementation of video generation.
2018-04-15 15:13:07 -04:00
Thomas Harte
71adb964e5
The Apple II now has a functioning processor, ROM and RAM.
2018-04-14 21:41:26 -04:00
Thomas Harte
e599e65087
Switches to use of the TargetList
typedef wherever possible.
2018-04-14 19:46:38 -04:00
Thomas Harte
7efee9b52b
Does the bare minimum to create a class skeleton for Apple II implementation.
2018-04-14 19:46:15 -04:00
Thomas Harte
079dc671e1
Rationalises per-machine static analyser call pattern, and adds Apple II as an option.
2018-04-14 12:12:12 -04:00
Thomas Harte
15f7cbe8c1
Corrects capitalisation.
2018-04-11 22:06:50 -04:00
Thomas Harte
428b6145fa
Converts 6560 to more project normative templated form.
2018-04-11 22:00:42 -04:00
Thomas Harte
3ad0b31db8
Limits regions accessible to the 6560 to those built into the machine.
2018-04-11 21:35:23 -04:00
Thomas Harte
94b1c37fb2
Slightly simplifies bus decoding.
2018-04-08 18:51:37 -04:00
Thomas Harte
b20cbcd5fe
Causes the Vic-20 to obey its own has_c1540 flag.
2018-04-08 17:35:02 -04:00
Thomas Harte
865c47a1ac
Names the magic constants.
2018-04-08 10:35:07 -04:00
Thomas Harte
3821679efd
Switches to bit unpacking on the GPU.
2018-04-07 22:17:47 -04:00
Thomas Harte
10f637d2cf
Enhances the CompoundSource so that constituents can have different volumes.
2018-04-07 14:30:02 -04:00
Thomas Harte
36e0cb29c0
Ensures proper propagation of video choice through the Oric.
2018-04-04 19:14:42 -04:00
Thomas Harte
c0b4dd65da
Mades the expected video signal usage explicit.
2018-04-04 19:01:18 -04:00
Thomas Harte
69f520428d
Makes a first, ugly attempt at a 'new machine' dialogue for the Mac.
...
Which has implied getting much more specific about MSX disk drive attachment, and has prompted an excuse to offer the ZX80 with the ZX81 ROM.
2018-04-02 22:42:41 -04:00
Thomas Harte
33084899d0
Provides s-video as a command-line option.
2018-03-31 22:14:34 -04:00
Thomas Harte
8b45377b89
Simplifies storage underlying Vic memory.
...
In the hope of avoiding non-obvious bugs.
2018-03-31 18:54:40 -04:00
Thomas Harte
f6fb368d88
Allows the fast-tape mechanism to take ownership of tape handling.
...
Any successful fast tape interaction will now permanently pause the tape until a failed interaction occurs. This may or may not be a good idea.
2018-03-30 21:22:52 -04:00
Thomas Harte
912791d3d4
Causes the s-video path correctly to function.
2018-03-30 18:24:18 -04:00
Thomas Harte
163a61dd63
Corrects SVideo-as-composite output; the Atari and Vic-20 now both supply svideo.
2018-03-30 13:16:18 -04:00
Thomas Harte
33281b9d89
Introduces S-Video as a video signal type at the interface level.
2018-03-30 10:25:41 -04:00
Thomas Harte
286259c83b
Adds missing 6560 update hooks.
2018-03-29 20:49:36 -04:00
Thomas Harte
ec353ce663
Makes minor Vic-20 optimisations.
...
Specifically: the 6560 is updated only upon writes (more nuance can arrive), and tape sleeps are observed.
2018-03-27 21:52:52 -04:00
Thomas Harte
6d464557a0
Reintroduces a warm-up run for the C1540.
...
That simulates the normal real-life scenario of switching the drive on slightly before the computer, and causes it to function correctly from immediate fast typing on an American Vic.
Also switches a couple of casts within the C1540 to functional style.
2018-03-26 21:06:07 -04:00
Thomas Harte
a2da51c30b
Commutes Vic-20 machine configuration options to its Target.
2018-03-26 19:01:57 -04:00
Thomas Harte
e15d6717a1
Strips back Vic-20 static analysis to the bare minimum.
...
Also corrects an unsafe assumption in fast loading.
2018-03-25 13:37:33 -04:00
Thomas Harte
7fcd243be0
Ensures the rom fetcher is properly recorded for potential provision to the C1540.
2018-03-23 18:20:17 -04:00
Thomas Harte
a301964bd0
Ensures all audio queues are fully merged before machine destruction.
...
Thereby avoids a race condition.
2018-03-22 21:59:19 -04:00
Thomas Harte
2712702461
Makes get_clock_rate
protected. It's now an implementation detail.
2018-03-22 10:01:18 -04:00
Thomas Harte
da3d65c18f
Devolves time to cycle conversion to machines.
...
Thereby avoids a whole bunch of complicated machinations that would otherwise have been required of the multimachine.
2018-03-21 22:18:13 -04:00
Thomas Harte
89bec2919f
Encapsulates machine configuration properties for all remaining platforms.
2018-03-09 16:07:29 -05:00
Thomas Harte
78eaecb29e
Provides the proper framework for encapsulation of analyser target specifics.
...
... while making them a safe container for objects too. Uses the ZX80/81 as the pilot platform.
2018-03-09 15:36:11 -05:00
Thomas Harte
6b1eef572b
Eliminates diamond inheritance of KeyboardMachine::Machine by typers.
...
Specifically by pulling the key action stuff into a purely abstract class [/interface]. Takes the opportunity to unpublish a bunch of machine details.
2018-03-09 15:19:02 -05:00
Thomas Harte
48737a32a7
Introduces formal setting of the output volume to SampleSource
.
...
Previously every output device was making its own decision. Which is increasingly less sustainable due to the CompoundSource.
2018-03-09 13:23:18 -05:00
Thomas Harte
03501df9e5
Merge pull request #365 from TomHarte/CartridgeDetermination
...
Works towards eliminating the special cases for Atari 2600 ROM handling.
2018-03-08 18:40:58 -05:00
Thomas Harte
1804ea6849
Ensures the ColecoVision and MSX account for instruction lengths in advance when timing secondary components.
2018-03-07 17:00:18 -05:00
Thomas Harte
c8657e08f4
Merge remote-tracking branch 'origin/master' into CartridgeDetermination
2018-03-07 16:42:16 -05:00
Thomas Harte
9abc020818
Corrects potential ColecoVision SGM AY timing issues.
2018-03-07 16:16:58 -05:00
Thomas Harte
2dade8d353
Introduces ZonX emulation for the ZX81.
2018-03-07 16:16:29 -05:00
Thomas Harte
1100dc6993
Opens up .bin and .rom to all cartridge platforms, and adds a confidence estimate to the Atari 2600.
2018-03-07 14:26:07 -05:00
Thomas Harte
2452641844
Introduces a fast workaround to avert a MultiMachine where it would instantly end.
2018-03-06 19:08:02 -05:00
Thomas Harte
c82af4b814
Introduces get_confidence
for the ColecoVision.
...
Based almost entirely on joypad accesses for now.
2018-03-06 19:06:35 -05:00
Thomas Harte
3c5a8d9ff3
Adds Super Game Module support for the ColecoVision.
2018-03-03 13:08:33 -05:00
Thomas Harte
bdfc36427c
Implements MegaCart support.
2018-03-02 18:40:01 -05:00
Thomas Harte
59b4c7314d
Merge branch 'master' into ColecoVision
2018-03-01 22:01:26 -05:00
Thomas Harte
b05d2b26bf
Corrects a counting error in the MSX.
2018-03-01 21:59:51 -05:00
Thomas Harte
86239469e7
Allows SN76489 consumers to apply an additional divider that reduces computation.
2018-03-01 18:51:05 -05:00
Thomas Harte
7890506b16
Gives the SN76489 its proper dividers and personalities.
2018-02-28 22:36:03 -05:00
Thomas Harte
87760297fc
Fixes underpumping of SN76489.
...
Audio works now. Though I still need properly to confirm who owns dividers in practice. I think probably all division should be within the SN.
2018-02-27 22:59:29 -05:00
Thomas Harte
d4df101ab6
Makes a first attempt at implementing the SN76489.
2018-02-27 22:25:12 -05:00
Thomas Harte
0ad2676640
Adds a class for the SN76489 and wires it into the ColecoVision.
2018-02-26 22:04:34 -05:00
Thomas Harte
a074ee2071
Possibly fixes ColecoVision input mapping.
...
Also provides symbolic input from the Mac.
2018-02-25 22:47:47 -05:00
Thomas Harte
204d5cc964
Extends JoystickMachine protocol to cover ColecoVision use case.
...
Also thereby implements input on the ColecoVision, in theory at least. No input is being fed though, so...
2018-02-25 19:08:50 -05:00
Thomas Harte
23d15a4d6c
The ColecoVision now accepts and loads cartridges.
2018-02-24 18:26:44 -05:00
Thomas Harte
23c47e21de
Proceeds the ColecoVision to booting.
2018-02-24 18:14:38 -05:00
Thomas Harte
5530b96446
Wired up a class and analyser for a ColecoVision.
2018-02-23 22:47:15 -05:00
Thomas Harte
270723ae72
Forces the MSX's perform_machine_cycle into the Z80.
2018-02-19 19:54:42 -05:00
Thomas Harte
fc81bfa59b
Eliminates tape player call when tape is not playing.
2018-02-19 18:36:31 -05:00
Thomas Harte
3673cfe9be
Pulls method call for tape fast loading checks out of inner loop for the Vic, Electron and ZX80/81.
2018-02-19 16:57:24 -05:00
Thomas Harte
b0ab617393
Simplifies inner loop test for MSX fast loading.
2018-02-19 16:24:47 -05:00
Thomas Harte
7b420d56e3
Removed state mirroring in the machine-specific Mac UI classes.
2018-02-14 21:46:50 -05:00
Thomas Harte
ddf1bf3cbf
Reintroduces options selection for the Mac.
...
For everything except the Vic-20, anyway. That has a somewhat outdated notion of what an options panel should be, corresponding to the work yet to do on its analyser.
2018-02-12 21:46:21 -05:00
Thomas Harte
23105956d6
Fixes spurious unrecognised miss detection for the ASCII mappers.
2018-02-11 20:51:39 -05:00
Thomas Harte
f02989649c
Corrects effect of pc_is_outside_bios.
2018-02-11 20:32:45 -05:00
Thomas Harte
eb39617ad0
Allows cartridges to filter based on the actor talking to them; corrects outstanding_machines access error.
2018-02-10 17:11:16 -05:00
Thomas Harte
43b682a5af
Adds multiple target versions of all the DynamicMachine-vended types.
2018-02-09 16:31:05 -05:00
Thomas Harte
043fd5d404
Merge branch 'DynamicAnalysis' of github.com:TomHarte/CLK into DynamicAnalysis
2018-02-09 09:12:05 -05:00
Thomas Harte
d63a95983d
Adds a couple of hard-stop conditions to the MSX, and respect for hard stops.
2018-02-09 09:10:56 -05:00
Thomas Harte
4cf258f952
Parallelises MultiMachine running, and ensures errors propagate.
2018-02-08 20:33:57 -05:00
Thomas Harte
4e720d57b2
With debugging hooks still on display, makes first attempt at dynamic analysis.
2018-02-01 07:53:52 -05:00
Thomas Harte
c12aaea747
Attempts to get as far as running the MultiMachine.
...
In doing so, fixes the long-standing bug that machines that output audio but don't have a listener produce a divide by zero.
2018-01-30 22:23:06 -05:00
Thomas Harte
ca48497e87
Pulls DynamicMachine
out of MachineForTarget
and adds MultiConfigurationTarget
as a first multiplexer.
2018-01-29 21:49:49 -05:00
Thomas Harte
d493ea4bca
Introduces a multimachine to handle multi-target static analyser outputs.
...
Non-functional as of yet.
2018-01-28 22:22:21 -05:00
Thomas Harte
e025674eb2
The MSX analyser is now smart enough not to be definitive when it's uncertain.
...
The cartridge type has also migrated to being a property of the cartridge, prefiguring my intention to discard the static analyser union.
2018-01-25 22:16:46 -05:00
Thomas Harte
f2519f4fd7
Decided to focus on 'confidence' over 'probability'.
...
Besides anything else, it individualises the measure. E.g. two targets can each have a confidence of 0.8 without each giving the wrong answer about probability.
2018-01-25 19:02:16 -05:00
Thomas Harte
66faed4008
Gives MachineForTargets
complete responsibility for initial machine state.
2018-01-25 18:28:19 -05:00
Thomas Harte
11abc99ef8
Introduces the extra level of indirection necessary to make Analyser::Static::Target polymorphic.
2018-01-24 22:35:54 -05:00
Thomas Harte
21efb32b6f
Integrates the static and nascent dynamic analyser namespaces.
2018-01-24 21:48:44 -05:00
Thomas Harte
d360b2c62d
Standardises the static analyser on std::vector and slightly widens passageway to a machine.
...
The SDL target would now be fooled by a hypothetical multi-target, the Mac not yet.
2018-01-23 22:18:16 -05:00
Thomas Harte
6a112edc18
Corrects 16kb ASCII mapper.
...
Also increases hit position acceptance for the 8kb ASCII.
2018-01-22 22:13:16 -05:00
Thomas Harte
8fb4409ebb
Adds hasty attempt at dynamic analysis to the MSX ROM handlers.
...
Logging for now, for further experimentation.
2018-01-22 21:50:56 -05:00
Thomas Harte
765c0d4ff8
Allows the Electron to load 8kb ROMs.
2018-01-15 21:27:45 -05:00
Thomas Harte
a5ac8c824e
Removes logging and unnecessary get_drive_is_ready
.
2018-01-07 21:59:59 -05:00
Thomas Harte
8be6cb827b
Implements MSX interrupt/data request reading register.
...
The disk ROM now appears to accept on-disk bytes, but still announces an IO failure.
2018-01-07 20:28:34 -05:00
Thomas Harte
2f59226300
Fixes: DiskROM drive motor control, track_for_sectors' sides.
2018-01-07 20:02:40 -05:00
Thomas Harte
513c067f94
Makes an attempt to rope in the WD1770 for MSX disk ROM emulation.
2018-01-07 19:12:52 -05:00
Thomas Harte
655b971976
Establishes that there is such as a thing as a Konami SCC.
...
Creates one, ensures it appears in memory when intended to, lets it handle reads and writes. It currently does nothing.
2018-01-06 20:15:55 -05:00
Thomas Harte
185cd3c123
Expands and documents MSX::MemoryMap and MSX::ROMSlotHandler.
...
Hopefully to cover all intended use cases.
2018-01-06 15:51:29 -05:00
Thomas Harte
ed564cb810
Implements the main four cartridge banking schemes.
...
Slightly proof of concept for now.
2018-01-04 22:18:18 -05:00
Thomas Harte
c7f8f37822
Ensures typers terminate.
2017-12-30 13:46:30 -05:00
Thomas Harte
769d9dfbb9
Adds missing header.
2017-12-29 18:41:26 -05:00
Thomas Harte
6da8a3e24b
Causes the MSX to respond to the appropriate standard configuration options.
2017-12-29 18:36:42 -05:00
Thomas Harte
e349161a53
Rejigs the typing relationship so that use of a typer is not strongly implied by the interface.
...
Simultaneously implements typing on the MSX by direct insertion into the key buffer.
2017-12-29 18:30:46 -05:00
Thomas Harte
d5b1a9d918
Moves the typer functionality behind a functionality-based naming scheme, eliminates its C-style memory management.
2017-12-29 15:26:03 -05:00
Thomas Harte
76af0228dd
Corrects longstanding survival of camel case in the analyser's loadingCommand
.
2017-12-29 15:15:29 -05:00
Thomas Harte
5fd0a2b9ea
Attempts to pull reimplementations of TAPION and TAPIN better into line with originals.
...
Also improves whole flow of the fast tape hack that uses them.
2017-12-28 22:48:04 -05:00
Thomas Harte
11b73a9c0b
Adds preliminary, non-error-checking wiring in of MSX parser alternatives to TAPION and TAPIN.
...
As both a prototype of the pending fast tape loading, and to provide for exact behaviour comparison.
2017-12-26 22:31:34 -05:00
Thomas Harte
b9b107ee85
Switches KeyGrave and KeyQuote, correcting a disarrangement.
2017-12-20 21:16:54 -05:00
Thomas Harte
0bb24075b6
Immediate fixes: TSX is seemingly TZX 1.21; the tape motor control works the other way around.
...
Input is not yet being recognised.
2017-12-19 22:17:42 -05:00
Thomas Harte
db6d9b59d0
Attempts to implement TSX support for the MSX.
2017-12-19 21:53:04 -05:00
Thomas Harte
2d892da225
Introduces the MSX keyboard toggle sample source.
...
In support of which, it also introduces a means of sample source composition.
2017-12-19 21:08:10 -05:00
Thomas Harte
d36e9d0b0d
Reintroduces cstring.h to a few files that previously got it implicitly.
2017-12-18 21:47:30 -05:00
Thomas Harte
2dc1d4443e
Separates LowpassFilter and SampleSource.
2017-12-18 21:39:23 -05:00
Thomas Harte
f8a2459c91
Corrects two lingering adaptation errors in the Vic-20.
2017-12-17 21:43:08 -05:00
Thomas Harte
ac80d10cd8
Separates the component parts of running an audio stream: task deferral, filtering and generation.
...
Walking towards improving opportunities for composition.
2017-12-17 21:26:06 -05:00
Thomas Harte
7a52e7d6d2
Provides an empty value for the interrupt cycle.
2017-12-13 22:44:03 -05:00
Thomas Harte
4daea1121b
Gives up on C-BIOS for a while, to get to an acceptable merge point.
2017-12-12 21:19:33 -05:00
Thomas Harte
afcdd64d5e
Switches to a less easy-to-confuse storage arrangement for MSX memory slots.
2017-12-11 21:09:53 -05:00
Thomas Harte
ec266d6c8e
Ensures the AY stops listening to the bus after each read or write.
2017-12-04 19:18:54 -05:00
Thomas Harte
e3a5218e78
Fixes AY and random port input for the MSX.
2017-12-03 22:25:18 -05:00
Thomas Harte
3766bef962
Eliminates some redundant white space.
2017-12-03 14:52:42 -05:00
Thomas Harte
fe7fc6b22e
Enables AY output from the MSX.
2017-12-02 16:30:43 -05:00
Thomas Harte
7f8a13a409
Adds bare minimum to get accepted 16- and 32kb cartridges to start on the MSX.
2017-12-02 16:06:04 -05:00
Thomas Harte
5da9cb2957
Introduces most of a keyboard mapping for the MSX.
2017-11-30 19:27:53 -05:00
Thomas Harte
54c845b6e2
Adds just enough logic to make every host key look like '0' to the MSX.
2017-11-29 22:07:30 -05:00
Thomas Harte
f0f149c018
Simplified paging logic.
2017-11-29 20:49:02 -05:00
Thomas Harte
aa4eef41d8
Seeks to introduce MSX interrupts.
2017-11-29 20:31:55 -05:00
Thomas Harte
69ec8a362e
Makes an attempt to perform MSX memory paging.
2017-11-28 21:56:15 -05:00
Thomas Harte
d33612def5
Ensures the MSX provides a clock to the VDP.
2017-11-26 20:07:30 -05:00
Thomas Harte
9cb6ca3440
Adds elementary decoding of VDP accesses.
2017-11-26 20:01:11 -05:00
Thomas Harte
e957e40b14
Shifts 8255 logging up into its own port handler. That's probably fine for now.
2017-11-26 18:59:29 -05:00
Thomas Harte
7a8a43a96a
Adds just enough of the MSX memory map for the Z80 to appear to try to do useful things.
2017-11-26 18:34:40 -05:00
Thomas Harte
0eb5dd9688
Introduces the fundamentals of bus routing for the MSX.
2017-11-26 16:47:59 -05:00
Thomas Harte
a14b53a9ab
Adds a TMS9918 skeleton plus enough in the MSX to get to a blank screen in SDL/kiosk mode.
2017-11-26 13:28:26 -05:00
Thomas Harte
576d554a2c
Expands upon the MSX skeleton.
2017-11-25 13:33:51 -05:00
Thomas Harte
68a2895753
Adds enough static analyser to get to the MSX itself as the point of failure in SDL/kiosk mode.
2017-11-25 13:18:24 -05:00
Thomas Harte
f90b3f06aa
Merge branch 'master' into MSX
2017-11-25 08:19:24 -05:00
Thomas Harte
ee9f89ccb5
Simplifies CPC ROM input mechanism.
2017-11-25 08:18:01 -05:00