Thomas Harte
|
caf3ac0645
|
Sought: (i) to instruct the CPC that it should be a 664, not a 464, if given a disk image (at least until I have RAM paging implemented for a 6128); (ii) to support ROM selection within the CPC and allow paging in of AMSDOS.
|
2017-08-05 19:20:38 -04:00 |
|
Thomas Harte
|
4b19cf60df
|
Added omitted semicolon.
|
2017-08-05 09:18:55 -04:00 |
|
Thomas Harte
|
b3788fed41
|
Fixed AY queuing behaviour as handled by the Amstrad. I think I need to come up with clearer semantics here.
|
2017-08-05 09:12:17 -04:00 |
|
Thomas Harte
|
a63aa80dc9
|
Merge branch 'master' of github.com:TomHarte/CLK
|
2017-08-04 16:51:52 -04:00 |
|
Thomas Harte
|
63f57c8c4f
|
Adjusted visible portion of frame; completely empirical, as I'm chasing a machine that shipped with a monitor.
|
2017-08-04 16:51:46 -04:00 |
|
Thomas Harte
|
f075fea78c
|
Introduces filtering of the CRTC's vsync signal into the gate array.
|
2017-08-04 16:36:55 -04:00 |
|
Thomas Harte
|
c0f0c68f4f
|
Corrects quick-hack version of border drawing: the assumption that the colour must be the same over a plotted period. Also corrects my entry for colour 15.
|
2017-08-04 12:13:05 -04:00 |
|
Thomas Harte
|
d9097facf1
|
Found documentation that makes more sense, and in practice seems to be more correct: the test after vertical sync is for greater than 32, not less. Also I decided to chance my arm on counter reset also resetting interrupt request. The raster effects of Ghouls 'n' Ghosts is now pretty much correct but one line off. I think probably either something is off in my wait-two logic on the post-vsync timer event, or possibly the vsync bit exposed via the PPI doesn't mean exactly what I think it means.
|
2017-08-04 08:56:09 -04:00 |
|
Thomas Harte
|
b927500487
|
Clarified code a little, but this is mostly fiddling in the margins.
|
2017-08-03 22:00:30 -04:00 |
|
Thomas Harte
|
e71eabedf9
|
Fixed timer clearing tet.
|
2017-08-03 21:30:04 -04:00 |
|
Thomas Harte
|
33ed27c3ad
|
Minor tidiness: included missing headers, and spaced out the ROM type and key lists for readability.
|
2017-08-03 12:45:42 -04:00 |
|
Thomas Harte
|
575b1dba75
|
Formally declared the ZX80/81 and Amstrad CPC as keyboard machines in their public interface. Which means not having to repeat the meaning of set_key_state and clear_all_keys. So: a minor DRY improvement.
|
2017-08-03 12:38:22 -04:00 |
|
Thomas Harte
|
bbb17acf3a
|
Expanded interface so that an external machine caller can request a string be typed without any knowledge of whatever it intends to do re: CharacterMappers. Which is immediately useful in paste functionality.
|
2017-08-03 11:50:50 -04:00 |
|
Thomas Harte
|
ad3a98387f
|
Within the Typer framework: hatched out CharacterMapper as a distinct thing from the target for keypresses, better to formalise responsibility but also to make it easy cleanly to sever that stuff into its own little part.
|
2017-08-03 11:42:31 -04:00 |
|
Thomas Harte
|
2f2071be8a
|
These should actually both be in the public header, as the types are used in an exposed method.
|
2017-08-02 22:18:30 -04:00 |
|
Thomas Harte
|
6d510e4e70
|
Made it no longer public knowledge that any sort of Typer is involved in being a ZX80/81.
|
2017-08-02 22:17:22 -04:00 |
|
Thomas Harte
|
8e0736fbe6
|
Reinstated typing ability, albeit with an ugly inline insertion. But I think I can defer dealing with typers to another pull request. The whole issue of keyboard mapping probably needs reappraisal.
|
2017-08-02 22:16:09 -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
|
42e70ef993
|
Adjusted slightly as per Z80 change, and to pull everything internally declared into the Amstrad CPC namespace.
|
2017-08-02 22:11:03 -04:00 |
|
Thomas Harte
|
d3bf8fa53b
|
Upped the documentation.
|
2017-08-02 20:37:26 -04:00 |
|
Thomas Harte
|
f5e2dd410e
|
Constrained output to the centre 90%.
|
2017-08-02 19:55:44 -04:00 |
|
Thomas Harte
|
e50adf1cc8
|
Were my TZX support up to it, this would likely be sufficient for tape emulation.
|
2017-08-02 13:50:14 -04:00 |
|
Thomas Harte
|
dcab10f53e
|
Ensured the AY's async queue doesn't just fill and fill.
|
2017-08-02 07:38:35 -04:00 |
|
Thomas Harte
|
f602f9b6ec
|
Adds an attempt to clock the AY.
|
2017-08-02 07:21:33 -04:00 |
|
Thomas Harte
|
4d5d5041df
|
Attempted to ensure a clean startup.
|
2017-08-01 22:18:42 -04:00 |
|
Thomas Harte
|
587eb3a67c
|
Factored interrupt counting out of the CRTCBusHandler.
|
2017-08-01 22:15:39 -04:00 |
|
Thomas Harte
|
8d39a20088
|
Added proper output of mode 3, were anything ever to try to use it.
|
2017-08-01 21:51:41 -04:00 |
|
Thomas Harte
|
4b6370eb86
|
Realised my colour error: mapping the ROM numbers as though they were the hardware numbers. Having fixed that, spotted that I was deserialising R and B the wrong way around and dividing by too much. Colours now appear to be correct.
|
2017-08-01 21:47:52 -04:00 |
|
Thomas Harte
|
c6e340a8a2
|
Wired up the vsync signal. Pen 15 no longer flashes like crazy. Still can't figure out why the palette is so askew; was looking for perhaps some sort of detection of a green screen rather than a colour one, but there's no obvious input for that.
|
2017-08-01 21:21:59 -04:00 |
|
Thomas Harte
|
31c7153301
|
Corrected bit to colour mapping for modes 0 and 1. The total palette is still way off but there's consistency between modes now.
|
2017-08-01 20:52:42 -04:00 |
|
Thomas Harte
|
7e04d00cc1
|
Fixed key values, causing the new set of keys to work, decreased quantity of output and ensured that pixels appear in modes 0 and 2.
|
2017-08-01 20:39:10 -04:00 |
|
Thomas Harte
|
eca9586a0f
|
Fixed: input value is no longer overwritten by 0xff. The '0' key now works.
|
2017-08-01 20:19:02 -04:00 |
|
Thomas Harte
|
2e4577f741
|
Made a game attempt at implementing a (sticky) keyboard. No effect yet.
|
2017-08-01 17:52:05 -04:00 |
|
Thomas Harte
|
f5b278d683
|
Added enough stuff to put the emulated Amstrad CPC in a state of knowing whether its '0' key is pressed.
|
2017-08-01 17:31:56 -04:00 |
|
Thomas Harte
|
e6854ff8db
|
Corrected typo: the input to an AY is BDIR, not BCDIR.
|
2017-08-01 17:06:57 -04:00 |
|
Thomas Harte
|
3b292273c7
|
Fixed: BC2 is always implicitly set. The machine is now periodically checking the AY's register 14 (i.e. the first input port), so probably there's enough here now to implement keyboard input.
|
2017-08-01 17:05:11 -04:00 |
|
Thomas Harte
|
cb732e5d5f
|
Made an attempt to wire in an [unclocked] AY, in an endeavour to get to keyboard reading.
|
2017-08-01 17:01: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
|
a27946102a
|
Took a shot at the interrupt counter. Attempts at keyboard reading now recur so it'll probably do for now. I think that next puts me into the realm of needing to implement the 8255.
|
2017-08-01 15:49:16 -04:00 |
|
Thomas Harte
|
6ac7132799
|
Had a quick go at properly outputting Mode 1, adding wiring to communicate palette and mode changes to the CRTC bus handler. Colours are off but it's sufficient for now.
|
2017-08-01 15:16:13 -04:00 |
|
Thomas Harte
|
ca42abab70
|
Doubled up to ensure that every byte that should be inspected is represented. This makes it clearer that I'm on the right road. A garbled version of 'Amstrad 64k Microcomputer' can be discerned, in a weird grayscale and with the right-hand column missing and skewed output as a result.
|
2017-08-01 07:56:44 -04:00 |
|
Thomas Harte
|
933d69a256
|
Fixed slightly: the CPC wiki has a typo. It's 12 and 13 that move up to 14 and 15.
|
2017-08-01 07:51:13 -04:00 |
|
Thomas Harte
|
10a5581aea
|
Made first attempt at offering some sort of pictographic of actual RAM contents.
|
2017-08-01 07:34:12 -04:00 |
|
Thomas Harte
|
3ae699964f
|
Ensured an actual pixel stream is supplied for pixel regions. Though it's just a long stream of white pixels for now. So visual output is unchanged.
|
2017-08-01 07:24:29 -04:00 |
|
Thomas Harte
|
9d953421d8
|
After a quick check, added a couple of other _delegate initialisations. I should probably find a way to template this.
|
2017-08-01 07:07:43 -04:00 |
|
Thomas Harte
|
763e3b65d1
|
Ensured a proper initial value for delegate_ .
|
2017-07-31 22:46:06 -04:00 |
|
Thomas Harte
|
42dd27c9b1
|
Shunted method bodies inline, given that there's no need for a declaration/definition distinction.
|
2017-07-31 22:39:25 -04:00 |
|
Thomas Harte
|
3df13cddd4
|
As per my keenness for cleanliness improvements corresponding to my ever-increasing C++ ability: turned the Amstrad into something that a factory produces, allowing me completely to hide a bunch of implementation details.
|
2017-07-31 22:32:04 -04:00 |
|
Thomas Harte
|
c2253c1e0f
|
Fixed multiplier: the dot clock I've used to instantiate the CRT is the pixel clock, not the character clock.
|
2017-07-31 22:17:46 -04:00 |
|