Thomas Harte
b9933f512f
Fixed: the word/long-word bit works the other way around.
2019-04-24 16:30:15 -04:00
Thomas Harte
e214584c76
SWAP should clear overflow and carry.
2019-04-24 13:19:56 -04:00
Thomas Harte
033b8e6b36
ADD/SUBQ #, An shouldn't set flags.
...
Also, temporarily at least, adds a new means for observing CPU behaviour.
2019-04-24 09:59:54 -04:00
Thomas Harte
a08043ae88
Ensures that MOVE.b #, (xxx).l writes only a byte.
...
Also rearranges some of the temporary logging functionality.
2019-04-23 19:01:58 -04:00
Thomas Harte
7c132a3ed5
Ensures 16-bit values of Xn for (d8, An, Xn) are sign extended.
2019-04-22 22:13:02 -04:00
Thomas Harte
20e774be1e
Corrects return address of JSR (An).
2019-04-22 21:11:49 -04:00
Thomas Harte
6d6046757d
Fixes predecrementing MOVEM to leave the proper address in the relevant register.
2019-04-22 15:41:09 -04:00
Thomas Harte
44eb4e51ed
Ensures DBcc properly signals program fetches.
2019-04-21 22:54:20 -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
c66728dce2
Corrects decoding of CMPA.
2019-04-20 21:21:33 -04:00
Thomas Harte
0be9a0cb88
Corrects Scc (and other conditionals) for complex addressing modes.
2019-04-20 18:35:19 -04:00
Thomas Harte
a90f12dab7
Corrects return address for TRAP.
2019-04-20 15:49:32 -04:00
Thomas Harte
ef33b004f9
Corrects word access order of MOVEM.l.
2019-04-20 15:13:12 -04:00
Thomas Harte
2cac4b0d74
Corrects EA usage for ADDA and SUBA.
2019-04-19 23:02:41 -04:00
Thomas Harte
a49f516265
Corrects direction of MOVE [to/from] USP.
2019-04-19 22:41:06 -04:00
Thomas Harte
ee7ae11e90
Implements EXG and SWAP.
2019-04-19 11:27:43 -04:00
Thomas Harte
64c4137e5b
Begins a cleanup procedure on MOVE.
2019-04-18 23:25:19 -04:00
Thomas Harte
8c26d0c6e6
Makes an attempt at RTE and RTR.
2019-04-18 20:50:58 -04:00
Thomas Harte
e49b257e94
Takes a run at TRAP.
2019-04-17 22:21:56 -04:00
Thomas Harte
b8a0f4e831
Implements MOVE to/from USP.
2019-04-17 16:58:59 -04:00
Thomas Harte
0c05983617
Shortens impact of MULU on the instruction stream to correct parsing.
...
I need to look into this.
2019-04-17 15:15:48 -04:00
Thomas Harte
41d800cb63
Fixes ADD/SUB Dn,x to use the proper destination value.
2019-04-17 10:23:47 -04:00
Thomas Harte
cadc0bd509
Mental delusion lifted: JSR doesn't look enough like BSR.
2019-04-17 10:02:14 -04:00
Thomas Harte
82b08d0e3a
Corrects addressing behaviour of nRd[+-].
2019-04-17 08:53:34 -04:00
Thomas Harte
8f77d1831b
Implements MULU and MULS.
2019-04-16 22:16:43 -04:00
Thomas Harte
d8d974e2d7
Consolidates JSR and BSR preparation.
2019-04-16 21:29:37 -04:00
Thomas Harte
9b7ca6f271
Implements the basics of EORI, ORI, ANDI, SUBI and ADDI.
...
Also corrects the BSR return address.
2019-04-16 19:50:10 -04:00
Thomas Harte
8ce018dbab
Adds the necessary runtime support for AND, EOR and OR.
2019-04-16 15:17:40 -04:00
Thomas Harte
37656f14d8
Adds basic addressing modes for [ADD/SUB]Q.
2019-04-16 11:19:45 -04:00
Thomas Harte
dec5535e54
Implements (arguably: fixes) BSR.
2019-04-15 23:20:36 -04:00
Thomas Harte
ebcae25762
Adjusts JSR behaviour and further extends MOVE.
2019-04-15 22:02:52 -04:00
Thomas Harte
5330267d16
Implements BCLR.
2019-04-15 18:11:02 -04:00
Thomas Harte
892476973b
Attempts RO{X}[L/R].
2019-04-15 17:31:58 -04:00
Thomas Harte
1460a88bb3
Takes a run at JSR and RTS.
2019-04-15 15:14:38 -04:00
Thomas Harte
d25ab35d58
Finally gets setw
usage correct.
2019-04-15 12:41:56 -04:00
Thomas Harte
a223cd90a1
Adds predecrement TSTs, increases QL running time, reduces logging.
2019-04-15 12:36:08 -04:00
Thomas Harte
aef92ba29c
Corrects immediate shift count.
2019-04-15 12:25:45 -04:00
Thomas Harte
328d297490
Implements the first few addressing modes for TST.
2019-04-15 10:03:52 -04:00
Thomas Harte
8a09e5fc16
Implements Scc.
2019-04-14 22:39:13 -04:00
Thomas Harte
75d8824e6b
Eliminates implicit type conversion.
2019-04-14 21:02:28 -04:00
Thomas Harte
325af677d3
Implements MOVEM to M with an implicit type conversion.
2019-04-14 20:53:27 -04:00
Thomas Harte
1003e70b5e
Implements MOVEM to R.
2019-04-14 20:02:18 -04:00
Thomas Harte
d70229201d
Advances right up to the lack of MOVEM actions being the final piece.
2019-04-14 14:45:29 -04:00
Thomas Harte
53f75034fc
Commits at least to decoding MOVEM.
2019-04-14 14:09:28 -04:00
Thomas Harte
f48db625a0
Corrects write-back and zero flag for ADD/SUB.l.
2019-04-12 16:41:00 -04:00
Thomas Harte
2ba66c4457
Corrects MOVEA, adds extra test safeguards.
2019-04-12 16:10:17 -04:00
Thomas Harte
9ce48953c1
Improves debugging printout.
2019-04-12 13:45:03 -04:00
Thomas Harte
8e9d7c0f40
Corrects register-relative address calculation.
2019-04-10 23:09:03 -04:00
Thomas Harte
a64948a2ba
Permits zero-bus-op non-terminals.
2019-04-10 22:42:43 -04:00
Thomas Harte
43f619a081
Implements ASL, ASR, LSL and LSR.
2019-04-10 22:31:04 -04:00
Thomas Harte
85d25068a8
Attempts a full implementation of memory shifts.
2019-04-09 22:04:25 -04:00
Thomas Harte
eda88cc462
Implements MOVE to CCR.
2019-04-07 22:24:17 -04:00
Thomas Harte
652f4ebfed
Implements CLR, NEG, NEGX and NOT.
2019-04-07 22:07:39 -04:00
Thomas Harte
06a2f59bd0
Implements DBcc.
2019-04-06 23:21:01 -04:00
Thomas Harte
af02ce9c6e
Attempts to correct various instances of PC-relative addressing.
2019-04-05 23:49:13 -04:00
Thomas Harte
56e42859ab
Ensures the supervisor flag is updated properly on MOVE to SR.
2019-04-05 23:21:50 -04:00
Thomas Harte
2d153359f8
Adds BTST.
2019-04-04 21:43:22 -04:00
Thomas Harte
bfd405613c
Reuse of addresses is also no longer implicit.
2019-04-03 21:27:11 -04:00
Thomas Harte
689ba1d4a2
Effective address adjustments now have to be explicit.
2019-04-03 19:13:10 -04:00
Thomas Harte
39b9d00550
Moves some way towards mapping out ADD and SUB, fixing a bug with address register modification.
2019-04-02 21:50:58 -04:00
Thomas Harte
64f99d83a4
Takes a stab at offering ADD, ADDA, SUB and SUBA operations.
...
Not yet decoded.
2019-04-01 21:21:26 -04:00
Thomas Harte
a9ceef5c37
Improves communication slightly.
2019-03-31 22:27:33 -04:00
Thomas Harte
c6f977ed4b
Corrects CMPI and documentation; implements JMP.
2019-03-31 21:13:26 -04:00
Thomas Harte
bc6349f823
Adds RESET, fixes branches and attempts to fix CMPI.
2019-03-29 23:40:54 -04:00
Thomas Harte
a93a1ae40f
Completes MOVE.blw <ea>, Dn/An/(An)/(An)+, implements MOVEq.
2019-03-29 23:13:41 -04:00
Thomas Harte
42634b500c
Implements LEA.
2019-03-26 22:07:28 -04:00
Thomas Harte
be4b38c76a
Adds BRA and Bcc.
2019-03-25 22:54:49 -04:00
Thomas Harte
7163b1132c
Takes a run at CMPI.
...
Also factors out a couple of mode things, clarifies on where things from the
prefetch are assembled to, and switches to ordering implemented instructions
alphabetically.
2019-03-24 23:05:57 -04:00
Thomas Harte
3ccec1c996
Implements MOVE to SR, fleshing out the final bits of storage for the status word.
2019-03-24 18:20:54 -04:00
Thomas Harte
d7c3d4ce52
Adds test for MOVEA.w (0x1000), A1 and fixes implementation thereof.
2019-03-22 23:27:48 -04:00
Thomas Harte
ed7060a105
Made an initial stab at completing MOVEA.w.
...
I think I'm probably peeking into the prefetch queue incorrectly.
2019-03-22 21:43:51 -04:00
Thomas Harte
db0da4b741
Improves get/set state.
2019-03-22 19:34:17 -04:00
Thomas Harte
c9c16968bb
Implements MOVEA as distinct from MOVE.
...
At least as far as MOVE is implemented, that is.
2019-03-22 19:25:53 -04:00
Thomas Harte
fdc598f2e1
Starts MOVE tests; in pursuit of which talks the 68000 into obeying run lengths.
2019-03-21 22:30:41 -04:00
Thomas Harte
eeb161ec51
Converts the prefetch queue into a 32-bit quantity.
2019-03-19 21:33:52 -04:00
Thomas Harte
21cb7307d0
Adds MOVE #, Dn
and MOVEA An, An
.
...
As well as the scheduling for `(d16,PC), Dd` and `MOVE (d8,As,Xn), Dd` other than the .ls.
2019-03-19 11:53:37 -04:00
Thomas Harte
412a1eb7ee
Takes an initial run at (An)+, -(An), (d16,An) and (d8,An,Xn) addressing modes.
...
With only MOVEs from those to a data register implemented so far.
2019-03-18 22:51:32 -04:00
Thomas Harte
1d801acf72
Switched to a better ABCD fix.
2019-03-17 22:04:32 -04:00
Thomas Harte
0d7bbdad54
Begins a basic get/set state API, allowing some actual unit tests, implying an ABCD fix.
2019-03-17 21:57:00 -04:00
Thomas Harte
53b3d9cf9d
Implements a few more MOVE variants, plus MOVEA.
2019-03-17 14:34:16 -04:00
Thomas Harte
58f035e31a
Makes error more communicative.
2019-03-16 23:05:12 -04:00
Thomas Harte
a8f1d98d40
Small further adjustments; seems likely to be correct now.
2019-03-16 23:01:56 -04:00
Thomas Harte
cf6fa98433
Corrects detection of terminal micro-ops.
2019-03-16 22:50:44 -04:00
Thomas Harte
937b3ca81d
Attempts properly to honour the bus-op and microcycle contract.
2019-03-16 22:36:09 -04:00
Thomas Harte
388d808536
Switches to providing UDS and LDS implicitly via address.
...
Also makes sure that the difference between a non-data cycle that starts without the address strobe active and one that starts with it active can be discerned.
2019-03-16 17:54:58 -04:00
Thomas Harte
720aba3f2d
Adds an implementation of SBCD and slightly neatens syntax for building programs.
2019-03-14 21:22:02 -04:00
Thomas Harte
f9101de956
This might very well be the 68000's first real gasp: performing an ABCD.
2019-03-14 19:32:15 -04:00
Thomas Harte
bb04981280
I'm still dithering on address management, but this seeks fully to implement ABCD and SUBD bus programs.
2019-03-13 21:08:13 -04:00
Thomas Harte
57898ed6dd
This is where my thinking now resides. Two levels of indirection, and consolidated collections.
2019-03-12 22:46:31 -04:00
Thomas Harte
33b53e7605
Settles upon disassembly as the route in, and begins work in that direction.
2019-03-11 22:47:58 -04:00
Thomas Harte
89c71f9119
Introduces EmuTOS, and starts constructing test cases around it.
2019-03-10 18:40:12 -04:00
Thomas Harte
98aa597510
A theoretical 68000 could now perform its /RESET. That's all though.
2019-03-10 17:42:13 -04:00
Thomas Harte
de56d48b2f
Embraces a more communicative 68000 bus.
2019-03-10 17:27:34 -04:00