Thomas Harte
36a9a5288b
Adds drives to the FDC.
2019-10-26 22:39:11 -04:00
Thomas Harte
ac39fd0235
Starts work on the DMA controller.
2019-10-26 21:33:57 -04:00
Thomas Harte
ecc0cea5a1
Added a potential branch for the newer TOS memory map.
2019-10-26 16:52:06 -04:00
Thomas Harte
eae11cbf17
Adds a dummy response for mouse interrogation.
2019-10-26 16:14:24 -04:00
Thomas Harte
2207638287
Adds hsync and vsync interrupts.
2019-10-25 22:42:13 -04:00
Thomas Harte
872897029e
Attempts a complete wiring of 68901 interrupts.
2019-10-25 22:36:01 -04:00
Thomas Harte
51b4b5551d
Actually, I think the 6850 is active low for interrupts.
2019-10-24 22:37:53 -04:00
Thomas Harte
092a61f93e
Does a better job of having just 512kb.
2019-10-21 23:10:30 -04:00
Thomas Harte
e30ba58e0d
Attempts to wire ACIA interrupt signals into the MFP.
2019-10-21 23:02:30 -04:00
Thomas Harte
83d73fb088
The keyboard now responds to a reset on its serial line.
2019-10-20 23:13:44 -04:00
Thomas Harte
75c3e2dacd
Adds basic, incomplete dispatcher for the intelligent keyboard.
2019-10-20 23:07:19 -04:00
Thomas Harte
cf07982a9b
Ensures good serial line and ACIA behaviour.
...
Next stop: having the intelligent keyboard react.
2019-10-20 22:10:05 -04:00
Thomas Harte
313aaa8f95
Silences temporarily.
2019-10-20 20:38:56 -04:00
Thomas Harte
696af5c3a6
Starts to transfer serial line decoding logic into the line itself.
2019-10-20 20:38:56 -04:00
Thomas Harte
9a8352282d
Mostly but not quite fixes serial work.
2019-10-20 20:38:55 -04:00
Thomas Harte
34075a7674
Attempts to tie an intelligent keyboard to the other end of its serial line.
2019-10-20 20:38:55 -04:00
Thomas Harte
ff62eb6dce
The ACIA actually has two clocks, though on an ST they're both 500,000 Hz.
2019-10-20 20:38:55 -04:00
Thomas Harte
374439693e
Ensures serial lines know their writer's clock rate.
2019-10-20 20:38:55 -04:00
Thomas Harte
c4ef33b23f
JustInTimeActors can now specify a clock divider.
2019-10-20 20:38:55 -04:00
Thomas Harte
4e5b440145
Attempts mostly to implement 6850 output.
2019-10-20 20:38:55 -04:00
Thomas Harte
97d44129cb
Ensures all 16 data lines reach the video.
2019-10-20 20:38:55 -04:00
Thomas Harte
b0f5f7bd37
Attempts to start producing actual video.
2019-10-20 20:38:55 -04:00
Thomas Harte
a59ec9e818
Provides a token something where DMA should be.
2019-10-20 20:38:55 -04:00
Thomas Harte
4ead905c3c
Adds an empty shell for the ACIA.
2019-10-20 20:38:55 -04:00
Thomas Harte
127bb043e7
Adds enough logic to advance to an ACIA access error.
2019-10-20 20:38:55 -04:00
Thomas Harte
42ebe06474
Makes an attempt at tracking video sequence points.
2019-10-20 20:38:55 -04:00
Thomas Harte
74fe32da23
Takes a shot at other display outputs.
2019-10-20 20:38:55 -04:00
Thomas Harte
780916551f
Corrects sync generation.
2019-10-20 20:38:54 -04:00
Thomas Harte
305b1211ba
Makes a first attempt to box out the ST display area.
2019-10-20 20:38:54 -04:00
Thomas Harte
2cf52fb89c
Makes an unsuccessful first attempt at some timer functionality.
2019-10-20 20:38:54 -04:00
Thomas Harte
6e1b606adf
Adds a target for MFP read/write operations.
...
Completely without any implementation, so far.
2019-10-20 20:38:54 -04:00
Thomas Harte
3bb0bf9e14
Adds some semblance of an AY.
2019-10-20 20:38:54 -04:00
Thomas Harte
87a6d22894
Starts to formalise the ST memory map a little.
2019-10-20 20:38:54 -04:00
Thomas Harte
484a0ceeb8
Starts forming an Atari ST memory map.
2019-10-20 20:38:54 -04:00
Thomas Harte
da1436abd2
Gifts the Atari ST a 68000 and non-functional video.
2019-10-20 20:38:54 -04:00
Thomas Harte
125f781ced
Starts to create an actual shell of a machine.
2019-10-20 20:38:54 -04:00
Thomas Harte
8b397626bf
Adds a route through the static analyser to the Atari ST.
2019-10-20 20:38:54 -04:00
Thomas Harte
0da1881a07
Adds an Atari ST enumeration and factory method.
2019-10-20 20:38:54 -04:00
Thomas Harte
95c45b5515
This can be const.
2019-10-20 17:22:56 -04:00
Thomas Harte
735586f5f8
Corrects tabs; adds potential output_border optimisation.
2019-10-19 21:20:34 -04:00
Thomas Harte
3c146a3fb2
Adds missing Master System enumerations.
2019-09-30 21:10:30 -04:00
Thomas Harte
4ac3839185
Seeks to ensure that card transitions between real-time and just-in-time don't break timing.
2019-09-28 18:34:04 -04:00
Thomas Harte
fbf95ec2b8
Removes the now empty local namespace.
2019-09-24 22:48:47 -04:00
Thomas Harte
077c7d767f
Shifts essential modifiers up to the Keyboard class.
...
I had forgotten that mappers are not exposed.
2019-09-22 13:48:50 -04:00
Thomas Harte
a416bc0058
Adds an interface allowing keyboard mappers to declare modifiers that are 'essential'.
...
i.e. ones that, if not delivered reliably, will cause the related machine to behave unexpectedly.
2019-09-22 13:14:09 -04:00
Thomas Harte
5f16fa8c08
Removes dead reference to video from VIAPortHandler.
2019-09-21 17:39:45 -04:00
Thomas Harte
e7bf0799b6
Implements every-other-cycle-during-pixels RAM timing.
2019-09-21 17:25:20 -04:00
Thomas Harte
2e24da4614
Implements quick booting, and edges towards exposing it on the Mac.
...
It should already work in kiosk mode.
2019-09-19 22:32:12 -04:00
Thomas Harte
e46601872b
Establishes that the Macintosh offers the quick-boot option.
2019-09-19 21:50:39 -04:00
Thomas Harte
776b819a5a
Adds the SCSI bus as an Activity::Source.
2019-09-19 19:31:22 -04:00
Thomas Harte
962275c22a
Removes clock for NCR 5380.
...
It doesn't have one in real life, and now can live off the time counting that occurs on the SCSI bus.
2019-09-18 20:17:47 -04:00
Thomas Harte
243e40cd79
Adds signalling of DACK.
2019-09-14 13:48:33 -04:00
Thomas Harte
1c7e0f3c9d
Fixes control line modification by the 5380 and SCSI target command chaining.
...
So now I'm back to trying to guess how a SCSI command terminates re: the relative meanings of a message phase and a status phase.
2019-09-02 23:14:37 -04:00
Thomas Harte
318cdb41ea
Adds SCSI bus clocking to the Macintosh, and fixes its internal counting.
2019-09-02 16:03:33 -04:00
Thomas Harte
2f8e31bc8b
Takes a first bash at implementing the new SCSI::Bus timing infrastructure.
2019-09-02 13:00:01 -04:00
Thomas Harte
1a60ced61b
Starts trying to deal with creating a whole volume from merely a partition.
2019-08-25 23:03:54 -04:00
Thomas Harte
ca08716c52
Introduces real hard disk images to the nascent world of SCSI.
2019-08-25 17:03:41 -04:00
Thomas Harte
90cf99b626
Takes a wild swings at speeding up startup.
...
With no success.
2019-08-18 22:40:16 -04:00
Thomas Harte
f668e4a54c
Makes an attempt at getting the 5380 past arbitration.
...
Not entirely successful. Also gets a bit smarter with `final` on ClockingHint::Sources.
2019-08-15 23:14:40 -04:00
Thomas Harte
0f67e490e8
Adjusts NCR address decoding to produce a more plausible initial interaction.
2019-08-11 22:43:25 -04:00
Thomas Harte
895c315fa5
Increases the Mac Plus too 4mb.
2019-08-11 21:41:12 -04:00
Thomas Harte
a90a74a512
Stubs in just enough of the 5380 to get a Mac Plus too boot.
2019-08-11 20:55:20 -04:00
Thomas Harte
bbd4e4d3dc
Enhances memory map fidelity to allow for ROM holes on the Mac Plus.
...
This is how the ROM detects the difference between the Plus and the 512ke, it seems.
2019-08-10 23:53:34 -04:00
Thomas Harte
bac0461f7f
Switches the drive-speed accumulator to the delegate pattern.
...
This allows the Macintosh to ensure that the IWM is kept up just-in-time with drive speed changes.
2019-08-07 21:39:23 -04:00
Thomas Harte
f26a200d78
Switches to a JustInTimeActor to wrap the IWM.
...
Also simplifies potential future usage of the IWM template.
2019-08-07 21:28:02 -04:00
Thomas Harte
0e293e4983
Relocates RAM delay test in order to scrape out a minor performance win.
2019-08-03 21:46:45 -04:00
Thomas Harte
478f2533b5
Corrects 68000 address bus during interrupt acknowledge.
...
All unused bits should be 1, not 0.
2019-08-03 15:38:36 -04:00
Thomas Harte
a07488cf1b
Introduces the Mac Plus memory map.
...
Albeit with no SCSI support yet.
2019-08-02 22:26:40 -04:00
Thomas Harte
d67c5145c0
Introduces RAM access delays.
2019-08-02 22:12:34 -04:00
Thomas Harte
5e76d593af
Switches to table-based address decoding.
2019-08-02 21:30:04 -04:00
Thomas Harte
b93f9b3973
Distinguishes time advancement from bus response.
2019-08-02 19:48:41 -04:00
Thomas Harte
96005261c7
Adds activity lights for Macintosh disk activity.
...
Prompting a quick fix to drives not spinning down.
2019-08-02 16:26:23 -04:00
Thomas Harte
c8177af45a
Introduces missing implementation file.
2019-08-02 16:26:08 -04:00
Thomas Harte
97eff5b16d
Formally distinguishes Macintosh keys from virtual keys.
...
Also: adds mappings for keypad keys, and corrects a couple of
long-standing capitalisation errors in my virtual key set.
2019-08-02 16:15:34 -04:00
Thomas Harte
9bbccd89d3
Adds an extended rationale for current implementation.
...
Also strips some cruft of prior guesses.
2019-07-31 23:19:46 -04:00
Thomas Harte
260843e5b1
Starts poking at a pure total-based formula.
...
On the assumption that any relevant DC offset will fall out in the wash. This causes one 400kb disk to boot in a Macintosh 128kb, another couple to do reasonably well. So it's better than what was here before.
2019-07-31 12:42:23 -04:00
Thomas Harte
e3f22e5787
This should actually be PWM, I think.
...
I'm just unsure of exactly the proper formula, owing to my ignorance on basic electrical engineering. Research ahoy!
2019-07-30 22:02:41 -04:00
Thomas Harte
2aa308efdd
Tweaks magic formulas.
...
The computer now at least seeks outward, until this attempt at drive speed calculation fails.
2019-07-30 16:18:36 -04:00
Thomas Harte
74c18d7861
Attempts a full wiring up of 400kb drive speed.
2019-07-30 15:08:55 -04:00
Thomas Harte
f3dd4b028d
Rolls out JustInTime acting to the MSX and ColecoVision.
2019-07-29 21:22:31 -04:00
Thomas Harte
9859f99513
Adds a route to not bumping time.
2019-07-29 17:21:27 -04:00
Thomas Harte
a43ada82b2
Experiments with a JustInTimeActor in the Master System.
2019-07-29 15:38:41 -04:00
Thomas Harte
5149f290d0
Starts trying to formalise just-in-time execution.
...
Which, at least, simplifies Cycle/HalfCycle to Cycle run_for usage via template.
2019-07-28 21:49:54 -04:00
Thomas Harte
f894d43111
Removes the video and audio base address latches.
...
It now seems to me that these take effect immediately.
2019-07-27 22:23:40 -04:00
Thomas Harte
d8bc20b1ab
Ensures quieter Release behaviour.
2019-07-25 22:55:27 -04:00
Thomas Harte
109d5d16bd
Withdraws optimisation, for further testing in the future.
2019-07-25 10:33:38 -04:00
Thomas Harte
1672dc5946
Reduces frequency of update_video()
calls.
2019-07-25 10:14:52 -04:00
Thomas Harte
0469f0240b
Moves interrupt level selection outside the loop.
2019-07-23 23:13:03 -04:00
Thomas Harte
fcee7779b0
Inserts missing spaces.
2019-07-22 23:11:37 -04:00
Thomas Harte
b4191b6225
Corrects DiskII boot ROM CRCs and improves corresponding declarations.
2019-07-22 23:07:23 -04:00
Thomas Harte
dbee37ab34
Provides extended ROM details for the VIC-20 and Oric.
2019-07-22 22:15:44 -04:00
Thomas Harte
2432151bf8
Puts machine name into ROMMachine::ROM.
...
Also switches to idiomatic exit codes.
2019-07-22 21:14:21 -04:00
Thomas Harte
b2a6682798
Adds extended ROM information for the ZX80 and '81.
2019-07-20 22:46:49 -04:00
Thomas Harte
f3aac603f8
Adds extended Introduces extended ROM details for the C1540, Electron, Master System and MSX.
2019-07-20 21:30:37 -04:00
Thomas Harte
712cb473f7
Adds extended ROM information for the CPC and ColecoVision.
2019-07-20 17:07:59 -04:00
Thomas Harte
3c68a5ca65
Enhances the amount of ROM information posted by the Apple machines.
2019-07-20 16:08:40 -04:00
Thomas Harte
20670bab2f
Expands information included in ROM load requests.
2019-07-19 22:35:22 -04:00
Thomas Harte
b9a34bee51
Substitutes a more efficient inner loop for audio generation.
2019-07-17 14:54:06 -04:00
Thomas Harte
22ee51c12c
Corrects clocking issues around audio, and cuts down queue costs.
2019-07-17 14:41:36 -04:00
Thomas Harte
59b5dfddec
Added logic to allow a second disk to be inserted, at least.
2019-07-11 23:03:02 -04:00
Thomas Harte
cac97a9663
Devolves drive responsibility.
2019-07-10 22:39:56 -04:00
Thomas Harte
2ccb564a7b
Throws some extra logging into place, to test the IWM changeover.
2019-07-10 21:39:45 -04:00
Thomas Harte
d1d0430fce
Eliminates the SonyDrive class.
2019-07-10 17:38:05 -04:00
Thomas Harte
be251d6b03
Begins substituting the DoubleDensityDrive for the Sony.
2019-07-10 16:24:48 -04:00
Thomas Harte
c4ab0bb867
Starts sketching out an interface for IWM drives, eliminating a dangling use of unsigned
as it goes.
2019-07-10 16:05:59 -04:00
Thomas Harte
886946cc8c
Rejigs time-until-event tracking.
2019-07-09 23:27:27 -04:00
Thomas Harte
ed4ddcfda8
Reduces call/return overhead on Microcycle methods.
2019-07-09 19:55:30 -04:00
Thomas Harte
7886cd63bd
Flattens the Macintosh's perform_bus_operation, for legibility.
2019-07-09 19:49:06 -04:00
Thomas Harte
b4a3f66773
Restores just-in-time processing of video.
2019-07-09 18:08:07 -04:00
Thomas Harte
52e96e3d2a
Documents and extends the Video
interface.
...
With the intention of returning it soon to JIT execution.
2019-07-08 22:28:05 -04:00
Thomas Harte
1a9aa60bf7
Ensures no compiler will think this can exit without returning.
2019-07-08 18:13:23 -04:00
Thomas Harte
793c2df7ee
Fixes keypad keys.
2019-07-08 16:38:06 -04:00
Thomas Harte
28de629c08
Fixes the 6522 sufficiently to fix keyboard input.
2019-07-08 15:29:34 -04:00
Thomas Harte
d7329c1bdd
Experiments with a timeout on keyboard interactions.
2019-07-07 14:13:55 -04:00
Thomas Harte
96c0253ee2
Fixes mouse input when a button is pressed; attempts keyboard input.
...
I think the VIA is somehow sending spurious commands.
2019-07-02 21:14:33 -04:00
Thomas Harte
191a7a9386
Reintroduces an empty second drive.
...
This prevents the uninitialised disk error. Which is a clue.
2019-07-02 16:59:00 -04:00
Thomas Harte
fffe6ed2df
Chops the Macintosh down to a single drive to aid in development.
2019-07-02 13:59:30 -04:00
Thomas Harte
6c588a1510
Makes some further random swings at tracking the startup procedure.
2019-06-28 13:03:47 -04:00
Thomas Harte
d81053ea38
Invents some additional PEA tests, and further fixes PEA.
2019-06-27 17:59:03 -04:00
Thomas Harte
506276a2bd
Corrected: use format tag as intended.
2019-06-18 14:04:28 -04:00
Thomas Harte
00c32e4b59
Further miscellaneous changes to debug logging. All temporary.
2019-06-18 10:34:31 -04:00
Thomas Harte
877b46d2c1
Advances IWM/drive emulation very close to the point of 'Welcome to Macintosh'.
2019-06-15 16:08:54 -04:00
Thomas Harte
bde975a3b9
Possibly mights the tiniest bit of headway with 'the IWM'.
...
I'm now pretty sure that my 3.5" drive, which for now is implemented in the IWM (yuck) is just responding to queries incorrectly.
2019-06-13 22:38:09 -04:00
Thomas Harte
f6f9024631
Corrects Macintosh aspect ratio (and framing).
2019-06-13 18:41:38 -04:00
Thomas Harte
5630141ad7
Ensures randomised memory contents at startup.
2019-06-13 13:35:16 -04:00
Thomas Harte
d6150645c0
By hook or by crook, mouse input now works.
2019-06-12 22:19:25 -04:00
Thomas Harte
ccd2cb44a2
Fills in enough of the SCC to allow completion of the Macintosh side of that relationship.
2019-06-12 17:51:50 -04:00
Thomas Harte
c8066b01b6
Restores attempt at proper audio behaviour.
2019-06-11 19:53:22 -04:00
Thomas Harte
ebd59f4dd3
Performs the trivial part of wiring up the Macintosh mouse.
...
SCC still to go.
2019-06-11 19:52:37 -04:00
Thomas Harte
109953ef49
Ensures proper routing of mouse events from Cocoa.
2019-06-11 18:41:41 -04:00
Thomas Harte
124c7bcbb0
Makes the Macintosh a mouse machine, and makes mouse machines detectable.
2019-06-11 18:21:56 -04:00
Thomas Harte
a0321aa6ff
Starts sketching out an emulator interface for mice.
2019-06-11 17:47:24 -04:00
Thomas Harte
9230969f43
Corrects enough of the 6522 and Keyboard to get an initial command seemingly working.
2019-06-10 09:28:27 -04:00
Thomas Harte
697e094a4e
Sketches out the absolute basics of an SCC interface.
2019-06-08 18:47:11 -04:00
Thomas Harte
7591906777
Numerous IWM fixes: the machine now seems to be trying to measure the tachometer.
2019-06-06 18:32:11 -04:00
Thomas Harte
a413ae11cb
Makes some sort of first attempt at having the IWM read.
2019-06-04 22:13:00 -04:00
Thomas Harte
833258f3d7
Sets things up to allow variable rotation rates, and especially Sony 800kb-style self-selecting rates.
2019-06-04 21:41:54 -04:00
Thomas Harte
661fe1e649
Disables logging, for now.
2019-06-03 15:57:53 -04:00
Thomas Harte
85298319fa
Expands towards supporting multiple Macintosh models.
...
To provide another variable to help with bug isolation.
2019-06-03 14:50:36 -04:00
Thomas Harte
881feb1bd3
Adds preliminary parsing of the Disk Copy 4.2 format.
2019-06-02 13:39:25 -04:00
Thomas Harte
3e9fa63799
Adds a receiver for drive-motor control bytes.
...
My new belief is that I'm either reading the buffer from the wrong place, or the 68000 isn't filling it for some reason.
2019-06-01 19:31:32 -04:00
Thomas Harte
983407896c
Ensures consistent audio pipeline.
2019-06-01 17:29:57 -04:00
Thomas Harte
5c08bb810e
In theory provides a full implementation of audio.
...
Albeit seemingly ineffective.
2019-06-01 15:44:29 -04:00
Thomas Harte
17635da812
Pushes Mac audio further towards being able to function.
2019-06-01 15:18:27 -04:00
Thomas Harte
6d985866ee
All proper inputs are now provided to the audio generator.
...
Hopefully. The next job is to generate audio. If that sounds correct, then the disk motor speed question can be tackled.
2019-06-01 15:03:15 -04:00
Thomas Harte
723137c0d4
With some time additions to the 6522, starts wiring in Macintosh audio.
...
The audio buffer is also the disk motor buffer, so this is preparatory to further disk work.
2019-06-01 14:39:40 -04:00
Thomas Harte
4632be4fe5
Wires up the final IWM signal, SEL, preparatory to an implementation.
2019-05-30 12:08:00 -04:00
Thomas Harte
0848fc7e03
Ensures the Mac uses auto vectored interrupts.
2019-05-28 16:24:41 -04:00
Thomas Harte
5e2496d59c
Simplifies and corrects MOVE logic.
2019-05-28 15:17:03 -04:00
Thomas Harte
1d3dde32f2
Ensures final byte of data can be accessed.
2019-05-09 07:24:26 -04:00
Thomas Harte
41740fb45e
Implements video position feedback.
...
At a substantial performance cost for now, but I'll worry about that once things are working.
2019-05-08 16:54:19 -04:00
Thomas Harte
0ad88508f7
Removes ROM mirroring above $600000.
2019-05-08 15:07:03 -04:00
Thomas Harte
8b72043f33
Ensures no uninitialised variables.
2019-05-08 14:54:54 -04:00
Thomas Harte
f0f9722ca6
Takes a first crack at the keyboard's serial protocol.
...
Albeit that without a working shift register in the VIA, this shouldn't really work yet.
2019-05-08 14:20:28 -04:00
Thomas Harte
b5ef88902b
Edges further towards a functioning keyboard.
2019-05-08 13:58:52 -04:00
Thomas Harte
7b466e6d0a
Begins work on a functioning keyboard.
2019-05-08 12:34:26 -04:00
Thomas Harte
7e6d4f5a3e
Adds emulation of the real-time clock.
2019-05-08 00:12:19 -04:00
Thomas Harte
ce099a297a
Eliminates RAM writes in ROM area.
...
I no longer think that logic is correct.
2019-05-07 17:16:22 -04:00
Thomas Harte
949c848815
Broadens address decoding.
...
To no obvious change in output.
2019-05-06 22:57:29 -04:00
Thomas Harte
9bf9b9ea8c
Ensures unmapped peripherals return a consistent value.
2019-05-06 21:32:10 -04:00
Thomas Harte
a131d39451
I now believe only the 6522 is on the synchronous bus.
2019-05-06 14:10:13 -04:00
Thomas Harte
b540f58457
Sets a more appropriate display type.
2019-05-05 23:22:05 -04:00
Thomas Harte
4f5a38b5c5
Adds support for the alternate video buffer.
2019-05-05 23:05:24 -04:00
Thomas Harte
cefc3af08b
Corrects RAM read decoding when the ROM overlay is enabled.
2019-05-05 22:48:40 -04:00
Thomas Harte
96facc103a
Adds an IWM shim and corrects graphics output.
...
... now that there is some.
2019-05-05 21:55:34 -04:00
Thomas Harte
407bbfb379
Pretending the Disk II is an IWM doesn't seem to achieve much.
2019-05-05 18:12:25 -04:00
Thomas Harte
a99ebda513
Takes a first shot at (inverted) Mac video output.
2019-05-04 22:27:58 -04:00
Thomas Harte
537b604fc9
It looks like writes should always go to RAM.
...
Now I see the screen buffer being filled with `0xffff`s, along with what is probably disk motor control data.
2019-05-04 17:29:30 -04:00
Thomas Harte
98bc570bf7
Adds further boilerplate around VIA and IWM decoding.
2019-05-04 17:12:26 -04:00
Thomas Harte
181b77c490
Adds decoding of IWM accesses and respect for the ROM overlay bit.
2019-05-04 16:38:01 -04:00
Thomas Harte
bc9eb82e6f
Adds in VIA access decoding, and a note to self on video.
...
The Mac now proceeds to try to talk to the IWM.
2019-05-04 14:23:37 -04:00
Thomas Harte
29fc024ecd
Starts negotiating the Macintosh memory map.
2019-05-04 12:33:27 -04:00
Thomas Harte
c1695d0910
Adds various notes to self.
2019-05-03 23:55:28 -04:00
Thomas Harte
6d6a4e79c9
Adds the absolute basics to include a 6522 in the Macintosh.
...
Not yet wired to anything.
2019-05-03 23:40:22 -04:00
Thomas Harte
68392ce6f5
Adds enough of a concept of Mac video to get a properly initialised display.
...
Completely empty at present, naturally. Also this is the very first time I've run my 68000 at live speed. From just one data point, it's not terrible. Phew!
2019-05-03 23:25:42 -04:00
Thomas Harte
6873f62ad8
Ensures that the Mac now retains its ROM properly.
2019-05-03 22:39:09 -04:00
Thomas Harte
5f385e15f6
Adds the bare bones necessary to be able to create a Macintosh from File -> New... .
2019-05-03 22:16:07 -04:00
Thomas Harte
8c5d37b6ee
Refactors the AppleII into a sub-namespace to make room for other Apple machines.
2019-05-03 18:14:10 -04:00
Thomas Harte
3cb042a49d
Corrects the carry and extend flags for various long-word operations.
2019-04-21 22:08:18 -04:00
Thomas Harte
c0861c7362
Removes hard-coded assumption about disk ROM list placement.
2019-04-16 11:22:03 -04:00
Thomas Harte
c11a1f9679
Introduces S-Video support for the ColecoVision.
2019-03-02 23:02:37 -05:00
Thomas Harte
d97348dd38
Eliminates dangling uses of printf
.
2019-03-02 18:07:05 -05:00
Thomas Harte
e1ebb7ce9c
Ensures no attempt to call nullptr
.
2019-03-02 17:37:56 -05:00
Thomas Harte
d5b4ddd9e5
Simplifies use_fast_tape_ logic.
2019-03-02 14:54:26 -05:00
Thomas Harte
ef085e3f93
MSX: introduces a tape motor LED, and limits the fast-tape hack to the BIOS.
2019-03-01 18:49:21 -05:00
Thomas Harte
3862a93ff9
Removes mapping of the equals key to break.
...
... because I keep pressing it by accident.
2019-02-28 21:47:12 -05:00
Thomas Harte
816ad0a94c
Introduces region support to the MSX.
2019-02-28 20:54:43 -05:00
Thomas Harte
0536697d8f
Corrects scope of delay.
2019-02-28 18:46:28 -05:00
Thomas Harte
0dbd8a667d
Corrects delay for SN access.
2019-02-27 22:58:43 -05:00
Thomas Harte
d2da55aa03
Adds a single-cycle M1 delay to the ColecoVision.
2019-02-27 22:01:30 -05:00
Thomas Harte
c7c21a7e2c
Sorry, ColecoVision, it's composite only for you.
2019-02-24 22:37:24 -05:00
Thomas Harte
16731661e8
Switches back to being explicit about the colour burst phase.
...
Some sort of phase inversion otherwise seems to be achievable by software that switch modes often.
2019-02-24 22:28:11 -05:00
Thomas Harte
d4134cd0d8
Restores proper colour phase to the Apple II.
...
Given that its timing errors were fixed, this also switches back to using 'default' colour bursts — i.e. ones with implicit phase. The Apple II continues to be an excellent bellwether for issues in the pipeline, and this helps further to ensure that.
2019-02-24 14:35:13 -05:00
Thomas Harte
d0b967ce53
Corrects typo; disables original colour ROM usage for now.
2019-02-18 20:49:54 -05:00
Thomas Harte
ac8d43cc4a
Improves use of const.
2019-02-18 20:21:41 -05:00
Thomas Harte
40ee215b1b
By #define provides a means not to use the real composite samples.
...
To aid with debugging.
2019-02-18 17:20:52 -05:00
Thomas Harte
6c1d94beaa
Adds composite monochrome output for the Oric. At least temporarily.
2019-02-18 16:56:48 -05:00
Thomas Harte
7939897622
Fixes announced timing difference between pixel and border lines.
...
The Apple II sync fault is now fixed!
2019-02-12 22:32:02 -05:00
Thomas Harte
3e0b5433b9
Institutes colour/monochrome screen selection as an Apple II option.
...
Allowing me to test that straight-through composite still works.
2019-02-12 19:52:32 -05:00
Thomas Harte
75987f64ec
Restores Oric audio.
2019-02-05 21:42:39 -05:00
Thomas Harte
097bc7055e
Adds a default selection, for invalid models.
2019-01-25 19:31:44 -05:00
Thomas Harte
6c49953115
Returns gamma correction, and corrects Amstrad CPC brightness.
2019-01-14 22:56:08 -05:00
Thomas Harte
2ef6d4327c
Resolves further build warnings.
2019-01-13 20:37:50 -05:00
Thomas Harte
cc95e587db
Adds virtual destructors for various interface classes.
2019-01-13 19:19:01 -05:00
Thomas Harte
ccb52fb625
Ensures no writes to pixel_pointer_
when allocation has failed.
2019-01-11 22:00:44 -05:00
Thomas Harte
601961deeb
Wires through set_display_type
.
2018-11-29 20:44:21 -08:00
Thomas Harte
b723740f64
Improves PAL colours.
2018-11-29 19:12:20 -08:00
Thomas Harte
6be46ae921
Mostly restores Atari 2600 output. PAL colours need work.
2018-11-29 18:26:05 -08:00
Thomas Harte
a25470ee41
Permits tweaking of PhaseLinkedLuminance8
sampling offset.
2018-11-29 16:29:28 -08:00
Thomas Harte
fd579a019b
Introduces a new scan source data type, motivated by the reasoning used by the Oric.
...
Specifically: it'll allow PCM sampling of the potentially arbitrary composite generation logic of various machines.
2018-11-28 20:40:22 -08:00
Thomas Harte
e39ecf59ef
Restores RGB mode to the Oric. More thought required for composite.
2018-11-28 18:40:43 -08:00
Thomas Harte
5f90941e4e
Starts nudging the Oric back to functionality under the new regime.
...
i.e. one where it can't invent internal pixel formats.
2018-11-28 18:16:13 -08:00
Thomas Harte
64465f97b6
Starts towards reintroducing the proper mechanisms for selecting a display type at runtime.
2018-11-28 17:53:33 -08:00
Thomas Harte
aa22af6f05
Corrects regression in VDP type selection.
2018-11-26 22:40:01 -05:00
Thomas Harte
a6383247fc
Attempts further to ensure proper CRT signalling.
2018-11-26 22:36:22 -05:00
Thomas Harte
b69ac4ec2f
Ensures video stability is no longer affected by transient allocation failures.
2018-11-25 22:04:04 -05:00
Thomas Harte
f4764ea680
Fixes divider.
2018-11-24 16:56:41 -05:00
Thomas Harte
ee89be6730
Removes many stray spaces.
2018-11-23 22:32:32 -05:00
Thomas Harte
770d7e90e9
Removes stale sampling functions.
2018-11-22 22:47:29 -05:00
Thomas Harte
b9aca39eb0
Reintroduces Vic-20 output.
...
Resolving errors in shader generation while I'm here.
2018-11-22 22:43:42 -05:00
Thomas Harte
5a31891048
Returns Amstrad CPC output.
...
Which is probably it until I get some more composite processing back in.
2018-11-15 21:32:22 -05:00
Thomas Harte
8b37496447
Restores video output to the Master System.
2018-11-15 21:21:54 -05:00
Thomas Harte
8f6664f0d7
Starts towards picking an input shader based on data type and pipeline.
2018-11-15 21:02:46 -05:00
Thomas Harte
3eab1f8f7c
Removes a little cruft.
2018-11-14 22:26:31 -05:00
Thomas Harte
9dff13cbbf
Re-establishes output from the machines with 9918s and derivatives.
2018-11-14 22:25:19 -05:00
Thomas Harte
a47de9a884
Returns the Apple II to submitting video.
2018-11-14 22:04:57 -05:00
Thomas Harte
8a699b6072
Kills setup_output
definitively, saving some indirection. set_scan_target
takes its place.
2018-11-14 21:52:57 -05:00
Thomas Harte
6d277fecd5
Makes ScanTarget
a little more communicative and orthogonal.
2018-11-10 19:52:57 -05:00
Thomas Harte
55da1e9c0f
Simplifies semantics a little and starts accepting a single buffer of pixel data.
2018-11-06 22:23:38 -05:00
Thomas Harte
014da41471
Ensures scan positions are communicated with a specified range, and switches manner of pixel clock communication.
2018-11-04 21:06:25 -05:00
Thomas Harte
f6562de325
Possibly adds enough for the Electron and ZX80 to start outputting dummy lines.
...
Let's see!
2018-11-03 23:40:39 -04:00
Thomas Harte
b40211d2c0
Starts to bend 'CRTMachine' to a world farther from owning the GPU relationship.
2018-11-03 21:54:25 -04:00
Thomas Harte
da4d883321
Adds first, incomplete attempts to talk to a ScanTarget from the CRT.
...
Does away with the hassle of `unsigned` while I'm here; that was a schoolboy error.
2018-11-03 19:58:44 -04:00
Thomas Harte
d1fc39d6e5
Attempts to carry on even if no BIOS is found.
2018-10-26 21:19:16 -04:00
Thomas Harte
a8645f80bf
Introduces 'non-exclusive' emulator-space keyboards.
...
i.e. sets of keys that don't amount to an entire keyboard in the modern sense. Experimentally used by the Master System for its reset key.
2018-10-24 21:59:30 -04:00
Thomas Harte
e3fd63b2d7
Adds composite/RGB selection for the Master System.
2018-10-23 22:30:24 -04:00
Thomas Harte
00e7958a97
Separates request for an SMS2 VDP from current graphics mode.
...
Thereby fixes various minor segments of Codemasters games.
2018-10-23 22:19:45 -04:00
Thomas Harte
0822c96ce0
Implements the proper row counter values for > 192 row modes.
2018-10-19 22:37:56 -04:00
Thomas Harte
f49718e94b
Ensures Codemasters games have the proper initial state.
2018-10-19 22:10:14 -04:00
Thomas Harte
6fff514901
Honours the region by implementing Japanese (no BIOS) and European (PAL) paths.
2018-10-19 21:37:05 -04:00
Thomas Harte
c365cca38a
Makes order of operations explicit.
2018-10-18 22:37:04 -04:00
Thomas Harte
10d9cbdeb1
Adds an extra LOG to track the memory map as a potential cause of emulation failure.
2018-10-18 21:48:37 -04:00
Thomas Harte
57f03e660c
Ensures console output only in debug builds.
2018-10-18 21:16:56 -04:00
Thomas Harte
6a2db52adb
Ensures safe Megacart cartridge sizes too.
2018-10-18 21:09:05 -04:00
Thomas Harte
34e13d0d4d
Clears top bit when reading the keypad and ensures no undefined behaviour reading the cartridge.
2018-10-18 21:05:58 -04:00
Thomas Harte
0278d5b61c
Restores SG1000 compatibility.
2018-10-18 19:13:15 -04:00
Thomas Harte
52e02db5c8
Introduces horizontal counter latching and reading.
...
Then makes a new guess at frame IRQ position. But gets it wrong. Hmmm.
2018-10-11 19:56:32 -04:00
Thomas Harte
24644f1dd1
Adds a low-pass filter, picked entirely by ear, and switches to composite output, at least for now.
2018-10-07 18:39:03 -04:00
Thomas Harte
76f3b9f6ba
Fixed: paging writes don't obstruct RAM.
2018-10-06 14:26:00 -04:00
Thomas Harte
7830cda912
Implements line querying and most of line interrupts.
2018-10-04 22:50:35 -04:00
Thomas Harte
e9328d819e
Switches to RGB output, at least for development.
2018-09-30 20:47:03 -04:00
Thomas Harte
2e4c4c3e91
Makes some attempt to implement paging.
...
This causes several of the 32kb games to be recognised by the BIOS and permitted to start, so it really really may be time to stop deferring work on the VDP.
2018-09-24 21:34:42 -04:00
Thomas Harte
7515fa8a98
Ensures the SG1000 gets an unadulterated TMS and SN.
2018-09-23 22:24:29 -04:00
Thomas Harte
5b9e7213dd
Adds a couple of joystick inputs.
...
SG1000 titles all seem to work now.
2018-09-23 21:55:07 -04:00
Thomas Harte
2253341904
This now goes far enough for the only SG1000 game I'm testing to start up.
...
Which hopefully gives me as much as I need to implement joypads, etc, and definitively get to just the VDP being outstanding.
2018-09-23 17:42:42 -04:00
Thomas Harte
e155dc8d6e
Adds fairly standard memory map indirection.
2018-09-23 17:36:30 -04:00
Thomas Harte
00b2db4fb9
Ensures the Master System is informed when it should pretend to be an SG1000.
2018-09-23 16:34:47 -04:00
Thomas Harte
f59386f523
Adds just enough input logic that the Sega sound now plays.
2018-09-23 16:05:37 -04:00
Thomas Harte
38a1fde3bf
Attempts to permit Master System interrupts.
2018-09-23 00:07:46 -04:00
Thomas Harte
40c7a63fb5
Makes a first attempt at Master System IO decoding.
2018-09-22 23:45:29 -04:00
Thomas Harte
d9e65cd758
Ensures neither the ColecoVision nor the MSX processes mid-cycles.
2018-09-21 22:53:35 -04:00
Thomas Harte
e511261b04
Adds a Master System class, so that SMSs can end up somewhere.
2018-09-21 22:13:07 -04:00
Thomas Harte
0d01346ad4
Advertises SMS support and goes as far as realising it needs to spawn a Master System.
2018-09-20 22:04:28 -04:00
Thomas Harte
e7f4babf41
Starts taking steps towards SMS/GG and V9938/9958 support.
...
Specifically: routine namespace stuff, plus the intention to move to a table-based operation+cost version of timing. Reordering works fine for the TMS, and probably would also for the SMS/GG, but it'd be problematic with the command engine of the V9938/9958 and maintaining a consistent set of code is easier.
2018-09-17 22:59:16 -04:00
Thomas Harte
a8b116e217
Turns down the Apple II brightness a little.
...
So that light blue is more like a blue.
2018-09-17 20:08:20 -04:00
Thomas Harte
868cd5cb09
Improves alignment request.
2018-09-12 20:27:02 -04:00
Thomas Harte
dec18d9acc
Restores full pixel output to the Electron.
2018-09-12 20:25:30 -04:00
Thomas Harte
a7508bc2ae
Switching explicitly to one pixel per sample eliminates the need for a bookender.
2018-09-12 20:11:17 -04:00
Thomas Harte
a38639d099
Eliminates the concept of an iCoordinate.
...
Real-life precision appears not to support the idea of sub-sample pixel storage.
2018-09-12 20:05:39 -04:00
Thomas Harte
c6e94bc2a6
Adds missing #include.
2018-09-11 21:55:03 -04:00
Thomas Harte
09dafb1a79
Simplifies and corrects MSX pasting behaviour.
...
Now including mapping \n -> \r.
2018-09-11 21:46:28 -04:00
Thomas Harte
36ff2105fb
Updates C-style (bool) casts.
2018-09-11 20:37:15 -04:00
Thomas Harte
5445081c96
It's eight pixels that aren't written in double output mode, not four.
2018-09-10 21:38:05 -04:00
Thomas Harte
6e9cd5cb21
Resolves over-brightness created by over-composition.
2018-09-09 20:30:43 -04:00
Thomas Harte
8d79a1e381
Corrected fat low-res implementation.
...
As per comment of awanderin that "the odd addresses don't get their pixels auto-shifted by the hardware as with normal lo-res".
2018-09-09 10:06:21 -04:00
Thomas Harte
d70f5da94e
Attempts an implementation of the undocumented low res + annunciator 3 graphics mode.
2018-09-08 20:51:15 -04:00
Thomas Harte
afeec09902
Gets explicit about DHIRES being annunciator 3; implements four-colour high res mode.
2018-09-06 23:23:19 -04:00
Thomas Harte
0526ac2ee2
Slightly increases const correctness.
...
The converters from source data to output pixels do not modify the source data. It's a shame there's no `restrict` in C++.
2018-09-05 11:36:40 -04:00
Thomas Harte
8b661fb90f
Introduces an extra level of indirection for text mapping.
2018-09-05 10:26:08 -04:00
Thomas Harte
dab7d3db1b
Merge branch 'master' into 40ColumnTextCorruption
2018-08-30 20:24:47 -04:00
Thomas Harte
d53b38ec7e
Correction: 0xc011 et al get the keyboard value in bits 0 to 6 and the switch value in bit 7.
2018-08-30 20:18:36 -04:00
Thomas Harte
2e04c4442c
Adds mirrors for keyboard input and the audio toggle.
2018-08-27 21:14:21 -04:00
Thomas Harte
0599d9602e
Ensures no out-of-bounds accesses to inverses on a IIe.
2018-08-26 23:02:31 -04:00
Thomas Harte
234bef2a88
Adds default
to make it explicit that fetch_address
is initialised.
2018-08-24 22:26:03 -04:00
Thomas Harte
1f491e764e
Nudges visible area slightly to the right.
2018-08-24 22:08:11 -04:00
Thomas Harte
114a43a662
Corrects improper indexing for byte shift.
2018-08-24 21:58:43 -04:00
Thomas Harte
97a89aaf4d
Factors out the stuff of deferred action interleaving, as I suspect it'll come in handy.
2018-08-24 20:04:26 -04:00
Thomas Harte
61e46399dc
About face! There should be no delay on serialisation, but a delay on interpretation-affecting soft switches.
2018-08-22 21:56:45 -04:00
Thomas Harte
e802f6ecc2
Rearranges draw loop around a fixed-size 568-sample line buffer.
2018-08-19 22:31:04 -04:00
Thomas Harte
4209f0e044
Moves memory collection into a separate loop.
2018-08-18 21:54:24 -04:00
Thomas Harte
33576aa2c4
Uses const
to ensure output_* are properly constrained.
2018-08-18 21:36:48 -04:00
Thomas Harte
17bf1a64bf
Moves the stuff of generating pixels out of the main loop.
2018-08-18 18:44:31 -04:00
Thomas Harte
f8d46f8f3d
Merge branch 'master' into AppleDelay
2018-08-18 14:11:21 -04:00
Thomas Harte
be01203cc1
Starts to expand the range of supported 6502s.
...
This fully implements the NES 6502 because, well, it's virtually no extra work, and ensures that RDY takes effect on write cycles on 65C02s.
2018-08-13 22:17:22 -04:00
Thomas Harte
4d1d19a464
Introduces an intermediate buffer for Apple II video data.
2018-08-12 20:36:08 -04:00
Thomas Harte
cb47575860
Eliminates stdout chatter.
2018-08-11 22:57:54 -04:00
Thomas Harte
434d184503
Corrects deserialisation order in double low res mode.
2018-08-11 22:53:06 -04:00
Thomas Harte
7374c665e8
Corrects regression in video flushing.
2018-08-11 19:57:39 -04:00
Thomas Harte
60ab6f0c2a
Entrusts IIe-esque character logic fully to the ROM.
2018-08-11 18:45:39 -04:00
Thomas Harte
a13eb351da
Implements the Enhanced IIe, other than some text selection errors.
2018-08-11 10:26:30 -04:00