Thomas Harte
|
b3da16911f
|
Tweaked timing of mode 0, per contradictory information. Wrote a failing test of mode 2.
|
2017-06-03 18:42:54 -04:00 |
|
Thomas Harte
|
e52892f75b
|
Added a test of interrupt mode 1.
|
2017-06-03 18:16:13 -04:00 |
|
Thomas Harte
|
8c41a0f0ed
|
Added a test to confirm interrupts are disabled, and a response to the interrupt cycle within the all-RAM machine.
|
2017-06-03 17:53:44 -04:00 |
|
Thomas Harte
|
3e9212aaff
|
Plumbed through to allow interrupt tests, wrote an NMI test, corrected the error revealed.
|
2017-06-03 17:41:45 -04:00 |
|
Thomas Harte
|
d14902700a
|
Minor syntax and wiring fixes.
|
2017-06-01 22:33:05 -04:00 |
|
Thomas Harte
|
c95c32a9fe
|
Implemented the reset line program and disabled fictitious automatic power-on reset for the Z80 test machine.
|
2017-06-01 22:31:04 -04:00 |
|
Thomas Harte
|
494ce073b5
|
Tests having been fixed by instating proper Z80 cycle counting, removed caveman logging.
|
2017-05-31 19:58:57 -04:00 |
|
Thomas Harte
|
5ff73faf48
|
Ensured Zexall can pass.
|
2017-05-31 19:55:06 -04:00 |
|
Thomas Harte
|
2f7f11e2e5
|
Added diagnosis props.
|
2017-05-31 06:54:25 -04:00 |
|
Thomas Harte
|
5119997122
|
Made an attempt, flawed so far, to find a neat way for processor subclasses to offer bus management as an inline function.
|
2017-05-30 22:41:23 -04:00 |
|
Thomas Harte
|
7bddd294c9
|
Resolved an unpredictable conditional and temporarily disabled the Zexalltest as part of the default suite, since it takes so long to run.
|
2017-05-30 21:03:02 -04:00 |
|
Thomas Harte
|
244b5ba3c2
|
Added a proper termination condition for Zexall and, for now, a Mhz counter.
|
2017-05-30 18:32:38 -04:00 |
|
Thomas Harte
|
960de7bd7b
|
Marginally reduced test machine costs based on usage.
|
2017-05-30 11:59:07 -04:00 |
|
Thomas Harte
|
c6185baa99
|
Fixed R incrementation and attempted to make the status flags cheaper to write to.
|
2017-05-29 22:23:19 -04:00 |
|
Thomas Harte
|
4d4695032c
|
Discovered that Zexall is just really slow. Disabled the address sanitiser, and started working towards a verifiable end.
|
2017-05-29 21:46:00 -04:00 |
|
Thomas Harte
|
6d22f6fcd5
|
Having decided the bus operation error on 10 is probably in the test cases, decided to allow myself to skip that one comparison. Back to zero failing cases, and with no more useful information to derive from the FUSE test set for the time being.
|
2017-05-29 17:17:17 -04:00 |
|
Thomas Harte
|
8bfaa487ce
|
Improved logging of bus operations and corrected placement of the OUT step in that repetition group; was otherwise outputting the wrong side of the B adjustment and therefore to the wrong port (if interpreted as 16 bit).
|
2017-05-29 17:13:24 -04:00 |
|
Thomas Harte
|
267b2add9a
|
Adjusted for where FUSE nominally places timestamps. Down to 92 failures.
|
2017-05-29 16:44:07 -04:00 |
|
Thomas Harte
|
d290e3d99e
|
Corrected simple logging error. Which mysteriously moves me all the way up to 117 failures (!)
|
2017-05-29 16:35:00 -04:00 |
|
Thomas Harte
|
a6a4c5a936
|
Made an attempt to introduce checking of bus activity against the FUSE tests. Appears to suggest 54 new failures.
|
2017-05-29 15:57:27 -04:00 |
|
Thomas Harte
|
ed7b07c8b1
|
Made an attempt to implement HALT as an operation that merely leaves the PC in place, adding the Z80's output line. Included that flag in FUSE tests. Discovered that it does not think that HALT acts that way. Which is probably correct.
|
2017-05-29 11:54:27 -04:00 |
|
Thomas Harte
|
d83dd17738
|
[DD/FD]36 turns out to be a timing error: offset calculation overlaps with value fetch. So the FUSE test was cutting off my implementation early. Fixed.
|
2017-05-29 11:40:56 -04:00 |
|
Thomas Harte
|
9ade0dcae3
|
One failure was just PUSH AF due to throwing away the 5 & 3 flags at the start. Switched to throwing them away at comparison.
|
2017-05-29 11:06:23 -04:00 |
|
Thomas Harte
|
a329d85697
|
Instituted memory value checks, flushing out seven new failures.
|
2017-05-29 11:01:45 -04:00 |
|
Thomas Harte
|
c322410783
|
Corrected CP[I/D]R termination logic; all tests now passing to the extent of interrogation.
|
2017-05-29 10:52:54 -04:00 |
|
Thomas Harte
|
b67331e018
|
Fixing the OUT repetition group reduces the code to one failing test.
|
2017-05-29 10:48:53 -04:00 |
|
Thomas Harte
|
ad56a9215c
|
Implemented IN[I/D]x. 18 failures remaining.
|
2017-05-29 10:12:33 -04:00 |
|
Thomas Harte
|
c56a5344b9
|
Implemented CP[I/D]x.
|
2017-05-29 08:54:00 -04:00 |
|
Thomas Harte
|
409c82ce73
|
Implemented RLD and RRD. 34 failures remaining.
|
2017-05-28 16:46:27 -04:00 |
|
Thomas Harte
|
6e83b7d6df
|
Attempted to add a proper exit condition for Zexall.
|
2017-05-28 15:13:47 -04:00 |
|
Thomas Harte
|
5a4d448cc1
|
Corrected logical flags; now down to 68 failures, all of them on the ED page.
|
2017-05-28 15:09:58 -04:00 |
|
Thomas Harte
|
6b66c8f304
|
Implemented inputs and outputs, determined how to answer port requests to please FUSE and hence reduced failures to 84.
|
2017-05-28 14:50:51 -04:00 |
|
Thomas Harte
|
035df316aa
|
FUSE seems to have inconsistent ideas about where b3 and b5 come from in more-complicated BIT instructions. So I'm not testing them for now. Within that reality, reduced to 102 failures.
|
2017-05-27 23:54:53 -04:00 |
|
Thomas Harte
|
c7cb47a1d8
|
Readded and then disabled my temporary one-test-only patch. Failures are currently at 237.
|
2017-05-27 21:10:25 -04:00 |
|
Thomas Harte
|
98423c6e41
|
Accepted FUSE's view of bits 3 & 5 from BIT and RES, reducing to 623 issues.
|
2017-05-27 16:19:15 -04:00 |
|
Thomas Harte
|
33c3fa21e3
|
Fixed (HL)/(In + d) CB page modify instructions. Reducing failures to 672.
|
2017-05-27 15:54:24 -04:00 |
|
Thomas Harte
|
9bc2b48d9b
|
Found a form I like for indexed addressing, applying it only where obvious for now. Which eliminates more than a couple of hundred of remaining failures.
|
2017-05-26 23:23:33 -04:00 |
|
Thomas Harte
|
e4e71a1e5f
|
Switched back to descriptive failures, but put a cap on them.
|
2017-05-25 21:08:24 -04:00 |
|
Thomas Harte
|
fba5af280e
|
Shortened failure message, at least for now.
|
2017-05-25 21:05:47 -04:00 |
|
Thomas Harte
|
2cadc706e2
|
Now runs FUSE tests, albeit testing only a subset of the results. But enough to get started.
|
2017-05-25 21:00:33 -04:00 |
|
Thomas Harte
|
3c6f63abcc
|
Started towards running the FUSE tests. Just need to deal with the memory segments.
|
2017-05-25 19:12:59 -04:00 |
|
Thomas Harte
|
00cd7e7e9c
|
After hitting my head against the wall of trying to use [NS]Scanner as a parser some more, have given up and transcoded the two tests files to JSON.
|
2017-05-25 18:20:13 -04:00 |
|
Thomas Harte
|
055c860b43
|
Sealed off RegisterState as immutable, and started trying to parse the .expected file.
|
2017-05-23 22:32:36 -04:00 |
|
Thomas Harte
|
454c8628c3
|
Implemented an additional constructor for RegisterStates, pulling it out into file-level scope and implementing Equatable.
|
2017-05-23 22:05:33 -04:00 |
|
Thomas Harte
|
a23a6db4d6
|
Tidied up, creating a holder for RegisterState and giving it deserialisation logic. This makes sense because a register state will also need to be taken from the outputScanner, and from the machine.
|
2017-05-23 08:13:24 -04:00 |
|
Thomas Harte
|
6575091a78
|
Fixed Z80's ownership of its fetch-decode-execute program, its habit of scheduling invalidly when hitting an unrecognised operation and the test machine's habit of dereferencing invalidly.
|
2017-05-22 21:50:34 -04:00 |
|
Thomas Harte
|
9e25d014d2
|
Made an attempt to log bus activity for comparison with FUSE results.
|
2017-05-22 19:49:38 -04:00 |
|
Thomas Harte
|
41d5dd8679
|
Added a memory access delegate to the Z80 all-ram processor, to allow access patterns to be captured.
|
2017-05-22 19:24:11 -04:00 |
|
Thomas Harte
|
22afa509ca
|
Got to a parsing and towards an attempt to run FUSE tests.
|
2017-05-22 19:14:46 -04:00 |
|
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 |
|
Thomas Harte
|
1921a6c469
|
Rewired the existing cause-an-update route from the OpenGLView through the best-effort updater.
|
2016-06-16 18:19:23 -04:00 |
|
Thomas Harte
|
530cf3dcbb
|
Made an attempt to consolidate serialisation and clock rate adherence, allowing a floating-point clock rate.
|
2016-06-16 18:04:54 -04:00 |
|
Thomas Harte
|
ce59ad1911
|
Minor on-disk shuffle, to try to clarify ownership of responsibility.
|
2016-06-15 08:11:30 -04:00 |
|
Thomas Harte
|
45999f5b26
|
This should be strong.
|
2016-06-15 08:07:59 -04:00 |
|
Thomas Harte
|
e0baaf17f1
|
Added class prefix.
|
2016-06-15 08:07:25 -04:00 |
|
Thomas Harte
|
695dd2e9e3
|
Started upon a delegate protocol for the AudioQueue, resolving my use of a deprecated API while I'm at it.
|
2016-06-15 07:35:34 -04:00 |
|
Thomas Harte
|
a9036e7aa4
|
Increased buffering range of audio as a quick fix for now. Basically means: increased latency as a short-term fix.
|
2016-06-14 07:31:47 -04:00 |
|
Thomas Harte
|
fcf4b14344
|
Extended to allow floating-point sampling rates. Which makes sense.
|
2016-06-13 19:30:41 -04:00 |
|
Thomas Harte
|
4fec625b19
|
Minor cleaning, implemented clearAllKeys .
|
2016-06-12 10:38:21 -04:00 |
|
Thomas Harte
|
ec604f1414
|
Expanded mapped keys just a tiny bit further.
|
2016-06-12 10:35:47 -04:00 |
|
Thomas Harte
|
167ed9b8bb
|
Added enough to load a PRG as a ROM.
|
2016-06-11 14:00:12 -04:00 |
|
Thomas Harte
|
d9b001d3fc
|
Minor clean-ups.
|
2016-06-11 13:51:04 -04:00 |
|
Thomas Harte
|
3e8d383615
|
Improved key map. Possibly enough to type some basic BASIC?
|
2016-06-11 13:19:59 -04:00 |
|
Thomas Harte
|
d1731b1d26
|
Hacked my 6522 to work. Mistake is in not returning output as input when appropriate — i.e. that I'm ignoring data direction. Also fixed K and L keys.
|
2016-06-11 13:06:01 -04:00 |
|
Thomas Harte
|
271de23ee6
|
Ran on in and introduced a bunch more keys, hopefully to help to diagnose.
|
2016-06-11 12:26:19 -04:00 |
|
Thomas Harte
|
d7c1f5b18a
|
Made an attempt at hooking up the '2' and '4' keys. A mostly unsuccessful attempt. 2 does nothing, 4 clears the screen.
|
2016-06-11 11:50:37 -04:00 |
|
Thomas Harte
|
6522530e1c
|
Actually, I'm dithering over whether the 6522 should be an ordinary class or a curiously-recurring template. But it'll need a file, definitely.
|
2016-06-06 21:56:02 -04:00 |
|
Thomas Harte
|
0b221e773f
|
Fixed ROM naming and sizes, ensured machines without sound outputs don't end up with an audio queue.
|
2016-06-05 11:20:05 -04:00 |
|
Thomas Harte
|
f922d38ed2
|
The Vic now captures the ROMs sent to it and has just enough infrastructure to get to a black screen. Progress!
|
2016-06-05 10:51:07 -04:00 |
|
Thomas Harte
|
12243c40ad
|
Kicking the ball a little further down the road, ROMs and PRGs now reach the actual emulated machine.
|
2016-06-05 09:06:59 -04:00 |
|
Thomas Harte
|
b29b2a5d08
|
Added forwarding of a loaded PRG from the Swift document to the wrapper. So I think that possibly completes the Swift side of things?
|
2016-06-05 09:01:32 -04:00 |
|
Thomas Harte
|
8052ce9223
|
System ROMs are now supplied to the Vic-20 wrapper, though they stop there. I also factored key forwarding out of the ElectronDocument and into the superclass, depending upon the child conforming to CSKeyboardMachine.
|
2016-06-05 08:53:05 -04:00 |
|
Thomas Harte
|
363e14a92f
|
Reorganised system ROMs out of the Mac-specific folder, adjusted Mac code to expect to find them organised hierarchically (as how many os.roms am I going to have?) and added readme files to explain what's missing from the Git repository.
|
2016-06-05 08:33:01 -04:00 |
|
Thomas Harte
|
4c33517228
|
Added ROMs to the project and ensured they don't get uploaded.
|
2016-06-04 22:03:38 -04:00 |
|
Thomas Harte
|
b10a06e700
|
A CRT is still absent but this moves the ball back into the C++ side's court.
|
2016-06-04 22:00:50 -04:00 |
|
Thomas Harte
|
06e1db8c85
|
This now gets as far as missing selectors.
|
2016-06-04 21:49:03 -04:00 |
|
Thomas Harte
|
eff28e95a4
|
Added XIB file.
|
2016-06-04 21:45:39 -04:00 |
|
Thomas Harte
|
404873fe58
|
Started sketching out infrastructure for Vic-20 support.
|
2016-06-04 21:43:50 -04:00 |
|
Thomas Harte
|
d6e8cd676a
|
Trimmed and reordered just a little.
|
2016-06-04 16:02:16 -04:00 |
|
Thomas Harte
|
68a8851c52
|
Increased parallelism, allowing a simplification in the GL view.
|
2016-06-02 22:29:09 -04:00 |
|
Thomas Harte
|
e3b95b8d2b
|
Back to asynchronous updates and drawing, to try to improve guarantees on audio latency; experimenting with whether other parts of the approach are fundamentally flawed; added a broad-phase for scheduled updates on the 2600.
|
2016-06-02 21:22:55 -04:00 |
|
Thomas Harte
|
11073daee1
|
Issues appear to be around timing generally. Working on it.
|
2016-06-02 20:15:48 -04:00 |
|
Thomas Harte
|
253e5a4203
|
With no regard to performance whatsoever, endeavoured to bring sound to the 2600. It's very scratchy, so something is wrong.
|
2016-06-02 19:50:16 -04:00 |
|
Thomas Harte
|
8623dc2833
|
Consolidated a little more within the common code, adding sampling rate selection based on querying the machine.
|
2016-06-01 19:04:07 -04:00 |
|
Thomas Harte
|
50543e9676
|
Minor factoring up: the audio queue is now pushed universally by MachineDocument .
|
2016-05-31 22:36:53 -04:00 |
|
Thomas Harte
|
c773c3a66c
|
Started trying to clean up and consolidate on the Swift side of things but time is up for the day.
|
2016-05-31 22:32:38 -04:00 |
|
Thomas Harte
|
8dc66167be
|
Made an attempt to consolidate the Objective-C++ side of things based on the incoming CRTMachine::Machine .
|
2016-05-31 22:16:20 -04:00 |
|
Thomas Harte
|
5c4f35e13f
|
Finally started on generalising the C++ stuff so as to be able to be able to get a working audio binding on the OS-specific side without further repetition by factoring an appropriate protocol out from the Electron and sketching out the correct speaker class for the Atari. Added a method to ask it what a good output frequency would be.
|
2016-05-31 21:23:44 -04:00 |
|
Thomas Harte
|
40600b4bcb
|
Made sprite placement consistent at least. Not necessarily yet correct.
|
2016-05-18 22:07:24 -04:00 |
|
Thomas Harte
|
3765c5fbb5
|
Fixed error that would prevent an interrupting frame from ever being drawn.
|
2016-05-18 21:45:35 -04:00 |
|
Thomas Harte
|
ddfc9910e5
|
Sought to draw in a standard serial arrangement as and when bandwidth allows it.
|
2016-05-09 07:17:12 -04:00 |
|
Thomas Harte
|
1bb92550f8
|
It's 2016.
|
2016-05-02 22:02:06 -04:00 |
|
Thomas Harte
|
6982e945fb
|
Fixed those issues breaking GL state, I hope.
|
2016-05-01 16:17:52 -04:00 |
|
Thomas Harte
|
8538b62ea2
|
Made an attempt to extract and consolidate the logic behind the intermediate shaders.
|
2016-04-28 21:04:59 -04:00 |
|
Thomas Harte
|
496d979aca
|
Made a decision to clean up by creating per-shader classes. Well, more or less. First thing to be factored out: the output shader.
|
2016-04-27 22:29:54 -04:00 |
|
Thomas Harte
|
416c944f02
|
Experimental: let's try accumulating history directly in the framebuffer.
|
2016-04-26 21:41:39 -04:00 |
|
Thomas Harte
|
9b64f64db7
|
Attempted to normalise some style decisions.`
|
2016-04-24 22:32:24 -04:00 |
|
Thomas Harte
|
884755c560
|
Ensured the GL context is available when switching Atari 2600 output, and that it locks the output.
|
2016-04-24 20:56:21 -04:00 |
|
Thomas Harte
|
d221c712b0
|
Ensured GL context is active when destructing CRTOpenGL.
|
2016-04-24 20:34:25 -04:00 |
|
Thomas Harte
|
929cfc49cb
|
Extended window for picking output frequency, attempted to consolidate CRT OpenGL timing uniforms for approprate resetting.
|
2016-04-24 18:58:31 -04:00 |
|
Thomas Harte
|
082003ed0a
|
Reintroduced the CRT delegate and the 2600's automatic region switching. Albeit that the CRT itself doesn't adjust properly to new timings yet.
|
2016-04-24 18:36:22 -04:00 |
|
Thomas Harte
|
80a3169674
|
Started reviving the Atari 2600 emulation. Put new startup sequence into place.
|
2016-04-24 06:56:08 -04:00 |
|
Thomas Harte
|
9c89b668ae
|
Made further attempts to improve synchronisation and interrelated timing between display and machine update.
|
2016-04-20 22:35:46 -04:00 |
|
Thomas Harte
|
7aa87723a9
|
Added: key states are all cleared if the window loses focus. Which resolves sticky key issues. Allowing me just to use command+option+O for options and map both command and option as FUNC.
|
2016-04-19 21:29:10 -04:00 |
|
Thomas Harte
|
d5bac2f04f
|
Spotted error was in texture target all along. This now gets as far as showing something a lot like the correct display, but precision is way off. Way off.
|
2016-04-18 21:32:48 -04:00 |
|
Thomas Harte
|
86626bbd72
|
Switched key that maps to FUNC from command to option. Logic is that command may frequently be used for performing an action which changes the key window, in which case we won't realise if it is released.
|
2016-04-18 19:20:26 -04:00 |
|
Thomas Harte
|
f89308e913
|
Set the 'options' windows to hide on application deactivation so that they don't cluelessly sit on top of the rest of the system.
|
2016-04-18 19:14:58 -04:00 |
|
Thomas Harte
|
bf29c8e2bf
|
Fixed mismatch in television/monitor selection, ticked view for drawing concurrently, since it can, removed stray space.
|
2016-04-18 19:01:15 -04:00 |
|
Thomas Harte
|
3d53f157de
|
Output selection now takes effect. So I can stop accidentally committing changes back and forth.
|
2016-04-18 08:27:58 -04:00 |
|
Thomas Harte
|
94f148e212
|
Wired in options, at least getting as far as the Objective-C bridge. Then fast loading makes it to the emulated machine, display output type doesn't.
|
2016-04-18 08:21:00 -04:00 |
|
Thomas Harte
|
6158275ea7
|
Started adding an options panel.
|
2016-04-17 21:43:39 -04:00 |
|
Thomas Harte
|
499f7ace07
|
Re-enabled working video output for the Electron for the day and consolidated the rough metric I'm using to pick a number of taps for the audio filter.
|
2016-04-17 20:43:20 -04:00 |
|
Thomas Harte
|
104f44f27f
|
Attempted to improve deinterlacing, gave the CRT full control over blend mode, switched back to 2000000Mhz audio.
|
2016-04-14 22:20:47 -04:00 |
|
Thomas Harte
|
2cc72169ff
|
Ensured machines can nominate their own aspect ratio windows. Switched to 11/10 for the Electron.
|
2016-04-11 23:12:56 -04:00 |
|
Thomas Harte
|
7276a06cc0
|
Added a helper to calculate a visible rect based on output timings, used it to scale the Electron output up to the full window size.
|
2016-04-11 21:47:23 -04:00 |
|
Thomas Harte
|
e617bd2bb3
|
Turned audio quality up to the maximum, at least for now.
|
2016-04-06 21:12:22 -04:00 |
|
Thomas Harte
|
28e6517234
|
Switched away from tracking absolute time to tracking relative.
|
2016-04-06 20:46:00 -04:00 |
|
Thomas Harte
|
d4be4c4769
|
Of course, I want min . Not max .
|
2016-04-06 20:27:48 -04:00 |
|
Thomas Harte
|
fd1f6a7e1f
|
Expanded on thinking.
|
2016-04-06 19:35:53 -04:00 |
|
Thomas Harte
|
e885438363
|
The penny has finally dropped that I can drive the CPU stuff in a manner completely decoupled from the GPU stuff. For much improved parallelisation.
|
2016-04-06 19:34:34 -04:00 |
|
Thomas Harte
|
4595741ab0
|
Made an attempt not to interrupt the display link queue too much when emulation is running slowly.
|
2016-04-04 20:22:33 -04:00 |
|
Thomas Harte
|
3038704977
|
Attempted to introduce a lowpass filter to the graphics output, reverted 6502 optimisations as seemingly not working.
|
2016-03-21 22:01:25 -04:00 |
|
Thomas Harte
|
5966ac845f
|
Switched symbols and updated all-RAM 6502 in order to fix unit test target.
|
2016-03-20 22:48:56 -04:00 |
|
Thomas Harte
|
902017a962
|
Fixes: drop any processing backlog, try not to allow an Electron document to close mid-draw, perform a frame grab even if the emulated machine is over-processing, really really don't create a CRT until it's safe.
|
2016-03-20 18:42:37 -04:00 |
|
Thomas Harte
|
fb6fb5d948
|
Switched to two-phase setup to deal with OpenGL scheduling.
|
2016-03-20 13:50:13 -04:00 |
|
Thomas Harte
|
eabc382540
|
Fixed: of course I can't rely on the pointer to CVTimeStamp not becoming dangling during a queue jump.
|
2016-03-19 23:02:42 -04:00 |
|
Thomas Harte
|
4c5d66c317
|
Made sure GL context isn't activated until it's locked.
|
2016-03-19 22:54:56 -04:00 |
|
Thomas Harte
|
a546277f88
|
Added the simplest mechanism to decouple emulation from the display link queue.
|
2016-03-19 22:53:37 -04:00 |
|
Thomas Harte
|
9da7716c72
|
Attempted to simplify threading, thereby allowing machines to be constructed within a valid GL context, and started adding appropriate GL syncs. Which all oddly drops everything to a negligible FPS. Investigation will follow.
|
2016-03-19 22:46:17 -04:00 |
|
Thomas Harte
|
4ac1f959e9
|
A shortcut here and a shortcut there; this allows me at least to determine whether use of a PBO gains anything.
|
2016-03-19 17:07:05 -04:00 |
|
Thomas Harte
|
4cd0aa3416
|
Completed FIR filter based audio output.
|
2016-03-15 23:37:35 -04:00 |
|
Thomas Harte
|
7694297c83
|
Introduced an adapted version of the previous Clock Signal's FIR filter.
|
2016-03-15 21:05:20 -04:00 |
|
Thomas Harte
|
1c4acfb599
|
I think this is a prima facie acceptable implementation of the fast tape hack.
|
2016-03-13 17:39:53 -04:00 |
|
Thomas Harte
|
bb0cd89574
|
Got explicit about threading guarantees.
|
2016-03-13 13:38:03 -04:00 |
|
Thomas Harte
|
cfa616d593
|
Fixed: timing issue versus supplied test ROM was failure to include the Plus 1 ROM in the mix.
|
2016-03-12 11:51:20 -05:00 |
|
Thomas Harte
|
bf5747f83e
|
Made an attempt to chop out all the stuff of building up the OpenGL data from the stuff of parsing input.
|
2016-03-08 22:40:23 -05:00 |
|
Thomas Harte
|
14b2927275
|
Made further attempts to tidy up; trying to demarcate between public interface and private.
|
2016-03-08 20:59:16 -05:00 |
|
Thomas Harte
|
1e5fe2b2c1
|
Made an attempt to reestablish the Atari 2600 output connection despite various changes (TODO: generalise that stuff), and to start creating the composite shader.
|
2016-03-07 21:04:04 -05:00 |
|
Thomas Harte
|
41c09f8c3f
|
Renamed CSCathodeRayView to CSOpenGLView as it no longer has any CRT-related responsibilities. It just does the GL and manages a serial dispatch queue.
|
2016-03-05 14:45:09 -05:00 |
|
Thomas Harte
|
95efeb1d56
|
Ensured all delegate and responder delegate messages occur on the same queue.
|
2016-03-05 14:35:47 -05:00 |
|
Thomas Harte
|
c754a6e45a
|
Decoupled execution speed and frame rate; cleaned up.
|
2016-03-03 22:12:31 -05:00 |
|
Thomas Harte
|
60d35fa72b
|
Requested multisampling, if available, rather than supersampling.
|
2016-02-27 22:46:31 -05:00 |
|
Thomas Harte
|
c7f54d649e
|
Switched back down to two samples per pixel. Though one might do it. Need to investigate.
|
2016-02-18 23:21:25 -05:00 |
|
Thomas Harte
|
3ea0d04a1a
|
-dealloc now blocks until all audio queue buffers are no longer playing.
|
2016-02-16 21:47:23 -05:00 |
|
Thomas Harte
|
bbffbb5dc2
|
Resolved deadlock if an invalidate call was sent to the Electron while it was in the middle of an update.
|
2016-02-16 20:35:45 -05:00 |
|
Thomas Harte
|
a01f90ff3e
|
Attempted a switch to the real PAL visible area and to something a bit like a real phosphor decay.
|
2016-02-14 21:57:23 -05:00 |
|
Thomas Harte
|
7580d192d5
|
Fixes: now setting correct frame time estimate, properly enabling the timestamp attribute, and ensuring that the Electron flushes screen work at least once per host frame update.
|
2016-02-14 19:28:02 -05:00 |
|
Thomas Harte
|
eeb0e134fd
|
Started the transition towards a more natural collection of rolling buffers, with phosphor decay in mind.
|
2016-02-13 20:52:23 -05:00 |
|
Thomas Harte
|
7bc5a43c36
|
Fixed type warning.
|
2016-02-12 22:30:22 -05:00 |
|
Thomas Harte
|
0527888b15
|
Endeavoured to ensure safe shutdown.
|
2016-02-12 22:30:06 -05:00 |
|
Thomas Harte
|
a6574d1f96
|
Made an attempt to factor out and more clearly to document my implementation of flywheel synchronisation.
|
2016-02-11 22:12:12 -05:00 |
|
Thomas Harte
|
b5bcadb8d3
|
Reinstated clipped CRT output, with more appropriate ownership of the decision.
|
2016-02-07 22:18:55 -05:00 |
|
Thomas Harte
|
4d0a218a57
|
Certainly at least seriously considering a separate holder for the "compile a shader" logic. Otherwise taking steps back towards PAL/NTSC decoding.
|
2016-02-07 17:32:38 -05:00 |
|
Thomas Harte
|
602327cd9d
|
Sketched out a quick class for rendering to texture.
|
2016-02-07 15:42:02 -05:00 |
|
Thomas Harte
|
d3d505b7bc
|
That's one header file less.
|
2016-02-05 23:05:58 -05:00 |
|
Thomas Harte
|
6ab425deda
|
There is now a semi-reasonable amount of screen output again.
|
2016-02-05 21:35:39 -05:00 |
|
Thomas Harte
|
80e7e5e602
|
Updated to return old behaviour of drawing only upon changes.
|
2016-02-04 23:05:47 -05:00 |
|
Thomas Harte
|
8bc3f8046d
|
This endeavours to move everything into the CRT class except the final version of shader building.
|
2016-02-04 22:57:46 -05:00 |
|
Thomas Harte
|
e0d51408e4
|
Onward with carrying this through to the bitter end, this at least results in all the appropriate knowledge and call-ins occuring at the CRT.
|
2016-02-04 22:28:50 -05:00 |
|
Thomas Harte
|
4554abb755
|
Made an attempt to be more rigorous in display generation on the Electron, to make sure I deal with mid-line changes to/from blank line mode. Even if it turns out that they generate pixels.
|
2016-01-29 21:14:13 -05:00 |
|
Thomas Harte
|
0efe4b312c
|
Disabled my various bits of rate interchange debugging; improved test for when to call update_display due to a RAM write.
|
2016-01-21 22:16:52 -05:00 |
|
Thomas Harte
|
de7218cdf0
|
Added a lot of commenting to the CPU6502 definition, simplifying its construction. Added missing nullability modifier to CSElectron. Fixed bad-habit Objective-C style naming on the Electron's Interrupt enum.
|
2016-01-20 21:55:38 -05:00 |
|
Thomas Harte
|
f727582911
|
Started making first moves towards stripping CSCathodeRayView of its responsibilities. If that can be merely an OpenGL view that presents things, things will be a lot more portable.
|
2016-01-20 08:21:33 -05:00 |
|
Thomas Harte
|
e65cd4cf06
|
Some data is marginally reaching the CPU from the tape.
|
2016-01-19 22:05:34 -05:00 |
|
Thomas Harte
|
956b90e203
|
Attempted further to improve latency; added view adjustment for non-4:3 output aspect ratios. The 4:3 is currently hardcoded, so further work will be required.
|
2016-01-18 23:55:52 -05:00 |
|
Thomas Harte
|
90eef1df74
|
Tightened to provide lower latency audio, hopefully.
|
2016-01-18 20:01:06 -06:00 |
|
Thomas Harte
|
03f683d588
|
Gave the audio queue something a lot like a spin lock on waiting to pipe out audio.
|
2016-01-18 19:57:18 -06:00 |
|
Thomas Harte
|
5a39e42413
|
Wired up enough such that some basic attempt at parsing a UEF occurs.`
|
2016-01-18 17:06:09 -06:00 |
|
Thomas Harte
|
2779f0e569
|
Statred working on support for at least the most fundamental file format.
|
2016-01-18 15:46:41 -06:00 |
|
Thomas Harte
|
b70fdc2de8
|
Switched to being explicitly careful about not wrapping around and stomping on data not yet output.
|
2016-01-18 13:56:20 -06:00 |
|
Thomas Harte
|
ddcc34740b
|
Added lots of debugging output while I attempt to locate the source of audio scratchiness, also simplified manner of dealing with wraparound within the AudioQueue wrapper.
|
2016-01-18 13:50:19 -06:00 |
|
Thomas Harte
|
781249acf7
|
Fixed crash.
|
2016-01-14 20:35:36 -05:00 |
|
Thomas Harte
|
38ffcaa262
|
Here, at last, is _some_ audio output, at least.
|
2016-01-14 20:33:22 -05:00 |
|
Thomas Harte
|
afde8dac49
|
Closed the loop such that audio manages to bubble up into Objective-C.
|
2016-01-13 22:38:59 -05:00 |
|
Thomas Harte
|
d9a7ef9e46
|
Edging towards audio output; the speaker is given appropriate input and output rates, and then updated with current divider and enabled/disabled status.
|
2016-01-13 21:03:43 -05:00 |
|
Thomas Harte
|
d28abdc037
|
Made an attempt at correct timing, adding support for additional paged ROMs, added file association for .rom.
|
2016-01-12 22:34:26 -05:00 |
|
Thomas Harte
|
84ba4e2900
|
Tidied a little, started working towards supporting speaker output.
|
2016-01-12 22:19:56 -05:00 |
|
Thomas Harte
|
3437781abd
|
Started sketching out an interface for sound generation. Which made me realise that the CRT in CRTDelegate was redundant, since C++ has namespaces.
|
2016-01-12 16:54:09 -05:00 |
|
Thomas Harte
|
6112f4ef6b
|
Withdrew soft filtering for now; until the sampling frequency is passed on it's not sufficiently rigorous.
|
2016-01-12 16:42:16 -05:00 |
|
Thomas Harte
|
75d6ec354b
|
Added some very basic filtering in RGB mode.
|
2016-01-12 16:27:09 -05:00 |
|
Thomas Harte
|
49a36ec9ac
|
Added F12 as break.
|
2016-01-11 22:35:52 -05:00 |
|
Thomas Harte
|
650077feac
|
Pulled a few things out as constants, zoomed in a little. Still in a 4:3 window though.
|
2016-01-11 22:18:34 -05:00 |
|
Thomas Harte
|
e93dbdb463
|
Implemented keyboard input.
|
2016-01-11 19:48:31 -05:00 |
|
Thomas Harte
|
ce916ebd6a
|
Fixed runaway frame generator.
|
2016-01-10 23:32:57 -05:00 |
|
Thomas Harte
|
3d6f20b7b9
|
Output, at last! Though sync is clearly way off.
|
2016-01-09 21:53:33 -05:00 |
|
Thomas Harte
|
09df218c01
|
Some output! Showing that three lines of solid sync isn't smart. But here it is.
|
2016-01-09 21:48:53 -05:00 |
|
Thomas Harte
|
b4f31edea3
|
Made an attempt to get RGB output mode up and running, and showing at least a box where pixels would be.
|
2016-01-09 21:32:56 -05:00 |
|
Thomas Harte
|
a900bfed65
|
Fixed to ensure that frame rendering wraps around, and to properly connect the Electron to its view. Now I need a working pixel shader.
|
2016-01-09 20:34:22 -05:00 |
|
Thomas Harte
|
716bb3281b
|
This at least now connects up a CRT, though it never talks to it.
|
2016-01-07 22:26:49 -05:00 |
|
Thomas Harte
|
47a7654c00
|
Added just enough that this is probably a successful boot. I guess I'm going to need to get invested in graphics next? Hmmm.
|
2016-01-07 21:01:13 -05:00 |
|
Thomas Harte
|
0db8938d27
|
Added the option for the CSCathodeRayView to show only a subsection of the full scan area. Zoomed in a little on the 2600. Put in enough piping to give the Electron sight of its ROMs at least.
|
2016-01-06 23:14:36 -05:00 |
|
Thomas Harte
|
bfd9957c81
|
You now get an Electron only if you ask for a new file. That'll do for now while it's the only thing that one might want to start without supplying a file. The 6502 now starts from a defined point — being reset. The Electron is starting to grow the absolute most simple buds of its memory map.
|
2016-01-06 21:09:49 -05:00 |
|
Thomas Harte
|
c69b3256ba
|
Slightly simplified Swift usage.
|
2016-01-04 23:44:36 -05:00 |
|
Thomas Harte
|
616dc0b57c
|
Okay, so this is the absolute bare minimum about of refactoring and wiring necessary to get the [unimplemented] Electron machine pumping.
|
2016-01-04 23:40:43 -05:00 |
|
Thomas Harte
|
43ab8bbad5
|
Okay, so then here's a first shot at the Objective-C -> C++ bridge for the Electron.
|
2016-01-04 23:16:37 -05:00 |
|
Thomas Harte
|
ab45c1d530
|
Started working on a shell for the Electron emulation, including factoring out the common CRT delegate -> Objective-C bridging, serial dispatch queue and frameskipping logic from the Atari 2600 shell.
|
2016-01-04 23:12:47 -05:00 |
|
Thomas Harte
|
22fa024546
|
Added document XIB.
|
2016-01-03 20:46:39 -05:00 |
|
Thomas Harte
|
aa0714fe27
|
Started sketching out an Acorn Electron emulation, as it's a platform I'm familiar with and will force me to figure out PAL decoding. Factored out NTSC-specific parts of the display decoding logic and hence added RGB output mode.
|
2016-01-03 20:41:43 -05:00 |
|
Thomas Harte
|
96503a3ac5
|
Switched to nicer nullable/nonnull syntax.
|
2016-01-02 17:59:21 -05:00 |
|
Thomas Harte
|
feeedbe33b
|
The standard Xcode versioning updates. Nothing of substance.
|
2016-01-02 17:57:23 -05:00 |
|
Thomas Harte
|
675070c5dd
|
Very, _very_ minor: switched to normal C++ constructor syntax for simple variable initialisation.
|
2015-12-06 16:53:37 -05:00 |
|