Thomas Harte
92d9805f09
Removes dead Objective-C protocol references.
2017-10-17 20:51:40 -04:00
Thomas Harte
ee179aa7bd
Introduces a joystick analogue to the shared keyboard interface, and implements it for the Vic-20.
2017-10-14 22:36:31 -04:00
Thomas Harte
78ee46270b
Transfers possession of keyboard mappings from the Mac side over to individual machines.
...
Specifically by establishing an intermediate representation of a useful mix between the American and British IBM and Mac keyboard layouts, and routing through that.
2017-10-12 22:25:02 -04:00
Thomas Harte
edb632af52
Sketches first design for generalising keyboard input.
2017-10-09 22:26:39 -04:00
Thomas Harte
97a2be71e3
Introduces flush_tracks to Drive, while switching its interface to using Track::Address and adjusting associated integer types.
2017-10-06 21:45:12 -04:00
Thomas Harte
f40e1fd840
Commutes the best-effort updater into C++11.
2017-10-05 18:09:58 -04:00
Thomas Harte
35705c5345
Factors out bit reversing from the HFE class.
2017-10-03 19:12:45 -04:00
Thomas Harte
ef605eda51
Factors out commonalities in SSD/DSD and ADF implementations.
2017-09-30 20:30:15 -04:00
Thomas Harte
5dd3945695
Factors out the more egregious similarities between ADF and SSD.
2017-09-29 22:07:23 -04:00
Thomas Harte
970c80f2e3
Adds TrackSerialiser.cpp to the project and reorders section.
2017-09-26 22:03:42 -04:00
Thomas Harte
d1ce764201
Provides SectorsFromSegment, a bitstream to sector converter.
2017-09-24 22:41:16 -04:00
Thomas Harte
c7f27b2db4
Renames MFM.[c/h]pp as per its new remit: encoding only.
2017-09-24 21:40:43 -04:00
Thomas Harte
631f630549
Severs the MFM parser from the overweight single MFM.hpp.
2017-09-24 20:31:19 -04:00
Thomas Harte
2a08bd9ecc
Factors shifting plus stateful [M]FM token recognition out of the MFMDiskController.
...
Given the proliferation of MFM-related classes, establishes a subdirectory for them.
2017-09-24 20:07:56 -04:00
Thomas Harte
f789ee4ff0
Introduces a track to segment decoder.
...
This will be needed to make formats like G64 and HFE writeable, but probably also will be usable to speed up static analysis.
2017-09-23 22:39:19 -04:00
Thomas Harte
d72dad2d1a
Severs the DiskImage implementation from its public header file.
2017-09-22 22:46:31 -04:00
Thomas Harte
698e4fe550
Tidies the Disk
file hierarchy.
2017-09-22 22:39:23 -04:00
Thomas Harte
b5406b90cd
Introduces a new class hierarchy for disk images.
...
Increasing independence of format-specific stuff and generic caching without mangling them into a common namespace, and allowing in some cases for a decrease in read/write blocking.
2017-09-22 20:28:11 -04:00
Thomas Harte
231f13d810
Updates to Swift 4 and Xcode 9's recommended project settings.
2017-09-19 23:06:37 -04:00
Thomas Harte
1a96cce26f
Implements SingleTrackDisk, a Disk that contains only a single, specified, track.
2017-09-10 17:34:14 -04:00
Thomas Harte
6547102511
Attempts better to hide C1540 implementation details from the reader.
...
In this case not from the compiler, as it's desireable to keep `run_for` as a non-virtual call, and therefore everything else comes alone for the ride.
2017-09-04 20:58:00 -04:00
Thomas Harte
24b3faa427
Deconstitutes the 6522 into component parts, templated and non-templated.
...
Adjusts the Oric, Vic-20 and C-1540 accordingly, albeit with the quickest possible solutions.
2017-09-04 14:26:04 -04:00
Thomas Harte
ab2bcb939f
Separates 6502Base into its constituent parts.
2017-09-04 11:08:33 -04:00
Thomas Harte
45499050b6
Separates Z80Base.cpp into its component classes.
2017-09-04 11:04:01 -04:00
Thomas Harte
b034d4e6f8
Refactors the Z80 to separate out interface and implementation.
...
Following the pattern just established by the 6502, puts all implementation specifics beyond the visibility of a human reading Z80.hpp and in subfolders so as to promote the idea that they shouldn't go out of their way.
2017-09-01 20:50:24 -04:00
Thomas Harte
b306776ba9
Removes from 6502.hpp all remaining implementation details, making it purely an interface document.
...
Though those details remain visible to files including 6502.hpp through necessity.
2017-09-01 19:46:29 -04:00
Thomas Harte
4af333d5ec
Tidies the 6502 template and folder hierarchy.
...
Specifically: there's now just the one .h file at the top level, giving a clear indication of what a user should read. That separates implementation from interface. It also devolves a lot more to the base class because doing so makes debug builds less of a hassle. The all-RAM 6502 has been shuffled off into a subfolder, to indicate that it's not something you necessarily need know about. Also general documentation improvements have been applied: incorrect citing of the recurring-template pattern has been removed and the meaning of the two BusHandler methods has now accrued at the bus handler.
2017-08-31 22:10:27 -04:00
Thomas Harte
4a66dd9e82
Arranges for the ZX80/81 to get a peek at target configuration prior to construction. I'm as yet undecided on whether to make this the norm.
2017-08-27 16:42:16 -04:00
Thomas Harte
9aa150c338
Abstracts the target platform type out from the static analyser's ownership.
2017-08-27 15:02:13 -04:00
Thomas Harte
49285e9caa
Attempted to implement Sleeper in Drive and therefore in DiskController. Also corrected a couple of nonconformant file names.
2017-08-20 11:54:54 -04:00
Thomas Harte
cedb809c21
Sketched out a protocol designed to save processing time on anything that may sleep — probably just disk controllers for now but one can easily imagine it being applicable to printers, and possibly sound chips with suitable changes in guarantee for sound packet receivers.
2017-08-20 10:53:25 -04:00
Thomas Harte
e6683e7f2d
Added the base skeletal stuff of HFE support.
2017-08-17 21:48:48 -04:00
Thomas Harte
06e31f5102
Consequential to the 6502 change, severs the Atari 2600's cartridge container from its former attempt at runtime polymorphism, in favour of each cartridge's specific hardware being defined as a 'bus extender'.
2017-08-16 12:39:15 -04:00
Thomas Harte
6cfc3daacb
Introduced a test within the disk controller so as not to request illegal tracks from disks, instead automatically substituting an 'unformatted' track. Which is just empty.
2017-08-15 21:52:12 -04:00
Thomas Harte
2d81acb82e
Upped C++ standard to C++14 and added an #if that's intended to use the built-in std::gcd when compiled on C++17 or better. Fixed for new signedness warnings resulting for taking the step to C++14.
2017-08-11 19:18:45 -04:00
Thomas Harte
570d25214e
Made an initial attempt at typer support for the CPC.
2017-08-11 11:21:07 -04:00
Thomas Harte
6a65c7a52a
Started working on a CPC-oriented analyser; for now I just want to be able to make a good guess at the appropriate file to load from a disk. As it turns out, the CPC simply adopts the CP/M format, so a generic parser is appropriate. This is its beginning.
2017-08-10 17:10:21 -04:00
Thomas Harte
4d60b8801c
Started trying to factor out just the PLL stream -> FM/MFM events part that is presently in the WD1770.
2017-08-05 22:26:15 -04:00
Thomas Harte
3e984e75b6
Strung up an empty shell that eventually should contain the 8272, and added appropriate IO decoding to the Amstrad.
2017-08-05 19:45:52 -04:00
Thomas Harte
75c59fefab
Added an empty husk to begin support for Amstrad CPC disk image formats.
2017-08-05 10:02:10 -04:00
Thomas Harte
ad3a98387f
Within the Typer
framework: hatched out CharacterMapper
as a distinct thing from the target for keypresses, better to formalise responsibility but also to make it easy cleanly to sever that stuff into its own little part.
2017-08-03 11:42:31 -04:00
Thomas Harte
681d1e2f8d
Breaking its typer for now, adapted the ZX80/81 to having a Z80, not being one.
2017-08-02 22:12:59 -04:00
Thomas Harte
6ca07f1e28
I guess it might end up living somewhere else, but introduced a header with the compiler-specific stuff to allow me to force things inline.
2017-08-01 22:04:58 -04:00
Thomas Harte
08ad35efd9
It's barely an implementation of the 8255, but ensured that data is bounced into the PortHandler, conveniently assuming the interaction mode used by the CPC.
2017-08-01 16:34:13 -04:00
Thomas Harte
58b98267fc
Formally transferred ownership of PIO accesses to an incoming template, and decided to start being explicit about how to specify the interfaces and provide fallbacks for optional behaviour for the new, clean generation of interfaces. A full-project sweep will inevitably occur but I'll try to tie off this branch first.
2017-08-01 16:15:19 -04:00
Thomas Harte
ace71280a0
Removed implementation file; this is only ever going to be a template.
2017-08-01 16:00:17 -04:00
Thomas Harte
68ceeab610
Created a 6845 class and started pushing data at it and clocking it. It doesn't currently have the concept of a bus but will do, hence the in-header implementation.
2017-07-31 19:56:59 -04:00
Thomas Harte
c0f1313830
Performed sufficient wiring to get to the point where attempting to load a CDT creates an instance of the Amstrad CPC and then fails only because the thing vends a nullptr
CRT.
2017-07-30 22:05:29 -04:00
Thomas Harte
5b5720fac0
Added to the static analyser the most basic through-path for Amstrad CPC content.
2017-07-30 21:15:20 -04:00
Thomas Harte
6ec4e4e3d7
Merge branch 'master' into Memptr
2017-07-25 23:01:34 -04:00
Thomas Harte
75d67ee770
Relocated ClockReceiver.hpp as it's a dependency for parts of the static analyser, and therefore needs to be distinct from the actual emulation parts.
2017-07-25 20:20:55 -04:00
Thomas Harte
1ba3f262a2
Sketched out a template for clock-receiving components to allow them to be implemented in terms of either half or whole cycles.
2017-07-22 21:46:50 -04:00
Thomas Harte
660f0e4c40
Added Objective-C through wiring and a Swift test class for Memptr modifications. So far with a single test, that fails.
2017-07-21 22:52:25 -04:00
Thomas Harte
2a7fc86b15
Enabled stricter warnings.
2017-07-21 20:44:35 -04:00
Thomas Harte
8f72fc4a44
Factored out from the UEF implementation the concept of being a tape that has a queue of pending pulses and manages that queue.
2017-07-16 22:04:40 -04:00
Thomas Harte
238348c885
Performed the initial wiring to announce that this application supports TZX files and to route them to the ZX80/81 static analyser. The TZX class itself does not yet do much beyond basic validation. I think it'll be easiest if it follows in UEF's footsteps in queuing up pulses ahead of time, so some factoring out is now required.
2017-07-16 21:33:11 -04:00
Thomas Harte
368bff1a82
Added a shell class that will one day be able to parse CSW files, plus the logic and metadata to instantiate it when a CSW presents itself.
2017-07-10 21:43:58 -04:00
Thomas Harte
3e5c209039
Added basic Typer support for the ZX80 and '81.
2017-07-09 22:00:34 -04:00
Thomas Harte
28412150e6
Added controls for controlling the tape motor of the ZX80/81, assuming I can find an automatic option.
2017-07-08 17:59:33 -04:00
Thomas Harte
ac37424878
Set up a test class to allow me to discover which of the machine cycle sequences I'm in error on.
2017-06-15 19:06:59 -04:00
Thomas Harte
77aa3c187e
Rebranded ZX80O as ZX80O81P, with an eye to making it accept ZX81 .p files. Adjusted the initial selection part of the static analyser appropriately.
2017-06-11 21:38:32 -04:00
Thomas Harte
7e10c7f9d8
Relocated the ZX80/81 concept of a 'file' out from Tape into Data, given that it's an exact duplicate of memory.
2017-06-08 19:09:51 -04:00
Thomas Harte
60300851ea
Started sketching out a tape parser for ZX80 and '81 files. I think this'll help me to verify whether the .O input is working.
2017-06-07 10:12:13 -04:00
Thomas Harte
8c66e1d99d
Factored out ZX80/81 video and rejigged to ensure it will keep ticking over irrespective of whether the machine is supplying data.
2017-06-06 17:53:23 -04:00
Thomas Harte
b0a7c58287
Fixed project to point to the XIB I actually want to keep; fixed that XIB to have the correct contents.
2017-06-04 17:57:37 -04:00
Thomas Harte
d2637123c4
Added necessary support to get as far as an empty window when attempting to load a piece of ZX80 software.
2017-06-04 17:55:19 -04:00
Thomas Harte
02b7c3d1b0
Added the necessary wiring to get into a ZX80/81-oriented part of the static analyser, which could in principle post a ZX80 target.
2017-06-04 17:04:06 -04:00
Thomas Harte
655809517c
Ensured that there is a subclass of file that is entrusted to load .O/.80 files, and that the code routes such files to it, noting that it should consider whether a ZX80 is required.
2017-06-04 16:37:03 -04:00
Thomas Harte
fd6623b5a5
Attempted to bring a common hierarchy to the Z80 and 6502 test machines, particularly with a view to eliminating the special-case Jam stuff on the 6502.
2017-06-03 21:22:16 -04:00
Thomas Harte
b304c3a4b9
Eliminated the 6502's reliance on the micro-op scheduler.
2017-06-03 20:30:07 -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
244b5ba3c2
Added a proper termination condition for Zexall and, for now, a Mhz counter.
2017-05-30 18:32:38 -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
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
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
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
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
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
57ec756f5b
Started speccing out a unit test for Atari ROM analysis.
2017-03-11 20:33:58 -05:00
Thomas Harte
cd90118a0f
Added two, extraordinarily simple tests.
2017-02-12 20:32:53 -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
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
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
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
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
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
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
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
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
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
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
bddc540c0d
Partitioned and added text for AllSuiteA and Klaus Dormann's tests.
2016-11-01 22:35:15 -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
d8e4c488c2
Started iterating towards having an AY and a fully-working keyboard.
2016-10-14 21:18:03 -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
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
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
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
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
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
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
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
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
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
8c84f3581a
Attempted to bring some uniformity in application of configurations.
2016-09-08 05:32:17 -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
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
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
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
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
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
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
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
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
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
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
6dbf16210b
Switched protocol to meaningful name and corrected its omission from the repository.
2016-07-04 19:19:07 -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
ee19417ded
Made an attempt quickly to implement parsing of the Commodore .TAP file format.
2016-06-25 16:09:32 -04:00
Thomas Harte
4db61d98f4
Killed the .cpp.
2016-06-19 20:21:38 -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
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
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
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
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
e0baaf17f1
Added class prefix.
2016-06-15 08:07:25 -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
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
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
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
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
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
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
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
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
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
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
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
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
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
38ffcaa262
Here, at last, is _some_ audio output, at least.
2016-01-14 20:33:22 -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
e93dbdb463
Implemented keyboard input.
2016-01-11 19:48:31 -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
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
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
bc805a90fe
Wired up joystick directions, at least, and fire button presses get as far as the C++. But there's some latching to figure out before they'll work.
2015-08-18 20:33:24 -04:00
Thomas Harte
a693c081f8
Switched on the appropriate compiler warnings re: signed comparisons and implicit conversions. Fixed all less-than-explicit calls.
2015-08-16 16:08:29 -04:00
Thomas Harte
d19f8ed507
Removed the implicit reset upon 6502 startup, adding a reset line. Hence all tests now pass again. Added an empty shell for timing tests, the all-RAM 6502 now counting bus cycles.
2015-08-13 00:51:06 +01:00
Thomas Harte
3c25ead1f3
Started working out some of my retain cycles and general failures to release. Switched .mm filename so that Xcode will stop getting confused when I try to switch between implementation and interface files.
2015-07-27 21:15:10 -04:00
Thomas Harte
6252f6030f
Switched to idiomatic source name, ensured latest project name is in all appropriate header places, threw texture coordinates slightly into the shader mix.
2015-07-26 15:25:11 -04:00
Thomas Harte
ecb2898bd5
The overall architecture of who has responsibility for what is now very askew but: the CRT now outputs a tightly packed short buffer, with the probable OpenGL destination in mind. So it's now all fixed arithmetic internally. CRTFrame is reduced to a plain C struct with the intention that the OpenGL view will take responsibility for it and stop doing the back-and-forth sprint on getting buffer data. The Atari 2600 now outputs explicit blanks rather than level blacks for its border, so that it's easier visually to debug the CRT in its form as far as it has currently progressed: to drawing lines where the cathode ray gun would run while outputting pixel. I note that I'm still not quite getting vertical sync right yet — I'm just accepting it anywhere in teh frame — but that should be an easy fix.
2015-07-24 23:29:45 -04:00