summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAki <please@ignore.pl>2021-07-07 20:59:24 +0200
committerAki <please@ignore.pl>2021-07-07 20:59:24 +0200
commit957c5d4ccf21813002f2cf37f3a9f22b5608b37b (patch)
treeeb7ff161634230b32fd9935af32edf313689c32f
parent335447dbce78ea02929f18447a11dbfc895b6f8a (diff)
downloadlc3-957c5d4ccf21813002f2cf37f3a9f22b5608b37b.zip
lc3-957c5d4ccf21813002f2cf37f3a9f22b5608b37b.tar.gz
lc3-957c5d4ccf21813002f2cf37f3a9f22b5608b37b.tar.bz2
Renamed COND to PSR
-rw-r--r--lc3.c11
1 files 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;
}