def RET_MOV16function(self): self.setMessage("RETURN / MOVE 16 bits: " + str(self.Inst)) RUN = True if self.Inst[5:7] == [1,1]: self.setMessage("HALT ") # Set PC to zero................................ listToList([0,0,0,0,0,0,0,0], self.PC1) listToList([0,0,0,0,0,0,0,0], self.PC2) RUN = False else: self.setMessage("MOV16") if self.Inst[4] == 0: # d is XY if self.Inst[5:7] == [0,0]: self.selectM() if self.Inst[5:7] == [0,1]: # What would Harry's machine do? self.selectXY() if self.Inst[5:7] == [1,0]: self.selectJ() self.loadXY() else: # d is PC if self.Inst[5:7] == [0,0]: self.selectM() if self.Inst[5:7] == [0,1]: self.selectXY() if self.Inst[5:7] == [1,0]: self.selectJ() self.loadPC() return RUN
def CLEARMEM(self): self.setMessage("Clear Memory: start") A = [0]*15 for unused_i in RangeMEM: listToList([0,0,0,0,0,0,0,0], self.MEMORY[tuple(A)]) A = self.increment(A) self.paintView() self.setMessage("Clear Memory: end")
def RANDMEM(self): self.setMessage("Random Memory: start") A = [0]*15 for unused_i in RangeMEM: r = [ randint(0,1) for unused_i in range(8) ] listToList(r, self.MEMORY[tuple(A)]) A = self.increment(A) self.paintView() self.setMessage("Random Memory: end")
def updateIncrUnit(self): Cy = 1 x = [0]*16 for i in Egnar16: A = self.ADDRESSBUS[i] x[i] = self.getSum(Cy, A, 0) Cy = self.getCarry(Cy, A, 0) listToList(x[0:8], self.IncUnit1) listToList(x[8:16], self.IncUnit2)
def loadPGMtoMEM(self, filename): try: pgmFile = open(filename, 'r') for LINE in pgmFile: LINE = LINE.split() Address = [ int(i) for i in LINE[0]] Code = [ int(i) for i in LINE[1]] listToList(Code, self.MEMORY[tuple(Address[1:])]) pgmFile.close() fn = filename.split('/') self.setMessage("Loaded " + fn[len(fn) - 1] + " to MEMORY") self.paintView() except IOError: self.setMessage("File IO Error")
def selectM1(self): self.setMessage("select M1") listToList(self.M1, self.DATABUS) self.paintView()
def updateDatabus(self): f = tuple(self.FUNCTION) F = self.functionLabelsDictionary[f] listToList(F, self.DATABUS)
def writeDatabusToMemory(self): listToList(self.DATABUS, self.MEMORY[tuple(self.MEMORYADDRESS)]) self.paintView() self.setMessage("Write databus to memory: READ MEM")
def selectM2(self): self.setMessage("select M2") listToList(self.M2, self.DATABUS) self.paintView()
def selectC(self): self.setMessage("select C") listToList(self.C, self.DATABUS) self.paintView()
def readMemoryToDatabus(self): listToList(self.MEMORY[tuple(self.MEMORYADDRESS)], self.DATABUS) self.paintView() self.setMessage("Write memory to databus: WRITE MEM")
def loadJ2(self): self.setMessage("load J2") listToList(self.DATABUS, self.J2) self.paintView()
def loadINC(self): self.setMessage("load INC") listToList(self.IncUnit1, self.Inc1) listToList(self.IncUnit2, self.Inc2) self.paintView()
def selectX(self): self.setMessage("select X") listToList(self.X, self.DATABUS) self.paintView()
def loadY(self): self.setMessage("load Y") listToList(self.DATABUS, self.Y) self.paintView()
def shlB(self): x = self.B[:] x = x[1:] + [x[0]] listToList(x, self.SHL)
def loadA(self): self.setMessage("load A") listToList(self.DATABUS, self.A) self.paintView()
def updateF2(self): listToList(self.FUNCTION, self.oldFUNCTION) self.FUNCTION[2] = (0 if self.FUNCTION[2] == 1 else 1) self.updateALU() self.paintView()
def setFUNCTION(self, f): self.oldFUNCTION = self.FUNCTION[:] listToList(f, self.FUNCTION) self.updateALU()
def selectY(self): self.setMessage("select Y") listToList(self.Y, self.DATABUS) self.paintView()
def loadX(self): self.setMessage("load X") listToList(self.DATABUS, self.X) self.paintView()
def setDATABUSwhole(self, x): listToList(x, self.DATABUS)
def loadJ1(self): self.setMessage("load J1") listToList(self.DATABUS, self.J1) self.paintView()
def loadC(self): self.setMessage("load C") listToList(self.DATABUS, self.C) self.updateALU() self.paintView()
def loadInst(self): self.setMessage("load Inst") listToList(self.DATABUS, self.Inst) self.paintView()
def addressbusToMemoryAddress(self): listToList(self.ADDRESSBUS[1:], self.MEMORYADDRESS) self.paintView() self.setMessage("Address bus to memory address: BusToMem")
def selectA(self): self.setMessage("select A") listToList(self.A, self.DATABUS) self.paintView()
def selectB(self): self.setMessage("select B") listToList(self.B, self.DATABUS) self.paintView()