From 03cf68ff44084f76de7eae2fe93731312f493eb7 Mon Sep 17 00:00:00 2001 From: mrb0nk500 Date: Mon, 11 Nov 2019 13:27:17 -0500 Subject: Added comments in opcode.h, and started work on the Sux emulator. --- sux.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 sux.c (limited to 'sux.c') diff --git a/sux.c b/sux.c new file mode 100644 index 0000000..4e64277 --- /dev/null +++ b/sux.c @@ -0,0 +1,31 @@ +#include +#include "opcode.h" +#include +uint64_t a; /* Accumulator. */ +uint64_t y; /* Y index. */ +uint64_t x; /* X index. */ +uint64_t ps; /* Processor status. */ + +uint64_t alu(uint8_t opcode, uint64_t value) { + uint64_t sum; + uint8_t carry, vf; + switch(opcode) { + /* Add with carry. */ + case ADC: + sum = a+value+carry; + vf = (~(a^value) & (a^sum & 0x80)); + carry = (sum < value) ? 1 : 0; + a |= sum; + break; + /* Subtract with carry. */ + case SBC: + sum = a-value-!carry + vf = (a^value) & (a^sum) & 0x80; + carry = (sum > value) ? 1 : 0; + a |= sum; + break; + + + + } +} -- cgit v1.2.3-13-gbd6f