кривенько, но в питоне я как свинья в апельсинах...
Код:
#Python 3.8.0
#Python 3.8.0
import sys
data_out = bytes()
file_out = open("rom.bin", 'wb')
A = []
for i in range (16):
A.append(0)
D = []
for i in range (8):
D.append(0)
for addr in range (65536):
n = addr
for i in range (16):
A[i] = n % 2
n = n // 2
C0 = A[0]
C1 = A[1]
C2 = A[2]
C3 = A[3]
C4 = A[4]
C11 = A[5]
C9 = A[6]
C10 = A[7]
nACCESS = A[8]
nVBL = A[9]
MODSEL = A[10]
M1_25 = A[11]
M2_5 = A[12]
M5 = A[13]
M10 = A[14]
nHBL = A[15]
nCSV = (~M10 & ~M5 & ~M2_5 & M1_25) | (M10 & M5 & ~M2_5 & ~nACCESS)
GCLK = M10
SHIFT = not((nHBL & M5 & M2_5 & ~M1_25 & ~MODSEL & nVBL) | (nHBL & M5 & M2_5 & ~M1_25 & MODSEL & nVBL & ~C0))
LOADROM = M10 & M5 & ~M2_5 & M1_25
nHVSYNC = not((~nHBL & nVBL & ~C3 & C2)
| (~nHBL & ~nVBL & C11 & ~C3 & C2)
| (~nHBL & ~nVBL & ~C10 & C9 & ~C11 & ~C3 & C2)
| (~nHBL & ~nVBL & C10 & ~C9 & ~C11 & ~C3 & C2)
| (nHBL & ~nVBL & C10 & C9 & ~C11))
nLOADCT2 = not(~nHBL & C3 & C2 & C1 & C0)
nLOAD = not(nHBL & M5 & M2_5 & ~M1_25 & nVBL)
VCLK = (M10 & ~MODSEL) | (M10 & M5 & MODSEL)
D[0] = nCSV
D[1] = GCLK
D[2] = SHIFT
D[3] = LOADROM
D[4] = nHVSYNC
D[5] = nLOADCT2
D[6] = nLOAD
D[7] = VCLK
data = 0
for i in range (8):
data = D[i] * 2**i + data
data_out = data_out + bytes([data])
file_out.write(data_out)
file_out.close()
sys.exit (0)
[свернуть]