Thomas Harte
a42ca290cb
Reformulates the Oric more cleanly into the modern world.
...
Specifically: now that the implementation is contained within the CPP file, there's no need to embed the keyboard, tape player and VIA port handler as private classes. Also the pain of additional syntax is reduced, so the keyboard has been bumped up to a fully data-hiding class. I've also transferred overall ownership of the tape player, AY and keyboard up to the Oric itself, with the VIA merely being wired to them, and added a whole bunch of extra documentation.
2017-09-04 18:22:14 -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
ee71be0e7e
Added the option not to include ready line support in the 6502 core, and took advantage of it in the Electron, Oric and Vic-20 implementations. Also tagged those as forceinline and/or override final where applicable.
2017-08-21 21:56:42 -04:00
Thomas Harte
f68565a33f
Split the static analyser functionality so that it's possible just to ask for the set of media implied by a particular file. Extended ConfigurationTarget so that media alone can be pushed to a machine.
2017-08-17 10:48:29 -04:00
Thomas Harte
148591b7f2
Hid most of the Oric innards, and corrected a potential multi-thread access error emanating from the Mac side of the world.
2017-08-16 14:35:53 -04:00
Thomas Harte
42b5b66305
Remove the 6502's use of runtime polymorphism in favour of ordinary templating.
2017-08-16 11:56:52 -04:00
Thomas Harte
3947347d88
Introduces active input handling for the AY and uses it in the CPC to give proper, active keyboard input, rather than push-on-select, which was only ever a temporary hack. Also maps a few more keys for the Amstrad.
2017-08-15 22:47:17 -04:00
Thomas Harte
bbb17acf3a
Expanded interface so that an external machine caller can request a string be typed without any knowledge of whatever it intends to do re: CharacterMappers. Which is immediately useful in paste functionality.
2017-08-03 11:50:50 -04:00
Thomas Harte
ad3a98387f
Within the Typer
framework: hatched out CharacterMapper
as a distinct thing from the target for keypresses, better to formalise responsibility but also to make it easy cleanly to sever that stuff into its own little part.
2017-08-03 11:42:31 -04:00
Thomas Harte
e6854ff8db
Corrected typo: the input to an AY is BDIR, not BCDIR.
2017-08-01 17:06:57 -04:00
Thomas Harte
4abd62e62b
Standardises on const [Half]Cycles
as the thing called and returned, rather than const [Half]Cycles &
as it's explicitly defined to be only one int
in size, so using a reference is overly weighty.
2017-07-27 22:05:29 -04:00
Thomas Harte
279c369a1f
Switched to Cycles as the result from the 6502 perform_bus_operation
, helping slightly to clarify what you're intended to return and reducing type jumping within the 6502 implementation.
2017-07-25 22:21:09 -04:00
Thomas Harte
296c7cec05
Adopted flush
widely.
2017-07-25 20:42:51 -04:00
Thomas Harte
c1527cc9e2
Reduced back-and-forth between Cycles
and int
s within the Oric.
2017-07-24 22:46:31 -04:00
Thomas Harte
efdac2ce8c
The 6522 is now a ClockReceiver
.
2017-07-24 22:29:09 -04:00
Thomas Harte
55ecb0c022
Converted the Microdisc into a ClockReceiver
.
2017-07-24 21:51:13 -04:00
Thomas Harte
b7f88e8f61
Filter
is now a ClockReciever
, affecting all sound output devices.
2017-07-24 21:29:13 -04:00
Thomas Harte
8a2bdb8d22
Converted the TimedEventLoop and the things that sit atop it into ClockReceiver
s.
2017-07-24 21:19:05 -04:00
Thomas Harte
6369138bd1
Converted the Oric's video output into a ClockReceiver
.
2017-07-22 23:11:30 -04:00
Thomas Harte
2ff157cf7a
Switched CRTMachine over to use Cycles
as an explicit statement of units, and followed through on the effects of that.
2017-07-22 22:17:29 -04:00
Thomas Harte
83628b285b
Experimentally turned the 6502 into a clock receiver. No problem encountered.
2017-07-22 21:52:21 -04:00
Thomas Harte
52d9ddf9e5
Gave the binary tape player a more logical assignment of wave level to output level. Which miraculously appears to have been the issue with the ZX80/81 tape loading — the inconsistency of silences seems to have been the issue.
2017-06-21 22:13:24 -04:00
Thomas Harte
eb8a2de5d6
Settled definitively on flush
as more communicative than synchronise
(and slightly more locale neutral); culled some more duplication from the Z80.
2017-05-15 07:38:59 -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
e01f3f06c8
Completed curly bracket movement.
2017-03-26 14:34:47 -04: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
2003b514aa
Switched the typer to postfix underscores.
2016-12-03 10:55:50 -05:00
Thomas Harte
82899f2f47
Ensured flag setting is atomic, removed duplication of interrupt request versus busy, found better names for the personality testers, unified delegate protocol.
2016-12-01 07:41:52 -05:00
Thomas Harte
73d30b9c00
Corrected typo.
2016-11-25 21:30:45 +08:00
Thomas Harte
12956901d6
Filled in some register mirrors.
2016-11-25 21:28:11 +08:00
Thomas Harte
8be81f6ebd
Supplied disks are given to the Microdisc.
2016-11-25 20:53:38 +08:00
Thomas Harte
4af678d2ed
Gave the Microdisc a clock signal, added just enough of force interrupt to avoid a spurious belief that a type 3 command has started.
2016-11-25 20:51:39 +08:00
Thomas Harte
5be45c6c50
Ensured proper default behaviour.
2016-11-25 20:30:27 +08:00
Thomas Harte
d33f3b9224
This is the broad strokes effort at enabling Microdisc emulation.
2016-11-25 20:15:48 +08:00
Thomas Harte
707763f80b
Added Microdisc storage to the Oric class, switching all instance storage to postfix underscore while I'm here.
2016-11-22 22:22:00 +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
8b40ae03ca
Extended analysis to spot IRQ and NMI vector changes, for titles that simply adjust those then exit. Ensured Oric emulator can type and load quickly on an Oric 1 just as well as on an Atmos.
2016-11-15 11:05:53 +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
9c550c594a
Moved audio work back into its own thread, but this time it queues up an all happens only upon a flush. Hopefully to resolve synchronisation cost concerns.
2016-11-09 21:17:50 -05:00
Thomas Harte
64827931bf
Switched the Oric implementation simply to rely upon the Storage-level tape parser. So now there's only one, authoritative one of those.
2016-11-07 21:57:58 -05:00
Thomas Harte
45b169f341
Made a few mapping fixes, clarified where the default reset code lives, ensured the Oric and Vic clear their keys when the typer ends.
2016-11-05 15:28:03 -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
626e719fab
Added sanity checks on loading quickly.
2016-11-03 22:50:49 -04:00
Thomas Harte
a7e4c0c3b5
Switched to a ROM trap for typing.
2016-11-03 22:21:05 -04:00
Thomas Harte
8c70dc5891
Implemented typer for the Oric, and I'm starting to think the code is a bit too repetitious. Refactoring will be forthcoming. Added CLOAD"" as the loading command for all Oric software.
2016-11-03 22:14:40 -04:00
Thomas Harte
9c2df231ce
Made fast loading optional.
2016-11-03 07:59:30 -04:00
Thomas Harte
e9f1a6a79d
This appears to be it. The secret? Don't worry about the stop bits. They're just processing time. Latch onto the next start.
2016-11-03 07:34:48 -04:00
Thomas Harte
827a919368
This is an initial attempt at reading actual tape data. It loses sync though.
2016-11-02 22:30:53 -04:00
Thomas Harte
419629ee6e
Completed proof of theory for fast loading. It's just an around-the-back direct-to-file hack for now though.
2016-11-02 21:09:49 -04:00
Thomas Harte
bb58caff52
Merge branch 'master' into FastOricTape
2016-10-31 22:11:03 -04:00
Thomas Harte
21604376e6
Reintroduced clocking of the AY and boxed in the range of the master divider a little further.
2016-10-30 22:51:08 -04:00
Thomas Harte
33512988fb
Added a basic cycle skipper plus some notes.
2016-10-30 22:39:47 -04:00
Thomas Harte
4fab794747
Added a direct-to-two-cycles emulation path for 6522 owners.
2016-10-27 21:13:25 -04:00
Thomas Harte
44910d90ba
Adjusted aberrations in semicolons.
2016-10-20 21:20:13 -04:00
Thomas Harte
d335991e60
Shifted code out of the header.
2016-10-20 20:53:17 -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
a608bbebfb
Performed enough wiring to put the onus back onto OricTAP to do appropriate things.
2016-10-15 21:32:59 -04:00
Thomas Harte
6d7c3f6ac2
Factored out the now-sampling binary-level tape player from the Vic and connected it up to the Oric.
2016-10-15 21:21:18 -04:00
Thomas Harte
9730e8247f
Ensured propagation of synchronise messages, added enough to do plain tone. Probably. So: noise and envelopes missing. And it's all far too quiet.
2016-10-15 21:04:21 -04:00
Thomas Harte
51bdac27ae
Made some AY advances; it's now being polled for samples and collecting more information on what it needs to output.
2016-10-15 17:45:39 -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
41e7eff6c8
Added a VIA. Now it's time to find out how poor my 6522 emulation is.
2016-10-13 20:50:55 -04:00
Thomas Harte
c9962f6502
Made an almost complete implementation of video. Just one row of the diagnostics cartridge seems to be off, showing thw wrong character set.
2016-10-13 19:34:29 -04:00
Thomas Harte
69920a4979
Made some basic first attempt at parsing video attributes; ensured lowest byte of ROM is readable.
2016-10-13 07:59:11 -04:00
Thomas Harte
304f0999cd
Made a faulty but hopefully creditable attempt to demarcate an Oric frame.
2016-10-12 21:29:21 -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
4a062c616f
Added enough wiring to get Oric TAPs through to a completely unimplemented Oric emulation.
2016-10-11 22:20:13 -04:00