1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-11-23 18:31:53 +00:00
Commit Graph

782 Commits

Author SHA1 Message Date
Thomas Harte
3fb3cc8269 Got explicit about encodings. 2017-05-21 22:53:06 -04:00
Thomas Harte
e3e461d7cb Added a test class for running the FUSE tests. With nothing much in it. 2017-05-21 22:49:24 -04:00
Thomas Harte
c16fccb317 Fixed file names. 2017-05-21 22:43:07 -04:00
Thomas Harte
b9cffdf2bd Imported the FUSE tests. 2017-05-21 22:42:20 -04:00
Thomas Harte
01a064dd63 Added an empty ED page. 2017-05-20 17:29:30 -04:00
Thomas Harte
d910405648 Added enough infrastructure to be able to react to the two CP/M calls this cares about. 2017-05-19 21:53:39 -04:00
Thomas Harte
62b432c046 Added the concept of a trap handler to the all-RAM processor and exposed it via the test Z80 classes. 2017-05-19 21:20:28 -04:00
Thomas Harte
11d05fb3b8 Expanded a little on operations, added an implementation or two. 2017-05-19 19:18:35 -04:00
Thomas Harte
58efca835f Sought to add a further opcode. 2017-05-18 22:53:43 -04:00
Thomas Harte
da6e520b91 Merge branch 'master' into Z80 2017-05-18 22:30:51 -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
a3dafa9056 Abbreviated uses of enumerations. 2017-05-17 21:44:08 -04:00
Thomas Harte
64d6ee1be5 Adjusted slightly to adapt to latest Swift warnings. 2017-05-17 07:49:48 -04:00
Thomas Harte
1378ab7278 Ensured initial program counter and stack pointer are correct for Zexall, fixed the Z80 to use a compile-time polymorphic call for bus access. 2017-05-17 07:36:06 -04:00
Thomas Harte
87a021ec2d Made further attempt to get as fas as having the Z80 attempt to do something. 2017-05-16 22:19:40 -04:00
Thomas Harte
189317b80c Added enough of a Z80 test machine to bridge up into Swift. 2017-05-16 22:05:42 -04:00
Thomas Harte
4f0775cc7c Imported the Zexall.com tester, as a first thing to throw at the Z80 to be. 2017-05-16 21:37:09 -04:00
Thomas Harte
7190f927b7 Factored out the stuff that both all-RAM processors would share, rather than duplicating it. 2017-05-16 21:28:17 -04:00
Thomas Harte
d559d8b901 Continued edging towards getting the absolute basics of a testable Z80, for test-driven development. Corrected old-fashioned instance naming issues with the corresponding 6502 class and removed an unnecessary source file while at it. 2017-05-16 21:19:17 -04:00
Thomas Harte
df80c37adb Renamed TestMachine to TestMachine6502 since there's going to be multiple of them. 2017-05-15 08:18:57 -04:00
Thomas Harte
0808e9b6fb Pulled the 6502 into a CPU namespace, making it an instance of something that has micro-opcodes and schedules them, and factoring out the formulation of a register pair. 2017-05-14 22:08:15 -04:00
Thomas Harte
b81a2cc273 First tentative steps towards adding a Z80 implementation. 2017-05-14 17:46:41 -04:00
Thomas Harte
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
e01f3f06c8 Completed curly bracket movement. 2017-03-26 14:34:47 -04:00
Thomas Harte
031a68000a Added a class to contain the Pitfall 2 pager and a skeleton of initial work. 2017-03-18 22:08:47 -04:00
Thomas Harte
c3d82f88a5 Tidied up and commented on the Activision stack implementation. 2017-03-18 21:01:58 -04:00
Thomas Harte
c033bad0b9 Here's MNetwork! 2017-03-18 20:51:49 -04:00
Thomas Harte
c31d85f820 Re-emplaced the MegaBoy. Also cut detritus from the main Atari header. 2017-03-18 19:02:34 -04:00
Thomas Harte
217fbf257e CBS RAM Plus returns. 2017-03-18 18:56:20 -04:00
Thomas Harte
0b611a14b9 Tigervision paging returns. 2017-03-18 18:50:13 -04:00
Thomas Harte
df6861c9dc Parker Bros paging is back. 2017-03-18 18:21:01 -04:00
Thomas Harte
a4cd12394e Reinstated the Activision stack pager. 2017-03-18 18:03:48 -04:00
Thomas Harte
bb3daaa99b Sought to reintroduce the Atari 8k paging scheme, at the same time deciding to do away with the copy and paste of holding on to ROM data. 2017-03-18 15:04:01 -04:00
Thomas Harte
14a76af0d3 Started trying to float out bus control to cartridges. 2017-03-17 20:28:07 -04:00
Thomas Harte
a6897ebde0 Added an attempt to distinguish the MegaBoy (now with proper capitalisation) and a test for it. 2017-03-13 20:43:12 -04:00
Thomas Harte
582da14a14 Added an enumerated type and detection of Pitfall 2. 2017-03-13 08:15:36 -04:00
Thomas Harte
8e147444d5 Added a readme, as is traditional for folders I'm excluding from Git. 2017-03-12 22:16:12 -04:00
Thomas Harte
2c07cce282 Had the wrong paging scheme listed for Robot Tank and Thwocker. Better to get this right before trying to come up with a test for the Activision stack scheme. 2017-03-12 21:03:10 -04:00
Thomas Harte
597bd97b01 Corrected two more table errors. 2017-03-12 15:46:25 -04:00
Thomas Harte
38de5300e5 Elevator Action seemingly uses a Super Chip. 2017-03-12 15:43:42 -04:00
Thomas Harte
146f3ea0f5 Fixed: Crystal Castles is 16kb. 2017-03-12 15:39:07 -04:00
Thomas Harte
78213f1e95 Fixed a couple more table entries, introduced per-size tests (plus a catch-all), to speed up the development/testing cycle. 2017-03-12 15:35:36 -04:00
Thomas Harte
de347ad7c8 Improved CBS RAM Plus and Super Chip detection exclusion, reducing error count to 15. 2017-03-12 14:03:17 -04:00
Thomas Harte
a4bba8a92e Made a couple of lookup table fixes and corrected RAM region detection windows; failures now down to 19. 2017-03-11 23:18:30 -05:00
Thomas Harte
fcacfc2726 Tidied up spacing, slightly. 2017-03-11 23:01:42 -05:00
Thomas Harte
bab464e765 I'm far from confident, but this should reduce the deviations close to those that result from mistakes by the static analyser, rather than table errors. 2017-03-11 22:58:11 -05:00
Thomas Harte
2879763c34 Reduced to 84 failures through more accurate tabulation. 2017-03-11 21:52:52 -05:00
Thomas Harte
ea2ea30193 Fleshed entire table out with most common values. Exceptions now to fix. 2017-03-11 21:11:25 -05:00
Thomas Harte
608569cc48 Typed out all the 'A's that I am aware of. So about 5% done. 2017-03-11 20:58:38 -05:00
Thomas Harte
c7e973aab4 Extended test set a little, corrected current failures. 2017-03-11 20:51:25 -05:00
Thomas Harte
443d57bc32 Slimmed output and added first six tests. Acid Drop fails since I'm not yet declaring Atari 16k and Atari 32k. 2017-03-11 20:43:19 -05:00
Thomas Harte
57ec756f5b Started speccing out a unit test for Atari ROM analysis. 2017-03-11 20:33:58 -05: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
a72d70e707 Enabled code coverage calculation for unit tests. 2017-03-11 17:44:56 -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
d3257c345a Tested against public ROMs and corrected. Also moved the deferred adjustment into a more canonical place. 2017-03-04 17:00:28 -05:00
Thomas Harte
e09b76bf32 Fixed 'same value, then immediate increment, then proper counting increments' behaviour and ensured it takes one cycle to commit a value. Adjusted tests to match. 2017-03-04 15:57:54 -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
dd17459687 Added my first failing test: delay is incorrect when resetting outside of the play area. 2017-02-12 20:42:49 -05:00
Thomas Harte
cd90118a0f Added two, extraordinarily simple tests. 2017-02-12 20:32:53 -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
92754ace7a Some mild fixes get me up to having a rolling screen of vertical lines. Which is what I was hoping for right now! 2017-01-29 22:16:23 -05:00
Thomas Harte
d51f185dc7 Made an attempt to reintroduce the basic horizontal loop. 2017-01-29 15:43:57 -05:00
Thomas Harte
fba6baaa9c Stubbed and disabled to get back to building. 2017-01-28 21:56:01 -05:00
Thomas Harte
0ffded72a6 Created a placeholder class for a factored-out TIA. There's a bit more it'll need to do, like vending (or receiving) a CRT but this is the full hardware stuff, I think. 2017-01-28 16:19:08 -05:00
Thomas Harte
9001cc3fc2 Added a cartridge image. 2017-01-27 21:26:11 -05:00
Thomas Harte
015b2b49f9 Introduced an incomplete set of file association icons. 2017-01-26 22:21:55 -05:00
Thomas Harte
7b696b0962 Switched scheme to shared. 2016-12-31 13:11:07 -05:00
Thomas Harte
a568172758 Made steps towards proper CRC generation. Am currently comparing against Oric disk images, as — amongst other things — they include precomputed CRCs. 2016-12-28 18:29:37 -05:00
Thomas Harte
99993a1b24 Since it's about to become important that objective results match, added a couple of objective-result tests for the CRC generator. 2016-12-27 19:03:46 -05:00
Thomas Harte
d606bd7ce5 Added saturation test, fixed code as indicated. 2016-12-24 23:29:37 -05:00
Thomas Harte
09ff9d6a26 Introduced a couple more floating-point conversion tests, fixed errors uncovered. 2016-12-24 23:21:19 -05:00
Thomas Harte
e25195a718 Added a single test for Storage::Time, discovering that I had the wrong sign on float conversions. 2016-12-24 22:59:01 -05:00
Thomas Harte
7028f57336 Simplified a little further. 2016-12-22 18:13:10 -05:00
Thomas Harte
e4e0347638 Attempted to consolidate some of the repetition. 2016-12-21 22:17:00 -05:00
Thomas Harte
72ca06cf8d Added some extra tests, performed some basic tidying. Probably should do more. 2016-12-21 19:54:19 -05:00
Thomas Harte
6a0c7f22ee Added a few more tests. All passing. 2016-12-20 21:46:34 -05:00
Thomas Harte
03579f33f1 Fixed multi-coverage insertion, via an appropriate test. 2016-12-20 21:38:32 -05:00
Thomas Harte
7eca910cc5 Fixed insertion location finding logic, working on the relevant test. 2016-12-20 21:14:05 -05:00
Thomas Harte
c180340474 Added two more passing tests and one that crashes. 2016-12-20 19:25:58 -05:00
Thomas Harte
823ab9bc34 Completed initial non-trivial test, fixing revealed errors. 2016-12-20 19:15:36 -05:00
Thomas Harte
6bdde542c5 Edging towards functioning automatic tests, fixed right-period adjustment and slightly decreased searching cost while in the process of adding a test. 2016-12-20 07:52:14 -05:00
Thomas Harte
1df478d250 Removed dead header file. 2016-12-18 23:04:16 -05:00
Thomas Harte
e081f224b6 Implemented a very basic PCMTrack test, nevertheless revealing an oversight in PCMSegmentEventSource related to improperly counting to the index hole if the final bit is set. Took that as a message that I should comment and document the event source. 2016-12-18 22:53:24 -05:00
Thomas Harte
a6354ebb01 Reimplemented PCMTrack to use PCMSegmentEventSource, eliminating code duplication. 2016-12-18 21:37:05 -05:00
Thomas Harte
f9a5595dad Added seeking tests, correcting such errors as uncovered. 2016-12-18 10:19:24 -05:00
Thomas Harte
3116a2cf4c Realised I was actually testing PCMSegmentEventSource, not PCMSegment; implemented a spread of tests; hence fixed PCMSegmentEventSource. 2016-12-17 21:47:13 -05:00
Thomas Harte
254cc41fd6 Made an attempt to separate and isolate the stuff of creating flux events from a PCMSegment, eventually to factor that out of PCMTrack and make it available also to PCMPatchedTrack. 2016-12-17 21:13:57 -05:00
Thomas Harte
313db75303 Ensured the patchable track owns its underlying track. 2016-12-17 18:17:22 -05:00
Thomas Harte
3017062e89 Maybe TDD is the way to get over my activity block on this thing? Fixed the existing ArrayBuilder tests so that the tests target builds again, added an extremely trivial PCMTrack test, heading towards PCMPatchedTrack tests. 2016-12-17 17:05:49 -05:00
Thomas Harte
dc08a23ceb This is going to be a slow walk, I think. This class attempts to be the scratchpad which will hold in-memory track modifications. 2016-12-16 19:20:38 -05:00
Thomas Harte
c43e481a33 Started factoring video out of the Electron. 2016-12-10 21:07:52 -05:00
Thomas Harte
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
d17751787a The remainder of this test isn't necessarily safe to perform if the array length isn't as expected. But in that case the test has already failed, so it's not worth worrying about a partial validation. 2016-12-03 16:06:15 -05:00
Thomas Harte
b81c058c0a Factored out the Atari 2600's 6532 connection, as a low-hanging fruit. 2016-12-03 13:41:55 -05:00
Thomas Harte
3361d6b93a Factored out the Atari 2600 speaker and adjusted it to postfix underscores. 2016-12-03 13:39:46 -05:00
Thomas Harte
4fac538a57 Factored out the Electron's speaker and adjusted instance variable naming. 2016-12-03 12:41:02 -05:00
Thomas Harte
d1d93829cf Factored out the Tape and switched it to postfix underscores. 2016-12-03 12:18:08 -05:00
Thomas Harte
363db695e8 Started implementation of the Microdisc selection logic. 2016-11-22 08:12:53 +08:00
Thomas Harte
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
31c2548804 Created a base class for the boilerplate fopen stuff, switched as many classes as possible to its use, switched to postfix underscores and non-camelCase names. 2016-11-21 20:14:09 +08:00
Thomas Harte
be60eaa120 Added a test for pointer continuity over a submit. Which fails. 2016-11-19 19:48:16 +08:00
Thomas Harte
274ec9efb8 Added a test for interceding submit. 2016-11-19 08:59:21 +08:00
Thomas Harte
22cb8ecd75 Started building some tests of the array builder. 2016-11-19 08:27:08 +08:00
Thomas Harte
324a1de43d Started pulling out array construction as a separate task. 2016-11-17 09:20:49 +08:00
Thomas Harte
5c5e44874f Even better: why include the 'Input' prefix when there's only one? 2016-11-16 22:57:17 +08:00
Thomas Harte
4d0d5eb919 Renamed the 'input buffer builder' to the 'input texture builder' to be explicit about what sort of buffer, and killed the prefix since it's namespaced. Also switched to std::vector. 2016-11-16 12:31:32 +08:00
Thomas Harte
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
1b66847647 Started trying to implement something sufficient of a 6502 disassembler. 2016-11-11 20:10:58 -05:00
Thomas Harte
80702616ea Had a quick go at using the Oric parser for static analysis. Found out that synchronisation is lost. Need to investigate. 2016-11-06 22:56:38 -05:00
Thomas Harte
d1ef2f7c63 Made an attempt to consolidate what I learnt of Oric encoding while building this hastily and untidily directly into the Oric implementation.
(while adding support for the slow tape encoding mode)
2016-11-06 19:22:09 -05:00
Thomas Harte
353c1c8ea3 Shifted ownership of PETSCII -> string conversion down to the storage layer, where it's useful for tape parsing. 2016-11-06 18:43:51 -05:00
Thomas Harte
1b15bc3a6c Started relocating the tape parsers down from static analyser to storage, to signify that they may be used by the emulation (if fast loading is supported on that machine). 2016-11-06 16:13:13 -05:00
Thomas Harte
c21bef4283 Project cleaning. 2016-11-05 15:08:22 -04:00
Thomas Harte
338904fffe Made similar cleanings of the Electron and Vic. 2016-11-05 15:07:57 -04:00
Thomas Harte
9fb9d92437 Made the typer much more able to help out, and thereby tidied and separated the Oric's typer. 2016-11-05 14:47:09 -04:00
Thomas Harte
dda0c8af30 Fixed tests. 2016-11-05 12:58:56 -04: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
67f2c73205 Slightly cleaned project. 2016-11-01 22:42:00 -04:00
Thomas Harte
70973eb850 Fixed accreditation of BCDTest. 2016-11-01 22:40:48 -04:00
Thomas Harte
23376257dc Let's try this not as markup. 2016-11-01 22:36:07 -04:00
Thomas Harte
bddc540c0d Partitioned and added text for AllSuiteA and Klaus Dormann's tests. 2016-11-01 22:35:15 -04:00
Thomas Harte
ca3e1c3204 Added an appropriate licence and credit for Wolfgang Lorenz's suite. 2016-11-01 22:26:12 -04:00
Thomas Harte
4b347b9993 Made a trivial XCTAssert unit test substitution. 2016-10-30 20:30:32 -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
534b3d085d Improved test reporting, attempted to resolve timing errors just introduced (i.e. to differentiate break/continue where a cycle may or may not be spent). 2016-10-27 08:41:44 -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
5e2b0aa901 Quick project clean up. 2016-10-19 21:32:12 -04:00
Thomas Harte
5c69728625 Introduced a memory fuzzer, and ensured the Oric uses it. 2016-10-19 21:31:50 -04:00
Thomas Harte
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
8c8a71107e Added just enough wiring to add something that will generate the video, one day. 2016-10-12 19:20:23 -04:00
Thomas Harte
e6937d8003 Ensured that the ROM gets installed. So next for some video action? 2016-10-12 18:51:02 -04:00
Thomas Harte
f7d2e988b6 Mildly enhanced unit test, while I'm curious. 2016-10-11 22:22:53 -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
c284818af5 Fixed alphabetisation of project. 2016-10-07 17:21:02 -04:00
Thomas Harte
e53455a936 Not having read the C++ synchronisation primitives before, this async task queue is probably incorrect. But nevertheless, let's have a quick go at employing it — in a hideously thread unsafe fashion — for audio generation. What can possibly go wrong? 2016-10-07 16:56:34 -04:00
Thomas Harte
c097886d00 Installed hoglet's BCDTest as a formal part of the test suite; removed some redundant semicolons in the Wolfgang Lorenz tests while I was here. 2016-10-04 07:52:44 -04:00
Thomas Harte
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
abf47efd40 Factored out Commodore is-a-ROM test, allowing it to be used from the Commodore analyser and thereby allowing ROMs to get as far as the machine again. 2016-09-29 19:39:13 -04:00
Thomas Harte
572d5587d9 Made a first stab at enabling multi-disk machines and thereby obeying (some of) the Plus 3's status register. 2016-09-25 21:24:16 -04:00
Thomas Harte
9bbcbd1001 Renamed class, intending to turn a Disk::Drive into literally just that, and have a thing with a PLL that consumes events be a Controller. 2016-09-25 20:05:56 -04:00
Thomas Harte
de863719d0 Made a first attempt at Acorn ADFS support plus the start of a suitable analyser. 2016-09-25 17:46:11 -04:00
Thomas Harte
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
0ce901bd48 Added necessary wiring to get as far as asking an arm of the analyser to check out an Acorn disk image. 2016-09-18 21:18:11 -04:00
Thomas Harte
91cd7e143b Started on the SSD/DSD support. Realised I had ommitted multiple head support from my disk class. Fixed that. 2016-09-18 19:21:02 -04:00
Thomas Harte
180c3df2d4 Calling it 'number theory' probably isn't accurate but extracted the CRC stuff and started using it for [M]FM encoding. 2016-09-18 18:33:26 -04:00
Thomas Harte
bcf91de7e9 Declared support for the Acorn disk files, started hammering out an encoder. 2016-09-18 13:35:54 -04:00
Thomas Harte
0e44cfa8a1 Merge branch 'master' into WD1770 2016-09-18 10:34:11 -04:00
Thomas Harte
6f0b9adc3d Factors.cpp is dead. 2016-09-18 10:23:34 -04:00
Thomas Harte
a98374995e Cleaned up pre-analysis code. 2016-09-17 18:19:32 -04:00
Thomas Harte
e3daf80564 Added a file for the 1770, at least. 2016-09-17 18:01:00 -04:00
Thomas Harte
7c65c69e0f Migrated to Swift 3. 2016-09-15 22:12:12 -04:00
Thomas Harte
ee8510984f Added just enough wiring to restore the 2600 to functionality. 2016-09-15 19:34:45 -04:00
Thomas Harte
92af19098c Improved file naming. 2016-09-15 19:24:59 -04:00
Thomas Harte
df7aed7e8b The Commodore analyser now at least hands off to somebody else a chance to parse disks. 2016-09-13 07:26:51 -04:00
Thomas Harte
c3a795328d Windows have titles again. Also I've owned up to not knowing how to edit UEFs right now. 2016-09-12 22:15:38 -04:00
Thomas Harte
40660fe680 Made yet another guess at Commodore analysis. Elevated fast tape-related unnatural speed up to the OS-side mechanisms. 2016-09-12 22:06:03 -04:00
Thomas Harte
eeec516fa6 Implemented seeking on tapes, mucked about a bit more with the Commodore analyser, at least temporarily removed cropping from the Vic emulator. 2016-09-11 17:09:00 -04:00
Thomas Harte
908dc40569 If loading automatically, assume that whatever was in the machine target set up the machine and don't override it. Too dodgy? More thought required. 2016-09-08 07:38:34 -04:00
Thomas Harte
8c84f3581a Attempted to bring some uniformity in application of configurations. 2016-09-08 05:32:17 -04:00
Thomas Harte
50175a9aed Added logic to try to spot when the first program is BASIC and, if so, what the correct memory model is, then to get that information to the Vic. Though it currently then gets overwritten by the view controller. Grrrr. 2016-09-07 22:17:19 -04:00
Thomas Harte
bdebc18e0a Added a header parser for Commodore tapes. No time to grab file bodies now; time to go to work. 2016-09-06 08:49:32 -04:00
Thomas Harte
8b933182af Added enough wiring (hopefully) that the Commodore tape's GetFiles should be called when appropriate. 2016-09-06 06:39:40 -04:00
Thomas Harte
963e307d0c Increased documentation. 2016-09-05 22:06:39 -04:00
Thomas Harte
05c24222d8 Liberated the tape parser template. 2016-09-05 20:02:35 -04:00
Thomas Harte
21e5f407d8 I need to get a bit more definitive on naming but this gets all the way to setting a configuration upon an Electron. 2016-08-31 22:03:42 -04:00
Thomas Harte
a9b67dfba0 Introduced an NSDocumentController subclass. 2016-08-31 21:21:07 -04:00
Thomas Harte
7bc2b6b161 Added the minor piece that will allow analysis results to be obtained from Objective-C, and exposed to Swift in sufficient detail for it to be able to pass on to the machine. 2016-08-31 20:43:29 -04:00
Thomas Harte
0032ad2634 Edging ever onwards; killed forced attempt at uniformity in targets, sketched out the interface for a next-file-from call to Acorn tapes. 2016-08-29 21:10:38 -04:00
Thomas Harte
d1abfc040c Addressed my dithering here: the file format containers themselves should do nothing but inspect the data to find out whether it is of the correct format. The machine steps are there for machine-specific validation. So it's probably easier to treat a binary ROM image just as a binary ROM image. Therefore, the Acorn-specific .rom detection is now in an Acorn-specific area. 2016-08-29 08:48:49 -04:00
Thomas Harte
29c972f4b8 Added hacky segue into analysis for all Electron formats. Added analyser to try to differentiate Acorn-format ROMs from other things called .rom, which are likely to be numerous. 2016-08-28 12:43:17 -04:00
Thomas Harte
d9f0065154 Sketched out just enough classes to get through the get-contents-into-memory step of static analysis. 2016-08-28 12:20:40 -04:00
Thomas Harte
24938326ac ROMs definitely have no behaviour other than responding to memory accesses. Cartridges might. So picked the more general term. Sketched out a class at least to parse PRG as though it were a cartridge. Hence the static analyser can guess at whether a PRG is a cartridge or an ordinary program. 2016-08-27 18:26:51 -04:00
Thomas Harte
a1b3a18d11 Started forcing a resolution on ROMs by doing. But have immediately misstepped. Rename coming momentarily... 2016-08-27 18:17:40 -04:00
Thomas Harte
56c0d70c1f Gave disks their own namespace. 2016-08-27 17:15:09 -04:00
Thomas Harte
c0402d0c2b Gave tapes their own namespace. 2016-08-27 17:09:45 -04:00
Thomas Harte
8c333059a8 Turning this into a slog: gave UEF a more appropriate name, got as far as now having to decide what to do about ROMs as to structure. I guess they're machine specific, so specific classes? 2016-08-27 16:40:21 -04:00
Thomas Harte
e68ff64045 Actually, this is less prescriptive. 2016-08-27 13:42:51 -04:00
Thomas Harte
5ffd9e4f0d This is probably how the static analyser interface will look? 2016-08-23 21:35:59 -04:00
Thomas Harte
0d077691b0 Resolved warning. 2016-08-23 21:10:22 -04:00
Thomas Harte
38aec44d85 Made sufficient changes for the Vic itself to believe it can recast a PRG as a tape and insert it that way. So now the ball is in the court of: how the heck are Commodore tapes encoded? 2016-08-15 19:44:41 -04:00
Thomas Harte
6079d30e58 Eliminated waiting here — either the buffer can be enqueued now or it is dropped. 2016-08-14 16:20:24 -04:00
Thomas Harte
5373f6cc57 Completed setting of options, including mapping from country to ROM + television standard. 2016-08-14 14:23:08 -04:00
Thomas Harte
b5af1746d5 Added a through path to the Objective-C for setting region and memory size. 2016-08-14 14:14:59 -04:00
Thomas Harte
f15d89239f Made a stab at storage and restoration of country and memory size. 2016-08-14 14:00:08 -04:00
Thomas Harte
df77c2a20a Added the XIB side of wiring for region and memory size options. 2016-08-14 13:53:14 -04:00
Thomas Harte
12bad8f23f Turned the 6560 into an ordinary template, similar to the rest of the project, albeit right now with a fairly shonky internal implementation. Fixed a Mac-specific interface sizing issue. 2016-08-09 20:41:05 -04:00
Thomas Harte
285a288c80 Switched to two cycles of options loading, meaning that they get set before files are inserted. Might need some further work? 2016-08-07 21:48:09 -04:00
Thomas Harte
be54d8040e Made a first stab at having automatic loading be optional. But things are currently arranged such that the machine options are communicated too late to have an effect. So work to do. 2016-08-06 17:39:27 -04:00
Thomas Harte
58297f1baf Performed the basic metadata and routing for opening D64 files. Realised that I wasn't actually necessarily catching exceptions properly for all file opens, and fixed. 2016-08-01 07:09:15 -04:00
Thomas Harte
18744cd98b Slightly updated comments, switched to 1540 ROM so as very slightly to improve loading time. 2016-08-01 04:37:30 -04:00
Thomas Harte
89a1881fef Started turning the 1540 into an actual disk drive. 2016-07-29 11:03:09 -04:00
Thomas Harte
0e581c7607 Factored out the stuff of running a timed event loop from the TapePlayer. 2016-07-29 07:15:46 -04:00
Thomas Harte
e55db0cfe8 Made an attempt to eliminate creeping tape processing accuracy misses, which implied factoring out the GCM and LCD functions, which I then felt didn't really amount to signal processing. 2016-07-29 05:19:01 -04:00
Thomas Harte
015cea494d Switched to a much-more straightforward PLL. I think I'm just fiddling now rather than moving forwards. Probably time to move on? 2016-07-28 11:32:14 -04:00
Thomas Harte
e061e849d4 Had a second bash at the PLL. Probably I should read some of the literature. 2016-07-27 16:24:24 -04:00
Thomas Harte
0aa90b943b Switched to specifying bit length as a quotient for the purposes of a PCMSegment and verified that I had the logic for picking a Commodore time zone backwards: bigger numbers are faster, not slower.
Started sketching out a DiskDrive class.
2016-07-15 06:51:11 -04:00
Thomas Harte
74817f6664 With a history of three pulses, this can track up a 10% sine variation in a 1010101 stream. So I guess this'll do for now? 2016-07-14 19:54:48 -04:00
Thomas Harte
ac1bc588dd Improved factoring and increased window of testing, causing both the fast and slow tests to show framing errors. 2016-07-14 07:12:02 -04:00
Thomas Harte
d1fe07f14d Added test of perfect DPLL input timing. 2016-07-12 21:42:23 -04:00
Thomas Harte
75d95c0bc0 Sketched out an interface for a digial PLL. Not persuaded yet. Baby steps. 2016-07-11 22:12:58 -04:00
Thomas Harte
1e9eedc314 Factored out the PCM track since it's going to be a useful construct for almost every file format. Documented it a little better. 2016-07-10 18:36:52 -04:00
Thomas Harte
6cfc514c2d Made the rote changes necessary to attempt to open and to supply a G64 to the Vic. 2016-07-10 12:57:17 -04:00
Thomas Harte
ff49857f5c Started sketching out support for the G64 file format. 2016-07-10 10:17:53 -04:00
Thomas Harte
9e3d6b762b Sketched out the generic interface for a disk, documenting it and the tape interface while I'm here. 2016-07-10 08:54:39 -04:00
Thomas Harte
d8334edf4a Started trying to clean up, including commuting the C1540 source file name to match its class name but mainly by adding documentation. 2016-07-10 07:46:20 -04:00
Thomas Harte
656cd211d7 Was transmitting bit levels backwards (probably?); 1540 now acknowledges byte received. 2016-07-09 18:06:49 -04:00
Thomas Harte
01746f0512 This is probably a valid test. But I'm not completely sure. Time to figure out what's happening on the 1540 end. 2016-07-09 18:01:04 -04:00
Thomas Harte
cd84c35552 Whoops, one bit too short. 2016-07-09 17:51:46 -04:00
Thomas Harte
cd362b46b3 This is a valid attempt to send a whole byte, I think. 2016-07-09 17:51:04 -04:00
Thomas Harte
3560babd7e Got back to a failing test, now while trying to transmit a whole byte. Good stuff! 2016-07-09 17:39:51 -04:00
Thomas Harte
66caa3c6dc Fixed setup of bridge class. 2016-07-09 17:23:43 -04:00
Thomas Harte
bf03985ea4 Here's an instantly failing test... 2016-07-09 17:22:10 -04:00
Thomas Harte
da6fe2e983 This should be enough of a shell to write some actual tests. 2016-07-09 15:47:53 -04:00
Thomas Harte
865eb421cd Quick on-disk tidy up. 2016-07-09 15:44:55 -04:00
Thomas Harte
7cc4bf3fe7 Hit and hope is getting me nowhere. Time to unit test this thing. 2016-07-09 15:40:25 -04:00
Thomas Harte
81e6cc34e5 Per the ROM disassembly, the Vic's VIA outputs are inverted for the benefit of the serial bus. 2016-07-07 06:57:21 -04:00
Thomas Harte
1baf21827c Since the ROM is well disassembled, let's actually try to be a 1541 first. 2016-07-06 22:17:32 -04:00
Thomas Harte
d1eea6943d Ensured the 1540 ROM gets installed, at least. 2016-07-05 16:54:25 -04:00
Thomas Harte
47548dcedc Fixed an erroneous #import. 2016-07-05 16:39:31 -04:00
Thomas Harte
86dabd007b Furthered fleshing out of the 1540. Though it doesn't yet receive a ROM so won't even attempt to do anything meaningful. 2016-07-05 16:39:18 -04:00
Thomas Harte
d2cded7b59 Attempted to separate out the concept of a serial port and a serial bus, since the bus may be shared, and to establish half duplex communications from the Vic. 2016-07-05 14:55:20 -04:00
Thomas Harte
0d3d0fbe4d Created a namespace for Commodore and an empty container file for the 1540[/1] implementation. 2016-07-05 13:28:27 -04:00
Thomas Harte
df4724eb3e Added a modal toggle allowing the keyboard to be switched between being a keyboard and being a joystick for the Vic. 2016-07-04 22:01:07 -04:00
Thomas Harte
88964ceac0 Eliminated plain pointer passing for object types. 2016-07-04 19:33:55 -04:00
Thomas Harte
6dbf16210b Switched protocol to meaningful name and corrected its omission from the repository. 2016-07-04 19:19:07 -04:00
Thomas Harte
b322baff2f Added CLI/SEI pair test. 2016-06-29 19:42:39 -04:00
Thomas Harte
db7c6430b5 Fixed Klaus Dormann termination condition. 2016-06-29 19:16:34 -04:00
Thomas Harte
6419d9c485 Added a single IRQ test case, discovering that I'm two cycles short. Whoops! 2016-06-28 21:29:43 -04:00
Thomas Harte
6027cba95f Factored out the stuff of pushing a fast-loading option onwards and storing it within the user defaults. 2016-06-27 21:38:14 -04:00
Thomas Harte
9134e4de1f Added a partially-wired options menu for the VIC. 2016-06-27 18:49:53 -04:00
Thomas Harte
d5e50f5ea0 Got a bit more explicit about how ports are identified on the 6522. 2016-06-26 12:30:01 -04:00
Thomas Harte
8741be5c84 Made the slightest possible effort to get TAPs opened and passed to the VIC. 2016-06-25 16:24:52 -04:00
Thomas Harte
ee19417ded Made an attempt quickly to implement parsing of the Commodore .TAP file format. 2016-06-25 16:09:32 -04:00
Thomas Harte
b8728285e7 An overridden getter looks more like this in Swift. 2016-06-23 21:09:34 -04:00
Thomas Harte
097a9caa95 Delegates are all nullable, naturally. 2016-06-23 09:37:49 -04:00
Thomas Harte
454e98302d Slight rearrangement plus a setting of the CSMachine delegate corrects audio after a clock rate change. 2016-06-20 22:18:41 -04:00
Thomas Harte
31b26b8118 Made a first attempt to implement the full top-to-bottom change of clock rates, giving the Atari the ability to change rate when it switches to PAL mode, as it should always have been. 2016-06-20 21:47:27 -04:00
Thomas Harte
3591479571 Fixed mismatch between initial tick box states and communicated switches; ensured they're visible upon launching a game. 2016-06-20 21:31:07 -04:00
Thomas Harte
25a5455d33 Completed bridge interface. 2016-06-20 21:07:01 -04:00
Thomas Harte
fe17d1778c Expanded 6532 tests substantially, beefing up implementation to match. 2016-06-20 21:02:42 -04:00
Thomas Harte
6c3f5d2caf Fixed window sizing. 2016-06-19 21:40:35 -04:00
Thomas Harte
4db61d98f4 Killed the .cpp. 2016-06-19 20:21:38 -04:00
Thomas Harte
d5aaad396e Added a TODO on my lack of knowledge. 2016-06-19 20:13:31 -04:00
Thomas Harte
7cf6008e7c Started some very basic RIOT unit tests; corrected to pass. 2016-06-19 20:12:47 -04:00
Thomas Harte
065ec618c4 Factored out and templated the 6532, finally taking the opportunity to add a means to control the on-console switches of an Atari 2600. 2016-06-19 19:36:34 -04:00
Thomas Harte
ce2f5515c0 Made some minor documentation improvements, killed 6522.cpp as the 6522 is going to be a template only, attempting to promote good inlining behaviour. 2016-06-19 18:11:37 -04:00
Thomas Harte
ef3ed1f436 Implemented full paste ability for any machine that is a typer. 2016-06-19 16:35:04 -04:00
Thomas Harte
e7aeed2f03 Established a general pattern for machines that can type things. Started working on the Vic typing itself. 2016-06-19 13:10:52 -04:00
Thomas Harte
f4915c5ad6 Fixed test and added basic implementation of data direction. 2016-06-18 17:17:03 -04:00
Thomas Harte
eea850cd12 Added a deliberately failing data direction test. 2016-06-18 16:40:01 -04:00
Thomas Harte
2282b59768 Added a quick latching test, and shortened test messages, albeit that they're still displeasingly boilerplate. 2016-06-18 16:10:46 -04:00
Thomas Harte
5d26cd85a3 Wrote test case for what appears to be correct timer behaviour if those were acting in isolation. Ensured implementation matches test case. 2016-06-18 14:30:23 -04:00
Thomas Harte
394902f409 Switched to clocking the 6522 by the half-cycle. Very trivial test now passes. 2016-06-18 13:57:10 -04:00
Thomas Harte
06fb2ff1c7 Started endeavouring to sketch out the boilerplate for writing a 6522 test harness. Added a default implementation of synchronise to the 6522 too, since not everybody is going to want one. 2016-06-18 09:28:46 -04:00
Thomas Harte
090e92ad26 Making this large has very limited side effects. So why not? 2016-06-16 21:41:17 -04:00
Thomas Harte
3b71d1a309 Switched to a variable-length buffer based on attempting to hit approximately a certain quality of service. 2016-06-16 21:35:22 -04:00
Thomas Harte
2ee78d42b9 Made an attempt also to trigger updates upon audio packets being returned, and significantly to reduce the size and quantity of those. This should get down to 11ms latency if the output wave is 44100; I might need to scale up the buffer size as the sampling rate increases or this is going to get crazy at 192Khz. 2016-06-16 20:51:35 -04:00
Thomas Harte
00a9f1bf24 Fixed best-effort updater actually to run, finally moved clock rate announcement into the C++ side of things, started working on a mechanism to allow clock rate to be updated. 2016-06-16 20:39:46 -04:00