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
|
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
|
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
|
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
|
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
|
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
|
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
|
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 |
|
Thomas Harte
|
ed7b07c8b1
|
Made an attempt to implement HALT as an operation that merely leaves the PC in place, adding the Z80's output line. Included that flag in FUSE tests. Discovered that it does not think that HALT acts that way. Which is probably correct.
|
2017-05-29 11:54:27 -04:00 |
|
Thomas Harte
|
3f880fa769
|
Fixed [FD/DD][74/75], which always store H or L, never IXh, IXl, IYh or IYl.
|
2017-05-29 11:44:26 -04:00 |
|
Thomas Harte
|
d83dd17738
|
[DD/FD]36 turns out to be a timing error: offset calculation overlaps with value fetch. So the FUSE test was cutting off my implementation early. Fixed.
|
2017-05-29 11:40:56 -04:00 |
|
Thomas Harte
|
c322410783
|
Corrected CP[I/D]R termination logic; all tests now passing to the extent of interrogation.
|
2017-05-29 10:52:54 -04:00 |
|
Thomas Harte
|
b67331e018
|
Fixing the OUT repetition group reduces the code to one failing test.
|
2017-05-29 10:48:53 -04:00 |
|
Thomas Harte
|
a47b339668
|
Made an attempt at OUT[I/D]R. 10 failures remaining. None of which, I guess, are due to unimplemented operations.
|
2017-05-29 10:28:04 -04:00 |
|
Thomas Harte
|
ad56a9215c
|
Implemented IN[I/D]x. 18 failures remaining.
|
2017-05-29 10:12:33 -04:00 |
|
Thomas Harte
|
c56a5344b9
|
Implemented CP[I/D]x.
|
2017-05-29 08:54:00 -04:00 |
|
Thomas Harte
|
1f62cbe21a
|
Reduced LD[I/D}{R} repetition.
|
2017-05-29 08:24:10 -04:00 |
|
Thomas Harte
|
47845f8c19
|
Tried to complete the LD[I/D]{R} group. 32 issues remain.
|
2017-05-28 23:55:54 -04:00 |
|
Thomas Harte
|
409c82ce73
|
Implemented RLD and RRD. 34 failures remaining.
|
2017-05-28 16:46:27 -04:00 |
|
Thomas Harte
|
dc3f5b6211
|
Fixed flag setting for LD A, I and LD A, R, and corrected typo affecting LD DE, (nn).
|
2017-05-28 16:32:10 -04:00 |
|
Thomas Harte
|
fb02b77e63
|
Implemented RETI/RETN. 40 warnings remaining.
|
2017-05-28 16:07:25 -04:00 |
|
Thomas Harte
|
f974d54c7a
|
Implemented IM. 48 failures remain.
|
2017-05-28 15:55:21 -04:00 |
|
Thomas Harte
|
68978c6e25
|
Implemented NEG and filled in the load/store and copy parts of the ED page that roll directly off the tongue. 53 issues outstanding.
|
2017-05-28 15:47:48 -04:00 |
|
Thomas Harte
|
5a4d448cc1
|
Corrected logical flags; now down to 68 failures, all of them on the ED page.
|
2017-05-28 15:09:58 -04:00 |
|
Thomas Harte
|
743eac8c55
|
Implemented EXX to complete the base page. 83 failures.
|
2017-05-28 14:55:14 -04:00 |
|
Thomas Harte
|
6b66c8f304
|
Implemented inputs and outputs, determined how to answer port requests to please FUSE and hence reduced failures to 84.
|
2017-05-28 14:50:51 -04:00 |
|
Thomas Harte
|
c976fbfcd5
|
Implemented the base-page IN and OUT instructions, bringing FUSE test failures down to 91.
|
2017-05-28 14:20:05 -04:00 |
|
Thomas Harte
|
ed3e38ac31
|
Performed some quick tidying.
|
2017-05-28 00:12:42 -04:00 |
|
Thomas Harte
|
76f03900d2
|
Implemented EX HL, (SP) so as, allowing for indexed pages, to bring issues below the psychological 100 barrier. To 99.
|
2017-05-28 00:02:14 -04:00 |
|
Thomas Harte
|
9759a04c7d
|
Timing fixes: the fetch-decode-execute pattern is now per-page, since that on [DD/FD]CB not only doesn't increment R but doesn't take four cycles, so is probably a normal read cycle. Adjusted timing all around.
|
2017-05-27 23:54:06 -04:00 |
|
Thomas Harte
|
0d2d04e17b
|
Seeking proper [F/D]DCB emulation: the offset comes before the final byte of opcode, and adding seems to overlap with the opcode fetch, which does not increment R. Also needs to duplicate the result to visible registers.
|
2017-05-27 21:06:56 -04:00 |
|
Thomas Harte
|
98423c6e41
|
Accepted FUSE's view of bits 3 & 5 from BIT and RES, reducing to 623 issues.
|
2017-05-27 16:19:15 -04:00 |
|
Thomas Harte
|
33c3fa21e3
|
Fixed (HL)/(In + d) CB page modify instructions. Reducing failures to 672.
|
2017-05-27 15:54:24 -04:00 |
|
Thomas Harte
|
2141d52794
|
Corrected typo. Now at 696 failures.
|
2017-05-27 15:41:26 -04:00 |
|
Thomas Harte
|
16b8021401
|
Made a stab at the CB pages.
|
2017-05-27 15:39:22 -04:00 |
|
Thomas Harte
|
151b09b5ca
|
Fixed various other obvious cases for indexing.
|
2017-05-26 23:37:17 -04:00 |
|
Thomas Harte
|
9bc2b48d9b
|
Found a form I like for indexed addressing, applying it only where obvious for now. Which eliminates more than a couple of hundred of remaining failures.
|
2017-05-26 23:23:33 -04:00 |
|
Thomas Harte
|
ab8a98f1df
|
Implemented RST.
|
2017-05-26 07:29:19 -04:00 |
|
Thomas Harte
|
efe354a7b1
|
Fixed half carry after logical operation.s
|
2017-05-25 22:55:04 -04:00 |
|
Thomas Harte
|
d50d3fc837
|
Implemented CPL, SCF and CCF.
|
2017-05-25 22:51:08 -04:00 |
|
Thomas Harte
|
83ee92af1a
|
Made DAA work sufficiently well for the FUSE test.
|
2017-05-25 22:41:05 -04:00 |
|
Thomas Harte
|
ea0ad9fd87
|
Took a shot at DAA, seemingly not to Fuse's liking though.
|
2017-05-25 22:17:48 -04:00 |
|
Thomas Harte
|
ff3c60c0e1
|
Implemented the conditional JRs.
|
2017-05-25 21:51:30 -04:00 |
|
Thomas Harte
|
399703a471
|
Implemented JR.
|
2017-05-25 21:48:28 -04:00 |
|
Thomas Harte
|
82017c4aea
|
Implemented DJNZ.
|
2017-05-25 21:44:24 -04:00 |
|
Thomas Harte
|
bdf07c3dc9
|
Implemented EX AF, AF'.
|
2017-05-25 21:26:32 -04:00 |
|
Thomas Harte
|
598be24644
|
Fixed overflow for 8-bit decrementing.
|
2017-05-25 21:23:38 -04:00 |
|
Thomas Harte
|
c668ff9472
|
Added incrementing of the refresh register.
|
2017-05-25 21:01:52 -04:00 |
|
Thomas Harte
|
6575091a78
|
Fixed Z80's ownership of its fetch-decode-execute program, its habit of scheduling invalidly when hitting an unrecognised operation and the test machine's habit of dereferencing invalidly.
|
2017-05-22 21:50:34 -04:00 |
|
Thomas Harte
|
c3ea6dc1f5
|
Added respect for limiting to the requested number of cycles in the Z80.
|
2017-05-22 19:15:55 -04:00 |
|
Thomas Harte
|
22afa509ca
|
Got to a parsing and towards an attempt to run FUSE tests.
|
2017-05-22 19:14:46 -04:00 |
|
Thomas Harte
|
f2aae72cc2
|
Fixed the 16-bit ADCs and SBCs, added INC (HL) and DEC (HL). Zexall now enters a seemingly-infinite loop. Which is progress, at least.
|
2017-05-21 20:43:36 -04:00 |
|
Thomas Harte
|
fe8db1873c
|
Added 16-bit ADC and SBC table entries; once again extended logging.
|
2017-05-21 20:32:06 -04:00 |
|
Thomas Harte
|
c66c715ac9
|
Starts to try to figure out how to implemented the index register pages, but doesn't yet read offsets.
|
2017-05-21 19:26:40 -04:00 |
|
Thomas Harte
|
5dcfd85642
|
Added a compact and copy stage for instruction pages, both [mostly] eliminating the mistake of letting static data structures contain pointers to instance storage and opening the door for addition of the DD and FD pages.
|
2017-05-21 19:15:52 -04:00 |
|
Thomas Harte
|
c70dfe1b09
|
Implemented the two variations of loading between (nn) and SP.
|
2017-05-21 13:20:28 -04:00 |
|
Thomas Harte
|
232c591655
|
Threw in a little macro documentation and a missing macro.
|
2017-05-21 13:13:21 -04:00 |
|
Thomas Harte
|
790614b544
|
Added EI and DI.
|
2017-05-21 12:53:17 -04:00 |
|
Thomas Harte
|
32c032cd97
|
Implemented a couple of easy-to-add missing base page instructions.
|
2017-05-21 10:18:43 -04:00 |
|
Thomas Harte
|
e48ee16366
|
Continued cleaning efforts, added conditional RET.
|
2017-05-21 10:13:59 -04:00 |
|
Thomas Harte
|
e92d936ce8
|
Added conditional calls.
|
2017-05-21 10:03:46 -04:00 |
|
Thomas Harte
|
4e210c5396
|
Added LD A, (nn).
|
2017-05-21 10:00:10 -04:00 |
|
Thomas Harte
|
3d3e60b1fc
|
Implemented LD (HL), r.
|
2017-05-21 09:56:41 -04:00 |
|
Thomas Harte
|
f3f0e2f1a9
|
Implemented RRA and RRCA.
|
2017-05-21 09:52:19 -04:00 |
|
Thomas Harte
|
78296246e8
|
Added ALU n.
|
2017-05-21 09:46:18 -04:00 |
|
Thomas Harte
|
85b5dd35b1
|
Took a shot at 8-bit arithmetic.
|
2017-05-21 09:43:17 -04:00 |
|
Thomas Harte
|
11cfaa3e3d
|
Performed light syntactic cleaning on the first part of the base page table, eliminated redundant temporary variables, implemented 8-bit increment and decrement.
|
2017-05-21 09:17:30 -04:00 |
|
Thomas Harte
|
103c863534
|
Through temporarily dramatically increased logging, fixed conditional JP.
|
2017-05-20 23:03:52 -04:00 |
|
Thomas Harte
|
6688f83226
|
Took a shot at LDIR.
|
2017-05-20 21:58:24 -04:00 |
|
Thomas Harte
|
01a064dd63
|
Added an empty ED page.
|
2017-05-20 17:29:30 -04:00 |
|
Thomas Harte
|
7b234078ae
|
Implemented EX DE, HL and shuffled to allow instruction pages.
|
2017-05-20 17:04:25 -04:00 |
|
Thomas Harte
|
add02a7897
|
Added LD (nn), A, and reduced double logging to single for now.
|
2017-05-19 23:13:28 -04:00 |
|
Thomas Harte
|
19167df692
|
Consolidated and filled in AND and XOR.
|
2017-05-19 23:03:34 -04:00 |
|
Thomas Harte
|
6766845e21
|
Filled in most of the loads.
|
2017-05-19 22:57:43 -04:00 |
|
Thomas Harte
|
bc3b5f3e35
|
Added 16-bit INCs and DECs. Which don't set flags, so are easy.
|
2017-05-19 22:13:36 -04:00 |
|
Thomas Harte
|
5fe23113ec
|
Moved RET to the correct place, implemented POP AF.
|
2017-05-19 22:03:12 -04:00 |
|
Thomas Harte
|
c55e1c1d17
|
Implemented POP and therefore RET; corrected timing of PUSH.
|
2017-05-19 21:59:45 -04:00 |
|
Thomas Harte
|
eae1f78221
|
Implemented the main page pushes.
|
2017-05-19 19:28:38 -04:00 |
|
Thomas Harte
|
11d05fb3b8
|
Expanded a little on operations, added an implementation or two.
|
2017-05-19 19:18:35 -04:00 |
|
Thomas Harte
|
58efca835f
|
Sought to add a further opcode.
|
2017-05-18 22:53:43 -04:00 |
|
Thomas Harte
|
99f2060fc1
|
Further improved macros.
|
2017-05-18 22:11:54 -04:00 |
|
Thomas Harte
|
5d3ebcb35a
|
Made a first attempt at LD HL, (nn).
|
2017-05-17 22:42:30 -04:00 |
|
Thomas Harte
|
509d011fbe
|
Implemented JP, my first Z80 operation.
|
2017-05-17 22:31:41 -04:00 |
|
Thomas Harte
|
17ffd604bf
|
Made an attempt to get the Z80 at least as far as rejecting an opcode.
|
2017-05-17 21:45:23 -04:00 |
|
Thomas Harte
|
1378ab7278
|
Ensured initial program counter and stack pointer are correct for Zexall, fixed the Z80 to use a compile-time polymorphic call for bus access.
|
2017-05-17 07:36:06 -04:00 |
|
Thomas Harte
|
87a021ec2d
|
Made further attempt to get as fas as having the Z80 attempt to do something.
|
2017-05-16 22:19:40 -04:00 |
|
Thomas Harte
|
d559d8b901
|
Continued edging towards getting the absolute basics of a testable Z80, for test-driven development. Corrected old-fashioned instance naming issues with the corresponding 6502 class and removed an unnecessary source file while at it.
|
2017-05-16 21:19:17 -04:00 |
|
Thomas Harte
|
50bb4f0142
|
There's finally a loop in here, at least.
|
2017-05-15 22:25:52 -04:00 |
|
Thomas Harte
|
7da51602d5
|
Moved flush, added run_for_cycles, which does nothing right now.
|
2017-05-15 07:59:21 -04:00 |
|
Thomas Harte
|
5152517887
|
Added the boilerplate stuff necessary to query registers.
|
2017-05-15 07:55:53 -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
|
f2a1a906ff
|
Adapted what negligible amount there is of the z80 as per the new CPU namespace.
|
2017-05-14 22:15:16 -04:00 |
|
Thomas Harte
|
0808e9b6fb
|
Pulled the 6502 into a CPU namespace, making it an instance of something that has micro-opcodes and schedules them, and factoring out the formulation of a register pair.
|
2017-05-14 22:08:15 -04:00 |
|
Thomas Harte
|
b81a2cc273
|
First tentative steps towards adding a Z80 implementation.
|
2017-05-14 17:46:41 -04:00 |
|