comparison cpu_dsl.py @ 1725:89ee53a149ea

Miscellaneous small fixes to new Z80 core
author Michael Pavone <pavone@retrodev.com>
date Fri, 01 Feb 2019 22:16:56 -0800
parents b757ebc59851
children b0e01e64d76d
comparison
equal deleted inserted replaced
1724:9a74c2d05672 1725:89ee53a149ea
256 ) 256 )
257 self.impls['c'] = _impl 257 self.impls['c'] = _impl
258 self.outOp = (2,) 258 self.outOp = (2,)
259 return self 259 return self
260 def cUnaryOperator(self, op): 260 def cUnaryOperator(self, op):
261 def _impl(prog, params): 261 def _impl(prog, params, rawParams, flagUpdates):
262 return '\n\t{dst} = {op}{a};'.format( 262 dst = params[1]
263 dst = params[1], a = params[0], op = op 263 decl = ''
264 if op == '-':
265 if flagUpdates:
266 for flag in flagUpdates:
267 calc = prog.flags.flagCalc[flag]
268 if calc == 'carry':
269 needsCarry = True
270 elif calc == 'half-carry':
271 needsHalf = True
272 elif calc == 'overflow':
273 needsOflow = True
274 if needsCarry or needsOflow or needsHalf:
275 size = prog.paramSize(rawParams[1])
276 if needsCarry:
277 size *= 2
278 decl,name = prog.getTemp(size)
279 dst = prog.carryFlowDst = name
280 prog.lastA = 0
281 prog.lastB = params[0]
282 prog.lastBFlow = params[0]
283 return decl + '\n\t{dst} = {op}{a};'.format(
284 dst = dst, a = params[0], op = op
264 ) 285 )
265 self.impls['c'] = _impl 286 self.impls['c'] = _impl
266 self.outOp = (1,) 287 self.outOp = (1,)
267 return self 288 return self
268 def addImplementation(self, lang, outOp, impl): 289 def addImplementation(self, lang, outOp, impl):