Skip to content

Commit 4b1511c

Browse files
committed
Fix inc/dec (hl) cpu state eval
1 parent 9442c2f commit 4b1511c

1 file changed

Lines changed: 17 additions & 14 deletions

File tree

src/arch/zx48k/optimizer/cpustate.py

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -365,15 +365,17 @@ def inc(self, r):
365365
"""
366366
if not is_register(r):
367367
if r[0] == '(': # a memory position, basically: inc(hl)
368-
r_ = r[1:-1].strip()
369-
v_ = self.getv(self.mem.get(r_, None))
368+
v_ = self.getv(r)
370369
if v_ is not None:
371370
v_ = (v_ + 1) & 0xFF
372-
self.mem[r_] = str(v_)
373371
self.Z = int(v_ == 0) # HINT: This might be improved
374372
self.C = int(v_ == 0)
375373
else:
376-
self.mem[r_] = new_tmp_val()
374+
v_ = new_tmp_val()
375+
self.set_flag(None)
376+
377+
r_ = r[1:-1]
378+
self.mem[self.get(r_)] = str(v_)
377379
return
378380

379381
if self.getv(r) is not None:
@@ -399,16 +401,17 @@ def dec(self, r):
399401
""" Does dec on the register and precomputes flags
400402
"""
401403
if not is_register(r):
402-
if r[0] == '(': # a memory position, basically: inc(hl)
403-
r_ = r[1:-1].strip()
404-
v_ = self.getv(self.mem.get(r_, None))
405-
if v_ is not None:
406-
v_ = (v_ - 1) & 0xFF
407-
self.mem[r_] = str(v_)
408-
self.Z = int(v_ == 0) # HINT: This might be improved
409-
self.C = int(v_ == 0xFF)
410-
else:
411-
self.mem[r_] = new_tmp_val()
404+
v_ = self.getv(r)
405+
if v_ is not None:
406+
v_ = (v_ - 1) & 0xFF
407+
self.Z = int(v_ == 0) # HINT: This might be improved
408+
self.C = int(v_ == 0xFF)
409+
else:
410+
v_ = new_tmp_val()
411+
self.set_flag(None)
412+
413+
r_ = r[1:-1]
414+
self.mem[self.get(r_)] = str(v_)
412415
return
413416

414417
if self.getv(r) is not None:

0 commit comments

Comments
 (0)