Thomas Harte
c8a4432c63
Makes an attempt to transfer audio outputs during dynamic analysis.
2018-02-18 15:23:15 -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
d751b7e2cb
Marginally reformats for current style.
2018-02-11 20:32:59 -05:00
Thomas Harte
e1cab52c84
Ensures thread safety of access to machines array.
2018-02-10 19:38:26 -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
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
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
622a04aec8
Starts stripping the Mac port of its special machine knowledge.
...
Partly to force myself into moving that stuff into the cross-platform area, but mainly so that dynamic analysis can work equally from day one.
2018-01-24 20:14:15 -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
d213341d9c
Introduces the counters upon which I expect dynamic analysis to rest.
2018-01-22 21:39:23 -05:00
Thomas Harte
c2f1306d85
Updates copyright year.
2018-01-18 21:11:30 -05:00
Thomas Harte
edb30b3c6c
Introduces an icon for the Mac.
...
About which I have yet to decide my full feelings.
2018-01-18 21:01:30 -05:00
Thomas Harte
46c76b9c07
Switches to using the boilerplate public.item for all macOS UTIs.
2018-01-17 22:01:38 -05:00
Thomas Harte
e13312dcc5
Removed stray new line.
2018-01-16 21:46:31 -05:00
Thomas Harte
0202c7afb2
Consolidates Mac presentation of composite video selection.
...
Moves handling of an RGB/composite into `MachinePanel`, eliminating the need for `ElectronOptionsPanel` and `OricOptionsPanel`; similarly merges the MSX and Electron options panels so as to provide television/monitor selection for the MSX.
2018-01-15 18:36:22 -05:00
Thomas Harte
def82cba49
Makes MSX tape parsing more tolerant to phase.
...
Also reintroduces proper file type association for TSX on the Mac.
2018-01-10 21:54:15 -05:00
Thomas Harte
4e124047c6
Introduces enough DMK support to progress to failure to parse a track.
2018-01-08 21:57:11 -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
999a0c22d4
Adds superficial support for MSX .DSK.
...
In the sense that the file format itself is properly parsed, but the MSX doesn't actually yet have disk hardware.
2018-01-07 16:35:57 -05:00
Thomas Harte
2ffde4c3c2
Corrects SCC volume errors.
...
Which were leading to substantial overflow.
2018-01-07 09:59:00 -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
ed564cb810
Implements the main four cartridge banking schemes.
...
Slightly proof of concept for now.
2018-01-04 22:18:18 -05:00
Thomas Harte
c8367a017f
Cleans up test and makes attempt to factor in cartridge type popularity.
2018-01-01 21:21:05 -05:00
Thomas Harte
344a12566b
Tweaks a couple of expected cartridge types.
2018-01-01 20:14:56 -05:00
Thomas Harte
c07113ea95
Ensures no illegal accesses while testing MSX ROM type detection.
...
Specifically: the static analyser doesn't even correctly identify everything that is an MSX ROM yet, let alone then properly determine type.
2018-01-01 17:38:26 -05:00
Thomas Harte
bc2879c412
Corrects the MSX ROM unit test.
...
I.e. the test is correct now, for those SHAs I could find. The static analyser is still wrong just slightly less than half the time.
2018-01-01 17:35:13 -05:00
Thomas Harte
db25b4554b
Introduces failing tests of the MSX static analyser.
2018-01-01 16:38:26 -05:00
Thomas Harte
05b95ea2e0
Corrects Xcode tests.
2018-01-01 16:04:13 -05:00
Thomas Harte
1c255b9e7d
Generalises some of the disassembler, and provides Z80 logic to create a [first attempt at a] Z80 disassembler.
2017-12-31 18:49:35 -05:00
Thomas Harte
bf0601123b
Adds some document type UTIs.
...
Will need to survey all the other Mac emulators to get a complete list, I guess.
2017-12-30 13:36:29 -05:00
Thomas Harte
c18517be4b
Ensures that the fast loading option successfully flows from the Mac interface.
2017-12-29 19:07:22 -05:00
Thomas Harte
6a0bb83716
Corrects typos in the SDL main.
2017-12-29 18:40:32 -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
c4950574ea
Introduces an attempted reimplementation of the MSX BIOS's two main tape reading entry points.
2017-12-26 22:19:37 -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
2dc1d4443e
Separates LowpassFilter and SampleSource.
2017-12-18 21:39:23 -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
ec4c259695
Removes unused file.
2017-12-14 21:19:09 -05:00
Thomas Harte
aca7842ca4
Better documents and tidies the TMS9918.
2017-12-14 20:27:26 -05:00
Thomas Harte
ee44d671e7
Steps towards exposing the MSX in Cocoa builds.
2017-12-03 15:42:54 -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
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
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
ae50ca9ab2
Moves the MSX class to the appropriate place and gives it a Z80.
2017-11-24 21:59:54 -05:00
Thomas Harte
6e4bde00d3
Merge branch 'master' into MSX
2017-11-24 21:50:38 -05:00
Thomas Harte
221c05ca76
Adapts the Mac port to use a Machine::DynamicMachine, thereby eliminating plenty of duplication.
2017-11-24 21:36:22 -05:00
Thomas Harte
ff21ff90eb
Introduces MSX ROMs and an MSX class.
2017-11-24 20:43:26 -05:00
Thomas Harte
c83b3cefbc
Eliminates the generalised special case selectors and ROM suppliers from the CPC, Vic-20, Electron and ZX80/81.
2017-11-24 17:55:28 -05:00
Thomas Harte
a8ac51da73
Eliminates the Oric's non-reflective inputs for selections, and the Oric-specific ROM setter.
2017-11-24 16:59:00 -05:00
Thomas Harte
7b25b03cd5
Formally standardises machine options and introduces a --help option for the SDL target.
2017-11-20 21:55:32 -05:00
Thomas Harte
29b5ccc767
Removes redundant logging on the Mac.
2017-11-19 18:05:39 -05:00
Thomas Harte
2ea050556b
Adds transcoding of ostensible list selections to Boolean selections, and vice versa.
2017-11-18 21:09:26 -05:00
Thomas Harte
de9db724a7
Introduces Configurable::Device
and implements it for the Electron.
...
Configurable::Device covers devices that have user-facing configuration options, listing them and accepting them.
2017-11-17 23:02:00 -05:00
Thomas Harte
70039d22f1
Allows a CRT machine owner to set the target frame buffer for OpenGL output, breaking the assumption that it'll be zero.
2017-11-12 19:29:22 -05:00
Thomas Harte
c827d14d97
Corrects various GCC warnings across the 6560, CPC, TIA, Oric video and elsewhere.
2017-11-12 17:17:27 -05:00
Thomas Harte
d6141cb020
Increases number of warnings in Xcode.
2017-11-12 16:37:39 -05:00
Thomas Harte
2e15fab651
Doubles down on <cX> over <X.h> for C includes, and usage of the namespace for those types and functions.
2017-11-11 15:28:40 -05:00
Thomas Harte
2203499215
Enables -Wreorder and corrects a few of the more trivial fixes thereby suggested.
2017-11-09 22:14:22 -05:00
Thomas Harte
6e1d69581c
Eliminates a variety of end-of-line spaces.
2017-11-07 22:54:22 -05:00
Thomas Harte
f95515ae81
Eliminates a large number of instance of end-of-line tabs.
2017-11-07 22:51:06 -05:00
Thomas Harte
16c96b605a
Xcode 9.1 auto-change.
2017-11-07 22:43:25 -05:00
Thomas Harte
0d1b63a8c5
Switches the Objective-C machine bindings to use the set_rom_fetcher path for supplying ROMs, simplifying and unifying.
2017-11-07 22:29:57 -05:00
Thomas Harte
ddcdd07dd0
Modifies the Vic-20 and C1540 to bring them into the realm of self-ROM fetching.
...
Hence enables Vic-20 support within kiosk mode as currently drafted.
2017-11-07 21:19:51 -05:00
Thomas Harte
1e1efcdcb8
Pushes far enough along the path of having the SDL version do work that it becomes obvious I've never figured out the correct course of action if there is no sound output.
2017-11-05 12:49:28 -05:00
Thomas Harte
bc2f58e9de
Starts the process of adding an SDL-based 'kiosk' (i.e. TV UI, or even UI-less for now) mode.
...
Specifically, introduces to the Mac side of things an SDL target with, so far, enough logic to create a window and pump SDL's events, after having decided which machine and configuration it should use.
2017-11-04 19:36:46 -04:00
Thomas Harte
e983854e71
Converts all uint8_t
and uint16_t
casts to the functional style.
2017-10-21 21:50:53 -04:00
Thomas Harte
9e0907ee76
Completes clean-up of post-formalisation per-machine keyboard code.
...
At least for now. Standardising on how column + row is encoded might be helpful.
2017-10-21 10:52:35 -04:00
Thomas Harte
9ad4025138
Relocates things that were in Machines/ for machine usage.
...
Leaving only those things intended to be visible interface.
2017-10-21 10:30:02 -04:00
Thomas Harte
b2c1b83fcd
Consolidates Vic-20 keyboard code.
2017-10-19 22:27:30 -04:00
Thomas Harte
92d9805f09
Removes dead Objective-C protocol references.
2017-10-17 20:51:40 -04:00
Thomas Harte
542ec4312f
Switched the Objective-C code to using dynamic_cast alone to decide whether to post keyboard or joystick events.
2017-10-15 21:25:56 -04:00
Thomas Harte
7aaf27389c
Commutes the Atari 2600 to the JoystickMachine interface.
2017-10-15 20:44:59 -04:00
Thomas Harte
ee179aa7bd
Introduces a joystick analogue to the shared keyboard interface, and implements it for the Vic-20.
2017-10-14 22:36:31 -04:00
Thomas Harte
78ee46270b
Transfers possession of keyboard mappings from the Mac side over to individual machines.
...
Specifically by establishing an intermediate representation of a useful mix between the American and British IBM and Mac keyboard layouts, and routing through that.
2017-10-12 22:25:02 -04:00
Thomas Harte
edb632af52
Sketches first design for generalising keyboard input.
2017-10-09 22:26:39 -04:00
Thomas Harte
97a2be71e3
Introduces flush_tracks to Drive, while switching its interface to using Track::Address and adjusting associated integer types.
2017-10-06 21:45:12 -04:00
Thomas Harte
f623bff5c3
Removes unnecessary call.
2017-10-06 18:48:51 -04:00
Thomas Harte
f40e1fd840
Commutes the best-effort updater into C++11.
2017-10-05 18:09:58 -04:00
Thomas Harte
e194a2a015
Removes usages of deprecated initialiser.
2017-10-05 16:45:13 -04:00
Thomas Harte
35705c5345
Factors out bit reversing from the HFE class.
2017-10-03 19:12:45 -04:00
Thomas Harte
f41da83d97
Seeks to eliminate race conditions on the best-effort updater.
2017-09-30 21:34:43 -04:00
Thomas Harte
ef605eda51
Factors out commonalities in SSD/DSD and ADF implementations.
2017-09-30 20:30:15 -04:00
Thomas Harte
f86729c4ac
Ensures safe machine release upon window closure.
2017-09-30 20:12:46 -04:00
Thomas Harte
5dd3945695
Factors out the more egregious similarities between ADF and SSD.
2017-09-29 22:07:23 -04:00
Thomas Harte
970c80f2e3
Adds TrackSerialiser.cpp to the project and reorders section.
2017-09-26 22:03:42 -04:00
Thomas Harte
d1ce764201
Provides SectorsFromSegment, a bitstream to sector converter.
2017-09-24 22:41:16 -04:00
Thomas Harte
c7f27b2db4
Renames MFM.[c/h]pp as per its new remit: encoding only.
2017-09-24 21:40:43 -04:00
Thomas Harte
631f630549
Severs the MFM parser from the overweight single MFM.hpp.
2017-09-24 20:31:19 -04:00
Thomas Harte
2a08bd9ecc
Factors shifting plus stateful [M]FM token recognition out of the MFMDiskController.
...
Given the proliferation of MFM-related classes, establishes a subdirectory for them.
2017-09-24 20:07:56 -04:00
Thomas Harte
f789ee4ff0
Introduces a track to segment decoder.
...
This will be needed to make formats like G64 and HFE writeable, but probably also will be usable to speed up static analysis.
2017-09-23 22:39:19 -04:00
Thomas Harte
d72dad2d1a
Severs the DiskImage implementation from its public header file.
2017-09-22 22:46:31 -04:00
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
77548d14db
Ensures self.bounds and -convertSizeToBacking: are called only on the main queue.
2017-09-20 19:59:34 -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
1a96cce26f
Implements SingleTrackDisk, a Disk that contains only a single, specified, track.
2017-09-10 17:34:14 -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
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
Thomas Harte
24b3faa427
Deconstitutes the 6522 into component parts, templated and non-templated.
...
Adjusts the Oric, Vic-20 and C-1540 accordingly, albeit with the quickest possible solutions.
2017-09-04 14:26:04 -04:00
Thomas Harte
ab2bcb939f
Separates 6502Base into its constituent parts.
2017-09-04 11:08:33 -04:00
Thomas Harte
45499050b6
Separates Z80Base.cpp into its component classes.
2017-09-04 11:04:01 -04:00
Thomas Harte
b034d4e6f8
Refactors the Z80 to separate out interface and implementation.
...
Following the pattern just established by the 6502, puts all implementation specifics beyond the visibility of a human reading Z80.hpp and in subfolders so as to promote the idea that they shouldn't go out of their way.
2017-09-01 20:50:24 -04:00
Thomas Harte
b306776ba9
Removes from 6502.hpp all remaining implementation details, making it purely an interface document.
...
Though those details remain visible to files including 6502.hpp through necessity.
2017-09-01 19:46:29 -04:00
Thomas Harte
4af333d5ec
Tidies the 6502 template and folder hierarchy.
...
Specifically: there's now just the one .h file at the top level, giving a clear indication of what a user should read. That separates implementation from interface. It also devolves a lot more to the base class because doing so makes debug builds less of a hassle. The all-RAM 6502 has been shuffled off into a subfolder, to indicate that it's not something you necessarily need know about. Also general documentation improvements have been applied: incorrect citing of the recurring-template pattern has been removed and the meaning of the two BusHandler methods has now accrued at the bus handler.
2017-08-31 22:10:27 -04:00
Thomas Harte
f10be2a18a
Eliminates potential cyclic entry into CSMachine during its -dealloc.
...
Explicit cause: dealloc calls close_output(). That may decide to flush work, indiscriminately. Some of the flushed work might be audio generation. Audio generation might cause the audio queue to react with an out-of-data announcement. Which would cause a fresh attempt to update the CSMachine.
2017-08-31 21:22:23 -04:00
Thomas Harte
d06031dfcb
Removes the options panel for CPC display.
2017-08-27 17:11:35 -04:00
Thomas Harte
4a66dd9e82
Arranges for the ZX80/81 to get a peek at target configuration prior to construction. I'm as yet undecided on whether to make this the norm.
2017-08-27 16:42:16 -04:00
Thomas Harte
522839143f
Revokes -[CSMachine init] and the slightly troubling create-on-demand semantics it places upon subclasses via .machine. Therefore each machine must announce its own implementation of -init.
2017-08-27 16:36:21 -04:00
Thomas Harte
9aa150c338
Abstracts the target platform type out from the static analyser's ownership.
2017-08-27 15:02:13 -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
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
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
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
e6683e7f2d
Added the base skeletal stuff of HFE support.
2017-08-17 21:48:48 -04:00
Thomas Harte
378f231499
Fully wired in drag-and-drop for media insertion.
2017-08-17 11:00:08 -04:00
Thomas Harte
f68565a33f
Split the static analyser functionality so that it's possible just to ask for the set of media implied by a particular file. Extended ConfigurationTarget so that media alone can be pushed to a machine.
2017-08-17 10:48:29 -04:00
Thomas Harte
4c15e46fd1
Performed the normative removal from public view of Vic-20 implementation details. Which were hefty.
2017-08-16 16:05:30 -04:00
Thomas Harte
75208b0762
Moves the Electron implementation behind a more opaque interface, in line with changes elsewhere.
2017-08-16 15:33:40 -04:00
Thomas Harte
de1c526789
Cut the amount disclosed by the Atari 2600 for public inspection down to the minimum, relocating implementation into the .cpp.
2017-08-16 14:52:40 -04:00
Thomas Harte
148591b7f2
Hid most of the Oric innards, and corrected a potential multi-thread access error emanating from the Mac side of the world.
2017-08-16 14:35:53 -04:00
Thomas Harte
06e31f5102
Consequential to the 6502 change, severs the Atari 2600's cartridge container from its former attempt at runtime polymorphism, in favour of each cartridge's specific hardware being defined as a 'bus extender'.
2017-08-16 12:39:15 -04:00
Thomas Harte
3947347d88
Introduces active input handling for the AY and uses it in the CPC to give proper, active keyboard input, rather than push-on-select, which was only ever a temporary hack. Also maps a few more keys for the Amstrad.
2017-08-15 22:47:17 -04:00
Thomas Harte
6cfc3daacb
Introduced a test within the disk controller so as not to request illegal tracks from disks, instead automatically substituting an 'unformatted' track. Which is just empty.
2017-08-15 21:52:12 -04:00
Thomas Harte
2d81acb82e
Upped C++ standard to C++14 and added an #if that's intended to use the built-in std::gcd when compiled on C++17 or better. Fixed for new signedness warnings resulting for taking the step to C++14.
2017-08-11 19:18:45 -04:00
Thomas Harte
570d25214e
Made an initial attempt at typer support for the CPC.
2017-08-11 11:21:07 -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
ad8c8166bc
Built in gamma conversion for all machines, assuming an output of 2.8 for PAL, 2.2 for NTSC.
2017-08-10 15:17:08 -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
3e984e75b6
Strung up an empty shell that eventually should contain the 8272, and added appropriate IO decoding to the Amstrad.
2017-08-05 19:45:52 -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
bbb17acf3a
Expanded interface so that an external machine caller can request a string be typed without any knowledge of whatever it intends to do re: CharacterMappers. Which is immediately useful in paste functionality.
2017-08-03 11:50:50 -04:00
Thomas Harte
ad3a98387f
Within the Typer
framework: hatched out CharacterMapper
as a distinct thing from the target for keypresses, better to formalise responsibility but also to make it easy cleanly to sever that stuff into its own little part.
2017-08-03 11:42:31 -04:00
Thomas Harte
681d1e2f8d
Breaking its typer for now, adapted the ZX80/81 to having a Z80, not being one.
2017-08-02 22:12:59 -04:00
Thomas Harte
6ca07f1e28
I guess it might end up living somewhere else, but introduced a header with the compiler-specific stuff to allow me to force things inline.
2017-08-01 22:04:58 -04:00
Thomas Harte
9d43784c65
Significantly increased quantity of keys forwarded.
2017-08-01 20:37:55 -04:00
Thomas Harte
f5b278d683
Added enough stuff to put the emulated Amstrad CPC in a state of knowing whether its '0' key is pressed.
2017-08-01 17:31:56 -04:00
Thomas Harte
08ad35efd9
It's barely an implementation of the 8255, but ensured that data is bounced into the PortHandler, conveniently assuming the interaction mode used by the CPC.
2017-08-01 16:34:13 -04:00
Thomas Harte
58b98267fc
Formally transferred ownership of PIO accesses to an incoming template, and decided to start being explicit about how to specify the interfaces and provide fallbacks for optional behaviour for the new, clean generation of interfaces. A full-project sweep will inevitably occur but I'll try to tie off this branch first.
2017-08-01 16:15:19 -04:00
Thomas Harte
ace71280a0
Removed implementation file; this is only ever going to be a template.
2017-08-01 16:00:17 -04:00
Thomas Harte
2b168f7383
Disabled the address sanitiser as an every-time run again, as it just pushes my computer a bit too far.
2017-07-31 22:32:56 -04:00
Thomas Harte
0536f089e1
Eliminated old-[personal-]fashioned line break.
2017-07-31 22:32:26 -04:00
Thomas Harte
3df13cddd4
As per my keenness for cleanliness improvements corresponding to my ever-increasing C++ ability: turned the Amstrad into something that a factory produces, allowing me completely to hide a bunch of implementation details.
2017-07-31 22:32:04 -04:00
Thomas Harte
68ceeab610
Created a 6845 class and started pushing data at it and clocking it. It doesn't currently have the concept of a bus but will do, hence the in-header implementation.
2017-07-31 19:56:59 -04:00
Thomas Harte
afd409c883
Ensured that ROM images are loaded and passed to the Amstrad CPC.
2017-07-31 18:44:49 -04:00
Thomas Harte
26b6c03a2a
Re-enabled the address sanitiser as a development tool.
2017-07-31 07:30:07 -04:00
Thomas Harte
c0f1313830
Performed sufficient wiring to get to the point where attempting to load a CDT creates an instance of the Amstrad CPC and then fails only because the thing vends a nullptr
CRT.
2017-07-30 22:05:29 -04:00
Thomas Harte
5b5720fac0
Added to the static analyser the most basic through-path for Amstrad CPC content.
2017-07-30 21:15:20 -04:00
Thomas Harte
d25d7d7d40
Added the Amstrad CPC as a named target and declared support for its CDT file format.
2017-07-29 21:56:33 -04:00
Thomas Harte
761afad118
Corrected timestamp return, and its testing by the 6502 timing tests.
2017-07-27 21:19:16 -04:00
Thomas Harte
37950143fc
Attempted to nudge wait timing onto half-cycle boundaries, which expands the number of partial machine cycles the Z80 can post but pleasingly also regularises them. Switched the AllRAMProcessor to reporting half cycles by default and corrected all Z80 tests.
2017-07-27 20:17:13 -04:00
Thomas Harte
9257a3f6d7
Added test for 16-bit arithmetic, and fixed implementation.
2017-07-26 19:04:52 -04:00
Thomas Harte
728143247d
Added a test for RLD and RRD. Which already passes.
2017-07-26 18:56:35 -04:00
Thomas Harte
6ec4e4e3d7
Merge branch 'master' into Memptr
2017-07-25 23:01:34 -04:00
Thomas Harte
37ccb9d3b6
Fixed 6502 timing tests.
2017-07-25 23:00:39 -04:00
Thomas Harte
3c254360ba
Completed fixture of the 6502 BCD test.
2017-07-25 22:55:45 -04:00
Thomas Harte
3ca51bedc6
Discovered legitimate uses of the jam opcode so reinstated it. Corrected illegitimate uses.
2017-07-25 22:48:44 -04:00
Thomas Harte
36076b7ea5
Eliminated final vestige of professed jam handling. This should make it clear which tests still think they can capture jams.
2017-07-25 22:38:26 -04:00
Thomas Harte
279c369a1f
Switched to Cycles as the result from the 6502 perform_bus_operation
, helping slightly to clarify what you're intended to return and reducing type jumping within the 6502 implementation.
2017-07-25 22:21:09 -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
df4732be2e
Corrected test.
2017-07-24 22:33:49 -04:00
Thomas Harte
9435c1e12a
The 1540 is now a ClockReceiver
.
2017-07-24 22:32:41 -04:00
Thomas Harte
2912d7055b
The 6532 is now a ClockReceiver
.
2017-07-24 21:57:24 -04:00
Thomas Harte
13f7aa4063
The TIA is now a ClockReceiver
.
2017-07-24 21:48:34 -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
e6578defcd
It turns out that quite a few tests still rely on CSTestMachine6502JamOpcode. Though since it no longer works, that'll need to be fixed. In the meantime, fixed the test build process at least, as it's not really what this branch is meant to be invested in.
2017-07-23 22:22:50 -04:00
Thomas Harte
ace8e30818
Bubbled the Z80's move into clock receiver territory up into the Z80 test machine.
2017-07-23 22:21:39 -04:00
Thomas Harte
b0c2325adc
Corrected run call, and accepted that jam handling is gone forever.
2017-07-22 22:21:26 -04:00
Thomas Harte
2ff157cf7a
Switched CRTMachine over to use Cycles
as an explicit statement of units, and followed through on the effects of that.
2017-07-22 22:17:29 -04:00
Thomas Harte
1ba3f262a2
Sketched out a template for clock-receiving components to allow them to be implemented in terms of either half or whole cycles.
2017-07-22 21:46:50 -04:00
Thomas Harte
4ea835e50b
Added test for EX (SP), rp, which passes.
2017-07-22 17:17:32 -04:00
Thomas Harte
5fddbec132
Merge branch 'master' into Memptr
2017-07-22 17:06:22 -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
6437c43147
Added CPI and CPD tests: at last two that pass without requiring implementation changes!
2017-07-22 12:38:18 -04:00
Thomas Harte
5928a24803
Transcribed missing tests as TODOs.
2017-07-22 11:44:17 -04:00
Thomas Harte
20a6bcc676
Added tests for the various LD (nn), rr
instructions and corrected implementation to pass.
2017-07-22 11:39:13 -04:00
Thomas Harte
eaf313b0f6
Added a test on LD A, (DE) and LD A, (BC), and adjusted implementation to pass.
2017-07-22 11:20:21 -04:00
Thomas Harte
d51b66c204
Expanded test to hit all 65536 possibilities (and not to allocate a fresh Z80 test machine each time, as that's unnecessary and slow), and fixed implementation to pass test.
2017-07-21 23:01:35 -04:00
Thomas Harte
660f0e4c40
Added Objective-C through wiring and a Swift test class for Memptr modifications. So far with a single test, that fails.
2017-07-21 22:52:25 -04:00
Thomas Harte
2b5d0877a8
Adjusted parameter name to match documentation. I think it's a carry-over from before I was passing the whole event along.
2017-07-21 21:27:50 -04:00
Thomas Harte
2a7fc86b15
Enabled stricter warnings.
2017-07-21 20:44:35 -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
7b5f93510b
Fixed the DigitalPhaseLockedLoopBridge
bridge, once again fixing tests.
2017-07-16 20:55:57 -04:00
Thomas Harte
8ddd686049
Removed redundant variable.
2017-07-16 19:04:03 -04:00
Thomas Harte
2fb0aea990
Updated the C1540 test vessel to the new world.
2017-07-16 17:00:39 -04:00
Thomas Harte
279f4760d7
Eliminated buffer_size_
as something explicitly stored, and reduced size of delegate call out.
2017-07-16 15:01:39 -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
3e5c209039
Added basic Typer support for the ZX80 and '81.
2017-07-09 22:00:34 -04:00
Thomas Harte
54efcb7e2f
Made a game attempt at automatic motor control and ensured setting is initialised correctly from the user defaults.
2017-07-08 19:31:20 -04:00
Thomas Harte
e2575d6de4
Routed tape motor selections through to the C++ side of the world, and ensured that manual tape playback works properly.
2017-07-08 19:21:12 -04:00
Thomas Harte
23e989e170
This will likely do for the Swift/XIB side of things: the play/pause button is enabled or disabled as per the user's choice of automatic tape control, and toggles function when pressed. It communicates activity down to the Objective-C[++] layer, giving it a route through to the actual machine.
2017-07-08 19:12:06 -04:00
Thomas Harte
28412150e6
Added controls for controlling the tape motor of the ZX80/81, assuming I can find an automatic option.
2017-07-08 17:59:33 -04:00
Thomas Harte
cb105fdeb4
Took a first stab at high-res support.
2017-06-22 22:48:17 -04:00
Thomas Harte
aec4fd066b
I think I've definitively decided against this model of timing.
2017-06-22 21:32:14 -04:00
Thomas Harte
95a6b0f85c
Introduced an NMI/wait interrupt timing test, and adjusted the Z80 to conform to information posted by Wilf Rigter.
2017-06-22 21:09:26 -04:00
Thomas Harte
644ef13acd
Connected up the fast-tape GUI option for the ZX80 and '81.
2017-06-22 20:20:31 -04:00
Thomas Harte
0e0ce379b4
Renamed MachineCycle to PartialMachineCycle given that it mostly no longer intends to describe an entire machine cycle.
2017-06-21 20:38:08 -04:00
Thomas Harte
36e8a11505
Sought to simplify the way partial machine cycles are communicated, for ease of machine implementation. Also implemented the wait line.
2017-06-21 20:32:08 -04:00
Thomas Harte
108da64562
Fixed LD H, (HL) and LD L, (HL) by ensuring that whatever the subclass does goes to a temporary place before updating the address. Corrected the LD (IX+d), n machine cycle test for my new best-guess timing. This should leave only interrupt timing as currently amiss.
2017-06-20 22:25:00 -04:00
Thomas Harte
184b371649
Attempted to get to 'proper' timing for LD (IX+d),n, albeit that proper is a guess.
2017-06-20 21:48:50 -04:00
Thomas Harte
27ac342928
Corrected conditional call timing, and its test.
2017-06-20 20:57:23 -04:00
Thomas Harte
6752f165db
Added failing tests for both kinds of CALL.
2017-06-19 22:03:29 -04:00
Thomas Harte
e05076b258
Added tests for everything except CALL. All passing.
2017-06-19 22:00:04 -04:00
Thomas Harte
fadbfdf801
Added DJNZ test.
2017-06-19 21:31:56 -04:00
Thomas Harte
cb277b8d1e
Added JP and JR tests.
2017-06-19 21:27:23 -04:00
Thomas Harte
234f14dbbe
Tests were at fault; all passing now.
2017-06-19 21:14:40 -04:00
Thomas Harte
99ede3a9ef
BIT/SET (IX+d) were incorrectly encoded. Hence fixed BIT (IX+d).
2017-06-19 21:04:14 -04:00
Thomas Harte
378233f53d
Extended to BITs and SETs, accruing three new failures.
2017-06-19 21:01:30 -04:00
Thomas Harte
f903408980
Caught up on comments.
2017-06-19 20:53:22 -04:00
Thomas Harte
b684254908
Introduced further tests down to a failing attempt at RLC (IX+d). Made an initial attempt to fix, failed.
2017-06-19 20:33:34 -04:00
Thomas Harte
351d90ca55
Added tests down to INC IX. No additional failures yet, though I've yet to reach conditional CALL.
2017-06-19 20:04:55 -04:00
Thomas Harte
23177df26a
Added various tests of the basic ALU ops.
2017-06-19 19:53:26 -04:00
Thomas Harte
ba15371948
Introduced timing tests for LDI[R] and CPI[R], fixing a latent issue in the rejig of LD BC, nn while I'm here.
2017-06-19 19:47:00 -04:00
Thomas Harte
8d60734737
Added tests for EXX, EX (SP), HL and EX (SP), IX. The latter two currently being incorrect.
2017-06-19 19:17:54 -04:00
Thomas Harte
002098d496
The final two tests were at fault — expecting POPs to write rather than read. Fixed, so the subset of timing tests as-yet implemented now passes. Which means it's time to slog through further tests.
2017-06-19 07:45:41 -04:00
Thomas Harte
85c5c4405a
Ensured that wait states don't appear unless requested (TODO: requesting), and made the output of my timing tests a little easier to parse.
2017-06-19 07:30:01 -04:00
Thomas Harte
d668879ba6
Started trying to wade back to passing tests. Working on the new timing tests first, and focussing on getting the Objective-C test machine to compile bus operations into machine cycles, which means indicating phase to all-RAM delegates.
2017-06-18 22:03:13 -04:00
Thomas Harte
e1a2580b2a
Renamed BusOperation to MachineCycle::Operation.
2017-06-17 21:53:45 -04:00
Thomas Harte
b6f51474ff
Ensured that -description can handle the newly-captured bus actions.
2017-06-17 18:20:30 -04:00
Thomas Harte
0f18768091
Disabled attempts at bus activity matching within the FUSE tests, at least until I settle on exactly what I intend to do.
2017-06-17 18:19:25 -04:00
Thomas Harte
50cd617bd9
Ensured test raises only the intentional failure exceptions.
2017-06-15 22:33:46 -04:00
Thomas Harte
838b818cd3
Finished transcribing first page of machine cycle documentation; several failures contained.
2017-06-15 22:19:49 -04:00
Thomas Harte
cf795562bf
Continued filling in tests, fleshing out what the test machine captures as a result.
2017-06-15 20:59:59 -04:00
Thomas Harte
ac37424878
Set up a test class to allow me to discover which of the machine cycle sequences I'm in error on.
2017-06-15 19:06:59 -04:00
Thomas Harte
aed2827e7b
Implemented a rudimentary way to test that instructions take as long as the FUSE tests think they should. Hence discovered that the (HL)-accessing BIT, RES and SET weren't. Corrected.
2017-06-12 22:22:00 -04:00
Thomas Harte
a48616a138
Fixed reference to Swift-world MachineDocument for the ZX81 file type.
2017-06-12 18:51:11 -04:00
Thomas Harte
8222aac9e3
Added an official declaration of support for ZX81 files.
2017-06-11 21:40:41 -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
8116f85479
Allowed the static analyser to specify a ZX80 or 81, and a memory model. Neither is respected yet in the machine.
2017-06-11 19:12:20 -04:00
Thomas Harte
50be3a24fe
Sought to ensure that Mode 1 interrupts aren't happening early. Which they seem not to be.
2017-06-11 13:30:08 -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
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
8c66e1d99d
Factored out ZX80/81 video and rejigged to ensure it will keep ticking over irrespective of whether the machine is supplying data.
2017-06-06 17:53:23 -04:00
Thomas Harte
cc4cb45e9d
Implemented keyboard input and ensured that the signal generated is marked as composite, putting the colour-suppression ball into the CRT's court.
2017-06-06 09:25:18 -04:00
Thomas Harte
c485c460f7
Imported the ZX80 and 81 system ROMs (though not publicly), added enough code to post their contents into C++ world.
2017-06-04 18:08:35 -04:00
Thomas Harte
b0a7c58287
Fixed project to point to the XIB I actually want to keep; fixed that XIB to have the correct contents.
2017-06-04 17:57:37 -04:00
Thomas Harte
d2637123c4
Added necessary support to get as far as an empty window when attempting to load a piece of ZX80 software.
2017-06-04 17:55:19 -04:00
Thomas Harte
02b7c3d1b0
Added the necessary wiring to get into a ZX80/81-oriented part of the static analyser, which could in principle post a ZX80 target.
2017-06-04 17:04:06 -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
2190f60a89
Reinstated manual-by-stealth secondary usage of the Zexall test as a benchmarking tool.
2017-06-04 15:46:35 -04:00
Thomas Harte
0eebfdb4cc
Expanded emulation of memptr, though still incomplete. Reverted zexall tests to zexdoc. Will probably leave memptr until I've an emulated machine as test suites seem to exist, but they're machine-dependant, so figuring out how to isolate them from an architecture will be a lot easier if and when I have functioning machines.
2017-06-04 15:39:37 -04:00
Thomas Harte
7811374b0f
Started sneaking in memptr emulation, hopefully to get to a working BIT (hl).
2017-06-04 15:07:07 -04:00
Thomas Harte
87095b0578
Undid consciously discard for bits 3 and 5 in the FUSE tests. Back to 100 failures.
2017-06-04 14:04:26 -04:00
Thomas Harte
b642d9f712
Eliminates the 6502's specialised jam handler in favour of the generic trap handler, and simplifies the lookup costs of that as it's otherwise doubling execution costs.
2017-06-03 21:54:42 -04:00
Thomas Harte
fd6623b5a5
Attempted to bring a common hierarchy to the Z80 and 6502 test machines, particularly with a view to eliminating the special-case Jam stuff on the 6502.
2017-06-03 21:22:16 -04:00
Thomas Harte
b304c3a4b9
Eliminated the 6502's reliance on the micro-op scheduler.
2017-06-03 20:30:07 -04:00
Thomas Harte
b3da16911f
Tweaked timing of mode 0, per contradictory information. Wrote a failing test of mode 2.
2017-06-03 18:42:54 -04:00
Thomas Harte
e52892f75b
Added a test of interrupt mode 1.
2017-06-03 18:16:13 -04:00
Thomas Harte
8c41a0f0ed
Added a test to confirm interrupts are disabled, and a response to the interrupt cycle within the all-RAM machine.
2017-06-03 17:53:44 -04:00
Thomas Harte
3e9212aaff
Plumbed through to allow interrupt tests, wrote an NMI test, corrected the error revealed.
2017-06-03 17:41:45 -04:00
Thomas Harte
d14902700a
Minor syntax and wiring fixes.
2017-06-01 22:33:05 -04:00
Thomas Harte
c95c32a9fe
Implemented the reset line program and disabled fictitious automatic power-on reset for the Z80 test machine.
2017-06-01 22:31:04 -04:00
Thomas Harte
494ce073b5
Tests having been fixed by instating proper Z80 cycle counting, removed caveman logging.
2017-05-31 19:58:57 -04:00
Thomas Harte
5ff73faf48
Ensured Zexall can pass.
2017-05-31 19:55:06 -04:00
Thomas Harte
2f7f11e2e5
Added diagnosis props.
2017-05-31 06:54:25 -04:00
Thomas Harte
5119997122
Made an attempt, flawed so far, to find a neat way for processor subclasses to offer bus management as an inline function.
2017-05-30 22:41:23 -04:00
Thomas Harte
7bddd294c9
Resolved an unpredictable conditional and temporarily disabled the Zexalltest as part of the default suite, since it takes so long to run.
2017-05-30 21:03:02 -04:00
Thomas Harte
244b5ba3c2
Added a proper termination condition for Zexall and, for now, a Mhz counter.
2017-05-30 18:32:38 -04:00
Thomas Harte
960de7bd7b
Marginally reduced test machine costs based on usage.
2017-05-30 11:59:07 -04:00
Thomas Harte
c6185baa99
Fixed R incrementation and attempted to make the status flags cheaper to write to.
2017-05-29 22:23:19 -04:00
Thomas Harte
4d4695032c
Discovered that Zexall is just really slow. Disabled the address sanitiser, and started working towards a verifiable end.
2017-05-29 21:46:00 -04:00
Thomas Harte
6d22f6fcd5
Having decided the bus operation error on 10 is probably in the test cases, decided to allow myself to skip that one comparison. Back to zero failing cases, and with no more useful information to derive from the FUSE test set for the time being.
2017-05-29 17:17:17 -04:00
Thomas Harte
8bfaa487ce
Improved logging of bus operations and corrected placement of the OUT step in that repetition group; was otherwise outputting the wrong side of the B adjustment and therefore to the wrong port (if interpreted as 16 bit).
2017-05-29 17:13:24 -04:00
Thomas Harte
267b2add9a
Adjusted for where FUSE nominally places timestamps. Down to 92 failures.
2017-05-29 16:44:07 -04:00
Thomas Harte
d290e3d99e
Corrected simple logging error. Which mysteriously moves me all the way up to 117 failures (!)
2017-05-29 16:35:00 -04:00
Thomas Harte
a6a4c5a936
Made an attempt to introduce checking of bus activity against the FUSE tests. Appears to suggest 54 new failures.
2017-05-29 15:57:27 -04:00
Thomas Harte
ed7b07c8b1
Made an attempt to implement HALT as an operation that merely leaves the PC in place, adding the Z80's output line. Included that flag in FUSE tests. Discovered that it does not think that HALT acts that way. Which is probably correct.
2017-05-29 11:54:27 -04:00
Thomas Harte
d83dd17738
[DD/FD]36 turns out to be a timing error: offset calculation overlaps with value fetch. So the FUSE test was cutting off my implementation early. Fixed.
2017-05-29 11:40:56 -04:00
Thomas Harte
9ade0dcae3
One failure was just PUSH AF due to throwing away the 5 & 3 flags at the start. Switched to throwing them away at comparison.
2017-05-29 11:06:23 -04:00
Thomas Harte
a329d85697
Instituted memory value checks, flushing out seven new failures.
2017-05-29 11:01:45 -04:00
Thomas Harte
c322410783
Corrected CP[I/D]R termination logic; all tests now passing to the extent of interrogation.
2017-05-29 10:52:54 -04:00
Thomas Harte
b67331e018
Fixing the OUT repetition group reduces the code to one failing test.
2017-05-29 10:48:53 -04:00
Thomas Harte
ad56a9215c
Implemented IN[I/D]x. 18 failures remaining.
2017-05-29 10:12:33 -04:00
Thomas Harte
c56a5344b9
Implemented CP[I/D]x.
2017-05-29 08:54:00 -04:00
Thomas Harte
409c82ce73
Implemented RLD and RRD. 34 failures remaining.
2017-05-28 16:46:27 -04:00
Thomas Harte
6e83b7d6df
Attempted to add a proper exit condition for Zexall.
2017-05-28 15:13:47 -04:00
Thomas Harte
5a4d448cc1
Corrected logical flags; now down to 68 failures, all of them on the ED page.
2017-05-28 15:09:58 -04:00
Thomas Harte
6b66c8f304
Implemented inputs and outputs, determined how to answer port requests to please FUSE and hence reduced failures to 84.
2017-05-28 14:50:51 -04:00
Thomas Harte
035df316aa
FUSE seems to have inconsistent ideas about where b3 and b5 come from in more-complicated BIT instructions. So I'm not testing them for now. Within that reality, reduced to 102 failures.
2017-05-27 23:54:53 -04:00
Thomas Harte
c7cb47a1d8
Readded and then disabled my temporary one-test-only patch. Failures are currently at 237.
2017-05-27 21:10:25 -04:00
Thomas Harte
98423c6e41
Accepted FUSE's view of bits 3 & 5 from BIT and RES, reducing to 623 issues.
2017-05-27 16:19:15 -04:00
Thomas Harte
33c3fa21e3
Fixed (HL)/(In + d) CB page modify instructions. Reducing failures to 672.
2017-05-27 15:54:24 -04:00
Thomas Harte
9bc2b48d9b
Found a form I like for indexed addressing, applying it only where obvious for now. Which eliminates more than a couple of hundred of remaining failures.
2017-05-26 23:23:33 -04:00
Thomas Harte
e4e71a1e5f
Switched back to descriptive failures, but put a cap on them.
2017-05-25 21:08:24 -04:00
Thomas Harte
fba5af280e
Shortened failure message, at least for now.
2017-05-25 21:05:47 -04:00
Thomas Harte
2cadc706e2
Now runs FUSE tests, albeit testing only a subset of the results. But enough to get started.
2017-05-25 21:00:33 -04:00
Thomas Harte
3c6f63abcc
Started towards running the FUSE tests. Just need to deal with the memory
segments.
2017-05-25 19:12:59 -04:00
Thomas Harte
00cd7e7e9c
After hitting my head against the wall of trying to use [NS]Scanner
as a parser some more, have given up and transcoded the two tests files to JSON.
2017-05-25 18:20:13 -04:00
Thomas Harte
055c860b43
Sealed off RegisterState as immutable, and started trying to parse the .expected file.
2017-05-23 22:32:36 -04:00
Thomas Harte
454c8628c3
Implemented an additional constructor for RegisterStates, pulling it out into file-level scope and implementing Equatable.
2017-05-23 22:05:33 -04:00
Thomas Harte
a23a6db4d6
Tidied up, creating a holder for RegisterState and giving it deserialisation logic. This makes sense because a register state will also need to be taken from the outputScanner, and from the machine.
2017-05-23 08:13:24 -04:00
Thomas Harte
6575091a78
Fixed Z80's ownership of its fetch-decode-execute program, its habit of scheduling invalidly when hitting an unrecognised operation and the test machine's habit of dereferencing invalidly.
2017-05-22 21:50:34 -04:00
Thomas Harte
9e25d014d2
Made an attempt to log bus activity for comparison with FUSE results.
2017-05-22 19:49:38 -04:00
Thomas Harte
41d5dd8679
Added a memory access delegate to the Z80 all-ram processor, to allow access patterns to be captured.
2017-05-22 19:24:11 -04:00
Thomas Harte
22afa509ca
Got to a parsing and towards an attempt to run FUSE tests.
2017-05-22 19:14:46 -04:00
Thomas Harte
3fb3cc8269
Got explicit about encodings.
2017-05-21 22:53:06 -04:00
Thomas Harte
e3e461d7cb
Added a test class for running the FUSE tests. With nothing much in it.
2017-05-21 22:49:24 -04:00
Thomas Harte
c16fccb317
Fixed file names.
2017-05-21 22:43:07 -04:00
Thomas Harte
b9cffdf2bd
Imported the FUSE tests.
2017-05-21 22:42:20 -04:00
Thomas Harte
01a064dd63
Added an empty ED page.
2017-05-20 17:29:30 -04:00
Thomas Harte
d910405648
Added enough infrastructure to be able to react to the two CP/M calls this cares about.
2017-05-19 21:53:39 -04:00
Thomas Harte
62b432c046
Added the concept of a trap handler to the all-RAM processor and exposed it via the test Z80 classes.
2017-05-19 21:20:28 -04:00
Thomas Harte
11d05fb3b8
Expanded a little on operations, added an implementation or two.
2017-05-19 19:18:35 -04:00
Thomas Harte
58efca835f
Sought to add a further opcode.
2017-05-18 22:53:43 -04:00
Thomas Harte
da6e520b91
Merge branch 'master' into Z80
2017-05-18 22:30:51 -04:00
Thomas Harte
9398b6c2c8
Unable to differentiate, decided to map a Mac shift key to both Oric shifts.
2017-05-18 22:25:59 -04:00
Thomas Harte
a3dafa9056
Abbreviated uses of enumerations.
2017-05-17 21:44:08 -04:00
Thomas Harte
64d6ee1be5
Adjusted slightly to adapt to latest Swift warnings.
2017-05-17 07:49:48 -04:00
Thomas Harte
1378ab7278
Ensured initial program counter and stack pointer are correct for Zexall, fixed the Z80 to use a compile-time polymorphic call for bus access.
2017-05-17 07:36:06 -04:00
Thomas Harte
87a021ec2d
Made further attempt to get as fas as having the Z80 attempt to do something.
2017-05-16 22:19:40 -04:00
Thomas Harte
189317b80c
Added enough of a Z80 test machine to bridge up into Swift.
2017-05-16 22:05:42 -04:00
Thomas Harte
4f0775cc7c
Imported the Zexall.com tester, as a first thing to throw at the Z80 to be.
2017-05-16 21:37:09 -04:00
Thomas Harte
7190f927b7
Factored out the stuff that both all-RAM processors would share, rather than duplicating it.
2017-05-16 21:28:17 -04:00
Thomas Harte
d559d8b901
Continued edging towards getting the absolute basics of a testable Z80, for test-driven development. Corrected old-fashioned instance naming issues with the corresponding 6502 class and removed an unnecessary source file while at it.
2017-05-16 21:19:17 -04:00
Thomas Harte
df80c37adb
Renamed TestMachine
to TestMachine6502
since there's going to be multiple of them.
2017-05-15 08:18:57 -04:00
Thomas Harte
0808e9b6fb
Pulled the 6502 into a CPU namespace, making it an instance of something that has micro-opcodes and schedules them, and factoring out the formulation of a register pair.
2017-05-14 22:08:15 -04:00
Thomas Harte
b81a2cc273
First tentative steps towards adding a Z80 implementation.
2017-05-14 17:46:41 -04:00
Thomas Harte
8e35e913bb
Formally withdrew the 'load automatically' option for the Vic, having removed that option elsewhere.
2017-05-14 16:59:24 -04:00
Thomas Harte
2edf73908c
Temporarily disabled the existing fast loading implementation in pursuit of another, and started trying to correct the lack of connection between the userport VIA and the tape drive.
2017-05-06 22:00:12 -04:00
Thomas Harte
92a8b68859
Dumped Mach-specific test-and-set in favour of ordinary C11.
2017-04-15 21:41:59 -04:00
Thomas Harte
bdd432fe1d
Added an ugly workaround for the empirical sound shutdown issues.
2017-03-26 20:28:04 -04:00
Thomas Harte
e01f3f06c8
Completed curly bracket movement.
2017-03-26 14:34:47 -04:00
Thomas Harte
031a68000a
Added a class to contain the Pitfall 2 pager and a skeleton of initial work.
2017-03-18 22:08:47 -04:00
Thomas Harte
c3d82f88a5
Tidied up and commented on the Activision stack implementation.
2017-03-18 21:01:58 -04:00
Thomas Harte
c033bad0b9
Here's MNetwork!
2017-03-18 20:51:49 -04:00
Thomas Harte
c31d85f820
Re-emplaced the MegaBoy. Also cut detritus from the main Atari header.
2017-03-18 19:02:34 -04:00
Thomas Harte
217fbf257e
CBS RAM Plus returns.
2017-03-18 18:56:20 -04:00
Thomas Harte
0b611a14b9
Tigervision paging returns.
2017-03-18 18:50:13 -04:00
Thomas Harte
df6861c9dc
Parker Bros paging is back.
2017-03-18 18:21:01 -04:00
Thomas Harte
a4cd12394e
Reinstated the Activision stack pager.
2017-03-18 18:03:48 -04:00
Thomas Harte
bb3daaa99b
Sought to reintroduce the Atari 8k paging scheme, at the same time deciding to do away with the copy and paste of holding on to ROM data.
2017-03-18 15:04:01 -04:00
Thomas Harte
14a76af0d3
Started trying to float out bus control to cartridges.
2017-03-17 20:28:07 -04:00
Thomas Harte
a6897ebde0
Added an attempt to distinguish the MegaBoy (now with proper capitalisation) and a test for it.
2017-03-13 20:43:12 -04:00
Thomas Harte
582da14a14
Added an enumerated type and detection of Pitfall 2.
2017-03-13 08:15:36 -04:00
Thomas Harte
8e147444d5
Added a readme, as is traditional for folders I'm excluding from Git.
2017-03-12 22:16:12 -04:00
Thomas Harte
2c07cce282
Had the wrong paging scheme listed for Robot Tank and Thwocker. Better to get this right before trying to come up with a test for the Activision stack scheme.
2017-03-12 21:03:10 -04:00
Thomas Harte
597bd97b01
Corrected two more table errors.
2017-03-12 15:46:25 -04:00
Thomas Harte
38de5300e5
Elevator Action seemingly uses a Super Chip.
2017-03-12 15:43:42 -04:00
Thomas Harte
146f3ea0f5
Fixed: Crystal Castles is 16kb.
2017-03-12 15:39:07 -04:00
Thomas Harte
78213f1e95
Fixed a couple more table entries, introduced per-size tests (plus a catch-all), to speed up the development/testing cycle.
2017-03-12 15:35:36 -04:00
Thomas Harte
de347ad7c8
Improved CBS RAM Plus and Super Chip detection exclusion, reducing error count to 15.
2017-03-12 14:03:17 -04:00
Thomas Harte
a4bba8a92e
Made a couple of lookup table fixes and corrected RAM region detection windows; failures now down to 19.
2017-03-11 23:18:30 -05:00
Thomas Harte
fcacfc2726
Tidied up spacing, slightly.
2017-03-11 23:01:42 -05:00
Thomas Harte
bab464e765
I'm far from confident, but this should reduce the deviations close to those that result from mistakes by the static analyser, rather than table errors.
2017-03-11 22:58:11 -05:00
Thomas Harte
2879763c34
Reduced to 84 failures through more accurate tabulation.
2017-03-11 21:52:52 -05:00
Thomas Harte
ea2ea30193
Fleshed entire table out with most common values. Exceptions now to fix.
2017-03-11 21:11:25 -05:00
Thomas Harte
608569cc48
Typed out all the 'A's that I am aware of. So about 5% done.
2017-03-11 20:58:38 -05:00
Thomas Harte
c7e973aab4
Extended test set a little, corrected current failures.
2017-03-11 20:51:25 -05:00
Thomas Harte
443d57bc32
Slimmed output and added first six tests. Acid Drop fails since I'm not yet declaring Atari 16k and Atari 32k.
2017-03-11 20:43:19 -05:00
Thomas Harte
57ec756f5b
Started speccing out a unit test for Atari ROM analysis.
2017-03-11 20:33:58 -05:00
Thomas Harte
b193248056
Ensured that queue is not touched at all outside of the critical section.
2017-03-11 18:17:09 -05:00
Thomas Harte
a72d70e707
Enabled code coverage calculation for unit tests.
2017-03-11 17:44:56 -05:00
Thomas Harte
38ce4dc56c
Fixed potential deadlock, if a delegate decided to dealloc the queue as a result of its prompting.
2017-03-11 17:44:02 -05:00
Thomas Harte
d3257c345a
Tested against public ROMs and corrected. Also moved the deferred adjustment into a more canonical place.
2017-03-04 17:00:28 -05:00
Thomas Harte
e09b76bf32
Fixed 'same value, then immediate increment, then proper counting increments' behaviour and ensured it takes one cycle to commit a value. Adjusted tests to match.
2017-03-04 15:57:54 -05:00
Thomas Harte
dcd0c90283
Switched time of best-effort updater delegate setting, to avoid a callback before setupClockRate has happened, and therefore before it's clear what should be going on with audio.
2017-02-26 21:58:59 -05:00
Thomas Harte
2f0c923c29
Switched away from @synchronized as it appears possibly to be the lock used during -dealloc, creating deadlock with the CSAudioQueueDeallocLock.
2017-02-22 21:42:10 -05:00
Thomas Harte
4c947ad553
Attempted to resolve risk of an audio callback being in progress when -dealloc is received.
2017-02-22 21:12:59 -05:00
Thomas Harte
1d03793f22
Fixed potential race condition: ensure the queue is disposed of synchronously because otherwise there'll be a potential dangling reference to self.
2017-02-22 07:35:09 -05:00
Thomas Harte
99a35266e1
Attempted to bring frequency-switching logic into the cross-platform realm. Which for now creates an issue with the OpenGL context.
2017-02-19 21:20:37 -05:00
Thomas Harte
dd17459687
Added my first failing test: delay is incorrect when resetting outside of the play area.
2017-02-12 20:42:49 -05:00
Thomas Harte
cd90118a0f
Added two, extraordinarily simple tests.
2017-02-12 20:32:53 -05:00
Thomas Harte
327c19a222
Slightly shuffled to avoid a race condition on the best-effort updater.
2017-02-11 12:58:47 -05:00
Thomas Harte
92754ace7a
Some mild fixes get me up to having a rolling screen of vertical lines. Which is what I was hoping for right now!
2017-01-29 22:16:23 -05:00
Thomas Harte
d51f185dc7
Made an attempt to reintroduce the basic horizontal loop.
2017-01-29 15:43:57 -05:00
Thomas Harte
fba6baaa9c
Stubbed and disabled to get back to building.
2017-01-28 21:56:01 -05:00
Thomas Harte
0ffded72a6
Created a placeholder class for a factored-out TIA. There's a bit more it'll need to do, like vending (or receiving) a CRT but this is the full hardware stuff, I think.
2017-01-28 16:19:08 -05:00
Thomas Harte
9001cc3fc2
Added a cartridge image.
2017-01-27 21:26:11 -05:00
Thomas Harte
015b2b49f9
Introduced an incomplete set of file association icons.
2017-01-26 22:21:55 -05:00
Thomas Harte
7b696b0962
Switched scheme to shared.
2016-12-31 13:11:07 -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
99993a1b24
Since it's about to become important that objective results match, added a couple of objective-result tests for the CRC generator.
2016-12-27 19:03:46 -05:00
Thomas Harte
d606bd7ce5
Added saturation test, fixed code as indicated.
2016-12-24 23:29:37 -05:00
Thomas Harte
09ff9d6a26
Introduced a couple more floating-point conversion tests, fixed errors uncovered.
2016-12-24 23:21:19 -05:00
Thomas Harte
e25195a718
Added a single test for Storage::Time
, discovering that I had the wrong sign on float conversions.
2016-12-24 22:59:01 -05:00
Thomas Harte
7028f57336
Simplified a little further.
2016-12-22 18:13:10 -05:00
Thomas Harte
e4e0347638
Attempted to consolidate some of the repetition.
2016-12-21 22:17:00 -05:00
Thomas Harte
72ca06cf8d
Added some extra tests, performed some basic tidying. Probably should do more.
2016-12-21 19:54:19 -05:00
Thomas Harte
6a0c7f22ee
Added a few more tests. All passing.
2016-12-20 21:46:34 -05:00
Thomas Harte
03579f33f1
Fixed multi-coverage insertion, via an appropriate test.
2016-12-20 21:38:32 -05:00
Thomas Harte
7eca910cc5
Fixed insertion location finding logic, working on the relevant test.
2016-12-20 21:14:05 -05:00
Thomas Harte
c180340474
Added two more passing tests and one that crashes.
2016-12-20 19:25:58 -05:00
Thomas Harte
823ab9bc34
Completed initial non-trivial test, fixing revealed errors.
2016-12-20 19:15:36 -05:00
Thomas Harte
6bdde542c5
Edging towards functioning automatic tests, fixed right-period adjustment and slightly decreased searching cost while in the process of adding a test.
2016-12-20 07:52:14 -05:00
Thomas Harte
1df478d250
Removed dead header file.
2016-12-18 23:04:16 -05:00
Thomas Harte
e081f224b6
Implemented a very basic PCMTrack
test, nevertheless revealing an oversight in PCMSegmentEventSource
related to improperly counting to the index hole if the final bit is set. Took that as a message that I should comment and document the event source.
2016-12-18 22:53:24 -05:00
Thomas Harte
a6354ebb01
Reimplemented PCMTrack
to use PCMSegmentEventSource
, eliminating code duplication.
2016-12-18 21:37:05 -05:00
Thomas Harte
f9a5595dad
Added seeking tests, correcting such errors as uncovered.
2016-12-18 10:19:24 -05:00
Thomas Harte
3116a2cf4c
Realised I was actually testing PCMSegmentEventSource
, not PCMSegment
; implemented a spread of tests; hence fixed PCMSegmentEventSource.
2016-12-17 21:47:13 -05:00