OpenCores
URL https://opencores.org/ocsvn/a-z80/a-z80/trunk

Subversion Repositories a-z80

[/] [a-z80/] [trunk/] [tools/] [dongle/] [daa/] [simulate-daa.py] - Diff between revs 3 and 8

Show entire file | Details | Blame | View Log

Rev 3 Rev 8
Line 1... Line 1...
#!/usr/bin/env python
#!/usr/bin/env python3
#
#
# This script simulates 'daa' calculation and generates values for numbers 0-255.
# This script simulates 'daa' calculation and generates values for numbers 0-255.
# These can be compared with a real Z80 run values.
# These can be compared with a real Z80 run values.
#
#
import sys
import sys
Line 13... Line 13...
    # F:00 A:00 -> 00 F:44
    # F:00 A:00 -> 00 F:44
    inF = int(line[2:4], 16)
    inF = int(line[2:4], 16)
    inA = int(line[7:9], 16)
    inA = int(line[7:9], 16)
    outA = int(line[13:15], 16)
    outA = int(line[13:15], 16)
    outF = int(line[18:20], 16)
    outF = int(line[18:20], 16)
    #print 'F:' + ("%0.2X" % inF) + ' A:' + ("%0.2X" % inA) + ' -> ' + ("%0.2X" % outA) + ' F:' + ("%0.2X" % outF)
    #print ('F:' + ("%0.2X" % inF) + ' A:' + ("%0.2X" % inA) + ' -> ' + ("%0.2X" % outA) + ' F:' + ("%0.2X" % outF))
 
 
    # Get the flags that will determine daa operation
    # Get the flags that will determine daa operation
    hf = (inF>>4) & 1
    hf = (inF>>4) & 1
    nf = (inF>>1) & 1
    nf = (inF>>1) & 1
    cf = (inF>>0) & 1
    cf = (inF>>0) & 1
Line 57... Line 57...
    pf = (((finalA>>7)^(finalA>>6)^(finalA>>5)^(finalA>>4)^(finalA>>3)^(finalA>>2)^(finalA>>1)^(finalA>>0))&1)^1
    pf = (((finalA>>7)^(finalA>>6)^(finalA>>5)^(finalA>>4)^(finalA>>3)^(finalA>>2)^(finalA>>1)^(finalA>>0))&1)^1
    nf = (inF>>1) & 1               # Always unchanged
    nf = (inF>>1) & 1               # Always unchanged
 
 
    flags = (sf<<7) | (zf<<6) | (yf<<5) | (hf<<4) | (xf<<3) | (pf<<2) | (nf<<1) | (cf<<0)
    flags = (sf<<7) | (zf<<6) | (yf<<5) | (hf<<4) | (xf<<3) | (pf<<2) | (nf<<1) | (cf<<0)
 
 
    print 'F:' + ("%0.2X" % inF) + ' A:' + ("%0.2X" % inA) + ' -> ' + ("%0.2X" % finalA) + ' F:' + ("%0.2X" % flags)
    print ('F:' + ("%0.2X" % inF) + ' A:' + ("%0.2X" % inA) + ' -> ' + ("%0.2X" % finalA) + ' F:' + ("%0.2X" % flags))
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.