1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-11-05 06:05:27 +00:00
Commit Graph

406 Commits

Author SHA1 Message Date
Thomas Harte
e6683e7f2d Added the base skeletal stuff of HFE support. 2017-08-17 21:48:48 -04:00
Thomas Harte
378f231499 Fully wired in drag-and-drop for media insertion. 2017-08-17 11:00:08 -04:00
Thomas Harte
f68565a33f Split the static analyser functionality so that it's possible just to ask for the set of media implied by a particular file. Extended ConfigurationTarget so that media alone can be pushed to a machine. 2017-08-17 10:48:29 -04:00
Thomas Harte
4c15e46fd1 Performed the normative removal from public view of Vic-20 implementation details. Which were hefty. 2017-08-16 16:05:30 -04:00
Thomas Harte
75208b0762 Moves the Electron implementation behind a more opaque interface, in line with changes elsewhere. 2017-08-16 15:33:40 -04:00
Thomas Harte
de1c526789 Cut the amount disclosed by the Atari 2600 for public inspection down to the minimum, relocating implementation into the .cpp. 2017-08-16 14:52:40 -04:00
Thomas Harte
148591b7f2 Hid most of the Oric innards, and corrected a potential multi-thread access error emanating from the Mac side of the world. 2017-08-16 14:35:53 -04:00
Thomas Harte
3947347d88 Introduces active input handling for the AY and uses it in the CPC to give proper, active keyboard input, rather than push-on-select, which was only ever a temporary hack. Also maps a few more keys for the Amstrad. 2017-08-15 22:47:17 -04:00
Thomas Harte
ad8c8166bc Built in gamma conversion for all machines, assuming an output of 2.8 for PAL, 2.2 for NTSC. 2017-08-10 15:17:08 -04:00
Thomas Harte
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
9d43784c65 Significantly increased quantity of keys forwarded. 2017-08-01 20:37:55 -04:00
Thomas Harte
f5b278d683 Added enough stuff to put the emulated Amstrad CPC in a state of knowing whether its '0' key is pressed. 2017-08-01 17:31:56 -04:00
Thomas Harte
0536f089e1 Eliminated old-[personal-]fashioned line break. 2017-07-31 22:32:26 -04:00
Thomas Harte
3df13cddd4 As per my keenness for cleanliness improvements corresponding to my ever-increasing C++ ability: turned the Amstrad into something that a factory produces, allowing me completely to hide a bunch of implementation details. 2017-07-31 22:32:04 -04:00
Thomas Harte
afd409c883 Ensured that ROM images are loaded and passed to the Amstrad CPC. 2017-07-31 18:44:49 -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
d25d7d7d40 Added the Amstrad CPC as a named target and declared support for its CDT file format. 2017-07-29 21:56:33 -04:00
Thomas Harte
2ff157cf7a Switched CRTMachine over to use Cycles as an explicit statement of units, and followed through on the effects of that. 2017-07-22 22:17:29 -04:00
Thomas Harte
6633537fb8 Discovering that there is such a thing as P81 — a ZX81 file without the name omitted — added support for it. Extended FileHolder while I was here to retain the file name and be able to supply its extension, as my quick-fix test-the-last-character approach to o/p/80/81 discrimination stops working with p81 thrown into the mix and this feels like the correct factoring. 2017-07-22 16:02:25 -04:00
Thomas Harte
2b5d0877a8 Adjusted parameter name to match documentation. I think it's a carry-over from before I was passing the whole event along. 2017-07-21 21:27:50 -04:00
Thomas Harte
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
279f4760d7 Eliminated buffer_size_ as something explicitly stored, and reduced size of delegate call out. 2017-07-16 15:01:39 -04:00
Thomas Harte
368bff1a82 Added a shell class that will one day be able to parse CSW files, plus the logic and metadata to instantiate it when a CSW presents itself. 2017-07-10 21:43:58 -04:00
Thomas Harte
54efcb7e2f Made a game attempt at automatic motor control and ensured setting is initialised correctly from the user defaults. 2017-07-08 19:31:20 -04:00
Thomas Harte
e2575d6de4 Routed tape motor selections through to the C++ side of the world, and ensured that manual tape playback works properly. 2017-07-08 19:21:12 -04:00
Thomas Harte
23e989e170 This will likely do for the Swift/XIB side of things: the play/pause button is enabled or disabled as per the user's choice of automatic tape control, and toggles function when pressed. It communicates activity down to the Objective-C[++] layer, giving it a route through to the actual machine. 2017-07-08 19:12:06 -04:00
Thomas Harte
28412150e6 Added controls for controlling the tape motor of the ZX80/81, assuming I can find an automatic option. 2017-07-08 17:59:33 -04:00
Thomas Harte
644ef13acd Connected up the fast-tape GUI option for the ZX80 and '81. 2017-06-22 20:20:31 -04:00
Thomas Harte
a48616a138 Fixed reference to Swift-world MachineDocument for the ZX81 file type. 2017-06-12 18:51:11 -04:00
Thomas Harte
8222aac9e3 Added an official declaration of support for ZX81 files. 2017-06-11 21:40:41 -04:00
Thomas Harte
8116f85479 Allowed the static analyser to specify a ZX80 or 81, and a memory model. Neither is respected yet in the machine. 2017-06-11 19:12:20 -04:00
Thomas Harte
cc4cb45e9d Implemented keyboard input and ensured that the signal generated is marked as composite, putting the colour-suppression ball into the CRT's court. 2017-06-06 09:25:18 -04:00
Thomas Harte
c485c460f7 Imported the ZX80 and 81 system ROMs (though not publicly), added enough code to post their contents into C++ world. 2017-06-04 18:08:35 -04:00
Thomas Harte
b0a7c58287 Fixed project to point to the XIB I actually want to keep; fixed that XIB to have the correct contents. 2017-06-04 17:57:37 -04:00
Thomas Harte
d2637123c4 Added necessary support to get as far as an empty window when attempting to load a piece of ZX80 software. 2017-06-04 17:55:19 -04:00
Thomas Harte
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
9398b6c2c8 Unable to differentiate, decided to map a Mac shift key to both Oric shifts. 2017-05-18 22:25:59 -04:00
Thomas Harte
8e35e913bb Formally withdrew the 'load automatically' option for the Vic, having removed that option elsewhere. 2017-05-14 16:59:24 -04:00
Thomas Harte
2edf73908c Temporarily disabled the existing fast loading implementation in pursuit of another, and started trying to correct the lack of connection between the userport VIA and the tape drive. 2017-05-06 22:00:12 -04:00
Thomas Harte
92a8b68859 Dumped Mach-specific test-and-set in favour of ordinary C11. 2017-04-15 21:41:59 -04:00
Thomas Harte
bdd432fe1d Added an ugly workaround for the empirical sound shutdown issues. 2017-03-26 20:28:04 -04:00
Thomas Harte
b193248056 Ensured that queue is not touched at all outside of the critical section. 2017-03-11 18:17:09 -05:00
Thomas Harte
38ce4dc56c Fixed potential deadlock, if a delegate decided to dealloc the queue as a result of its prompting. 2017-03-11 17:44:02 -05:00
Thomas Harte
dcd0c90283 Switched time of best-effort updater delegate setting, to avoid a callback before setupClockRate has happened, and therefore before it's clear what should be going on with audio. 2017-02-26 21:58:59 -05:00
Thomas Harte
2f0c923c29 Switched away from @synchronized as it appears possibly to be the lock used during -dealloc, creating deadlock with the CSAudioQueueDeallocLock. 2017-02-22 21:42:10 -05:00
Thomas Harte
4c947ad553 Attempted to resolve risk of an audio callback being in progress when -dealloc is received. 2017-02-22 21:12:59 -05:00
Thomas Harte
1d03793f22 Fixed potential race condition: ensure the queue is disposed of synchronously because otherwise there'll be a potential dangling reference to self. 2017-02-22 07:35:09 -05:00
Thomas Harte
99a35266e1 Attempted to bring frequency-switching logic into the cross-platform realm. Which for now creates an issue with the OpenGL context. 2017-02-19 21:20:37 -05:00
Thomas Harte
327c19a222 Slightly shuffled to avoid a race condition on the best-effort updater. 2017-02-11 12:58:47 -05:00
Thomas Harte
fba6baaa9c Stubbed and disabled to get back to building. 2017-01-28 21:56:01 -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
580f347727 Fixed Oric SCART mode by having it change what it's giving to the CRT based on which shader it knows will be active. 2016-12-10 13:55:56 -05:00
Thomas Harte
6cdd41e5a9 Added direct use of the colour ROM, uploading 16 bits per pixel to contain the entire ROM composite wave. 2016-12-09 22:17:10 -05:00
Thomas Harte
ea33a28695 Any Oric-format disks that are inserted now make it all the way to the Oric, along with a request to emulate the Microdisc. It has received a copy of the ROM. The ball is entirely in its court now. 2016-11-21 20:59:25 +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
e2cdfae8a7 The emulated Oric now has access to both versions of the BASIC ROM and picks between them based on the static analyser's recommendation. 2016-11-15 10:39:16 +08:00
Thomas Harte
a2e5fd2a1f Corrected layout error. 2016-11-03 08:02:13 -04:00
Thomas Harte
9c2df231ce Made fast loading optional. 2016-11-03 07:59:30 -04:00
Thomas Harte
e5fe37f089 Fixed 'joystick' input. 2016-10-27 19:44:48 -04:00
Thomas Harte
5c23acdbaf Switched window style back for the Atari HUD. 2016-10-27 19:40:29 -04:00
Thomas Harte
013f0c5317 Finally forced emulation window to front. Also removed min/max heights where they'd crept in and got explicit about the OpenGL view being first responder. 2016-10-24 22:08:24 -04:00
Thomas Harte
91831b6a95 Introduced a reuse list for audio buffers, based on the observation that the audio queue seems to start quick rejecting them. 2016-10-23 21:17:00 -04:00
Thomas Harte
7c33c34b0c Have withdrawn attempt to be clever with client notification here, as it was having no effect in the current environment, making it hard to build up any confidence. 2016-10-23 20:33:59 -04:00
Thomas Harte
f13d7ed6f4 Added an extra safety rail. 2016-10-20 07:36:53 -04:00
Thomas Harte
73365e1877 Resolved sizing error. 2016-10-19 23:09:05 -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
5a808d789a Added an upper threshold that must be crossed before a lower threshold warning is communicated. 2016-10-18 22:21:34 -04:00
Thomas Harte
f6b6ec7009 Cemented new meaningof the audio queue delegate callout. 2016-10-17 08:18:32 -04:00
Thomas Harte
c105f2acd9 Sought to reduce chattiness. 2016-10-17 08:04:36 -04:00
Thomas Harte
b274d7008c Added precaution to make sure best-effort updaters aren't mid-update during document destruction. 2016-10-16 22:14:47 -04:00
Thomas Harte
da9c9ad51a Added in the missing keys; added variable phase to the video. 2016-10-14 22:39:27 -04:00
Thomas Harte
138eabcff4 Continued in my effort to wire up a keyboard. Will need further to continue. 2016-10-14 21:35:15 -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
0ca383ecd1 Set every single key to be NMI, in order to be able to progress with the diagnostics cartridge. 2016-10-13 18:56:55 -04:00
Thomas Harte
120b2d9e33 Switched to using a diagnostic ROM for now, as it'll definitely boot without initially requiring either a 6522 or AY. Have some forms appearing which imply I'm not doing badly, at least up to not knowing where I'm supposed to get character pixels from. 2016-10-12 21:52:47 -04:00
Thomas Harte
e6937d8003 Ensured that the ROM gets installed. So next for some video action? 2016-10-12 18:51:02 -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
cbc3d28217 Ensured an exception is thrown if no machine to run a file is found. E.g. right now if you tried to open a ZX Spectrum .tap. 2016-10-11 21:03:01 -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
02bfa8b8de This should just trust. 2016-10-10 07:45:09 -04:00
Thomas Harte
f4b39c4435 Added documentation and experimentally reduced packet size. We'll see. 2016-10-10 07:42:24 -04:00
Thomas Harte
de397799ed Pulled away my crazy rationalisation of an audio queue into a circular buffer and decided just to trust the OS. This should reduce latency. 2016-10-10 07:30:00 -04:00
Thomas Harte
fa7c64bb5d Eventually reached an implementation of ADC that continues to satisfy all the formalised unit tests while also satisfying the manual BCDTest, that I need to find a way to formalise. I fixed the unit tests for Swift 3 while here, and attempted to do some unrelated NIB stuff with no real success. 2016-10-03 22:03:39 -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
9e6e84647e Quick formatting fix. 2016-10-02 22:06:28 -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
989a1581da Migrated analysis logic from the document controller to the document. 2016-10-02 17:04:14 -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
ce4100e5b9 Fixed slots for DFS and ADFS to sideways RAM; continued working on the 1770 to get as far as trying to get the body of a sector. 2016-09-24 22:04:54 -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
c9dd07cecd DFS disks are now delivered right up to the emulator's front door. So everything's in place to get started on that WD1770 nonsense. 2016-09-19 08:29:23 -04:00
Thomas Harte
fbcb59d47a A policy change trial: let the person above deal with any error. 2016-09-18 21:18:41 -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
a98374995e Cleaned up pre-analysis code. 2016-09-17 18:19:32 -04:00
Thomas Harte
7c65c69e0f Migrated to Swift 3. 2016-09-15 22:12:12 -04:00