diff options
author | Aki <please@ignore.pl> | 2021-07-07 20:59:24 +0200 |
---|---|---|
committer | Aki <please@ignore.pl> | 2021-07-07 20:59:24 +0200 |
commit | 957c5d4ccf21813002f2cf37f3a9f22b5608b37b (patch) | |
tree | eb7ff161634230b32fd9935af32edf313689c32f | |
parent | 335447dbce78ea02929f18447a11dbfc895b6f8a (diff) | |
download | lc3-957c5d4ccf21813002f2cf37f3a9f22b5608b37b.zip lc3-957c5d4ccf21813002f2cf37f3a9f22b5608b37b.tar.gz lc3-957c5d4ccf21813002f2cf37f3a9f22b5608b37b.tar.bz2 |
Renamed COND to PSR
-rw-r--r-- | lc3.c | 11 |
1 files changed, 6 insertions, 5 deletions
@@ -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; } |