Thomas Harte
|
311f8c0b47
|
Restored audio.
|
2016-11-16 11:10:07 +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
|
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
|
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
|
b04ba41951
|
Moved code out of header.
|
2016-10-30 20:16:58 -04:00 |
|
Thomas Harte
|
3b52ab0d37
|
Cut some dead state.
|
2016-10-30 20:16:52 -04:00 |
|
Thomas Harte
|
58f888c6ad
|
Limited CRT calls.
|
2016-10-30 16:21:20 -04:00 |
|
Thomas Harte
|
1ff9b474bf
|
Made an attempt to make execution flow through this loop more straightforward for a branch predictor.
|
2016-10-30 15:30:39 -04:00 |
|
Thomas Harte
|
7843a244b0
|
Ensured emulation doesn't enter an infinite loop if the user attempts to read beyond the end of a tape.
|
2016-10-28 22:23:25 -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
|
2eda0b3c86
|
Attempted to simplify the logic behind the most common 6522 usage.
|
2016-10-27 21:06:31 -04:00 |
|
Thomas Harte
|
30d4a7c662
|
Fixed: blinking means ink vanishing and appearing. Nothing else.
|
2016-10-24 21:58:15 -04:00 |
|
Thomas Harte
|
09687a2e2f
|
Removed errant newline.
|
2016-10-20 21:30:12 -04:00 |
|
Thomas Harte
|
44910d90ba
|
Adjusted aberrations in semicolons.
|
2016-10-20 21:20:13 -04:00 |
|
Thomas Harte
|
6292ac5b26
|
Yet more .hpp clean(s)ing.
|
2016-10-20 21:15:21 -04:00 |
|
Thomas Harte
|
c5948ef177
|
Evicted more header-resident code.
|
2016-10-20 21:05:32 -04:00 |
|
Thomas Harte
|
d335991e60
|
Shifted code out of the header.
|
2016-10-20 20:53:17 -04:00 |
|
Thomas Harte
|
9c956f83b8
|
Made it slightly more clear that the correct test is conformed to.
|
2016-10-20 19:23:36 -04:00 |
|
Thomas Harte
|
21cfb39ed9
|
Added 60Hz output support.
|
2016-10-20 07:34:23 -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
|
734b575d30
|
Ensured no attempt to write to pixel storage if none was available.
|
2016-10-19 21:17:27 -04:00 |
|
Thomas Harte
|
ca28e3c64e
|
Ensured the AY is pumped linearly, not exponentially.
|
2016-10-18 22:21:06 -04:00 |
|
Thomas Harte
|
9669a5ec9b
|
Switched to a more authentic interfacing to the AY.
|
2016-10-18 19:32:15 -04:00 |
|
Thomas Harte
|
988bbb5ab1
|
Ensured AY registers aren't rewritten just because of a synchronise event. A stall prior to figuring out proper bus logic, clearly.
|
2016-10-17 08:05:57 -04:00 |
|
Thomas Harte
|
1a57e89ff0
|
Altered phase so that it now merely accounts for accumulated error across a frame. Can probably do better.
|
2016-10-17 08:04:15 -04:00 |
|
Thomas Harte
|
61ad0f8bdc
|
Fixed inverse characters, added an extra per-frame phase change, based on empirical observation, ensured header guard won't become ambiguous.
|
2016-10-16 22:14:01 -04:00 |
|
Thomas Harte
|
a67afb7efa
|
Switched to a tight crop on the pixel part of the display.
|
2016-10-15 21:43:46 -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
|
da9c9ad51a
|
Added in the missing keys; added variable phase to the video.
|
2016-10-14 22:39:27 -04:00 |
|
Thomas Harte
|
288d10c253
|
Got some keyboard reaction.
|
2016-10-14 21:44:15 -04:00 |
|
Thomas Harte
|
3dbb602419
|
This seems to be a bit more likely.
|
2016-10-14 21:36:59 -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
|
8867ad647c
|
Made an attempt at implementing the loopbacks necessary for diagnostics.
|
2016-10-13 21:47:12 -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
|
ae48ad1bb4
|
Meaningful text! Albeit with the initial 'O' of 'Oric' missing. I guess control codes and NMIs next?
|
2016-10-12 22:03:54 -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
|
1f857c619b
|
Fixed timing issues. Static box of frame achieved!
|
2016-10-12 21:42:36 -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 |
|
Thomas Harte
|
922dd6a586
|
Hit up the other two kinds of audio generator.
|
2016-10-07 17:10:00 -04:00 |
|
Thomas Harte
|
de658b70d7
|
That's thread safety, subject to the async task queue being made to work...
|
2016-10-07 17:02:36 -04:00 |
|
Thomas Harte
|
2d26feb073
|
Added mappings for the previously-missing characters @, [ and ].
|
2016-10-04 22:03:53 -04:00 |
|
Thomas Harte
|
f9ee6803df
|
It's likely this should be set at startup too, based on latest info.
|
2016-10-03 22:16:10 -04:00 |
|
Thomas Harte
|
97304e22f0
|
Adjusted per tests on StarDot; it appears the tape interrupts may fire during audio output, as if in tape output mode.
|
2016-10-03 20:03:14 -04:00 |
|
Thomas Harte
|
dae6b45464
|
Ensured the always-on bit of the interrupt status register is indeed on.
|
2016-10-03 19:15:31 -04:00 |
|
Thomas Harte
|
cd1ab09701
|
The Vic-20 now inserts ROMs again.
|
2016-09-29 20:15:25 -04:00 |
|
Thomas Harte
|
79412dc84d
|
Upped MFM clock cycles, switched back to using the typer for the ADFS and adjusted ADFS ROM slots.
|
2016-09-28 21:28:34 -04:00 |
|
Thomas Harte
|
4db086949a
|
Made an attempt to add MFM decoding to the 1770; ensured something is returned when reading the Plus 3 status register again.
|
2016-09-25 21:38:52 -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
|
7f4c78139c
|
Attempted to ensure that ADFS disks get to an appropriately-configured Electron. Not immediately sure why the shift press isn't working; doesn't need to be dealt with immediately.
|
2016-09-25 19:59:46 -04:00 |
|
Thomas Harte
|
6084020ab3
|
Added shift-break as a better way to boot suitable disks. Continued attempting to clean the 1770.
|
2016-09-25 14:11:22 -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
|
8db0030068
|
Fixed ROM loading by the Electron, turned the WD1770 into a 'disk drive' (it'll do for now), persuaded it to get all the way through a very specifically convenient type 1 command.
|
2016-09-20 22:14:33 -04:00 |
|
Thomas Harte
|
3b97b038b9
|
Corrected and sketched out state machine far enough to get to a complaint about unhandled work.
|
2016-09-20 15:56:31 -04:00 |
|
Thomas Harte
|
e358057440
|
Added a WD1770 run_for_cycles call. So I really can now move that as far as reporting that it has no disk?
|
2016-09-20 07:42:17 -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
|
a9e65e9b7a
|
Tweaked disk side density, added call-outs to a WD1770 if the Electron had one (albeit without run_for_cycles yet as I need to figure out the clock rate), added a shell of the basic functions of the WD1770. No implementation yet.
|
2016-09-19 22:06:56 -04:00 |
|
Thomas Harte
|
64f2538b1f
|
Added CRC checking to DFS comprehension; fixed a bunch of places where I'd used Objective-C's #import rather than #include .
|
2016-09-19 08:16:06 -04:00 |
|
Thomas Harte
|
142254a478
|
Resolved failure to open disks that arrive through analysis.
|
2016-09-17 18:11:58 -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
|
e3571e8b9e
|
Added insurance against an infinite loop should the tape be exhausted.
|
2016-09-12 22:22:23 -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
|
e54a2326a3
|
Made attempt to run at zero cost while processing tape input.
|
2016-09-11 17:34:02 -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
|
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
|
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
|
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
|
55ada536ac
|
Added a test call, further mutated result structure.
|
2016-08-27 14:25:16 -04:00 |
|
Thomas Harte
|
dab3580111
|
Experimental: can I afford a lower sampling rate if there's a low-pass filter in effect?
|
2016-08-22 22:18:05 -04:00 |
|
Thomas Harte
|
1541273785
|
Moved responsibility for throwing in a low-pass filter up to the Vic, appropriately.
|
2016-08-21 18:13:31 -04:00 |
|
Thomas Harte
|
99157ad6b2
|
Ensured the 6560 knows its real audio clock on a PAL machine; removed some stray semicolons.
|
2016-08-19 13:35:34 -04:00 |
|
Thomas Harte
|
e985c72ce8
|
Removed a dead special case.
|
2016-08-19 12:23:06 -04:00 |
|
Thomas Harte
|
4edd1214f1
|
This has now successfully loaded its first PRG-as-a-tape.
|
2016-08-19 10:58:42 -04:00 |
|
Thomas Harte
|
2935848f35
|
Adopted header/header/data/data pattern. But still not complete joy.
|
2016-08-17 08:03:34 -04:00 |
|
Thomas Harte
|
dfe9fb83ef
|
This proves that bytes are being deposited properly. For the first 36 anyway, and with no announcement.
|
2016-08-16 21:09:50 -04:00 |
|
Thomas Harte
|
12f8aff65b
|
Lengths I'd taken seem to have been for dipoles, not single poles. So I just doubled the clock rate. Also I was producing each dipole as high then low, when they should probably be low then high. The Vic now at least recognises that something is happening on the tape.
|
2016-08-16 19:46:53 -04:00 |
|
Thomas Harte
|
ca2dc6b6c4
|
Ensured ROMs survive in the new memory model.
|
2016-08-15 19:56:01 -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
|
547aefb696
|
Slightly adjusted PRG strategy, made a note about where next.
|
2016-08-14 16:36:42 -04:00 |
|
Thomas Harte
|
d9016909ed
|
Added some wiring for PAL/NTSC mode switching on the Vic, making an attempt to simplify the whole loop of having different clock rates.
|
2016-08-14 13:33:20 -04:00 |
|
Thomas Harte
|
a547b7e1d8
|
Took basic steps towards supporting memory expansions.
|
2016-08-13 17:21:25 -04:00 |
|
Thomas Harte
|
142774be37
|
Collapsed 6560 template to a more direct loop, albeit with quite a bit still left to fix.
|
2016-08-09 21:10:53 -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
|
3e65450a54
|
Converted the 6560 fully into a template; worked on allowing the typer to run at a much faster rate where hardware has some trigger by which it can request the next key.
|
2016-08-06 14:33:24 -04:00 |
|
Thomas Harte
|
d832e5e10d
|
Reduced 1540 PLL to running at 4Mhz. Which is possibly correct (?) Made minor change to avoid divide if possible.
|
2016-08-02 21:28:50 -04:00 |
|
Thomas Harte
|
5d40d70c92
|
Fixed 6560 addressing error, added an autotyper for Vic disks (more work potentially needed), fixed semantics for testing whether a 6502 is about to reset.
|
2016-08-01 10:32:32 -04:00 |
|
Thomas Harte
|
bc10b3ee9a
|
It appears the problem is as simple as sectors being counted from zero.
|
2016-08-01 10:08:38 -04:00 |
|
Thomas Harte
|
f5e4ea3351
|
Some minor tidying, lots more of the caveman stuff as I try to determine what I'm doing wrong.
|
2016-08-01 09:43:08 -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
|
b43a7381ae
|
Fixed framing and first-byte-after-sync signalling. Hacked together as parts of it are, loading now appears to work!
|
2016-08-01 04:25:11 -04:00 |
|
Thomas Harte
|
41893b5ef6
|
Put in the absolute minimum logic for drive motor emulation. Drive appears to be attempting head steps.
|
2016-07-31 19:38:51 -04:00 |
|
Thomas Harte
|
740ea0b7e2
|
Added overflow-flag setting logic and ensured disk ROM gets through regardless of ROM/disk installation order.
|
2016-07-31 19:33:18 -04:00 |
|
Thomas Harte
|
0945049cd3
|
Made attempt to connect sync detect and then apply appropriate windowing, posting bytes to the appropriate place.
|
2016-07-31 18:29:44 -04:00 |
|
Thomas Harte
|
198fbbedc7
|
Reeled back all appropriate pieces of caveman debugging.
|
2016-07-31 13:42:34 -04:00 |
|
Thomas Harte
|
2332f72875
|
Formalised clock-rate multiplication within disk drives, discovered that the stepper didn't have ideal behaviour for my timed event loop and hence nailed down the semantics a ilttle more.
(obiter: the 1540 now appears to discern the correct sequence of bits. Framing is off in my test printfs but that's neither here nor there).
|
2016-07-31 13:32:30 -04:00 |
|
Thomas Harte
|
8f62211f5e
|
Wired up the 1540 as a PLL delegate. Which prima facie means it should start receiving a bit stream. Except that I clearly have something in the timing way off — either my flux transitions are far too short or I need to significantly increase the clock rate on the PLL.
|
2016-07-29 12:08:18 -04:00 |
|
Thomas Harte
|
89a1881fef
|
Started turning the 1540 into an actual disk drive.
|
2016-07-29 11:03:09 -04:00 |
|
Thomas Harte
|
ada2f073e0
|
Completed handing of the disk all the way to the 1540.
|
2016-07-10 16:24:46 -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
|
4ca6883f7c
|
Disabled attachment of a 1540 again, as I probably need to move to opening an actual disk image next.
|
2016-07-10 08:03:36 -04:00 |
|
Thomas Harte
|
824d9ea92b
|
Added further comments.
|
2016-07-10 08:01:16 -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
|
c0ab45a73d
|
Disabled a bunch of the caveman debug logging.
|
2016-07-09 22:29:11 -04:00 |
|
Thomas Harte
|
f589d639db
|
Okay, so it seems that sync also works the other way around.
|
2016-07-09 22:25:44 -04:00 |
|
Thomas Harte
|
693c8b2438
|
After all that, it seems likely that inputs just aren't inverted for the Vic.
|
2016-07-09 20:03:38 -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
|
7cc4bf3fe7
|
Hit and hope is getting me nowhere. Time to unit test this thing.
|
2016-07-09 15:40:25 -04:00 |
|
Thomas Harte
|
8827597363
|
Messier and messier, but I've at least attempted to implement hardware attention acknowledge.
|
2016-07-08 19:00:39 -04:00 |
|
Thomas Harte
|
9a08ef61cb
|
Still fumbling in the margins: made an effort not to imply that the 1540 is forever reading syncs.
|
2016-07-07 22:13:18 -04:00 |
|
Thomas Harte
|
199c0e27e0
|
Mostly just random guesses now, to be honest. It's approaching the end of my window for the morning.
|
2016-07-07 07:16:36 -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
|
c9479f923b
|
The inversion of truth was clearly just a problematic API. Got explicit. LineLevel might need to become more pervasive.
|
2016-07-07 06:44:13 -04:00 |
|
Thomas Harte
|
dcb86a027a
|
Okay, so the 1540 doesn't toggle the actual attention line. I don't know what it does yet but this helps.
|
2016-07-06 22:31:14 -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
|
4f174786b5
|
Fixed potential buffer overrun.
|
2016-07-06 21:39:09 -04:00 |
|
Thomas Harte
|
f64cd8cfcb
|
Quick fixes properly to declare the DriveVIA, to ensure its interrupts take effect, and to wire ATN IN to CA1 rather than CB2.
|
2016-07-06 20:22:46 -04:00 |
|
Thomas Harte
|
428fcdb978
|
Centralised and improved serial logging.
|
2016-07-06 07:46:21 -04:00 |
|
Thomas Harte
|
8819711bc8
|
Threw in the second VIA as a currently clearly incorrect thing.
|
2016-07-05 22:22:09 -04:00 |
|
Thomas Harte
|
93c2bb80a2
|
Improved a comment, added independent C[A/B]2 input mode.
|
2016-07-05 21:11:51 -04:00 |
|
Thomas Harte
|
6c4fa4ec5d
|
Improved commenting and initial state communication.
|
2016-07-05 20:57:31 -04:00 |
|
Thomas Harte
|
1e6d90de17
|
Made an attempt properly to deal with initial bus state.
|
2016-07-05 20:52:33 -04:00 |
|
Thomas Harte
|
c3b7d24293
|
It appears that the attention line is also wired to CB2. So the ball is back in the 6522's court.
|
2016-07-05 19:19:46 -04:00 |
|
Thomas Harte
|
11fc43aa04
|
Made an attempt to allow the 1540 to talk back to the Vic, and to receive interrupts. Also slightly disambiguated debugging logging.
|
2016-07-05 19:12:43 -04:00 |
|
Thomas Harte
|
d16b79073e
|
Further fleshing out: added a serial port for the serial bus.
|
2016-07-05 17:27:02 -04:00 |
|
Thomas Harte
|
d1eea6943d
|
Ensured the 1540 ROM gets installed, at least.
|
2016-07-05 16:54:25 -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
|
a25fcc7190
|
Made a first attempt at wiring back serial port input.
|
2016-07-05 16:10:54 -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
|
97751a9d86
|
Took the preliminary steps necessary to wire up a serial port.
|
2016-07-05 10:55:47 -04:00 |
|
Thomas Harte
|
a49f2b41cc
|
Added C++ side of things. I think.
|
2016-07-04 21:48:25 -04:00 |
|
Thomas Harte
|
8db44eed3e
|
Added a default implementation of Speaker::skip_samples .
|
2016-07-04 20:48:27 -04:00 |
|
Thomas Harte
|
bfa237397d
|
Settled on assigning to nullptr as the appropriate style for emptying shared_ptrs; fixed the Vic properly to release its output resources.
|
2016-07-04 20:34:11 -04:00 |
|
Thomas Harte
|
88964ceac0
|
Eliminated plain pointer passing for object types.
|
2016-07-04 19:33:55 -04:00 |
|
Thomas Harte
|
82b0bc9b58
|
Discovered that this is another meaningful usage of using .
|
2016-07-04 19:10:10 -04:00 |
|
Thomas Harte
|
7e5b631e30
|
Cut some dead code.
|
2016-07-01 19:02:29 -04:00 |
|
Thomas Harte
|
7fa010a463
|
Attempted to add support for the most basic of control line output, and slightly to optimise the Vic.
|
2016-07-01 19:01:22 -04:00 |
|
Thomas Harte
|
ed8f4d0476
|
Added some minor additional bits of documentation.
|
2016-06-30 08:46:29 -04:00 |
|
Thomas Harte
|
0182b0483a
|
Added a 'power on' flag that is set automatically at construction but can be declined. Saves all that stuff of every machine having to set and then unset the RST line, and fixes an Electron bug related to that.
|
2016-06-29 19:13:24 -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
|
e3e6bbb785
|
Removed the colon again, until I can educate myself a little further.
|
2016-06-26 21:38:03 -04:00 |
|
Thomas Harte
|
69d78dfdb3
|
Removed logging.
|
2016-06-26 21:36:26 -04:00 |
|
Thomas Harte
|
1439ca0580
|
Added a quick automatic issuing of the 'LOAD' command.
|
2016-06-26 21:34:37 -04:00 |
|
Thomas Harte
|
843d1fdca7
|
Added some extra logging while trying to determine what's going on; added interrupt clearing for the control lines.
|
2016-06-26 21:30:06 -04:00 |
|
Thomas Harte
|
2a2c3da5d4
|
Added hardwired tape present bit.
|
2016-06-26 19:50:49 -04:00 |
|
Thomas Harte
|
c306d705e1
|
Made a quick first attempt at all-the-way-through tape wiring for the Vic.
|
2016-06-26 19:43:09 -04:00 |
|
Thomas Harte
|
37ba42a52f
|
Factored out the stuff of playing a tape, started basic sketch of the Vic-related classes.
|
2016-06-26 19:03:57 -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
|
8d9eb30d82
|
So it sounds like the user-port VIA might actually be connected to NMI?
|
2016-06-25 16:31:35 -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
|
2bd71e7e9b
|
.reset is the more normal way to reassign a unique_ptr .
|
2016-06-23 20:52:44 -04:00 |
|
Thomas Harte
|
e05003c176
|
Discovered that the VIC and the VIAs can be simultaneously selected. Adjusted bus appropriately.
|
2016-06-22 17:34:42 -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
|
88e2b382e5
|
Made an attempt at a full and thorough 6532 implementation (and got a bit more explicit about flag size in the 6502).
|
2016-06-20 18:57:35 -04:00 |
|
Thomas Harte
|
b6dd38dad3
|
Corrected type safety warning.
|
2016-06-19 21:41:01 -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
|
65413f078c
|
Factored out the 6532, eventually to make it testable.
|
2016-06-19 18:57:40 -04:00 |
|
Thomas Harte
|
6dd8ea67c9
|
Tested and trimmed delay on typing if resetting.
|
2016-06-19 17:27:23 -04:00 |
|
Thomas Harte
|
05cb47709e
|
Implemented Utility::Typer for the Electron. So that now also receives pastes.
|
2016-06-19 17:25:35 -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
|
3fc472d5cb
|
Expanded typing to include phase for machines that need to go through multiple keypresses to reach a certain state, expanded Vic to be able to type most things (still bodged on lowercase though), and to schedule a 'run' if it's supposed to be loading into RAM, spotting that opportunity actually to do so.
|
2016-06-19 13:46:53 -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
|
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
|
595791cee0
|
Made the base 6522 class more abstract: you must now opt-in if you want the IRQ line to be sent to a delegate.
|
2016-06-18 08:51:18 -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
|
fdc854c0c2
|
Fixed tone channels; made an attempt at loading PRGs that are supposed to go into RAM.
|
2016-06-13 21:49:59 -04:00 |
|
Thomas Harte
|
5fc36b956c
|
Attempted most basic sketching of a container for Vic audio.
|
2016-06-13 19:30:52 -04:00 |
|
Thomas Harte
|
4190b42bbb
|
No need for these to live separately, I think.
|
2016-06-13 18:27:18 -04:00 |
|
Thomas Harte
|
19b2f46488
|
Fixed accesses to colour memory.
|
2016-06-12 11:06:19 -04:00 |
|
Thomas Harte
|
4fec625b19
|
Minor cleaning, implemented clearAllKeys .
|
2016-06-12 10:38:21 -04:00 |
|
Thomas Harte
|
167ed9b8bb
|
Added enough to load a PRG as a ROM.
|
2016-06-11 14:00:12 -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
|
7a241b5ef5
|
Added just enough hopefully to allow implementation of the keyboard-input VIA.
|
2016-06-11 11:34:39 -04:00 |
|
Thomas Harte
|
12d1cac751
|
Merge branch 'master' into Vic-20
|
2016-06-10 18:23:55 -04:00 |
|
Thomas Harte
|
805e2d15c6
|
Fixed timing when clock is divided.
|
2016-06-10 18:20:16 -04:00 |
|
Thomas Harte
|
1ed04fae1e
|
Resolved 6560 addressing.
|
2016-06-10 18:12:21 -04:00 |
|
Thomas Harte
|
f3b1d7de82
|
... and that's a flashing cursor. Keyboard input next!
|
2016-06-09 22:37:59 -04:00 |
|
Thomas Harte
|
30b7db3979
|
Attempted a square wave, made the Vic itself responsible for address manipulation re:the 6560.
|
2016-06-09 22:05:17 -04:00 |
|
Thomas Harte
|
e99055bedb
|
Attempted switching back to a square wave for the composite video and otherwise implementing what's necessary to get to that flashing cursor — the 6560 returns its scan line and the timing bits of the 6522 are appearing.
|
2016-06-08 22:15:24 -04:00 |
|
Thomas Harte
|
581eace478
|
Increased logging slightly, ensured all of colour RAM can be read, slightly improved the 2600 pixel decoder.
|
2016-06-07 22:01:14 -04:00 |
|
Thomas Harte
|
26ab96868a
|
Decided to turn the 6522 into a template, since it's a per-cycle thing with variable behaviour. Added appropriate memory map callouts to hit the two in the Vic. Though they don't yet do anything.
|
2016-06-07 19:15:18 -04:00 |
|
Thomas Harte
|
c7c55528e2
|
Realised that registers appear also to be readable.
|
2016-06-06 20:29:39 -04:00 |
|
Thomas Harte
|
64539a2b24
|
Advanced to having some characters displayed, even though they're obviously very much incorrect and the display is still rolling.
|
2016-06-06 07:35:35 -04:00 |
|
Thomas Harte
|
9e9e50edb1
|
Added guess on how colour memory and the 12-bit bus possibly works.
|
2016-06-05 16:28:06 -04:00 |
|
Thomas Harte
|
2ab21e7a3c
|
Switched to a real (unexpanded) memory map, meaning that nonsense is no longer being supplied to the VIC.
|
2016-06-05 16:00:35 -04:00 |
|
Thomas Harte
|
9566c87532
|
Added enough to the machine that the 6560 can now produce output if it wishes.
|
2016-06-05 12:11:12 -04:00 |
|
Thomas Harte
|
b56482607e
|
Added just enough that the 6502 should now be operating correctly.
|
2016-06-05 11:44:29 -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
|
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
|
604862b20b
|
Fixed playfield/missile and playfield/ball collisions.
|
2016-06-02 22:36:52 -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
|
7aac306a12
|
Quick fix to the polynomials.
|
2016-06-02 19:56:02 -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
|
1e0fcbbee8
|
Made a very basic stab at a couple of the tone generators, added straight-through path for the speaker when input rate exactly equals output rate.
|
2016-06-01 19:53:16 -04:00 |
|
Thomas Harte
|
40c4544fb7
|
Got the basic sound pipeline pumping, just enough for static-level audio seemingly to work. Berzerk VE says "intruder alert, intruder alert", anyway.
|
2016-06-01 19:27:04 -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
|
3fc80ea01f
|
Rethought, hopefully perfecting, sprite timing.
|
2016-05-30 19:56:36 -04:00 |
|
Thomas Harte
|
8b342f77a9
|
Made an attempt further to rationalise timing.
|
2016-05-27 21:51:27 -04:00 |
|
Thomas Harte
|
91d3453cc1
|
Switched to looking backwards rather than forwards.
|
2016-05-27 14:33:08 -04:00 |
|
Thomas Harte
|
106ddae907
|
Sprites are still a pixel off but better; made some attempt to move things outside of the loop.
|
2016-05-25 21:43:19 -04:00 |
|
Thomas Harte
|
40c2c0bd2d
|
Minor simplifications and improvements. Still trying to figure out what's causing the non-linear edge addressing.
|
2016-05-25 21:12:25 -04:00 |
|
Thomas Harte
|
b01b474e36
|
I'm back to thinking that resets are deferred but pixel counts are live.
|
2016-05-25 07:32:25 -04:00 |
|
Thomas Harte
|
758806f924
|
Introduced a separate queue for pixels, which may or may not be correct.
|
2016-05-24 21:39:57 -04:00 |
|
Thomas Harte
|
0b081831a9
|
Set up a pipeline for all pixels that attempts to allow for appropriate delays.
|
2016-05-24 07:58:26 -04:00 |
|
Thomas Harte
|
5c1e594937
|
Realised there's a clocking delay on starting horizontal move. Which fixes Coke Zero.
|
2016-05-22 21:45:40 -04:00 |
|
Thomas Harte
|
c3e719c4ab
|
Added missile-to-player offsetting. Completing the list of graphics-related TODOs.
|
2016-05-22 17:01:56 -04:00 |
|
Thomas Harte
|
4c6d4d899d
|
Ensured that resetting the horizontal timer affects phase.
|
2016-05-22 16:29:53 -04:00 |
|
Thomas Harte
|
df93d7849d
|
Re-enabled the ball.
|
2016-05-22 14:38:14 -04:00 |
|
Thomas Harte
|
0242924fb4
|
Various bits of caveman debugging appearing and disappearing, switched to latching ball behaviour.
|
2016-05-22 14:26:02 -04:00 |
|
Thomas Harte
|
5e220562e4
|
Actually, the four-clock delay, with palette taking effect immediately, appears to be correct. So back to the drawing board on that.
|
2016-05-21 21:44:54 -04:00 |
|
Thomas Harte
|
4eded9b9d0
|
Re-enabled collisions.
|
2016-05-21 13:05:36 -04:00 |
|
Thomas Harte
|
b1c84f5402
|
Counters run every scan line regardless of blank and sync. Also played further with timing.
|
2016-05-21 12:54:39 -04:00 |
|
Thomas Harte
|
470c90428a
|
Switched to two-register implementation of VDELP, etc.
|
2016-05-21 10:26:27 -04:00 |
|