Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
 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")
Ejemplo n.º 3
0
 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")
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
 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")
Ejemplo n.º 6
0
 def selectM1(self):
     self.setMessage("select M1")
     listToList(self.M1, self.DATABUS)
     self.paintView()
Ejemplo n.º 7
0
 def updateDatabus(self):
     f = tuple(self.FUNCTION)
     F = self.functionLabelsDictionary[f]
     listToList(F, self.DATABUS)
Ejemplo n.º 8
0
 def writeDatabusToMemory(self):
     listToList(self.DATABUS, self.MEMORY[tuple(self.MEMORYADDRESS)])
     self.paintView()
     self.setMessage("Write databus to memory: READ MEM")
Ejemplo n.º 9
0
 def selectM2(self):
     self.setMessage("select M2")
     listToList(self.M2, self.DATABUS)
     self.paintView()
Ejemplo n.º 10
0
 def selectC(self):
     self.setMessage("select C")
     listToList(self.C, self.DATABUS)
     self.paintView()
Ejemplo n.º 11
0
 def readMemoryToDatabus(self):
     listToList(self.MEMORY[tuple(self.MEMORYADDRESS)], self.DATABUS)
     self.paintView()
     self.setMessage("Write memory to databus: WRITE MEM")
Ejemplo n.º 12
0
 def loadJ2(self):
     self.setMessage("load J2")
     listToList(self.DATABUS, self.J2)
     self.paintView()
Ejemplo n.º 13
0
 def loadINC(self):
     self.setMessage("load INC")
     listToList(self.IncUnit1, self.Inc1)
     listToList(self.IncUnit2, self.Inc2)
     self.paintView()
Ejemplo n.º 14
0
 def selectX(self):
     self.setMessage("select X")
     listToList(self.X, self.DATABUS)
     self.paintView()
Ejemplo n.º 15
0
 def loadY(self):
     self.setMessage("load Y")
     listToList(self.DATABUS, self.Y)
     self.paintView()
Ejemplo n.º 16
0
 def shlB(self):
     x = self.B[:]
     x = x[1:] + [x[0]]
     listToList(x, self.SHL)
Ejemplo n.º 17
0
 def loadA(self):
     self.setMessage("load A")
     listToList(self.DATABUS, self.A)
     self.paintView()
Ejemplo n.º 18
0
 def updateF2(self):
     listToList(self.FUNCTION, self.oldFUNCTION)
     self.FUNCTION[2] = (0 if self.FUNCTION[2] == 1 else 1)
     self.updateALU()
     self.paintView()
Ejemplo n.º 19
0
 def setFUNCTION(self, f):
     self.oldFUNCTION = self.FUNCTION[:]
     listToList(f, self.FUNCTION)
     self.updateALU()
Ejemplo n.º 20
0
 def selectY(self):
     self.setMessage("select Y")
     listToList(self.Y, self.DATABUS)
     self.paintView()
Ejemplo n.º 21
0
 def loadX(self):
     self.setMessage("load X")
     listToList(self.DATABUS, self.X)
     self.paintView()
Ejemplo n.º 22
0
 def setDATABUSwhole(self, x):
     listToList(x, self.DATABUS)
Ejemplo n.º 23
0
 def loadJ1(self):
     self.setMessage("load J1")        
     listToList(self.DATABUS, self.J1)
     self.paintView()
Ejemplo n.º 24
0
 def loadC(self):
     self.setMessage("load C")
     listToList(self.DATABUS, self.C)
     self.updateALU()
     self.paintView()
Ejemplo n.º 25
0
 def loadInst(self):
     self.setMessage("load Inst")
     listToList(self.DATABUS, self.Inst)
     self.paintView()
Ejemplo n.º 26
0
 def addressbusToMemoryAddress(self):
     listToList(self.ADDRESSBUS[1:], self.MEMORYADDRESS)
     self.paintView()
     self.setMessage("Address bus to memory address: BusToMem")
Ejemplo n.º 27
0
 def selectA(self):
     self.setMessage("select A")
     listToList(self.A, self.DATABUS)
     self.paintView()
Ejemplo n.º 28
0
 def selectB(self):
     self.setMessage("select B")
     listToList(self.B, self.DATABUS)
     self.paintView()