Thomas Harte
1c6af279b2
Picks more appropriate cropping now that I'm obeying HSYNC-as-blank.
2018-06-23 16:40:17 -04:00
Thomas Harte
9968342a11
Ensures the pixel collection test is inline with other decisions.
2018-06-23 16:18:33 -04:00
Thomas Harte
c248ecde48
Introduces joystick support for the CPC.
2018-06-21 22:46:10 -04:00
Thomas Harte
154c89e041
Introduces a missing separator.
2018-06-21 20:01:04 -04:00
Thomas Harte
d45f1a793d
Introduces composite/RGB selection for the Amstrad CPC.
2018-06-21 20:00:49 -04:00
Thomas Harte
1f8b69a5b0
Attempts to honour the full CRTC 'sync' period, placing blank and the colour burst.
2018-06-20 22:38:54 -04:00
Thomas Harte
acb74185d5
Revokes test logging.
2018-06-19 19:39:09 -04:00
Thomas Harte
1bdc718527
Ensures the MSX reports the proper number of drives.
2018-06-18 22:15:52 -04:00
Thomas Harte
685a80f95b
Ensures the Electron Plus 3 properly announces drives to an activity observer.
...
Does away with lazy allocation as not all that helpful, and liable to cause complexity.
2018-06-18 21:49:57 -04:00
Thomas Harte
6a3702a5c7
Reduces space for floating point accuracy errors.
2018-06-16 22:22:40 -04:00
Thomas Harte
7728adfc5a
Eliminates repetition of the 10
constant.
2018-06-14 17:23:47 -04:00
Thomas Harte
51da21b844
Formally introduces keyboard-as-joystick for the Mac, and fixes discovered joystick issues.
...
Specifically:
* digital to analogue conversion not returning to centre;
* Apple II axes being the wrong way around; and
* Apple II buttons using improper selection logic.
2018-06-13 19:22:34 -04:00
Thomas Harte
0be19d8de7
Ensures analogue channels which are already charging don't abide by c070
.
2018-06-13 18:16:02 -04:00
Thomas Harte
f26e4734b3
Adds use of joystick input in the Apple II.
2018-06-12 22:21:43 -04:00
Thomas Harte
f1b430338e
Makes the Apple II a joystick machine.
...
Albeit that the values supplied to its joysticks do not currently make it into the emulated state.
2018-06-11 22:16:32 -04:00
Thomas Harte
2954373115
Introduces an intermediary for digital <-> analogue conversion.
2018-06-11 21:35:03 -04:00
Thomas Harte
42d21ea3a9
Merge branch 'master' into Joystick
2018-06-10 21:08:59 -04:00
Thomas Harte
7d761f145f
Corrects typo that mapped Apple II options to the Electron.
2018-06-10 21:05:14 -04:00
Thomas Harte
3ea2a4ccb8
Moves the joystick class towards accepting analogue inputs.
2018-06-10 20:45:52 -04:00
Thomas Harte
69da00fcfb
Modifies test slightly for usual RWTS16 location.
...
Also eliminates messy print logging.
2018-06-10 18:41:09 -04:00
Thomas Harte
d576ff1172
Exposes DOS 3.3 acceleration as an option.
...
Albeit with an unhelpful label in the macOS GUI for now.
2018-06-10 18:28:29 -04:00
Thomas Harte
af54666c23
Implements RWTS acceleration.
2018-06-10 17:58:16 -04:00
Thomas Harte
12c59ede09
Adds writeback of track location.
2018-06-09 20:34:12 -04:00
Thomas Harte
b4d0d4fff6
Starts building out some fast-loading infrastructure for DOS 3.3.
2018-06-09 17:29:14 -04:00
Thomas Harte
dde9b73a22
Creates the through-path that will be necessary for RWTS acceleration.
2018-06-09 12:51:53 -04:00
Thomas Harte
fb4bb21bf6
Ensures an objective copy of the bus address is kept, and forwarded to cards.
2018-06-08 20:12:15 -04:00
Thomas Harte
d380595ad4
Unrolls the loops for slightly fewer conditionals.
2018-06-03 07:27:03 -04:00
Thomas Harte
d84b8700a3
Switches the Apple II to one byte per pixel.
...
Just trying to get it right for now; optimisation to come.
2018-06-02 22:03:45 -04:00
Thomas Harte
80b281d9f1
Switches back to whole bytes per pixel, owing to persistent precision problems at 1bpp.
...
Also fixes the inaccurately-named `cycles_since_update_`.
2018-06-02 18:25:00 -04:00
Thomas Harte
69dc3cc4d8
Switches to using the same varying for byte and subpixel selection.
2018-06-01 22:52:29 -04:00
Thomas Harte
0833412df9
Corrects port for ZON-X reads.
2018-06-01 19:45:37 -04:00
Thomas Harte
35e84ff1a8
Corrects NTSC quadrature phase.
2018-05-31 21:40:46 -04:00
Thomas Harte
8dd7c6ef23
Eliminates 'reversed_c' as I no longer believe low-resolution colour numbers are reversed.
...
Also gets explicit about phase.
2018-05-29 22:30:45 -04:00
Thomas Harte
b2464598d0
Forces the Apple II bus handler call inline.
2018-05-28 18:21:01 -04:00
Thomas Harte
6812a001d8
Teaches the Oric to apply a lighter Disk II touch when possible.
2018-05-28 18:20:43 -04:00
Thomas Harte
928aab13dc
Introduces more granular clocking announcements to the Disk II.
...
As well as making it accept the clock rate it'll actually receive, to supply to the drives, so that they spin at the proper speed.
2018-05-28 17:19:29 -04:00
Thomas Harte
f3fe711542
Attempts to reduce FDC costs.
2018-05-27 23:55:04 -04:00
Thomas Harte
db8d8d8404
Commutes Sleeper
to ClockingHint::Source
, making state more granular.
2018-05-27 23:17:06 -04:00
Thomas Harte
7c3dd55e5c
Corrects typo and improves exposition.
2018-05-24 18:57:35 -04:00
Thomas Harte
1b43381be0
Corrects meaning of the Microdisc's paging control.
2018-05-24 18:53:02 -04:00
Thomas Harte
a4d7703efd
Adds missing #include.
2018-05-23 22:28:00 -04:00
Thomas Harte
f9c25372c2
Ensures cards get messaged regardless of memory area.
2018-05-22 21:49:34 -04:00
Thomas Harte
ea92363e6c
Attempts to get the Apple II to honour the AppleII::Card select constraints appropriately.
2018-05-22 20:34:59 -04:00
Thomas Harte
015f692bd3
The Disk II card now commutes Disk II sleep activity to select constraints.
2018-05-22 19:51:39 -04:00
Thomas Harte
80d34f5511
Specs out a new AppleII::Card
interface.
...
Doesn't yet fully implement it on the Apple II side though.
2018-05-21 20:54:53 -04:00
Thomas Harte
e482929da8
Enhances the Disk II's ability to sleep.
...
Also enables Disk II sleep observation in the Oric.
2018-05-19 23:15:28 -04:00
Thomas Harte
7b7beb13a3
Eliminates the fiction of setting and getting registers.
...
The Disk II seems lower level than that; it will read the data bus whenever it likes, it is the programmer's responsibility to keep up with that. It also reserves the right not to load the bus regardless of whether it receives a read or write access.
2018-05-17 21:39:11 -04:00
Thomas Harte
b3f4d0ed8c
Imposes a three-cycle penalty for SN76489 access.
...
This is my reading of (i) the SN76489 data sheet; plus (ii) the ColecoVision schematic.
2018-05-16 19:06:03 -04:00
Thomas Harte
7c2721d54d
Adjusted number again. But we'll see.
2018-05-15 20:43:13 -04:00
Thomas Harte
8907d0a9a7
Adds a low-pass filter to the Apple II's audio.
2018-05-14 21:56:14 -04:00
Thomas Harte
5107c7c23d
Ensures all keypresses are entered as upper case.
2018-05-13 22:40:28 -04:00
Thomas Harte
4dbd1f1358
Corrects Disk II ROM visibility.
2018-05-13 22:36:02 -04:00
Thomas Harte
dea9892a85
Attempts to implement vapour lock bus behaviour.
2018-05-13 18:53:32 -04:00
Thomas Harte
7226d8d4f7
Eliminates all instances of µ.
2018-05-13 15:46:14 -04:00
Thomas Harte
ad9b0cd4e3
Eliminates all endashes.
2018-05-13 15:43:03 -04:00
Thomas Harte
5d6b5d9f10
Eliminates all emdashes in cross-platform code.
2018-05-13 15:34:31 -04:00
Thomas Harte
0b771ce61a
Removes all instances of the copyright symbol.
2018-05-13 15:19:52 -04:00
Thomas Harte
2252c29495
Switches the Oric to string insertion at the time of consumption.
...
To avoid issues around keyboard scanning being decoupled from consumption via IRQ, but not buffered. Keys pressed while BASIC is otherwise busy are just lost.
2018-05-13 14:02:46 -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
a6b8e88406
Implements type_string
for the Apple II.
2018-05-13 11:30:04 -04:00
Thomas Harte
d0fd4dd4db
The MSX is now an activity source.
...
Completing the set.
2018-05-12 17:32:53 -04:00
Thomas Harte
3ba6b6f1ee
Makes the Oric an event source.
2018-05-11 23:05:36 -04:00
Thomas Harte
bc464e247f
The 1540 and, by extension, the Vic-20 are now activity sources.
2018-05-11 22:24:33 -04:00
Thomas Harte
c23f6d8d19
Corrects type for array accesses.
2018-05-11 21:46:30 -04:00
Thomas Harte
39d779edf0
Makes CPC an activity source.
2018-05-11 21:45:46 -04:00
Thomas Harte
a43ca0db35
Makes the Apple II an activity source.
2018-05-10 22:17:13 -04:00
Thomas Harte
ef19a03efc
Drives can now deliver activity events.
2018-05-10 21:54:10 -04:00
Thomas Harte
85e1610627
Merge branch 'master' into ActivityReceiver
2018-05-10 20:49:32 -04:00
Thomas Harte
d16ae84d0b
Reduces number of Apple II video flushes, to reduce processing cost.
2018-05-10 20:48:57 -04:00
Thomas Harte
95f859cf5c
Merge branch 'master' into ActivityReceiver
2018-05-10 20:26:50 -04:00
Thomas Harte
312171fa59
Pulls out a couple of repeating constants.
2018-05-09 20:28:25 -04:00
Thomas Harte
c3a2f7717b
Makes attempt to implement support for the Pravetz 8D + 8DOS.
...
i.e. the Disk II wired up to the Oric, with some ROM swaps.
2018-05-08 22:05:43 -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
f65c65569a
Makes disk head position explicitly something with sub-integral precision.
...
Also as a drive-by fix, corrects accidental assumption of 10 sectors for all MFMSectorDump descendants.
2018-05-06 23:17:36 -04:00
Thomas Harte
d613c3c187
Adds an implementation of the language card.
2018-05-06 16:17:11 -04:00
Thomas Harte
4c4ab25d0e
Attempts to rationalise Apple II address decoding.
2018-05-05 20:24:03 -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
eecea93b3b
Simplifies the test for resetting the ZX80/81 line counter.
2018-05-01 21:31:37 -04:00
Thomas Harte
f4097290c2
Made various corrections following a quick for-loop constness audit.
2018-04-30 22:23:57 -04:00
Thomas Harte
265bc80d44
Attempts to introduce sleeping to the Disk II.
2018-04-29 17:52:29 -04:00
Thomas Harte
10c0e687f5
Attempts to introduce sleeping for the Disk II.
2018-04-29 17:51:10 -04:00
Thomas Harte
850a394eb5
Corrects graphics 'carry' — the potential holdover into delayed bytes.
2018-04-26 19:26:43 -04:00
Thomas Harte
244721a6f8
Corrects graphics mode address generation.
2018-04-25 22:26:01 -04:00
Thomas Harte
b4f6dee954
Ensures the contextually-proper boot and state machine ROMs are requested.
2018-04-24 20:25:02 -07:00
Thomas Harte
2685e9087e
Changes the default-assigned Disk II card slot from 7 to 6.
2018-04-24 20:24:44 -07:00
Thomas Harte
7061537ff5
Makes joined-up attempt to run data through the Disk II.
2018-04-24 19:44:45 -07:00
Thomas Harte
2f2390b5aa
Adds F12 as a reset key, triggers cards upon a flush.
2018-04-24 09:03:30 -07:00
Thomas Harte
af61bbc3e2
Attempts actual performance of the state machine.
2018-04-24 08:29:05 -07:00
Thomas Harte
56d88f23ef
Teeters closer and closer to trying actually to run the Disk II state machine.
2018-04-23 22:29:36 -07: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
e92e06a5f4
Doubled down on the ROMMachine::ROMFetcher typedef.
2018-04-23 20:20:14 -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
5968c9a391
Corrects Apple II output audio.
2018-04-21 14:56:50 -07:00
Thomas Harte
aebe8a64a2
Removes empty printf.
2018-04-20 10:58:23 -04:00
Thomas Harte
b8ae283049
Implements correct text inverse/flashing.
2018-04-19 22:14:22 -04:00
Thomas Harte
e03a403a51
Adds exposition.
2018-04-19 20:41:09 -04:00
Thomas Harte
ba43b3e6b8
Reverses bit order of graphics stream; apparently the ROM is backwards.
2018-04-19 20:39:38 -04:00
Thomas Harte
b4a2d1395c
Ensures left and right cursor keys work.
2018-04-18 22:23:31 -04:00
Thomas Harte
f5ae8d0f79
Attempts to be more rigorous about clock rates.
2018-04-18 21:52:22 -04:00
Thomas Harte
5f1c210746
Simplifies and corrects low-resolution colour generation.
...
Possibly disproving the premise for this whole experiment, all colours seem immediately to work correctly. Hmmm.
2018-04-18 21:41:11 -04:00
Thomas Harte
f6c2f6e896
Slightly adjusts colour burst logic to fix transition lines in mixed mode.
2018-04-18 20:39:12 -04:00
Thomas Harte
6547560e52
Gives the CRT the ability to move iCoordinate multiplication outside of the fragment loop.
...
That resolves precision issues, as were plaguing the Apple II.
2018-04-18 19:29:03 -04:00
Thomas Harte
a167e3849b
Allows multiple ROMs to be inserted into the Electron.
2018-04-18 18:13:30 -04:00
Thomas Harte
f22c23cb4c
Attempts to bring audio to the Apple II.
...
By factoring the audio toggle out from the MSX.
2018-04-17 22:28:13 -04:00
Thomas Harte
a07c99d778
Completes first draft of Apple II video hardware.
2018-04-17 22:04:02 -04:00
Thomas Harte
1c605d58e3
Removes the CRT requirement for an integral relationship between cycles and samples.
2018-04-16 20:00:56 -04:00
Thomas Harte
6a79ce9eb1
Adds enough to the Apple II's video that I can see what's going on with soft switches.
2018-04-15 21:55:26 -04:00
Thomas Harte
465c38f03c
Extends the keyboard protocol and adds keyboard input to the Apple II.
2018-04-15 21:11:30 -04:00
Thomas Harte
be05d51e07
Now gives something a lot like the proper character output.
2018-04-15 20:31:04 -04:00
Thomas Harte
9bc470027e
Put enough in place to get a visual representation of video memory.
...
Not the correct one, and so as to indicate that the machine isn't booting, surprisingly.
2018-04-15 19:35:08 -04:00
Thomas Harte
335c633884
Retrenches temporarily to full 8bpp output; introduces extra half a colour cycle of pause.
2018-04-15 18:54:05 -04:00
Thomas Harte
cd26f11818
Fixes documentation misstatement.
2018-04-15 18:00:51 -04:00
Thomas Harte
abe47b6ed8
Makes first attempt at a stable display area. Not entirely successful.
2018-04-15 18:00:40 -04:00
Thomas Harte
61659faeaa
Adds the necessary call-outs to allow implementation of video generation.
2018-04-15 15:13:07 -04:00
Thomas Harte
71adb964e5
The Apple II now has a functioning processor, ROM and RAM.
2018-04-14 21:41:26 -04:00
Thomas Harte
e599e65087
Switches to use of the TargetList
typedef wherever possible.
2018-04-14 19:46:38 -04:00
Thomas Harte
7efee9b52b
Does the bare minimum to create a class skeleton for Apple II implementation.
2018-04-14 19:46:15 -04:00
Thomas Harte
079dc671e1
Rationalises per-machine static analyser call pattern, and adds Apple II as an option.
2018-04-14 12:12:12 -04:00
Thomas Harte
15f7cbe8c1
Corrects capitalisation.
2018-04-11 22:06:50 -04:00
Thomas Harte
428b6145fa
Converts 6560 to more project normative templated form.
2018-04-11 22:00:42 -04:00
Thomas Harte
3ad0b31db8
Limits regions accessible to the 6560 to those built into the machine.
2018-04-11 21:35:23 -04:00
Thomas Harte
94b1c37fb2
Slightly simplifies bus decoding.
2018-04-08 18:51:37 -04:00
Thomas Harte
b20cbcd5fe
Causes the Vic-20 to obey its own has_c1540 flag.
2018-04-08 17:35:02 -04:00
Thomas Harte
865c47a1ac
Names the magic constants.
2018-04-08 10:35:07 -04:00
Thomas Harte
3821679efd
Switches to bit unpacking on the GPU.
2018-04-07 22:17:47 -04:00
Thomas Harte
10f637d2cf
Enhances the CompoundSource so that constituents can have different volumes.
2018-04-07 14:30:02 -04:00
Thomas Harte
36e0cb29c0
Ensures proper propagation of video choice through the Oric.
2018-04-04 19:14:42 -04:00
Thomas Harte
c0b4dd65da
Mades the expected video signal usage explicit.
2018-04-04 19:01:18 -04:00
Thomas Harte
69f520428d
Makes a first, ugly attempt at a 'new machine' dialogue for the Mac.
...
Which has implied getting much more specific about MSX disk drive attachment, and has prompted an excuse to offer the ZX80 with the ZX81 ROM.
2018-04-02 22:42:41 -04:00
Thomas Harte
33084899d0
Provides s-video as a command-line option.
2018-03-31 22:14:34 -04:00
Thomas Harte
8b45377b89
Simplifies storage underlying Vic memory.
...
In the hope of avoiding non-obvious bugs.
2018-03-31 18:54:40 -04:00
Thomas Harte
f6fb368d88
Allows the fast-tape mechanism to take ownership of tape handling.
...
Any successful fast tape interaction will now permanently pause the tape until a failed interaction occurs. This may or may not be a good idea.
2018-03-30 21:22:52 -04:00
Thomas Harte
912791d3d4
Causes the s-video path correctly to function.
2018-03-30 18:24:18 -04:00
Thomas Harte
163a61dd63
Corrects SVideo-as-composite output; the Atari and Vic-20 now both supply svideo.
2018-03-30 13:16:18 -04:00
Thomas Harte
33281b9d89
Introduces S-Video as a video signal type at the interface level.
2018-03-30 10:25:41 -04:00
Thomas Harte
286259c83b
Adds missing 6560 update hooks.
2018-03-29 20:49:36 -04:00
Thomas Harte
ec353ce663
Makes minor Vic-20 optimisations.
...
Specifically: the 6560 is updated only upon writes (more nuance can arrive), and tape sleeps are observed.
2018-03-27 21:52:52 -04:00
Thomas Harte
6d464557a0
Reintroduces a warm-up run for the C1540.
...
That simulates the normal real-life scenario of switching the drive on slightly before the computer, and causes it to function correctly from immediate fast typing on an American Vic.
Also switches a couple of casts within the C1540 to functional style.
2018-03-26 21:06:07 -04:00
Thomas Harte
a2da51c30b
Commutes Vic-20 machine configuration options to its Target.
2018-03-26 19:01:57 -04:00
Thomas Harte
e15d6717a1
Strips back Vic-20 static analysis to the bare minimum.
...
Also corrects an unsafe assumption in fast loading.
2018-03-25 13:37:33 -04:00
Thomas Harte
7fcd243be0
Ensures the rom fetcher is properly recorded for potential provision to the C1540.
2018-03-23 18:20:17 -04:00
Thomas Harte
a301964bd0
Ensures all audio queues are fully merged before machine destruction.
...
Thereby avoids a race condition.
2018-03-22 21:59:19 -04:00
Thomas Harte
2712702461
Makes get_clock_rate
protected. It's now an implementation detail.
2018-03-22 10:01:18 -04:00
Thomas Harte
da3d65c18f
Devolves time to cycle conversion to machines.
...
Thereby avoids a whole bunch of complicated machinations that would otherwise have been required of the multimachine.
2018-03-21 22:18:13 -04:00
Thomas Harte
89bec2919f
Encapsulates machine configuration properties for all remaining platforms.
2018-03-09 16:07:29 -05:00
Thomas Harte
78eaecb29e
Provides the proper framework for encapsulation of analyser target specifics.
...
... while making them a safe container for objects too. Uses the ZX80/81 as the pilot platform.
2018-03-09 15:36:11 -05:00
Thomas Harte
6b1eef572b
Eliminates diamond inheritance of KeyboardMachine::Machine by typers.
...
Specifically by pulling the key action stuff into a purely abstract class [/interface]. Takes the opportunity to unpublish a bunch of machine details.
2018-03-09 15:19:02 -05:00
Thomas Harte
48737a32a7
Introduces formal setting of the output volume to SampleSource
.
...
Previously every output device was making its own decision. Which is increasingly less sustainable due to the CompoundSource.
2018-03-09 13:23:18 -05:00
Thomas Harte
03501df9e5
Merge pull request #365 from TomHarte/CartridgeDetermination
...
Works towards eliminating the special cases for Atari 2600 ROM handling.
2018-03-08 18:40:58 -05:00