Commit Graph

138 Commits (d53bed716af8c1793ed4ba86a987dee69a0ef4a4)

Author SHA1 Message Date
Nick Krichevsky d53bed716a Add conditional relative jumps 2023-11-26 20:26:34 -05:00
Nick Krichevsky 709b0dd82e Implement JR instruction 2023-11-25 22:58:39 -05:00
Nick Krichevsky bc17febf78 Fix bug where jumping to the PC would still advance the PC 2023-11-25 22:55:47 -05:00
Nick Krichevsky 94f3fff94e Undisable erroneously disabled jsmoo tests 2023-11-25 22:08:07 -05:00
Nick Krichevsky 552884b1cb Add conditional return instructions 2023-11-25 22:02:59 -05:00
Nick Krichevsky a3f6025a6f Implement RETI 2023-11-25 21:41:35 -05:00
Nick Krichevsky cd05183bb3 Add JP HL instruction 2023-11-21 23:21:05 -05:00
Nick Krichevsky 49f2e53e4e Implement RST instruction 2023-11-21 22:56:28 -05:00
Nick Krichevsky 01cf67ca35 Simplify control flow parsing logic 2023-11-21 22:11:03 -05:00
Nick Krichevsky fc76248853 Add OrParse trait to simplify chained parsers 2023-11-21 20:29:48 -05:00
Nick Krichevsky 827aef74f8 Add conditional jumps 2023-11-21 20:14:40 -05:00
Nick Krichevsky a5e838dda4 Speed up JSMoo tests by including them in the binary 2023-11-21 19:47:04 -05:00
Nick Krichevsky 6eb5f42ea4 Add conditional CALL instructions 2023-11-21 19:11:39 -05:00
Nick Krichevsky e6adf5d6af Implement unconditional CALL instruction 2023-11-21 15:50:17 -05:00
Nick Krichevsky f5b0ba2a2f Add initial register values to Processor::default 2023-11-21 15:22:53 -05:00
Nick Krichevsky 206f364421 Fix assertion order in jsmoo tests 2023-11-21 15:02:42 -05:00
Nick Krichevsky 409e46eea9 Implement jump immediate instruction 2023-11-21 14:55:40 -05:00
Nick Krichevsky 710e293a0e Move stack push/pop into their own functions 2023-11-21 13:47:32 -05:00
Nick Krichevsky 66c7e4287c Add support for enabling/disabling interrupts 2023-11-20 18:23:33 -05:00
Nick Krichevsky 2db1e58568 Add nop instruction 2023-11-20 18:02:34 -05:00
Nick Krichevsky b5117e7cf9 Remove RunnableInstruction, encode cycles as a result of runtime
This is necessary for certain instructions, since they can take a different number of cycles
2023-11-20 14:25:07 -05:00
Nick Krichevsky f9cdccb5fd Implement DAA instruction 2023-11-19 21:44:18 -05:00
Nick Krichevsky 3a91f76f1e Assert number of cycles taken per instruction in jsmoo tests, correct incorrect cycle counts 2023-11-18 21:21:15 -05:00
Nick Krichevsky 8293244d6c Satisfy clippy 2023-11-18 19:31:12 -05:00
Nick Krichevsky e0745e149f Add complement A register instruction 2023-11-18 19:22:37 -05:00
Nick Krichevsky 1bbd14e5d2 Add support for carry bit set instructions 2023-11-18 19:11:27 -05:00
Nick Krichevsky 78458d6d31 Add store SP in memory instruction 2023-11-18 18:38:42 -05:00
Nick Krichevsky 6f25c91134 Add support for ADD SP e8 2023-11-18 18:05:09 -05:00
Nick Krichevsky 132b46ecef Use i8::from_be_bytes instead of manual twos complement math 2023-11-18 15:34:33 -05:00
Nick Krichevsky 8187596952 Cargo fmt 2023-11-18 15:27:34 -05:00
Nick Krichevsky dab6005233 Fix bug where inc/dec (hl) would have wrong number of cycles) 2023-11-18 15:27:28 -05:00
Nick Krichevsky ec4f9395af Greatly simplify arith8 parsing 2023-11-18 14:43:48 -05:00
Nick Krichevsky 9a6ccf6d48 Simplify load8 parsing to use bitwise ops 2023-11-18 10:02:51 -05:00
Nick Krichevsky 90ec09ff40 Add 16bit inc/dec instructions 2023-11-14 22:15:58 -05:00
Nick Krichevsky 22cfe4ec55 Add 16 bit add instructions 2023-11-12 18:13:51 -05:00
Nick Krichevsky a658fbde1c Fix incorrect calculation for 16 bit half carry flag 2023-11-12 18:13:38 -05:00
Nick Krichevsky f703d195f9 Refactor InstructionRunner trait to be Run trait on each instruction type 2023-11-11 14:54:35 -05:00
Nick Krichevsky 770073489b Convert test_case to test_matrix for arith8 2023-10-01 17:13:55 -04:00
Nick Krichevsky 784d0ac8db Add 16 bit adds to CarryingAdd 2023-06-18 21:42:49 -04:00
Nick Krichevsky 95e07a2b56 Satisfy clippy 2023-06-17 14:45:53 -04:00
Nick Krichevsky 915f33307e add support for dec instructions 2023-06-17 14:36:12 -04:00
Nick Krichevsky a38be4420a Refactor all arith8 operations to use a more compact and readable structure 2023-06-17 14:19:14 -04:00
Nick Krichevsky c25f0cdefa Add support for INC instruction 2023-06-17 14:18:51 -04:00
Nick Krichevsky e1a0cdfe62 Rename all parsers to just Parser 2023-05-21 23:03:11 -04:00
Nick Krichevsky ed9fe8aee4 Implement compare instructions 2023-05-13 23:34:51 -04:00
Nick Krichevsky e841931d55 Add support for OR instructions 2023-05-13 14:41:09 -04:00
Nick Krichevsky 97d6df639f Use simplified arithmetic instructions to simplify parsers 2023-05-13 13:54:20 -04:00
Nick Krichevsky b4a24120a2 Refactor arithmetic instructions to deduplicate implementations
There are now no longer instructions for each individual operand - we break it into operand and operations to be handled individually
2023-05-13 13:33:44 -04:00
Nick Krichevsky b4b72c73dd Refactor arith8 parsers to avoid repetitive parses 2023-05-09 23:04:21 -04:00
Nick Krichevsky 59bafee838 Implement xor instructions 2023-05-09 23:03:09 -04:00