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)