From 957c5d4ccf21813002f2cf37f3a9f22b5608b37b Mon Sep 17 00:00:00 2001 From: Aki Date: Wed, 7 Jul 2021 20:59:24 +0200 Subject: Renamed COND to PSR --- lc3.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lc3.c b/lc3.c index 759361a..49cbd5d 100644 --- a/lc3.c +++ b/lc3.c @@ -24,7 +24,7 @@ enum Register REGISTER_R6, REGISTER_R7, REGISTER_PC, - REGISTER_COND, + REGISTER_PSR, REGISTER_COUNT, }; @@ -167,17 +167,18 @@ void write_memory(const uint16_t address, const uint16_t value) void update_cond(const uint16_t reg) { + registers[REGISTER_PSR] &= 0xfff8; if (registers[reg] == 0) { - registers[REGISTER_COND] = FLAG_ZRO; + registers[REGISTER_PSR] |= FLAG_ZRO; } else if (registers[reg] >> 15) { - registers[REGISTER_COND] = FLAG_NEG; + registers[REGISTER_PSR] |= FLAG_NEG; } else { - registers[REGISTER_COND] = FLAG_POS; + registers[REGISTER_PSR] |= FLAG_POS; } } @@ -241,7 +242,7 @@ void step(const uint16_t instruction) { const uint16_t offset = sign_extend(instruction & 0x1ff, 9); const uint16_t flag = (instruction >> 9) & 0x07; - if (flag & registers[REGISTER_COND]) + if (flag & registers[REGISTER_PSR]) { registers[REGISTER_PC] += offset; } -- cgit v1.1