Thomas Harte
|
f5c910beb7
|
Fixed LDIR/LDDR bit 3/5 flags. This seems once again to satisfy FUSE.
|
2017-06-04 14:18:04 -04:00 |
|
Thomas Harte
|
4e014ca748
|
Ensured BIT takes bits 5 and 3 from the computed address if used on indexed pages. That seems to cover 97 failures out of 100?
|
2017-06-04 14:13:38 -04:00 |
|
Thomas Harte
|
1a811b1ab1
|
Eliminated the function call inherent to every decode, and also moved the fixed table of operations into a non-templated base class.
|
2017-06-03 22:19:35 -04:00 |
|
Thomas Harte
|
c26349624c
|
This, of course, should be inline to gain any benefit from the slightly-tortured private implementation.
|
2017-06-03 22:00:57 -04:00 |
|
Thomas Harte
|
b642d9f712
|
Eliminates the 6502's specialised jam handler in favour of the generic trap handler, and simplifies the lookup costs of that as it's otherwise doubling execution costs.
|
2017-06-03 21:54:42 -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
|
3ceef2005b
|
Pulled the Z80 from the MicroOpScheduler inheritance tree as it barely uses the thing, and that allows me to make the MicroOp structure private.
|
2017-06-03 19:17:34 -04:00 |
|
Thomas Harte
|
24c84ca6f5
|
Commented out as-yet-unimplemented features.
|
2017-06-03 19:10:23 -04:00 |
|
Thomas Harte
|
7898f643ac
|
Added bus request/acknowledge logic.
|
2017-06-03 19:09:47 -04:00 |
|
Thomas Harte
|
7bd45d308a
|
Error was simply failure of the interrupt-mode setter. Fixed.
|
2017-06-03 18:58:13 -04:00 |
|
Thomas Harte
|
b3da16911f
|
Tweaked timing of mode 0, per contradictory information. Wrote a failing test of mode 2.
|
2017-06-03 18:42:54 -04:00 |
|
Thomas Harte
|
8c41a0f0ed
|
Added a test to confirm interrupts are disabled, and a response to the interrupt cycle within the all-RAM machine.
|
2017-06-03 17:53:44 -04:00 |
|
Thomas Harte
|
3e9212aaff
|
Plumbed through to allow interrupt tests, wrote an NMI test, corrected the error revealed.
|
2017-06-03 17:41:45 -04:00 |
|
Thomas Harte
|
a2ec902773
|
Made an attempt at implementing all three modes of IRQ.
|
2017-06-03 17:07:05 -04:00 |
|
Thomas Harte
|
1c0130fd02
|
Cleaned up with a macro, and decided to make absolutely sure that DecodeOperation is functioning as intended by removing the MoveToNextProgram from fetch-decode-execute.
|
2017-06-03 12:19:25 -04:00 |
|
Thomas Harte
|
3e3d6f97f4
|
Edged towards being able to implement interrupt mode 0: created a special-case micro-op for incrementing the PC, and formalised that DecodeOperation is a terminal operation.
|
2017-06-03 12:16:21 -04:00 |
|
Thomas Harte
|
9c3bda0111
|
Attempted to round out NMI handling.
|
2017-06-03 11:30:12 -04:00 |
|
Thomas Harte
|
d14902700a
|
Minor syntax and wiring fixes.
|
2017-06-01 22:33:05 -04:00 |
|
Thomas Harte
|
c95c32a9fe
|
Implemented the reset line program and disabled fictitious automatic power-on reset for the Z80 test machine.
|
2017-06-01 22:31:04 -04:00 |
|
Thomas Harte
|
35e045d7a7
|
Made a first attempt at the correct segue into the three main kinds of interrupt, though the programs aren't written yet. So undefined behaviour would abound were an interrupt to occur. But it lets me figure out what effect the check has on performance. I hope little.
|
2017-06-01 22:16:22 -04:00 |
|
Thomas Harte
|
084e1f3d51
|
Added a latching of interrupt status before each bus operation, and reset and power-on inputs.
|
2017-06-01 21:40:08 -04:00 |
|
Thomas Harte
|
5b43cefb85
|
Started filling an appropriate mask variable with the interrupt request status right now. Which is step one towards implementing interrupts.
|
2017-06-01 20:34:52 -04:00 |
|
Thomas Harte
|
aab637c9e7
|
Made check_address_for_trap inlineable.
|
2017-06-01 18:28:34 -04:00 |
|
Thomas Harte
|
7d9b197383
|
Pulled the .get() call for fetch-decode-execute out of the main loop.
|
2017-06-01 18:28:04 -04:00 |
|
Thomas Harte
|
c9dd267ec1
|
Sketched an interface for signalling interrupts and pulled out some of the repetition in flag setting from ADD/ADC/SUB/SBC/CP.
|
2017-05-31 22:51:32 -04:00 |
|
Thomas Harte
|
a5254989f8
|
Rewired the Z80 not to use the program queue, as it's not proven a useful abstraction in practice and doing so yields an immediate 22% speed increase.
|
2017-05-31 20:15:56 -04:00 |
|
Thomas Harte
|
494ce073b5
|
Tests having been fixed by instating proper Z80 cycle counting, removed caveman logging.
|
2017-05-31 19:58:57 -04:00 |
|
Thomas Harte
|
b99e4210ba
|
Eliminated pointless abstraction; I ended up going indirect on instruction pages rather than scheduling methods.
|
2017-05-31 19:57:03 -04:00 |
|
Thomas Harte
|
d3b74cbc91
|
Set proper initial value for number_of_cycles_.
|
2017-05-31 19:55:51 -04:00 |
|
Thomas Harte
|
2f7f11e2e5
|
Added diagnosis props.
|
2017-05-31 06:54:25 -04:00 |
|
Thomas Harte
|
5119997122
|
Made an attempt, flawed so far, to find a neat way for processor subclasses to offer bus management as an inline function.
|
2017-05-30 22:41:23 -04:00 |
|
Thomas Harte
|
b5c1773d59
|
Eliminated another conditional. Albeit a very predictable one.
|
2017-05-30 22:15:43 -04:00 |
|
Thomas Harte
|
dfb5057342
|
Moved repetition group conditions explicitly into the switch statement.
|
2017-05-30 22:12:10 -04:00 |
|
Thomas Harte
|
7bddd294c9
|
Resolved an unpredictable conditional and temporarily disabled the Zexalltest as part of the default suite, since it takes so long to run.
|
2017-05-30 21:03:02 -04:00 |
|
Thomas Harte
|
01f7394f7f
|
Corrected 6502 scheduling when flushing the pipeline.
|
2017-05-30 20:58:07 -04:00 |
|
Thomas Harte
|
5aa8b03349
|
Attempted to regularise the 6502 with the Z80 as to scheduling. I think that at least one bug remains.
|
2017-05-30 20:36:53 -04:00 |
|
Thomas Harte
|
b5ad910b81
|
Merge branch 'Z80' into StraightPointer
|
2017-05-30 19:25:38 -04:00 |
|
Thomas Harte
|
da65bae86e
|
Switched to supplying the bus operation by reference, go guarantee that it isn't null.
|
2017-05-30 19:24:58 -04:00 |
|
Thomas Harte
|
a0189a6fe1
|
Switched to following the current program via address.
|
2017-05-30 18:49:40 -04:00 |
|
Thomas Harte
|
c6185baa99
|
Fixed R incrementation and attempted to make the status flags cheaper to write to.
|
2017-05-29 22:23:19 -04:00 |
|
Thomas Harte
|
9d29cefe75
|
Evicted manual memory management.
|
2017-05-29 21:44:33 -04:00 |
|
Thomas Harte
|
35f535b9a3
|
Noodled around with initial state.
|
2017-05-29 19:25:08 -04:00 |
|
Thomas Harte
|
8bfaa487ce
|
Improved logging of bus operations and corrected placement of the OUT step in that repetition group; was otherwise outputting the wrong side of the B adjustment and therefore to the wrong port (if interpreted as 16 bit).
|
2017-05-29 17:13:24 -04:00 |
|
Thomas Harte
|
0d067d2f01
|
Adjusted OTI/etc timing; 23 failures outstanding.
|
2017-05-29 16:54:45 -04:00 |
|
Thomas Harte
|
d66755fd1e
|
Corrected INI/D[r] timing. Down to 45 failures.
|
2017-05-29 16:50:52 -04:00 |
|
Thomas Harte
|
d290e3d99e
|
Corrected simple logging error. Which mysteriously moves me all the way up to 117 failures (!)
|
2017-05-29 16:35:00 -04:00 |
|
Thomas Harte
|
a6a4c5a936
|
Made an attempt to introduce checking of bus activity against the FUSE tests. Appears to suggest 54 new failures.
|
2017-05-29 15:57:27 -04:00 |
|
Thomas Harte
|
8a8f0cef20
|
With all intentional opcode entry points now covered, commuted XX into NOP to give proper meaning to otherwise undefined codes.
|
2017-05-29 12:25:10 -04:00 |
|
Thomas Harte
|
91dc0d5f4a
|
Adjusted HALT to issue never-ending M1 fetches on the next instruction.
|
2017-05-29 12:20:33 -04:00 |
|