#!/usr/bin/ruby
DC = "x"
REGS = {
"PTR" => 0,
"TS" => 1,
"CN" => 2,
"SF" => 3,
"ACCU" => 4,
"PC" => 5,
"MDR" => 6,
"IR" => 7,
"MAR" => 8
}
ALU_OPS = {
"ADD" => "0,0,0",
"SUB" => "0,0,1",
"TRANS.A" => "0,1,0",
"TRANS.B" => "0,1,1",
"AND" => "1,0,0",
"SHIFTR.B" => "1,0,1"
}
ALU_SEL_A_INPUTS = {
"CONST_0" => "0,0,0",
"CONST_1" => "0,0,1",
"ACCU" => "0,1,0",
"TS" => "0,1,1",
"CONST_6553" => "1,0,0",
"CONST_15" => "1,0,1",
"CONST_14" => "1,1,0"
}
ALU_SEL_B_INPUTS = {
"MDR" => "0,0,0",
"PC" => "0,0,1",
"SIGNEXT" => "0,1,0",
"ACCU" => "0,1,1",
"PTR" => "1,0,0",
"CN" => "1,0,1",
"SF" => "1,1,0"
}
class Steuerzeile
attr_accessor :aluSelA, :aluSelB, :cs, :rw, :aluCtrl, :regs, :cond, :comment, :mdrSel
def initialize
@aluSelA = "x,x,x"; @aluSelB = "x,x,x"
@cs = "0"; @rw = DC
@mdrSel = DC
@aluCtrl = "x,x,x"
@regs = ["0", "0", "0", "0", "0", "0", "0", "0", "0"]
@cond = DC; @gotoOp = "0"; @comment = ""
end
def aluOp(opStr)
@aluCtrl = ALU_OPS[opStr]
end
def aluAIn(inputStr)
@aluSelA = ALU_SEL_A_INPUTS[inputStr]
end
def aluBIn(inputStr)
@aluSelB = ALU_SEL_B_INPUTS[inputStr]
end
def setReg(regStr)
@regs[REGS[regStr]] = "1"
end
def to_s
outStr = "," + @aluSelA + "," + @aluSelB + "," + @mdrSel + "," + @cs + "," + @rw + "," + @aluCtrl + ","
@regs.each {|v| outStr += (v + ",")}
outStr += (@gotoOp + "," + @cond + "," + @comment)
outStr
end
end
def mkz(comment)
s = Steuerzeile.new
s.comment = comment
s
end
def p(zeile)
puts zeile
end
I'm a student of computer science at a german university with interest in game programming and mathematics. Also sometimes I make music.
21.1.09
Quick'n'Dirty
Subscribe to:
Post Comments (Atom)
0 Comments:
Post a Comment