Thomas Harte
7591906777
Numerous IWM fixes: the machine now seems to be trying to measure the tachometer.
2019-06-06 18:32:11 -04:00
Thomas Harte
a413ae11cb
Makes some sort of first attempt at having the IWM read.
2019-06-04 22:13:00 -04:00
Thomas Harte
833258f3d7
Sets things up to allow variable rotation rates, and especially Sony 800kb-style self-selecting rates.
2019-06-04 21:41:54 -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
983407896c
Ensures consistent audio pipeline.
2019-06-01 17:29:57 -04:00
Thomas Harte
5c08bb810e
In theory provides a full implementation of audio.
...
Albeit seemingly ineffective.
2019-06-01 15:44:29 -04:00
Thomas Harte
17635da812
Pushes Mac audio further towards being able to function.
2019-06-01 15:18:27 -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
4632be4fe5
Wires up the final IWM signal, SEL, preparatory to an implementation.
2019-05-30 12:08:00 -04:00
Thomas Harte
0848fc7e03
Ensures the Mac uses auto vectored interrupts.
2019-05-28 16:24:41 -04:00
Thomas Harte
5e2496d59c
Simplifies and corrects MOVE logic.
2019-05-28 15:17:03 -04:00
Thomas Harte
1d3dde32f2
Ensures final byte of data can be accessed.
2019-05-09 07:24:26 -04:00
Thomas Harte
41740fb45e
Implements video position feedback.
...
At a substantial performance cost for now, but I'll worry about that once things are working.
2019-05-08 16:54:19 -04:00
Thomas Harte
0ad88508f7
Removes ROM mirroring above $600000.
2019-05-08 15:07:03 -04:00
Thomas Harte
8b72043f33
Ensures no uninitialised variables.
2019-05-08 14:54:54 -04:00
Thomas Harte
f0f9722ca6
Takes a first crack at the keyboard's serial protocol.
...
Albeit that without a working shift register in the VIA, this shouldn't really work yet.
2019-05-08 14:20:28 -04:00
Thomas Harte
b5ef88902b
Edges further towards a functioning keyboard.
2019-05-08 13:58:52 -04:00
Thomas Harte
7b466e6d0a
Begins work on a functioning keyboard.
2019-05-08 12:34:26 -04:00
Thomas Harte
7e6d4f5a3e
Adds emulation of the real-time clock.
2019-05-08 00:12:19 -04:00
Thomas Harte
ce099a297a
Eliminates RAM writes in ROM area.
...
I no longer think that logic is correct.
2019-05-07 17:16:22 -04:00
Thomas Harte
949c848815
Broadens address decoding.
...
To no obvious change in output.
2019-05-06 22:57:29 -04:00
Thomas Harte
9bf9b9ea8c
Ensures unmapped peripherals return a consistent value.
2019-05-06 21:32:10 -04:00
Thomas Harte
a131d39451
I now believe only the 6522 is on the synchronous bus.
2019-05-06 14:10:13 -04:00
Thomas Harte
b540f58457
Sets a more appropriate display type.
2019-05-05 23:22:05 -04:00
Thomas Harte
4f5a38b5c5
Adds support for the alternate video buffer.
2019-05-05 23:05:24 -04:00
Thomas Harte
cefc3af08b
Corrects RAM read decoding when the ROM overlay is enabled.
2019-05-05 22:48:40 -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
407bbfb379
Pretending the Disk II is an IWM doesn't seem to achieve much.
2019-05-05 18:12:25 -04:00
Thomas Harte
a99ebda513
Takes a first shot at (inverted) Mac video output.
2019-05-04 22:27:58 -04:00
Thomas Harte
537b604fc9
It looks like writes should always go to RAM.
...
Now I see the screen buffer being filled with `0xffff`s, along with what is probably disk motor control data.
2019-05-04 17:29:30 -04:00
Thomas Harte
98bc570bf7
Adds further boilerplate around VIA and IWM decoding.
2019-05-04 17:12:26 -04:00
Thomas Harte
181b77c490
Adds decoding of IWM accesses and respect for the ROM overlay bit.
2019-05-04 16:38:01 -04:00
Thomas Harte
bc9eb82e6f
Adds in VIA access decoding, and a note to self on video.
...
The Mac now proceeds to try to talk to the IWM.
2019-05-04 14:23:37 -04:00
Thomas Harte
29fc024ecd
Starts negotiating the Macintosh memory map.
2019-05-04 12:33:27 -04:00
Thomas Harte
c1695d0910
Adds various notes to self.
2019-05-03 23:55:28 -04:00
Thomas Harte
6d6a4e79c9
Adds the absolute basics to include a 6522 in the Macintosh.
...
Not yet wired to anything.
2019-05-03 23:40:22 -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
3cb042a49d
Corrects the carry and extend flags for various long-word operations.
2019-04-21 22:08:18 -04:00
Thomas Harte
c0861c7362
Removes hard-coded assumption about disk ROM list placement.
2019-04-16 11:22:03 -04:00
Thomas Harte
c11a1f9679
Introduces S-Video support for the ColecoVision.
2019-03-02 23:02:37 -05:00
Thomas Harte
d97348dd38
Eliminates dangling uses of printf
.
2019-03-02 18:07:05 -05:00
Thomas Harte
e1ebb7ce9c
Ensures no attempt to call nullptr
.
2019-03-02 17:37:56 -05:00
Thomas Harte
d5b4ddd9e5
Simplifies use_fast_tape_ logic.
2019-03-02 14:54:26 -05:00
Thomas Harte
ef085e3f93
MSX: introduces a tape motor LED, and limits the fast-tape hack to the BIOS.
2019-03-01 18:49:21 -05:00
Thomas Harte
3862a93ff9
Removes mapping of the equals key to break.
...
... because I keep pressing it by accident.
2019-02-28 21:47:12 -05:00
Thomas Harte
816ad0a94c
Introduces region support to the MSX.
2019-02-28 20:54:43 -05:00
Thomas Harte
0536697d8f
Corrects scope of delay.
2019-02-28 18:46:28 -05:00
Thomas Harte
0dbd8a667d
Corrects delay for SN access.
2019-02-27 22:58:43 -05:00
Thomas Harte
d2da55aa03
Adds a single-cycle M1 delay to the ColecoVision.
2019-02-27 22:01:30 -05:00
Thomas Harte
c7c21a7e2c
Sorry, ColecoVision, it's composite only for you.
2019-02-24 22:37:24 -05:00
Thomas Harte
16731661e8
Switches back to being explicit about the colour burst phase.
...
Some sort of phase inversion otherwise seems to be achievable by software that switch modes often.
2019-02-24 22:28:11 -05:00
Thomas Harte
d4134cd0d8
Restores proper colour phase to the Apple II.
...
Given that its timing errors were fixed, this also switches back to using 'default' colour bursts — i.e. ones with implicit phase. The Apple II continues to be an excellent bellwether for issues in the pipeline, and this helps further to ensure that.
2019-02-24 14:35:13 -05:00
Thomas Harte
d0b967ce53
Corrects typo; disables original colour ROM usage for now.
2019-02-18 20:49:54 -05:00
Thomas Harte
ac8d43cc4a
Improves use of const.
2019-02-18 20:21:41 -05:00
Thomas Harte
40ee215b1b
By #define provides a means not to use the real composite samples.
...
To aid with debugging.
2019-02-18 17:20:52 -05:00
Thomas Harte
6c1d94beaa
Adds composite monochrome output for the Oric. At least temporarily.
2019-02-18 16:56:48 -05:00
Thomas Harte
7939897622
Fixes announced timing difference between pixel and border lines.
...
The Apple II sync fault is now fixed!
2019-02-12 22:32:02 -05:00
Thomas Harte
3e0b5433b9
Institutes colour/monochrome screen selection as an Apple II option.
...
Allowing me to test that straight-through composite still works.
2019-02-12 19:52:32 -05:00
Thomas Harte
75987f64ec
Restores Oric audio.
2019-02-05 21:42:39 -05:00
Thomas Harte
097bc7055e
Adds a default selection, for invalid models.
2019-01-25 19:31:44 -05:00
Thomas Harte
6c49953115
Returns gamma correction, and corrects Amstrad CPC brightness.
2019-01-14 22:56:08 -05:00
Thomas Harte
2ef6d4327c
Resolves further build warnings.
2019-01-13 20:37:50 -05:00
Thomas Harte
cc95e587db
Adds virtual destructors for various interface classes.
2019-01-13 19:19:01 -05:00
Thomas Harte
ccb52fb625
Ensures no writes to pixel_pointer_
when allocation has failed.
2019-01-11 22:00:44 -05:00
Thomas Harte
601961deeb
Wires through set_display_type
.
2018-11-29 20:44:21 -08:00
Thomas Harte
b723740f64
Improves PAL colours.
2018-11-29 19:12:20 -08:00
Thomas Harte
6be46ae921
Mostly restores Atari 2600 output. PAL colours need work.
2018-11-29 18:26:05 -08:00
Thomas Harte
a25470ee41
Permits tweaking of PhaseLinkedLuminance8
sampling offset.
2018-11-29 16:29:28 -08:00
Thomas Harte
fd579a019b
Introduces a new scan source data type, motivated by the reasoning used by the Oric.
...
Specifically: it'll allow PCM sampling of the potentially arbitrary composite generation logic of various machines.
2018-11-28 20:40:22 -08:00
Thomas Harte
e39ecf59ef
Restores RGB mode to the Oric. More thought required for composite.
2018-11-28 18:40:43 -08:00
Thomas Harte
5f90941e4e
Starts nudging the Oric back to functionality under the new regime.
...
i.e. one where it can't invent internal pixel formats.
2018-11-28 18:16:13 -08:00
Thomas Harte
64465f97b6
Starts towards reintroducing the proper mechanisms for selecting a display type at runtime.
2018-11-28 17:53:33 -08:00
Thomas Harte
aa22af6f05
Corrects regression in VDP type selection.
2018-11-26 22:40:01 -05:00
Thomas Harte
a6383247fc
Attempts further to ensure proper CRT signalling.
2018-11-26 22:36:22 -05:00
Thomas Harte
b69ac4ec2f
Ensures video stability is no longer affected by transient allocation failures.
2018-11-25 22:04:04 -05:00
Thomas Harte
f4764ea680
Fixes divider.
2018-11-24 16:56:41 -05:00
Thomas Harte
ee89be6730
Removes many stray spaces.
2018-11-23 22:32:32 -05:00
Thomas Harte
770d7e90e9
Removes stale sampling functions.
2018-11-22 22:47:29 -05:00
Thomas Harte
b9aca39eb0
Reintroduces Vic-20 output.
...
Resolving errors in shader generation while I'm here.
2018-11-22 22:43:42 -05:00
Thomas Harte
5a31891048
Returns Amstrad CPC output.
...
Which is probably it until I get some more composite processing back in.
2018-11-15 21:32:22 -05:00
Thomas Harte
8b37496447
Restores video output to the Master System.
2018-11-15 21:21:54 -05:00
Thomas Harte
8f6664f0d7
Starts towards picking an input shader based on data type and pipeline.
2018-11-15 21:02:46 -05:00
Thomas Harte
3eab1f8f7c
Removes a little cruft.
2018-11-14 22:26:31 -05:00
Thomas Harte
9dff13cbbf
Re-establishes output from the machines with 9918s and derivatives.
2018-11-14 22:25:19 -05:00
Thomas Harte
a47de9a884
Returns the Apple II to submitting video.
2018-11-14 22:04:57 -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
6d277fecd5
Makes ScanTarget
a little more communicative and orthogonal.
2018-11-10 19:52:57 -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
014da41471
Ensures scan positions are communicated with a specified range, and switches manner of pixel clock communication.
2018-11-04 21:06:25 -05:00
Thomas Harte
f6562de325
Possibly adds enough for the Electron and ZX80 to start outputting dummy lines.
...
Let's see!
2018-11-03 23:40:39 -04: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
d1fc39d6e5
Attempts to carry on even if no BIOS is found.
2018-10-26 21:19:16 -04:00
Thomas Harte
a8645f80bf
Introduces 'non-exclusive' emulator-space keyboards.
...
i.e. sets of keys that don't amount to an entire keyboard in the modern sense. Experimentally used by the Master System for its reset key.
2018-10-24 21:59:30 -04:00
Thomas Harte
e3fd63b2d7
Adds composite/RGB selection for the Master System.
2018-10-23 22:30:24 -04:00
Thomas Harte
00e7958a97
Separates request for an SMS2 VDP from current graphics mode.
...
Thereby fixes various minor segments of Codemasters games.
2018-10-23 22:19:45 -04:00
Thomas Harte
0822c96ce0
Implements the proper row counter values for > 192 row modes.
2018-10-19 22:37:56 -04:00
Thomas Harte
f49718e94b
Ensures Codemasters games have the proper initial state.
2018-10-19 22:10:14 -04:00
Thomas Harte
6fff514901
Honours the region by implementing Japanese (no BIOS) and European (PAL) paths.
2018-10-19 21:37:05 -04:00
Thomas Harte
c365cca38a
Makes order of operations explicit.
2018-10-18 22:37:04 -04:00
Thomas Harte
10d9cbdeb1
Adds an extra LOG to track the memory map as a potential cause of emulation failure.
2018-10-18 21:48:37 -04:00
Thomas Harte
57f03e660c
Ensures console output only in debug builds.
2018-10-18 21:16:56 -04:00
Thomas Harte
6a2db52adb
Ensures safe Megacart cartridge sizes too.
2018-10-18 21:09:05 -04:00
Thomas Harte
34e13d0d4d
Clears top bit when reading the keypad and ensures no undefined behaviour reading the cartridge.
2018-10-18 21:05:58 -04:00
Thomas Harte
0278d5b61c
Restores SG1000 compatibility.
2018-10-18 19:13:15 -04:00
Thomas Harte
52e02db5c8
Introduces horizontal counter latching and reading.
...
Then makes a new guess at frame IRQ position. But gets it wrong. Hmmm.
2018-10-11 19:56:32 -04:00
Thomas Harte
24644f1dd1
Adds a low-pass filter, picked entirely by ear, and switches to composite output, at least for now.
2018-10-07 18:39:03 -04:00
Thomas Harte
76f3b9f6ba
Fixed: paging writes don't obstruct RAM.
2018-10-06 14:26:00 -04:00
Thomas Harte
7830cda912
Implements line querying and most of line interrupts.
2018-10-04 22:50:35 -04:00
Thomas Harte
e9328d819e
Switches to RGB output, at least for development.
2018-09-30 20:47:03 -04:00
Thomas Harte
2e4c4c3e91
Makes some attempt to implement paging.
...
This causes several of the 32kb games to be recognised by the BIOS and permitted to start, so it really really may be time to stop deferring work on the VDP.
2018-09-24 21:34:42 -04:00
Thomas Harte
7515fa8a98
Ensures the SG1000 gets an unadulterated TMS and SN.
2018-09-23 22:24:29 -04:00
Thomas Harte
5b9e7213dd
Adds a couple of joystick inputs.
...
SG1000 titles all seem to work now.
2018-09-23 21:55:07 -04:00
Thomas Harte
2253341904
This now goes far enough for the only SG1000 game I'm testing to start up.
...
Which hopefully gives me as much as I need to implement joypads, etc, and definitively get to just the VDP being outstanding.
2018-09-23 17:42:42 -04:00
Thomas Harte
e155dc8d6e
Adds fairly standard memory map indirection.
2018-09-23 17:36:30 -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
f59386f523
Adds just enough input logic that the Sega sound now plays.
2018-09-23 16:05:37 -04:00
Thomas Harte
38a1fde3bf
Attempts to permit Master System interrupts.
2018-09-23 00:07:46 -04:00
Thomas Harte
40c7a63fb5
Makes a first attempt at Master System IO decoding.
2018-09-22 23:45:29 -04:00
Thomas Harte
d9e65cd758
Ensures neither the ColecoVision nor the MSX processes mid-cycles.
2018-09-21 22:53:35 -04:00
Thomas Harte
e511261b04
Adds a Master System class, so that SMSs can end up somewhere.
2018-09-21 22:13:07 -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
e7f4babf41
Starts taking steps towards SMS/GG and V9938/9958 support.
...
Specifically: routine namespace stuff, plus the intention to move to a table-based operation+cost version of timing. Reordering works fine for the TMS, and probably would also for the SMS/GG, but it'd be problematic with the command engine of the V9938/9958 and maintaining a consistent set of code is easier.
2018-09-17 22:59:16 -04:00
Thomas Harte
a8b116e217
Turns down the Apple II brightness a little.
...
So that light blue is more like a blue.
2018-09-17 20:08:20 -04:00
Thomas Harte
868cd5cb09
Improves alignment request.
2018-09-12 20:27:02 -04:00
Thomas Harte
dec18d9acc
Restores full pixel output to the Electron.
2018-09-12 20:25:30 -04:00
Thomas Harte
a7508bc2ae
Switching explicitly to one pixel per sample eliminates the need for a bookender.
2018-09-12 20:11:17 -04:00
Thomas Harte
a38639d099
Eliminates the concept of an iCoordinate.
...
Real-life precision appears not to support the idea of sub-sample pixel storage.
2018-09-12 20:05:39 -04:00
Thomas Harte
c6e94bc2a6
Adds missing #include.
2018-09-11 21:55:03 -04:00
Thomas Harte
09dafb1a79
Simplifies and corrects MSX pasting behaviour.
...
Now including mapping \n -> \r.
2018-09-11 21:46:28 -04:00
Thomas Harte
36ff2105fb
Updates C-style (bool) casts.
2018-09-11 20:37:15 -04:00
Thomas Harte
5445081c96
It's eight pixels that aren't written in double output mode, not four.
2018-09-10 21:38:05 -04:00
Thomas Harte
6e9cd5cb21
Resolves over-brightness created by over-composition.
2018-09-09 20:30:43 -04:00
Thomas Harte
8d79a1e381
Corrected fat low-res implementation.
...
As per comment of awanderin that "the odd addresses don't get their pixels auto-shifted by the hardware as with normal lo-res".
2018-09-09 10:06:21 -04:00
Thomas Harte
d70f5da94e
Attempts an implementation of the undocumented low res + annunciator 3 graphics mode.
2018-09-08 20:51:15 -04:00
Thomas Harte
afeec09902
Gets explicit about DHIRES being annunciator 3; implements four-colour high res mode.
2018-09-06 23:23:19 -04:00
Thomas Harte
0526ac2ee2
Slightly increases const correctness.
...
The converters from source data to output pixels do not modify the source data. It's a shame there's no `restrict` in C++.
2018-09-05 11:36:40 -04:00
Thomas Harte
8b661fb90f
Introduces an extra level of indirection for text mapping.
2018-09-05 10:26:08 -04:00
Thomas Harte
dab7d3db1b
Merge branch 'master' into 40ColumnTextCorruption
2018-08-30 20:24:47 -04:00
Thomas Harte
d53b38ec7e
Correction: 0xc011 et al get the keyboard value in bits 0 to 6 and the switch value in bit 7.
2018-08-30 20:18:36 -04:00
Thomas Harte
2e04c4442c
Adds mirrors for keyboard input and the audio toggle.
2018-08-27 21:14:21 -04:00
Thomas Harte
0599d9602e
Ensures no out-of-bounds accesses to inverses on a IIe.
2018-08-26 23:02:31 -04:00
Thomas Harte
234bef2a88
Adds default
to make it explicit that fetch_address
is initialised.
2018-08-24 22:26:03 -04:00
Thomas Harte
1f491e764e
Nudges visible area slightly to the right.
2018-08-24 22:08:11 -04:00
Thomas Harte
114a43a662
Corrects improper indexing for byte shift.
2018-08-24 21:58:43 -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
61e46399dc
About face! There should be no delay on serialisation, but a delay on interpretation-affecting soft switches.
2018-08-22 21:56:45 -04:00
Thomas Harte
e802f6ecc2
Rearranges draw loop around a fixed-size 568-sample line buffer.
2018-08-19 22:31:04 -04:00
Thomas Harte
4209f0e044
Moves memory collection into a separate loop.
2018-08-18 21:54:24 -04:00
Thomas Harte
33576aa2c4
Uses const
to ensure output_* are properly constrained.
2018-08-18 21:36:48 -04:00
Thomas Harte
17bf1a64bf
Moves the stuff of generating pixels out of the main loop.
2018-08-18 18:44:31 -04:00
Thomas Harte
f8d46f8f3d
Merge branch 'master' into AppleDelay
2018-08-18 14:11:21 -04:00
Thomas Harte
be01203cc1
Starts to expand the range of supported 6502s.
...
This fully implements the NES 6502 because, well, it's virtually no extra work, and ensures that RDY takes effect on write cycles on 65C02s.
2018-08-13 22:17:22 -04:00
Thomas Harte
4d1d19a464
Introduces an intermediate buffer for Apple II video data.
2018-08-12 20:36:08 -04:00
Thomas Harte
cb47575860
Eliminates stdout chatter.
2018-08-11 22:57:54 -04:00
Thomas Harte
434d184503
Corrects deserialisation order in double low res mode.
2018-08-11 22:53:06 -04:00
Thomas Harte
7374c665e8
Corrects regression in video flushing.
2018-08-11 19:57:39 -04:00
Thomas Harte
60ab6f0c2a
Entrusts IIe-esque character logic fully to the ROM.
2018-08-11 18:45:39 -04:00
Thomas Harte
a13eb351da
Implements the Enhanced IIe, other than some text selection errors.
2018-08-11 10:26:30 -04:00
Thomas Harte
76a73c835c
Forces 6502 consumers to declare which model — the original, 65C02 or 65SC02.
...
All present machines use a regular 6502.
2018-08-06 20:06:07 -04:00
Thomas Harte
de68e70246
Fixes various IIe video deficiencies.
...
Specifically:
* the double-high resolution switches should be read/write; and
* the other IIe-specific switches should cause a video update for real-time effect.
2018-08-05 17:47:23 -04:00
Thomas Harte
ce14cc8677
Flips meaning of analogue input bits, correcting most joystick titles.
...
Mysteriously, some functioned correctly before this. But they continue to do so.
2018-08-05 17:36:01 -04:00
Thomas Harte
55f2fccf5e
Extends correct text handling to 80-column mode.
2018-08-04 22:25:29 -04:00
Thomas Harte
26624d7652
Fixes vertical blank signal; it should be the other way around.
2018-08-04 20:57:02 -04:00
Thomas Harte
85fb4773b0
Tweaks Apple key mapping and implements reset_all_keys
.
2018-08-04 20:31:37 -04:00
Thomas Harte
099d66804e
Makes colour burst phase explicit.
2018-08-04 19:29:34 -04:00
Thomas Harte
086596c28e
Adds reading of vertical blank and implements the full IIe keyboard logic.
...
i.e. there are now two Apple keys, and shift isn't assumed.
2018-08-04 19:17:04 -04:00
Thomas Harte
3aeb4213fe
Implements the C010 read value.
2018-08-04 17:57:02 -04:00
Thomas Harte
558b96bc05
Corrects IIe text display.
2018-08-04 16:52:29 -04:00
Thomas Harte
e97cc40a2c
Corrects typo in Cx-page ROM paging.
2018-08-04 12:44:58 -04:00
Thomas Harte
c4f86cc324
The Disk II now being its proper speed, withdraws the quickload option.
2018-08-03 21:20:21 -04:00
Thomas Harte
74a2f717b3
Turns down the composite signal amplitude a little, to help colour distinctness.
2018-08-01 18:52:42 -04:00
Thomas Harte
c91eaaf8da
Takes a stab at double low-res graphics.
2018-07-31 21:45:09 -04:00
Thomas Harte
a36f37d240
Introduces a 1/14th delay in output of double high res.
2018-07-31 21:29:51 -04:00
Thomas Harte
c773d3501a
Implements the INTC8ROM switch.
...
Finally causing the Zellyn tests to pass! Is this nightmare behind me?
2018-07-31 19:00:46 -04:00
Thomas Harte
5810f9b3f9
Fixes high resolution address range and switching logic.
2018-07-30 23:23:18 -04:00
Thomas Harte
3f56683342
Fixes order of deserialisation between auxiliary and base RAM.
2018-07-30 23:08:45 -04:00
Thomas Harte
16ccbdefd6
Of course, | has higher precedence than ?. Classic!
2018-07-30 23:08:22 -04:00
Thomas Harte
e9aaa5bbdf
Factors out the page-mapping function.
...
For one less potential source of failure.
2018-07-30 22:23:48 -04:00
Thomas Harte
ecb26e3281
Corrections: slot_C3_rom_ works the other way around; 80STORE doesn't affect most of RAM but does always affect the text screen.
...
Also factored out `set_zero_page_paging` for consistency.
2018-07-30 19:54:25 -04:00
Thomas Harte
5aa0b17720
Improves IIe paging further.
2018-07-29 23:02:27 -04:00
Thomas Harte
632b37ecec
Attempts an implementation of auxiliary memory.
2018-07-29 10:41:12 -04:00
Thomas Harte
c905de2e40
Restores IIe ROM-over-card paging.
2018-07-28 13:31:25 -04:00
Thomas Harte
bc2afe69e1
Accepting that memory mapping on a IIe is more complicated than I anticiapted, introduces mapping for all pages.
...
Also picks a name for the Unenhanced Apple IIe ROM.
2018-07-28 13:02:49 -04:00
Thomas Harte
894998b163
Merge branch 'master' into IIe
2018-07-28 10:54:04 -04:00
Thomas Harte
3c33ccd730
Eliminates various blank lines.
2018-07-28 10:52:34 -04:00
Thomas Harte
5f2b9b2d5a
Implements the alternative zero page soft switch.
2018-07-25 22:10:21 -04:00
Thomas Harte
5c4506a9db
Talks the IIe into proceeding to a beep and an improperly-formed logo.
2018-07-25 21:43:12 -04:00
Thomas Harte
55a6431fb3
Puts in enough logic to be able to launch a non-functional IIe.
2018-07-25 18:58:34 -04:00
Thomas Harte
ede2696a77
Edges further towards implementing the IIe video subsystem.
...
All video-specific switches are in place, and mostly honoured, and a IIe machine configuration is advertised at least.
2018-07-24 22:15:42 -04:00
Thomas Harte
59b9e39022
Starts the process of supporting the Apple IIe graphics modes.
...
Albeit that I'm not yet even up on the proper soft switches.
2018-07-23 22:14:41 -04:00
Thomas Harte
e339d169c5
Ensures the joystick doesn't obstruct tape input.
2018-07-12 22:10:05 -04:00
Thomas Harte
58484e8f37
Adds joystick support for the MSX.
2018-07-12 21:42:47 -04:00
Thomas Harte
8503589828
Corrects failure to retain OS.
2018-07-10 22:05:50 -04:00
Thomas Harte
efd812cf22
Ensures no buffer overrun when installing the OS ROM.
2018-07-10 21:54:36 -04:00
Thomas Harte
57f161e64c
Corrects documentation of the media target.
2018-07-10 21:42:09 -04:00
Thomas Harte
0897210969
Neither cartridge machine should be a media target; their media can't be changed at runtime.
2018-07-10 21:40:13 -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
3862fdb44c
Simplifies initialisation procedure for all machines.
...
With the side effect of allowing every machine to try to load only the ROMs that it needs.
2018-07-10 20:00:46 -04:00
Thomas Harte
c97c5fa03a
[Re-]recalibrates CRT retrace period and affected view windows.
...
In the hope of moving the CPC closer to the real CTM visible area.
2018-07-05 22:07:18 -04:00
Thomas Harte
640a84d456
Shift the h-within-v pulse to eliminate a curved top line.
2018-06-24 11:27:18 -04:00
Thomas Harte
04f6cb1750
Merge branch 'master' into AppleIIEqualisation
2018-06-23 23:10:29 -04:00
Thomas Harte
a93f8103ad
Zooms out the CPC a little more.
...
To fix the maximum amount of content that I can, at least for now.
2018-06-23 22:15:34 -04:00
Thomas Harte
55ab305dbf
Introduces equalisation pulses for the Apple II.
2018-06-23 22:11:39 -04:00
Thomas Harte
52c9f9e89e
Merge branch 'master' into CPCJoysticks
2018-06-23 16:43:49 -04:00
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
Thomas Harte
1804ea6849
Ensures the ColecoVision and MSX account for instruction lengths in advance when timing secondary components.
2018-03-07 17:00:18 -05:00
Thomas Harte
c8657e08f4
Merge remote-tracking branch 'origin/master' into CartridgeDetermination
2018-03-07 16:42:16 -05:00
Thomas Harte
9abc020818
Corrects potential ColecoVision SGM AY timing issues.
2018-03-07 16:16:58 -05:00
Thomas Harte
2dade8d353
Introduces ZonX emulation for the ZX81.
2018-03-07 16:16:29 -05:00
Thomas Harte
1100dc6993
Opens up .bin and .rom to all cartridge platforms, and adds a confidence estimate to the Atari 2600.
2018-03-07 14:26:07 -05:00
Thomas Harte
2452641844
Introduces a fast workaround to avert a MultiMachine where it would instantly end.
2018-03-06 19:08:02 -05:00
Thomas Harte
c82af4b814
Introduces get_confidence
for the ColecoVision.
...
Based almost entirely on joypad accesses for now.
2018-03-06 19:06:35 -05:00
Thomas Harte
3c5a8d9ff3
Adds Super Game Module support for the ColecoVision.
2018-03-03 13:08:33 -05:00
Thomas Harte
bdfc36427c
Implements MegaCart support.
2018-03-02 18:40:01 -05:00
Thomas Harte
59b4c7314d
Merge branch 'master' into ColecoVision
2018-03-01 22:01:26 -05:00
Thomas Harte
b05d2b26bf
Corrects a counting error in the MSX.
2018-03-01 21:59:51 -05:00
Thomas Harte
86239469e7
Allows SN76489 consumers to apply an additional divider that reduces computation.
2018-03-01 18:51:05 -05:00
Thomas Harte
7890506b16
Gives the SN76489 its proper dividers and personalities.
2018-02-28 22:36:03 -05:00
Thomas Harte
87760297fc
Fixes underpumping of SN76489.
...
Audio works now. Though I still need properly to confirm who owns dividers in practice. I think probably all division should be within the SN.
2018-02-27 22:59:29 -05:00
Thomas Harte
d4df101ab6
Makes a first attempt at implementing the SN76489.
2018-02-27 22:25:12 -05:00
Thomas Harte
0ad2676640
Adds a class for the SN76489 and wires it into the ColecoVision.
2018-02-26 22:04:34 -05:00
Thomas Harte
a074ee2071
Possibly fixes ColecoVision input mapping.
...
Also provides symbolic input from the Mac.
2018-02-25 22:47:47 -05:00
Thomas Harte
204d5cc964
Extends JoystickMachine protocol to cover ColecoVision use case.
...
Also thereby implements input on the ColecoVision, in theory at least. No input is being fed though, so...
2018-02-25 19:08:50 -05:00
Thomas Harte
23d15a4d6c
The ColecoVision now accepts and loads cartridges.
2018-02-24 18:26:44 -05:00
Thomas Harte
23c47e21de
Proceeds the ColecoVision to booting.
2018-02-24 18:14:38 -05:00
Thomas Harte
5530b96446
Wired up a class and analyser for a ColecoVision.
2018-02-23 22:47:15 -05:00
Thomas Harte
270723ae72
Forces the MSX's perform_machine_cycle into the Z80.
2018-02-19 19:54:42 -05:00
Thomas Harte
fc81bfa59b
Eliminates tape player call when tape is not playing.
2018-02-19 18:36:31 -05:00
Thomas Harte
3673cfe9be
Pulls method call for tape fast loading checks out of inner loop for the Vic, Electron and ZX80/81.
2018-02-19 16:57:24 -05:00
Thomas Harte
b0ab617393
Simplifies inner loop test for MSX fast loading.
2018-02-19 16:24:47 -05:00
Thomas Harte
7b420d56e3
Removed state mirroring in the machine-specific Mac UI classes.
2018-02-14 21:46:50 -05:00
Thomas Harte
ddf1bf3cbf
Reintroduces options selection for the Mac.
...
For everything except the Vic-20, anyway. That has a somewhat outdated notion of what an options panel should be, corresponding to the work yet to do on its analyser.
2018-02-12 21:46:21 -05:00
Thomas Harte
23105956d6
Fixes spurious unrecognised miss detection for the ASCII mappers.
2018-02-11 20:51:39 -05:00
Thomas Harte
f02989649c
Corrects effect of pc_is_outside_bios.
2018-02-11 20:32:45 -05:00
Thomas Harte
eb39617ad0
Allows cartridges to filter based on the actor talking to them; corrects outstanding_machines access error.
2018-02-10 17:11:16 -05:00
Thomas Harte
43b682a5af
Adds multiple target versions of all the DynamicMachine-vended types.
2018-02-09 16:31:05 -05:00
Thomas Harte
043fd5d404
Merge branch 'DynamicAnalysis' of github.com:TomHarte/CLK into DynamicAnalysis
2018-02-09 09:12:05 -05:00
Thomas Harte
d63a95983d
Adds a couple of hard-stop conditions to the MSX, and respect for hard stops.
2018-02-09 09:10:56 -05:00
Thomas Harte
4cf258f952
Parallelises MultiMachine running, and ensures errors propagate.
2018-02-08 20:33:57 -05:00
Thomas Harte
4e720d57b2
With debugging hooks still on display, makes first attempt at dynamic analysis.
2018-02-01 07:53:52 -05:00
Thomas Harte
c12aaea747
Attempts to get as far as running the MultiMachine.
...
In doing so, fixes the long-standing bug that machines that output audio but don't have a listener produce a divide by zero.
2018-01-30 22:23:06 -05:00
Thomas Harte
ca48497e87
Pulls DynamicMachine
out of MachineForTarget
and adds MultiConfigurationTarget
as a first multiplexer.
2018-01-29 21:49:49 -05:00
Thomas Harte
d493ea4bca
Introduces a multimachine to handle multi-target static analyser outputs.
...
Non-functional as of yet.
2018-01-28 22:22:21 -05:00
Thomas Harte
e025674eb2
The MSX analyser is now smart enough not to be definitive when it's uncertain.
...
The cartridge type has also migrated to being a property of the cartridge, prefiguring my intention to discard the static analyser union.
2018-01-25 22:16:46 -05:00
Thomas Harte
f2519f4fd7
Decided to focus on 'confidence' over 'probability'.
...
Besides anything else, it individualises the measure. E.g. two targets can each have a confidence of 0.8 without each giving the wrong answer about probability.
2018-01-25 19:02:16 -05:00
Thomas Harte
66faed4008
Gives MachineForTargets
complete responsibility for initial machine state.
2018-01-25 18:28:19 -05:00
Thomas Harte
11abc99ef8
Introduces the extra level of indirection necessary to make Analyser::Static::Target polymorphic.
2018-01-24 22:35:54 -05:00
Thomas Harte
21efb32b6f
Integrates the static and nascent dynamic analyser namespaces.
2018-01-24 21:48:44 -05:00
Thomas Harte
d360b2c62d
Standardises the static analyser on std::vector and slightly widens passageway to a machine.
...
The SDL target would now be fooled by a hypothetical multi-target, the Mac not yet.
2018-01-23 22:18:16 -05:00
Thomas Harte
6a112edc18
Corrects 16kb ASCII mapper.
...
Also increases hit position acceptance for the 8kb ASCII.
2018-01-22 22:13:16 -05:00
Thomas Harte
8fb4409ebb
Adds hasty attempt at dynamic analysis to the MSX ROM handlers.
...
Logging for now, for further experimentation.
2018-01-22 21:50:56 -05:00
Thomas Harte
765c0d4ff8
Allows the Electron to load 8kb ROMs.
2018-01-15 21:27:45 -05:00
Thomas Harte
a5ac8c824e
Removes logging and unnecessary get_drive_is_ready
.
2018-01-07 21:59:59 -05:00
Thomas Harte
8be6cb827b
Implements MSX interrupt/data request reading register.
...
The disk ROM now appears to accept on-disk bytes, but still announces an IO failure.
2018-01-07 20:28:34 -05:00
Thomas Harte
2f59226300
Fixes: DiskROM drive motor control, track_for_sectors' sides.
2018-01-07 20:02:40 -05:00
Thomas Harte
513c067f94
Makes an attempt to rope in the WD1770 for MSX disk ROM emulation.
2018-01-07 19:12:52 -05:00
Thomas Harte
655b971976
Establishes that there is such as a thing as a Konami SCC.
...
Creates one, ensures it appears in memory when intended to, lets it handle reads and writes. It currently does nothing.
2018-01-06 20:15:55 -05:00
Thomas Harte
185cd3c123
Expands and documents MSX::MemoryMap and MSX::ROMSlotHandler.
...
Hopefully to cover all intended use cases.
2018-01-06 15:51:29 -05:00
Thomas Harte
ed564cb810
Implements the main four cartridge banking schemes.
...
Slightly proof of concept for now.
2018-01-04 22:18:18 -05:00
Thomas Harte
c7f8f37822
Ensures typers terminate.
2017-12-30 13:46:30 -05:00
Thomas Harte
769d9dfbb9
Adds missing header.
2017-12-29 18:41:26 -05:00
Thomas Harte
6da8a3e24b
Causes the MSX to respond to the appropriate standard configuration options.
2017-12-29 18:36:42 -05:00
Thomas Harte
e349161a53
Rejigs the typing relationship so that use of a typer is not strongly implied by the interface.
...
Simultaneously implements typing on the MSX by direct insertion into the key buffer.
2017-12-29 18:30:46 -05:00
Thomas Harte
d5b1a9d918
Moves the typer functionality behind a functionality-based naming scheme, eliminates its C-style memory management.
2017-12-29 15:26:03 -05:00
Thomas Harte
76af0228dd
Corrects longstanding survival of camel case in the analyser's loadingCommand
.
2017-12-29 15:15:29 -05:00
Thomas Harte
5fd0a2b9ea
Attempts to pull reimplementations of TAPION and TAPIN better into line with originals.
...
Also improves whole flow of the fast tape hack that uses them.
2017-12-28 22:48:04 -05:00
Thomas Harte
11b73a9c0b
Adds preliminary, non-error-checking wiring in of MSX parser alternatives to TAPION and TAPIN.
...
As both a prototype of the pending fast tape loading, and to provide for exact behaviour comparison.
2017-12-26 22:31:34 -05:00
Thomas Harte
b9b107ee85
Switches KeyGrave and KeyQuote, correcting a disarrangement.
2017-12-20 21:16:54 -05:00
Thomas Harte
0bb24075b6
Immediate fixes: TSX is seemingly TZX 1.21; the tape motor control works the other way around.
...
Input is not yet being recognised.
2017-12-19 22:17:42 -05:00
Thomas Harte
db6d9b59d0
Attempts to implement TSX support for the MSX.
2017-12-19 21:53:04 -05:00
Thomas Harte
2d892da225
Introduces the MSX keyboard toggle sample source.
...
In support of which, it also introduces a means of sample source composition.
2017-12-19 21:08:10 -05:00
Thomas Harte
d36e9d0b0d
Reintroduces cstring.h to a few files that previously got it implicitly.
2017-12-18 21:47:30 -05:00
Thomas Harte
2dc1d4443e
Separates LowpassFilter and SampleSource.
2017-12-18 21:39:23 -05:00
Thomas Harte
f8a2459c91
Corrects two lingering adaptation errors in the Vic-20.
2017-12-17 21:43:08 -05:00
Thomas Harte
ac80d10cd8
Separates the component parts of running an audio stream: task deferral, filtering and generation.
...
Walking towards improving opportunities for composition.
2017-12-17 21:26:06 -05:00
Thomas Harte
7a52e7d6d2
Provides an empty value for the interrupt cycle.
2017-12-13 22:44:03 -05:00
Thomas Harte
4daea1121b
Gives up on C-BIOS for a while, to get to an acceptable merge point.
2017-12-12 21:19:33 -05:00
Thomas Harte
afcdd64d5e
Switches to a less easy-to-confuse storage arrangement for MSX memory slots.
2017-12-11 21:09:53 -05:00
Thomas Harte
ec266d6c8e
Ensures the AY stops listening to the bus after each read or write.
2017-12-04 19:18:54 -05:00
Thomas Harte
e3a5218e78
Fixes AY and random port input for the MSX.
2017-12-03 22:25:18 -05:00
Thomas Harte
3766bef962
Eliminates some redundant white space.
2017-12-03 14:52:42 -05:00
Thomas Harte
fe7fc6b22e
Enables AY output from the MSX.
2017-12-02 16:30:43 -05:00
Thomas Harte
7f8a13a409
Adds bare minimum to get accepted 16- and 32kb cartridges to start on the MSX.
2017-12-02 16:06:04 -05:00
Thomas Harte
5da9cb2957
Introduces most of a keyboard mapping for the MSX.
2017-11-30 19:27:53 -05:00
Thomas Harte
54c845b6e2
Adds just enough logic to make every host key look like '0' to the MSX.
2017-11-29 22:07:30 -05:00
Thomas Harte
f0f149c018
Simplified paging logic.
2017-11-29 20:49:02 -05:00
Thomas Harte
aa4eef41d8
Seeks to introduce MSX interrupts.
2017-11-29 20:31:55 -05:00
Thomas Harte
69ec8a362e
Makes an attempt to perform MSX memory paging.
2017-11-28 21:56:15 -05:00
Thomas Harte
d33612def5
Ensures the MSX provides a clock to the VDP.
2017-11-26 20:07:30 -05:00
Thomas Harte
9cb6ca3440
Adds elementary decoding of VDP accesses.
2017-11-26 20:01:11 -05:00
Thomas Harte
e957e40b14
Shifts 8255 logging up into its own port handler. That's probably fine for now.
2017-11-26 18:59:29 -05:00
Thomas Harte
7a8a43a96a
Adds just enough of the MSX memory map for the Z80 to appear to try to do useful things.
2017-11-26 18:34:40 -05:00
Thomas Harte
0eb5dd9688
Introduces the fundamentals of bus routing for the MSX.
2017-11-26 16:47:59 -05:00