Thomas Harte
c1bae49a92
Standardises on read
and write
for bus accesses.
...
Logic being: name these things for the bus action they model, not the effect they have.
2020-01-05 13:40:02 -05:00
Thomas Harte
0fbcbfc61b
Switches to more idiomatic address listing.
2020-01-04 20:35:47 -05:00
Thomas Harte
455e831b87
Corrects bug whereby changing pixel mode mid-line will produce an improper amount of data.
2020-01-02 23:18:21 -05:00
Thomas Harte
cb7d6c185c
Further expands test coverage.
2020-01-01 20:00:37 -05:00
Thomas Harte
5be30b1f7b
Introduces further comparative tests, prompting a new CHK fix.
...
Specifically: how to set N when both is_under and is_over are true, and to eliminate a failure fully to prefetch in the longer addressing modes.
2020-01-01 19:11:36 -05:00
Thomas Harte
6449403f6a
Corrects pending_events_ test for sequence points.
...
Simplifies around as possible.
2019-12-29 21:53:45 -05:00
Thomas Harte
93f6964d8a
Introduces some preliminary line length unit tests.
...
Thereby fixes one potential issue with load_ toggling.
2019-12-28 22:50:34 -05:00
Thomas Harte
a9d1f5d925
Pulls out address reload as something I can position independently.
...
Sadly receding it by 3 did not have the effect I was hoping for, of receding Enchanted Land's first register tweaking.
2019-12-27 23:47:19 -05:00
Thomas Harte
0dae608da5
Embraces std::make_[unique/shared] in place of .reset(new .
2019-12-23 21:31:46 -05:00
Thomas Harte
5456a4a39d
Eliminates static
where constexpr
a aren't class members; adds some if constexpr
s for clarity.
2019-12-22 13:42:24 -05:00
Thomas Harte
e9318efeb6
Switches to std::make_shared/make_unique in a bunch of applicable places.
...
No doubt many more similar improvements are available, these are just the ones that were easy to find.
2019-12-21 23:34:25 -05:00
Thomas Harte
993dfeae1b
Standardises on -O2, C++17.
2019-12-21 20:25:43 -05:00
Thomas Harte
57ce10418f
Switches prescale logic, the better to deal with changes in prescaler.
...
According to my assumptions about the behaviour, anyway.
2019-12-20 23:33:14 -05:00
Thomas Harte
797abae4b3
Compacts gaps when necessary to fit more sectors.
2019-12-19 19:36:19 -05:00
Thomas Harte
5ce612cb38
Adds the Atari ST to File -> New in Cocoa world.
2019-12-17 23:04:12 -05:00
Thomas Harte
81cc278b98
Introduces a barrage of further tests.
2019-12-15 21:26:35 -05:00
Thomas Harte
f23c5ada31
Ensures tests can be built as a release target.
2019-12-14 23:53:12 -05:00
Thomas Harte
a500fbcd73
Expands tests to most of ORI, EORI, ANDI, ADDI and SUBI.
2019-12-14 22:23:40 -05:00
Thomas Harte
923287bf01
Attempts to introduce a basic means for comparative 68000 testing.
...
i.e. mine versus another source.
2019-12-14 14:26:33 -05:00
Thomas Harte
ade8df7217
Permits a delay on DE propagation back to the CPU. Plus tests.
...
Currently set at 28 cycles, but I don't know.
2019-11-18 22:12:24 -05:00
Thomas Harte
2c4f372872
Adds support for the .ST file format.
2019-11-12 23:23:14 -05:00
Thomas Harte
eb287605f7
Switches to a default of TOS 1.04.
2019-11-12 19:38:30 -05:00
Thomas Harte
77ef7dc8fc
Shuffles ST and 2600 into a common parent.
2019-11-09 15:31:41 -05:00
Thomas Harte
e3abbc9966
Renames what didn't end up being a whole SerialPort.
2019-11-09 15:21:51 -05:00
Thomas Harte
0b683b0360
Adds some sanity checks.
2019-11-08 20:46:24 -05:00
Thomas Harte
6afefa107e
Resolves unused variable warning.
2019-11-05 23:18:25 -05:00
Thomas Harte
bf7e9cfd62
Pulls the intelligent keyboard into its own file.
2019-11-02 19:47:44 -04:00
Thomas Harte
ac39fd0235
Starts work on the DMA controller.
2019-10-26 21:33:57 -04:00
Thomas Harte
2bd7be13b5
Decodes the 6850 control register, and starts working on standardised serial ports.
2019-10-20 20:38:55 -04:00
Thomas Harte
4ead905c3c
Adds an empty shell for the ACIA.
2019-10-20 20:38:55 -04:00
Thomas Harte
6e1b606adf
Adds a target for MFP read/write operations.
...
Completely without any implementation, so far.
2019-10-20 20:38:54 -04:00
Thomas Harte
da1436abd2
Gifts the Atari ST a 68000 and non-functional video.
2019-10-20 20:38:54 -04:00
Thomas Harte
8b397626bf
Adds a route through the static analyser to the Atari ST.
2019-10-20 20:38:54 -04:00
Thomas Harte
0da1881a07
Adds an Atari ST enumeration and factory method.
2019-10-20 20:38:54 -04:00
Thomas Harte
7ff4594f09
Eliminates fast loading Objective-C/Swift protocol.
...
A very long time ago, when each machine had its own Objective-C class, this protocol was used to indicate which machines support that feature. It no longer communicates anything.
2019-09-24 20:13:09 -04:00
Thomas Harte
f28c124039
Adds a route to divert key events before they reach Cocoa.
...
If you were to use this, it would have the effect of disabling in-app keyboard short-cuts in favour of routing keys to the emulated machine.
2019-09-22 13:15:01 -04:00
Thomas Harte
8a14f5d814
Updates to Xcode11 recommended project settings.
...
The updated compiler also flagged a potential issue with CPU::Z80::Register not being a namespace re: 'Refresh' versus CPU::Z80::PartialMachineCycle. I don't entirely see it, but this fixes the problem.
I also finally figured out what the compiler was trying to tell me about ROMRequester.xib.
2019-09-22 12:13:56 -04:00
Thomas Harte
5f16fa8c08
Removes dead reference to video from VIAPortHandler.
2019-09-21 17:39:45 -04:00
Thomas Harte
2e24da4614
Implements quick booting, and edges towards exposing it on the Mac.
...
It should already work in kiosk mode.
2019-09-19 22:32:12 -04:00
Thomas Harte
1a60ced61b
Starts trying to deal with creating a whole volume from merely a partition.
2019-08-25 23:03:54 -04:00
Thomas Harte
081316c071
Adds some additional commentary as this takes shape.
2019-08-25 17:46:05 -04:00
Thomas Harte
1c6720b0db
Adds new class to Xcode project.
2019-08-25 15:09:43 -04:00
Thomas Harte
2d82855f26
Attempts to provide a data out phase.
2019-08-22 23:16:58 -04:00
Thomas Harte
faec516a2c
Starts pushing towards figuring out a proper infrastructure for mass storage.
2019-08-21 23:22:58 -04:00
Thomas Harte
252650808d
Starts seeking to unbind SCSI bus logic and command performance.
2019-08-19 22:47:01 -04:00
Thomas Harte
0e0c789b02
Starts attempting to introduce a direct access device.
...
Without having access to the SCSI-1 standard, a lot of this is guesswork.
2019-08-17 23:43:42 -04:00
Thomas Harte
ce1c96d68c
Starts thinking out the mechanics of emulating a SCSI-1 bus.
2019-08-13 23:09:11 -04:00
Thomas Harte
949c1e1668
Adds an empty shell for what will be my 5380 implementation.
2019-08-10 23:53:52 -04:00
Thomas Harte
e334abfe20
Partitions the 68000 arithmetic tests, to allow easier per-instruction execution.
2019-08-03 17:44:47 -04:00
Thomas Harte
97eff5b16d
Formally distinguishes Macintosh keys from virtual keys.
...
Also: adds mappings for keypad keys, and corrects a couple of
long-standing capitalisation errors in my virtual key set.
2019-08-02 16:15:34 -04:00
Thomas Harte
7dcad516bd
Undoes incorrect project change.
2019-07-29 17:21:34 -04:00
Thomas Harte
2f2478d2d3
Implements AsyncJustInTimeActor, experimentally.
2019-07-29 16:38:57 -04:00
Thomas Harte
5149f290d0
Starts trying to formalise just-in-time execution.
...
Which, at least, simplifies Cycle/HalfCycle to Cycle run_for usage via template.
2019-07-28 21:49:54 -04:00
Thomas Harte
b1f04ed96d
Eliminates the crutch of PlusToo BIN files.
...
Thereby returning the .bin extension to the various consoles.
2019-07-28 16:07:16 -04:00
Thomas Harte
579f68cf11
Completes Xcode 10.3 upgrade checks.
2019-07-23 16:27:18 -04:00
Thomas Harte
a3ad0ab09b
Completes the successful import path.
2019-07-22 21:46:28 -04:00
Thomas Harte
2129bfc570
Gets as far as testing ROMs against the missing list.
...
Though now it strikes me that I've forgotten to retain the machine name.
2019-07-22 18:02:48 -04:00
Thomas Harte
8de6cd3f44
Ensures that ROM files can be dragged and dropped into Swift.
...
Also adjusts the main window background colour, better to bridge the time between selecting a machine and it starting.
2019-07-22 17:18:31 -04:00
Thomas Harte
9b9831f28b
The Mac port will now at least display a list of missing ROMs.
...
It doesn't yet offer the drag-and-drop functionality it promises, however.
2019-07-22 13:00:17 -04:00
Thomas Harte
d452d070a1
Extends the Mac ROM fetcher to return a missing-ROMs list.
2019-07-21 18:41:00 -04:00
Thomas Harte
d1d0430fce
Eliminates the SonyDrive class.
2019-07-10 17:38:05 -04:00
Thomas Harte
c4ab0bb867
Starts sketching out an interface for IWM drives, eliminating a dangling use of unsigned
as it goes.
2019-07-10 16:05:59 -04:00
Thomas Harte
886946cc8c
Rejigs time-until-event tracking.
2019-07-09 23:27:27 -04:00
Thomas Harte
ab14433151
Tweaks optimisation level.
2019-07-09 18:07:43 -04:00
Thomas Harte
6e7a733c3c
Adds appropriate files to the Mac kiosk build.
2019-07-08 16:57:13 -04:00
Thomas Harte
0a67cc3dab
Goes nuclear on ROXL and ROXR.
2019-07-01 23:05:48 -04:00
Thomas Harte
d30e7504c2
Factors out MOVE tests, and ensures test machine RAM is zero initialised.
2019-06-30 21:43:30 -04:00
Thomas Harte
9d420c727e
Factors out rolls and shifts.
2019-06-29 14:12:52 -04:00
Thomas Harte
6a44c682ad
Factors out control flow tests.
2019-06-29 13:47:05 -04:00
Thomas Harte
ac926f5070
Factors BCD out of general arithmetic.
2019-06-29 13:31:24 -04:00
Thomas Harte
a8894b308a
Splits out arithmetic tests, as so far implemented.
...
Further subdivision may be advisable.
2019-06-28 22:08:32 -04:00
Thomas Harte
7cc91e1bc5
Factors the bitwise tests out of the main bundle, as that pushes up towards 6,000 lines.
2019-06-28 21:58:38 -04:00
Thomas Harte
6c588a1510
Makes some further random swings at tracking the startup procedure.
2019-06-28 13:03:47 -04:00
Thomas Harte
8bfa12edf1
Adds lengths to ADD tests, imports ANDI ,CCR and MOVE to CCR.
2019-06-26 16:12:27 -04:00
Thomas Harte
d27ba90c07
Attempts to introduce more rigour to variable-length instruction handling.
2019-06-24 10:43:28 -04:00
Thomas Harte
bd069490b5
Incorporates approximately half of the DBcc tests.
2019-06-20 16:29:32 -04:00
Thomas Harte
68a3e5a739
Renamed DiskCopy42 to MacintoshIMG, now that it's not just DiskCopy 4.2 files.
2019-06-18 14:32:58 -04:00
Thomas Harte
fe0dc4df88
Starts building out some tests for Apple GCR encoding.
2019-06-15 22:48:24 -04:00
Thomas Harte
bde975a3b9
Possibly mights the tiniest bit of headway with 'the IWM'.
...
I'm now pretty sure that my 3.5" drive, which for now is implemented in the IWM (yuck) is just responding to queries incorrectly.
2019-06-13 22:38:09 -04:00
Thomas Harte
f6f9024631
Corrects Macintosh aspect ratio (and framing).
2019-06-13 18:41:38 -04:00
Thomas Harte
5630141ad7
Ensures randomised memory contents at startup.
2019-06-13 13:35:16 -04:00
Thomas Harte
feafd4bdae
Eliminates further type conversion warnings.
2019-06-13 10:20:17 -04:00
Thomas Harte
d6150645c0
By hook or by crook, mouse input now works.
2019-06-12 22:19:25 -04:00
Thomas Harte
109953ef49
Ensures proper routing of mouse events from Cocoa.
2019-06-11 18:41:41 -04:00
Thomas Harte
a0321aa6ff
Starts sketching out an emulator interface for mice.
2019-06-11 17:47:24 -04:00
Thomas Harte
697e094a4e
Sketches out the absolute basics of an SCC interface.
2019-06-08 18:47:11 -04:00
Thomas Harte
b8a1553368
Adds putative support for PlusToo-style BIN files.
...
Albeit a bit of a guess, since it's not intended to be an emulator file format.
2019-06-04 21:41:09 -04:00
Thomas Harte
517cca251f
Corrected: the repository shouldn't default to a Release build.
2019-06-04 15:41:36 -04:00
Thomas Harte
661fe1e649
Disables logging, for now.
2019-06-03 15:57:53 -04:00
Thomas Harte
85298319fa
Expands towards supporting multiple Macintosh models.
...
To provide another variable to help with bug isolation.
2019-06-03 14:50:36 -04:00
Thomas Harte
881feb1bd3
Adds preliminary parsing of the Disk Copy 4.2 format.
2019-06-02 13:39:25 -04:00
Thomas Harte
3e9fa63799
Adds a receiver for drive-motor control bytes.
...
My new belief is that I'm either reading the buffer from the wrong place, or the 68000 isn't filling it for some reason.
2019-06-01 19:31:32 -04:00
Thomas Harte
6d985866ee
All proper inputs are now provided to the audio generator.
...
Hopefully. The next job is to generate audio. If that sounds correct, then the disk motor speed question can be tackled.
2019-06-01 15:03:15 -04:00
Thomas Harte
723137c0d4
With some time additions to the 6522, starts wiring in Macintosh audio.
...
The audio buffer is also the disk motor buffer, so this is preparatory to further disk work.
2019-06-01 14:39:40 -04:00
Thomas Harte
254132b83d
Eliminates 6522Base in pursuit of working handshake modes.
...
Specifically: this means that the places from which the BusHandler may be called are more numerous.
2019-05-08 12:35:17 -04:00
Thomas Harte
7e6d4f5a3e
Adds emulation of the real-time clock.
2019-05-08 00:12:19 -04:00
Thomas Harte
96facc103a
Adds an IWM shim and corrects graphics output.
...
... now that there is some.
2019-05-05 21:55:34 -04:00
Thomas Harte
417a3e1540
Adds missing call to flush.
2019-05-03 23:31:12 -04:00
Thomas Harte
68392ce6f5
Adds enough of a concept of Mac video to get a properly initialised display.
...
Completely empty at present, naturally. Also this is the very first time I've run my 68000 at live speed. From just one data point, it's not terrible. Phew!
2019-05-03 23:25:42 -04:00
Thomas Harte
6873f62ad8
Ensures that the Mac now retains its ROM properly.
2019-05-03 22:39:09 -04:00
Thomas Harte
5f385e15f6
Adds the bare bones necessary to be able to create a Macintosh from File -> New... .
2019-05-03 22:16:07 -04:00
Thomas Harte
8c5d37b6ee
Refactors the AppleII into a sub-namespace to make room for other Apple machines.
2019-05-03 18:14:10 -04:00
Thomas Harte
d6e16d0042
Adds a test of TOS 1.00, as far as it goes without meaningful hardware.
2019-04-29 18:04:57 -04:00
Thomas Harte
5b5bfc8445
Applies trace testing to EmuTOS.
2019-04-29 16:55:21 -04:00
Thomas Harte
c466b6f9e7
Factors out the [unit testing] stuff of being a trace-checking 68000 bus handler.
2019-04-29 16:11:01 -04:00
Thomas Harte
3983f8303f
Introduces failing test of 68000 opcode coverage.
2019-04-25 22:06:05 -04:00
Thomas Harte
7df85ea695
Cleans up and formally introduces a comparative source for QL startup.
2019-04-25 15:42:41 -04:00
Thomas Harte
fba210f7ce
Corrects MOVE.l Dn, (An)[+].
2019-04-15 09:30:49 -04:00
Thomas Harte
52e33e861c
Starts to introduce the QL as a second source for 68000 testing.
...
It's advantageous over the ST in that a commented disassembly of the ROM is available.
2019-04-14 22:15:09 -04:00
Thomas Harte
2c5ff9ada0
Switches to running the real TOS, at least temporarily, and enables better testing.
2019-03-31 22:27:57 -04:00
Thomas Harte
7f5c637aeb
Updates to Swift 5.
2019-03-26 22:15:38 -04:00
Thomas Harte
6f0eb5eccd
Merge branch 'master' into 68000
2019-03-26 21:03:57 -04:00
Thomas Harte
69a2a133d5
Performs basic migration to Xcode 10.2 — project settings, the one new warning, etc.
2019-03-26 19:47:41 -04:00
Thomas Harte
f9101de956
This might very well be the 68000's first real gasp: performing an ABCD.
2019-03-14 19:32:15 -04:00
Thomas Harte
89c71f9119
Introduces EmuTOS, and starts constructing test cases around it.
2019-03-10 18:40:12 -04:00
Thomas Harte
a4f6db6719
Removes ArrayBuilderTests as the ArrayBuilder is long gone. Disables TIA tests for now.
2019-03-10 18:07:23 -04:00
Thomas Harte
de56d48b2f
Embraces a more communicative 68000 bus.
2019-03-10 17:27:34 -04:00
Thomas Harte
b9b52b7c8b
Begins some very early sketching out of a 68000.
2019-03-09 00:00:23 -05:00
Thomas Harte
86a6b04d4a
Begins attempts to keep track of display metrics.
...
i.e. a system that can both make smart decisions about when to use a lower resolution, and hopefully allow some sort of flywheel-esque horizontal retrace synchronisation. And possibly some raster beam chasing?
2019-03-04 21:54:50 -05:00
Thomas Harte
2beeaa513b
Ensures a machine exists before messaging it.
2019-03-02 21:27:34 -05:00
Thomas Harte
bee0d09877
Splits display update and draw functions.
...
On the Mac, draw is now called without an update for resizing events, and
anything else requested by AppKit. In all other cases — including from
the SDL version — both are called as if they were still a single function.
2019-03-02 19:33:28 -05:00
Thomas Harte
d122535a65
Unifies the OpenGL screenshot code and corrects it for arbitrary alignment.
2019-02-27 21:05:02 -05:00
Thomas Harte
20b4896940
Eliminates the dead stuff of CRTConstants.hpp.
2019-01-25 19:11:39 -05:00
Thomas Harte
55290f4dad
Attempts a fix of frame_was_complete_ logic, to try to eliminate black flashes.
2019-01-14 21:42:45 -05:00
Thomas Harte
bb03d2f2ad
Removes redundant enumeration.
2019-01-13 23:07:50 -05:00
Thomas Harte
e9d9ff0da0
Enhances ScanTarget to provide additional timing information.
2019-01-05 23:09:17 -05:00
Thomas Harte
601961deeb
Wires through set_display_type
.
2018-11-29 20:44:21 -08:00
Thomas Harte
dd4af4f0df
Removes dead files.
2018-11-24 22:40:06 -05:00
Thomas Harte
6b42b92930
Kills CRTOpenGL.cpp and simplifies shader output very slightly.
2018-11-24 17:37:58 -05:00
Thomas Harte
a697a2e4f6
Attempts to complete all input processing — an RGB, S-Video or composite input buffer is now produced.
...
... for all input data types.
2018-11-22 17:20:31 -05:00
Thomas Harte
75bc0e451d
Reintroduces the accumulation texture.
...
Disables automatic clearing of the texture target, as the profiler indicates the vector instantiation to be a huge time sink.
2018-11-18 21:39:11 -05:00
Thomas Harte
8a699b6072
Kills setup_output
definitively, saving some indirection. set_scan_target
takes its place.
2018-11-14 21:52:57 -05:00
Thomas Harte
91b19c5c70
Adds bookending, and finally kills the TextureBuilder. Farewell.
2018-11-14 20:49:06 -05:00
Thomas Harte
2adf3d353e
Subtracts retrace periods from output scale.
2018-11-12 20:20:09 -05:00
Thomas Harte
3045e85004
Ensures redraws when resizing; declines to busy wait otherwise.
2018-11-12 20:15:38 -05:00
Thomas Harte
938d09f34a
Corrects scan outline generation.
2018-11-12 18:23:45 -05:00
Thomas Harte
dce52d740d
Finally gets some pixels back on screen.
...
For now, just the raw scans, direct to the framebuffer, with no intermediate processing. But it seems to prove that at least some of the proper data is reaching the GPU.
2018-11-11 23:23:42 -05:00
Thomas Harte
3ae333fa84
Edges further towards reviving the shaders.
2018-11-11 21:41:13 -05:00
Thomas Harte
d5af1f3948
Removes some migrated work.
2018-11-11 16:22:14 -05:00
Thomas Harte
7881e40e0b
Shuffles the OpenGL primitives into their own collection.
2018-11-07 19:11:01 -05:00
Thomas Harte
55da1e9c0f
Simplifies semantics a little and starts accepting a single buffer of pixel data.
2018-11-06 22:23:38 -05:00
Thomas Harte
b40211d2c0
Starts to bend 'CRTMachine' to a world farther from owning the GPU relationship.
2018-11-03 21:54:25 -04:00
Thomas Harte
da4d883321
Adds first, incomplete attempts to talk to a ScanTarget from the CRT.
...
Does away with the hassle of `unsigned` while I'm here; that was a schoolboy error.
2018-11-03 19:58:44 -04:00
Thomas Harte
c128ddb549
Introduces a first unit test for line interrupts and corrects backup behaviour.
2018-10-09 21:49:21 -04:00
Thomas Harte
00b2db4fb9
Ensures the Master System is informed when it should pretend to be an SG1000.
2018-09-23 16:34:47 -04:00
Thomas Harte
0d01346ad4
Advertises SMS support and goes as far as realising it needs to spawn a Master System.
2018-09-20 22:04:28 -04:00
Thomas Harte
97a89aaf4d
Factors out the stuff of deferred action interleaving, as I suspect it'll come in handy.
2018-08-24 20:04:26 -04:00
Thomas Harte
1a44ef0469
Introduces Klaus Dorman's 65C02 tests. All failing.
2018-08-06 21:48:43 -04:00
Thomas Harte
09950d9414
Gamely starts to create a HID input manager for joysticks/pads/etc.
2018-07-19 22:43:01 -04:00
Thomas Harte
c9451a5382
Introduces an object for drawing OpenGL rectangles.
2018-07-14 17:42:23 -04:00
Thomas Harte
7e58a44771
Renames ConfigurationTarget
to MediaTarget
as per its newly-reduced interface.
2018-07-10 21:32:28 -04:00
Thomas Harte
1fcb461c42
Ensures that segments are written in a properly-circular fashion.
2018-07-02 19:35:49 -04:00
Thomas Harte
abca38a548
Makes an initial removal of PCMPatchedTrack
. Farewell, old friend.
2018-07-01 22:49:57 -04:00
Thomas Harte
44a33941bf
Undoes Xcode's folder renaming.
2018-06-23 18:55:17 -04:00
Thomas Harte
d45f1a793d
Introduces composite/RGB selection for the Amstrad CPC.
2018-06-21 20:00:49 -04:00
Thomas Harte
adca862166
Finally makes an initial pass at logging macros.
2018-06-18 22:37:19 -04:00
Thomas Harte
292e02702a
Progresses very slightly to being able to show up to four activity indicator names.
...
Blinking to come.
2018-06-17 22:52:17 -04:00
Thomas Harte
c4108efc5c
Adds a more accurate option description for the Apple II.
2018-06-10 18:32:22 -04:00
Thomas Harte
db8d8d8404
Commutes Sleeper
to ClockingHint::Source
, making state more granular.
2018-05-27 23:17:06 -04:00
Thomas Harte
39c0bc6c47
Factors string serialisation with \n\r conversion out of the Apple II and reuses it with the Oric.
2018-05-13 13:57:19 -04:00
Thomas Harte
ef19a03efc
Drives can now deliver activity events.
2018-05-10 21:54:10 -04:00
Thomas Harte
95f859cf5c
Merge branch 'master' into ActivityReceiver
2018-05-10 20:26:50 -04:00
Thomas Harte
578a5b3e69
Ensures NDEBUG is set for release builds.
2018-05-09 22:27:57 -04:00
Thomas Harte
70e6c3b2f6
Introduces the ActivityObserver
protocol for LEDs, drive events, etc.
...
The Electron's caps lock LED is the test case.
2018-05-07 21:57:54 -04:00
Thomas Harte
c36d7b4972
Makes first attempt at 6 and 2 decoder.
2018-05-04 23:11:12 -04:00
Thomas Harte
1c0b5bb02b
Corrects phoney switch of 'run' build to release.
2018-05-04 18:04:23 -04:00
Thomas Harte
e3b4aebf1a
Introduces the Disk II as a unique media target platform.
...
As it makes a little more sense to analyse Apple GCR images to determine target platform than it does to have the potential platforms vote over them.
Also starts on the parser that'll be necessary for making a decision.
2018-05-04 18:02:36 -04:00
Thomas Harte
723ee88043
Introduces configuration options for the Apple II.
...
Specifically: II or II+? Disk II 13- or 16-sector? Or not at all?
2018-05-03 19:37:32 -04:00
Thomas Harte
b98d5b790a
Finally unifies disk image file exceptions, and adds a placeholder for Apple DSK.
2018-04-27 23:18:45 -04:00
Thomas Harte
4bff44377a
Attempts to route Disk II requests to the thing itself.
2018-04-23 22:11:31 -07:00
Thomas Harte
7463edaa1b
Attempts to bring card support to the Apple II, and adds a 'has disk' flag.
2018-04-23 21:14:45 -07:00
Thomas Harte
d447e81abd
Adds provisional support for WOZ files.
2018-04-23 19:57:45 -07:00
Thomas Harte
6592745e53
Adds the bare minimum to respond to attempts to open NIB files with an Apple II.
2018-04-21 21:21:57 -07:00
Thomas Harte
72bc5f8d7b
Adds a class to contain the Disk II and begins Apple GCR conversion routines.
2018-04-21 14:33:42 -07: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
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
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
fca8a58b36
Exposes S-Video option in the Mac UI.
2018-04-01 13:29:04 -04:00
Thomas Harte
389979923e
Performs update to and satisfaction of Xcode 9.3's preferred warnings.
2018-03-30 10:25:01 -04:00
Thomas Harte
0869213c55
Cuts detritus.
2018-03-27 22:00:13 -04:00
Thomas Harte
f3fe16215a
Reintroduces options for the Vic-20, now tape loading speed only.
2018-03-27 21:55:43 -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
0ad2676640
Adds a class for the SN76489 and wires it into the ColecoVision.
2018-02-26 22:04:34 -05:00
Thomas Harte
5530b96446
Wired up a class and analyser for a ColecoVision.
2018-02-23 22:47:15 -05:00
Thomas Harte
c8a4432c63
Makes an attempt to transfer audio outputs during dynamic analysis.
2018-02-18 15:23:15 -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
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
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
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
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
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
6a0bb83716
Corrects typos in the SDL main.
2017-12-29 18:40:32 -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
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
7b25b03cd5
Formally standardises machine options and introduces a --help option for the SDL target.
2017-11-20 21:55:32 -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
d6141cb020
Increases number of warnings in Xcode.
2017-11-12 16:37:39 -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
16c96b605a
Xcode 9.1 auto-change.
2017-11-07 22:43:25 -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
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
f40e1fd840
Commutes the best-effort updater into C++11.
2017-10-05 18:09:58 -04:00
Thomas Harte
35705c5345
Factors out bit reversing from the HFE class.
2017-10-03 19:12:45 -04:00
Thomas Harte
ef605eda51
Factors out commonalities in SSD/DSD and ADF implementations.
2017-09-30 20:30:15 -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
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
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
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
9aa150c338
Abstracts the target platform type out from the static analyser's ownership.
2017-08-27 15:02:13 -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
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
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
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
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
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
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
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
6ec4e4e3d7
Merge branch 'master' into Memptr
2017-07-25 23:01:34 -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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
01a064dd63
Added an empty ED page.
2017-05-20 17:29:30 -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
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
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
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
57ec756f5b
Started speccing out a unit test for Atari ROM analysis.
2017-03-11 20:33:58 -05:00
Thomas Harte
a72d70e707
Enabled code coverage calculation for unit tests.
2017-03-11 17:44:56 -05:00
Thomas Harte
cd90118a0f
Added two, extraordinarily simple tests.
2017-02-12 20:32:53 -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
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
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
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
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
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
Thomas Harte
254cc41fd6
Made an attempt to separate and isolate the stuff of creating flux events from a PCMSegment
, eventually to factor that out of PCMTrack
and make it available also to PCMPatchedTrack
.
2016-12-17 21:13:57 -05:00
Thomas Harte
3017062e89
Maybe TDD is the way to get over my activity block on this thing? Fixed the existing ArrayBuilder tests so that the tests target builds again, added an extremely trivial PCMTrack test, heading towards PCMPatchedTrack tests.
2016-12-17 17:05:49 -05:00
Thomas Harte
dc08a23ceb
This is going to be a slow walk, I think. This class attempts to be the scratchpad which will hold in-memory track modifications.
2016-12-16 19:20:38 -05:00
Thomas Harte
c43e481a33
Started factoring video out of the Electron.
2016-12-10 21:07:52 -05:00
Thomas Harte
b81c058c0a
Factored out the Atari 2600's 6532 connection, as a low-hanging fruit.
2016-12-03 13:41:55 -05:00
Thomas Harte
3361d6b93a
Factored out the Atari 2600 speaker and adjusted it to postfix underscores.
2016-12-03 13:39:46 -05:00
Thomas Harte
4fac538a57
Factored out the Electron's speaker and adjusted instance variable naming.
2016-12-03 12:41:02 -05:00
Thomas Harte
d1d93829cf
Factored out the Tape and switched it to postfix underscores.
2016-12-03 12:18:08 -05:00
Thomas Harte
363db695e8
Started implementation of the Microdisc selection logic.
2016-11-22 08:12:53 +08:00
Thomas Harte
8499783b14
Dragged multibyte primitives and signature checks up to the base class. Implemented support for Oric MFM-style .DSK, at the file format level.
2016-11-21 20:47:16 +08:00
Thomas Harte
31c2548804
Created a base class for the boilerplate fopen
stuff, switched as many classes as possible to its use, switched to postfix underscores and non-camelCase names.
2016-11-21 20:14:09 +08:00
Thomas Harte
22cb8ecd75
Started building some tests of the array builder.
2016-11-19 08:27:08 +08:00
Thomas Harte
324a1de43d
Started pulling out array construction as a separate task.
2016-11-17 09:20:49 +08:00
Thomas Harte
5c5e44874f
Even better: why include the 'Input' prefix when there's only one?
2016-11-16 22:57:17 +08:00
Thomas Harte
4d0d5eb919
Renamed the 'input buffer builder' to the 'input texture builder' to be explicit about what sort of buffer, and killed the prefix since it's namespaced. Also switched to std::vector
.
2016-11-16 12:31:32 +08:00
Thomas Harte
1b66847647
Started trying to implement something sufficient of a 6502 disassembler.
2016-11-11 20:10:58 -05:00
Thomas Harte
80702616ea
Had a quick go at using the Oric parser for static analysis. Found out that synchronisation is lost. Need to investigate.
2016-11-06 22:56:38 -05:00
Thomas Harte
d1ef2f7c63
Made an attempt to consolidate what I learnt of Oric encoding while building this hastily and untidily directly into the Oric implementation.
...
(while adding support for the slow tape encoding mode)
2016-11-06 19:22:09 -05:00
Thomas Harte
353c1c8ea3
Shifted ownership of PETSCII -> string conversion down to the storage layer, where it's useful for tape parsing.
2016-11-06 18:43:51 -05:00
Thomas Harte
1b15bc3a6c
Started relocating the tape parsers down from static analyser to storage, to signify that they may be used by the emulation (if fast loading is supported on that machine).
2016-11-06 16:13:13 -05:00
Thomas Harte
c21bef4283
Project cleaning.
2016-11-05 15:08:22 -04:00
Thomas Harte
338904fffe
Made similar cleanings of the Electron and Vic.
2016-11-05 15:07:57 -04:00
Thomas Harte
9fb9d92437
Made the typer much more able to help out, and thereby tidied and separated the Oric's typer.
2016-11-05 14:47:09 -04:00
Thomas Harte
67f2c73205
Slightly cleaned project.
2016-11-01 22:42:00 -04:00
Thomas Harte
70973eb850
Fixed accreditation of BCDTest.
2016-11-01 22:40:48 -04:00
Thomas Harte
bddc540c0d
Partitioned and added text for AllSuiteA and Klaus Dormann's tests.
2016-11-01 22:35:15 -04:00
Thomas Harte
c24c1bf3b1
Created an options panel for the Oric. Which involved far too much copy and paste from the Electron. Time to figure out how to generalise this stuff, probably.
2016-10-19 22:56:14 -04:00
Thomas Harte
5e2b0aa901
Quick project clean up.
2016-10-19 21:32:12 -04:00
Thomas Harte
5c69728625
Introduced a memory fuzzer, and ensured the Oric uses it.
2016-10-19 21:31:50 -04:00
Thomas Harte
d8e4c488c2
Started iterating towards having an AY and a fully-working keyboard.
2016-10-14 21:18:03 -04:00
Thomas Harte
8c8a71107e
Added just enough wiring to add something that will generate the video, one day.
2016-10-12 19:20:23 -04:00
Thomas Harte
4a062c616f
Added enough wiring to get Oric TAPs through to a completely unimplemented Oric emulation.
2016-10-11 22:20:13 -04:00
Thomas Harte
df01c78039
It's a bit of a mess but this is probably close to appropriate for Oric TAP files.
2016-10-11 07:39:48 -04:00
Thomas Harte
c284818af5
Fixed alphabetisation of project.
2016-10-07 17:21:02 -04:00
Thomas Harte
e53455a936
Not having read the C++ synchronisation primitives before, this async task queue is probably incorrect. But nevertheless, let's have a quick go at employing it — in a hideously thread unsafe fashion — for audio generation. What can possibly go wrong?
2016-10-07 16:56:34 -04:00
Thomas Harte
c097886d00
Installed hoglet's BCDTest as a formal part of the test suite; removed some redundant semicolons in the Wolfgang Lorenz tests while I was here.
2016-10-04 07:52:44 -04:00
Thomas Harte
cfdd5fb686
By removing its status as a special case, eliminated the Atari 2600 document. It's fairly clear that my date with doing joysticks properly can be deferred only so much longer but this is no worse than previously things were.
2016-10-03 08:01:04 -04:00
Thomas Harte
bf468db73d
Migrated the Vic document to a mere options panel.
2016-10-03 07:42:05 -04:00
Thomas Harte
f28881ec6b
... and with the return of stored options and the shift of the aspect ratio to somewhere else (to sit, temporarily), the Electron document is the first of the gang to die.
2016-10-02 22:04:47 -04:00
Thomas Harte
19457621d8
Redistributed ownership of the user defaults key prefix, the Electron now works other than that settings aren't retained.
2016-10-02 21:56:50 -04:00
Thomas Harte
f1b99263e0
Relocated responsibility for loading ROMs, giving an Electron that 'works' (i.e. options aside) again.
2016-10-02 20:39:06 -04:00
Thomas Harte
0c75c2fc41
Disabled all machine-specific document code, to force the migration of functionality. The 2600 works other than the little matter of input.
2016-10-02 16:57:57 -04:00
Thomas Harte
6c6e9830dd
Started factoring the options panels out, in the hope that they'll become the only machine-specific thing. At least in the short term.
2016-10-02 16:31:50 -04:00
Thomas Harte
abf47efd40
Factored out Commodore is-a-ROM test, allowing it to be used from the Commodore analyser and thereby allowing ROMs to get as far as the machine again.
2016-09-29 19:39:13 -04:00
Thomas Harte
572d5587d9
Made a first stab at enabling multi-disk machines and thereby obeying (some of) the Plus 3's status register.
2016-09-25 21:24:16 -04:00
Thomas Harte
9bbcbd1001
Renamed class, intending to turn a Disk::Drive
into literally just that, and have a thing with a PLL that consumes events be a Controller
.
2016-09-25 20:05:56 -04:00
Thomas Harte
de863719d0
Made a first attempt at Acorn ADFS support plus the start of a suitable analyser.
2016-09-25 17:46:11 -04:00
Thomas Harte
cd5939501f
Treading water some more, ensured the DFS and ADFS ROMs get to the Electron. It now even inserts the DFS ROM if it has a DFS disk image. Might need to make it a sideways RAM though? Regardless, the next job surely — surely! — has to be to stop avoiding the 1770?
2016-09-20 07:36:57 -04:00
Thomas Harte
0ce901bd48
Added necessary wiring to get as far as asking an arm of the analyser to check out an Acorn disk image.
2016-09-18 21:18:11 -04:00
Thomas Harte
91cd7e143b
Started on the SSD/DSD support. Realised I had ommitted multiple head support from my disk class. Fixed that.
2016-09-18 19:21:02 -04:00
Thomas Harte
180c3df2d4
Calling it 'number theory' probably isn't accurate but extracted the CRC stuff and started using it for [M]FM encoding.
2016-09-18 18:33:26 -04:00
Thomas Harte
bcf91de7e9
Declared support for the Acorn disk files, started hammering out an encoder.
2016-09-18 13:35:54 -04:00
Thomas Harte
0e44cfa8a1
Merge branch 'master' into WD1770
2016-09-18 10:34:11 -04:00
Thomas Harte
6f0b9adc3d
Factors.cpp is dead.
2016-09-18 10:23:34 -04:00
Thomas Harte
a98374995e
Cleaned up pre-analysis code.
2016-09-17 18:19:32 -04:00
Thomas Harte
e3daf80564
Added a file for the 1770, at least.
2016-09-17 18:01:00 -04:00
Thomas Harte
7c65c69e0f
Migrated to Swift 3.
2016-09-15 22:12:12 -04:00
Thomas Harte
ee8510984f
Added just enough wiring to restore the 2600 to functionality.
2016-09-15 19:34:45 -04:00
Thomas Harte
92af19098c
Improved file naming.
2016-09-15 19:24:59 -04:00
Thomas Harte
df7aed7e8b
The Commodore analyser now at least hands off to somebody else a chance to parse disks.
2016-09-13 07:26:51 -04:00
Thomas Harte
eeec516fa6
Implemented seeking on tapes, mucked about a bit more with the Commodore analyser, at least temporarily removed cropping from the Vic emulator.
2016-09-11 17:09:00 -04:00
Thomas Harte
8c84f3581a
Attempted to bring some uniformity in application of configurations.
2016-09-08 05:32:17 -04:00
Thomas Harte
bdebc18e0a
Added a header parser for Commodore tapes. No time to grab file bodies now; time to go to work.
2016-09-06 08:49:32 -04:00
Thomas Harte
8b933182af
Added enough wiring (hopefully) that the Commodore tape's GetFiles should be called when appropriate.
2016-09-06 06:39:40 -04:00
Thomas Harte
963e307d0c
Increased documentation.
2016-09-05 22:06:39 -04:00
Thomas Harte
05c24222d8
Liberated the tape parser template.
2016-09-05 20:02:35 -04:00
Thomas Harte
21e5f407d8
I need to get a bit more definitive on naming but this gets all the way to setting a configuration upon an Electron.
2016-08-31 22:03:42 -04:00
Thomas Harte
a9b67dfba0
Introduced an NSDocumentController
subclass.
2016-08-31 21:21:07 -04:00
Thomas Harte
7bc2b6b161
Added the minor piece that will allow analysis results to be obtained from Objective-C, and exposed to Swift in sufficient detail for it to be able to pass on to the machine.
2016-08-31 20:43:29 -04:00
Thomas Harte
0032ad2634
Edging ever onwards; killed forced attempt at uniformity in targets, sketched out the interface for a next-file-from call to Acorn tapes.
2016-08-29 21:10:38 -04:00
Thomas Harte
d1abfc040c
Addressed my dithering here: the file format containers themselves should do nothing but inspect the data to find out whether it is of the correct format. The machine steps are there for machine-specific validation. So it's probably easier to treat a binary ROM image just as a binary ROM image. Therefore, the Acorn-specific .rom detection is now in an Acorn-specific area.
2016-08-29 08:48:49 -04:00
Thomas Harte
d9f0065154
Sketched out just enough classes to get through the get-contents-into-memory step of static analysis.
2016-08-28 12:20:40 -04:00
Thomas Harte
24938326ac
ROMs definitely have no behaviour other than responding to memory accesses. Cartridges might. So picked the more general term. Sketched out a class at least to parse PRG as though it were a cartridge. Hence the static analyser can guess at whether a PRG is a cartridge or an ordinary program.
2016-08-27 18:26:51 -04:00
Thomas Harte
a1b3a18d11
Started forcing a resolution on ROMs by doing. But have immediately misstepped. Rename coming momentarily...
2016-08-27 18:17:40 -04:00
Thomas Harte
e68ff64045
Actually, this is less prescriptive.
2016-08-27 13:42:51 -04:00
Thomas Harte
5ffd9e4f0d
This is probably how the static analyser interface will look?
2016-08-23 21:35:59 -04:00
Thomas Harte
38aec44d85
Made sufficient changes for the Vic itself to believe it can recast a PRG as a tape and insert it that way. So now the ball is in the court of: how the heck are Commodore tapes encoded?
2016-08-15 19:44:41 -04:00
Thomas Harte
58297f1baf
Performed the basic metadata and routing for opening D64 files. Realised that I wasn't actually necessarily catching exceptions properly for all file opens, and fixed.
2016-08-01 07:09:15 -04:00
Thomas Harte
89a1881fef
Started turning the 1540 into an actual disk drive.
2016-07-29 11:03:09 -04:00
Thomas Harte
0e581c7607
Factored out the stuff of running a timed event loop from the TapePlayer.
2016-07-29 07:15:46 -04:00
Thomas Harte
e55db0cfe8
Made an attempt to eliminate creeping tape processing accuracy misses, which implied factoring out the GCM and LCD functions, which I then felt didn't really amount to signal processing.
2016-07-29 05:19:01 -04:00
Thomas Harte
e061e849d4
Had a second bash at the PLL. Probably I should read some of the literature.
2016-07-27 16:24:24 -04:00
Thomas Harte
0aa90b943b
Switched to specifying bit length as a quotient for the purposes of a PCMSegment and verified that I had the logic for picking a Commodore time zone backwards: bigger numbers are faster, not slower.
...
Started sketching out a DiskDrive class.
2016-07-15 06:51:11 -04:00
Thomas Harte
d1fe07f14d
Added test of perfect DPLL input timing.
2016-07-12 21:42:23 -04:00
Thomas Harte
75d95c0bc0
Sketched out an interface for a digial PLL. Not persuaded yet. Baby steps.
2016-07-11 22:12:58 -04:00
Thomas Harte
1e9eedc314
Factored out the PCM track since it's going to be a useful construct for almost every file format. Documented it a little better.
2016-07-10 18:36:52 -04:00
Thomas Harte
ff49857f5c
Started sketching out support for the G64 file format.
2016-07-10 10:17:53 -04:00
Thomas Harte
9e3d6b762b
Sketched out the generic interface for a disk, documenting it and the tape interface while I'm here.
2016-07-10 08:54:39 -04:00
Thomas Harte
d8334edf4a
Started trying to clean up, including commuting the C1540 source file name to match its class name but mainly by adding documentation.
2016-07-10 07:46:20 -04:00
Thomas Harte
865eb421cd
Quick on-disk tidy up.
2016-07-09 15:44:55 -04:00
Thomas Harte
7cc4bf3fe7
Hit and hope is getting me nowhere. Time to unit test this thing.
2016-07-09 15:40:25 -04:00
Thomas Harte
d2cded7b59
Attempted to separate out the concept of a serial port and a serial bus, since the bus may be shared, and to establish half duplex communications from the Vic.
2016-07-05 14:55:20 -04:00
Thomas Harte
0d3d0fbe4d
Created a namespace for Commodore
and an empty container file for the 1540[/1] implementation.
2016-07-05 13:28:27 -04:00