Mercurial > repos > blastem
comparison cpu_dsl.py @ 1744:91aa789e57bd
Fixed half-carry flag calcuation for adc/sbc in new Z80 core
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 05 Feb 2019 19:29:54 -0800 |
parents | 6290c88949bd |
children | a8f04b0ab744 |
comparison
equal
deleted
inserted
replaced
1743:a1663a83dcab | 1744:91aa789e57bd |
---|---|
543 if needsCarry: | 543 if needsCarry: |
544 size *= 2 | 544 size *= 2 |
545 decl,name = prog.getTemp(size) | 545 decl,name = prog.getTemp(size) |
546 dst = prog.carryFlowDst = name | 546 dst = prog.carryFlowDst = name |
547 prog.lastA = params[0] | 547 prog.lastA = params[0] |
548 prog.lastB = '({b} + ({check} ? 1 : 0))'.format(b = params[1], check = carryCheck) | 548 prog.lastB = params[1] |
549 prog.lastBFlow = '(~{b})'.format(b=params[1]) | 549 prog.lastBFlow = '(~{b})'.format(b=params[1]) |
550 else: | 550 else: |
551 dst = params[2] | 551 dst = params[2] |
552 return decl + '\n\t{dst} = {a} + {b} + ({check} ? 1 : 0);'.format(dst = dst, | 552 return decl + '\n\t{dst} = {a} + {b} + ({check} ? 1 : 0);'.format(dst = dst, |
553 a = params[0], b = params[1], check = carryCheck | 553 a = params[0], b = params[1], check = carryCheck |
571 if needsCarry: | 571 if needsCarry: |
572 size *= 2 | 572 size *= 2 |
573 decl,name = prog.getTemp(size) | 573 decl,name = prog.getTemp(size) |
574 dst = prog.carryFlowDst = name | 574 dst = prog.carryFlowDst = name |
575 prog.lastA = params[1] | 575 prog.lastA = params[1] |
576 prog.lastB = '({b} ^ ({check} ? 1 : 0))'.format(b = params[0], check = carryCheck) | 576 prog.lastB = params[0] |
577 prog.lastBFlow = params[0] | 577 prog.lastBFlow = params[0] |
578 else: | 578 else: |
579 dst = params[2] | 579 dst = params[2] |
580 return decl + '\n\t{dst} = {b} - {a} - ({check} ? 1 : 0);'.format(dst = dst, | 580 return decl + '\n\t{dst} = {b} - {a} - ({check} ? 1 : 0);'.format(dst = dst, |
581 a = params[0], b = params[1], check=_getCarryCheck(prog) | 581 a = params[0], b = params[1], check=_getCarryCheck(prog) |