- fixed jasm to use with ruby > v1.9

git-svn-id: http://moon:8086/svn/vhdl/trunk@1392 cc03376c-175c-47c8-b038-4cd826a8556b
This commit is contained in:
2021-03-19 13:28:03 +00:00
parent 73452b0abc
commit 9cf0030fe8
+13 -13
View File
@@ -33,7 +33,7 @@ XROM_MAX_SIZE = 256
XROM_DATA_TYPE = "dmem_data_t" XROM_DATA_TYPE = "dmem_data_t"
XROM_ADDR_TYPE = "dmem_addr_t" XROM_ADDR_TYPE = "dmem_addr_t"
XROM_ENTITY_NAME = "xrom" XROM_ENTITY_NAME = "xrom"
OPC_LIST_NAME = "/cygdrive/w/vhdl/lib/CPUs/JCpu/tools/opc.list" OPC_LIST_NAME = "opc.list"
# -------------------------------------------------------- # --------------------------------------------------------
class Parser class Parser
@@ -179,6 +179,7 @@ file.each do |raw_line|
end end
token = iline_member[mc] token = iline_member[mc]
mcnt = iline_member.count{|x| !x.nil?}
if token if token
token = token.upcase token = token.upcase
end end
@@ -209,7 +210,7 @@ file.each do |raw_line|
exit 1 exit 1
end end
if 0 == (iline_member[mc+1] =~ /\d+/) if 0 == (iline_member[mc+1] =~ /\d+/)
curr_addr = format("0x%2.2X",eval(iline_member[mc+1..iline_member.nitems].to_s)) curr_addr = format("0x%2.2X",eval(iline_member[mc+1..mcnt][0].to_s))
else else
curr_addr = iline_member[mc+1] curr_addr = iline_member[mc+1]
end end
@@ -218,7 +219,7 @@ file.each do |raw_line|
STDERR.puts format("Error in line %d: %s needs argument!", lc, token) STDERR.puts format("Error in line %d: %s needs argument!", lc, token)
exit 1 exit 1
end end
offset = eval(iline_member[mc+1..iline_member.nitems].to_s) offset = eval(iline_member[mc+1..mcnt][0].to_s)
case obj.curr_segment case obj.curr_segment
when "CODE" when "CODE"
obj.pc = offset obj.pc = offset
@@ -261,11 +262,10 @@ file.each do |raw_line|
str = item.delete("\"") str = item.delete("\"")
puts item puts item
for nn in (0..str.length-1) for nn in (0..str.length-1)
if str[nn] > 31 value = str[nn].to_i(16)
obj.put_xmem(str[nn], lc); obj.put_xmem(value, lc);
puts "S: " + str[nn].to_s puts "S: " + value.to_s
len += 1 len += 1
end
end; end;
else else
argument = item argument = item
@@ -307,7 +307,7 @@ file.each do |raw_line|
exit 1 exit 1
end end
op_line = iline_member[mc+1..iline_member.nitems].to_s op_line = iline_member[mc+1..mcnt][0].to_s
curr_addr = format("0x%3.3X",obj.pc) curr_addr = format("0x%3.3X",obj.pc)
opc = token opc = token
if iline_member[mc+1] != nil if iline_member[mc+1] != nil
@@ -383,7 +383,7 @@ end
# -------------------------------------------------------- # --------------------------------------------------------
# Open file # Open file
# -------------------------------------------------------- # --------------------------------------------------------
filename = arg.to_s filename = arg[0].to_s
if !File.exists?(filename) if !File.exists?(filename)
STDERR.puts "#{filename} does not exist" STDERR.puts "#{filename} does not exist"
exit 1 exit 1
@@ -743,10 +743,10 @@ if num_errors == 0
file.puts format("\tconstant xmem_rom : xmem_rom_t :=\n") file.puts format("\tconstant xmem_rom : xmem_rom_t :=\n")
file.puts format("\t(\n"); file.puts format("\t(\n");
for i in (0..XROM_MAX_SIZE-2) for i in (0..XROM_MAX_SIZE-2)
file.puts format("\t\tX\"%2.2X\", -- 0x%2.2X\n", first_pass.xmem[i], i) file.puts format("\t\tX\"%2.2X\", -- 0x%2.2X\n", first_pass.xmem[i].to_i(), i)
end; end;
i = XROM_MAX_SIZE-1 i = XROM_MAX_SIZE-1
file.puts format("\t\tX\"%2.2X\" -- 0x%2.2X\n", first_pass.xmem[i], i) file.puts format("\t\tX\"%2.2X\" -- 0x%2.2X\n", first_pass.xmem[i].to_i(), i)
file.puts format("\t);\n") file.puts format("\t);\n")
file.puts format("\n") file.puts format("\n")
file.puts format("begin") file.puts format("begin")
@@ -772,10 +772,10 @@ if num_errors == 0
file.puts format("\tsignal xmem_rom : xmem_rom_t :=\n") file.puts format("\tsignal xmem_rom : xmem_rom_t :=\n")
file.puts format("\t(\n"); file.puts format("\t(\n");
for i in (0..XROM_MAX_SIZE-2) for i in (0..XROM_MAX_SIZE-2)
file.puts format("\t\tX\"%2.2X\", -- 0x%2.2X\n", first_pass.xmem[i], i) file.puts format("\t\tX\"%2.2X\", -- 0x%2.2X\n", first_pass.xmem[i].to_i(), i)
end; end;
i = XROM_MAX_SIZE-1 i = XROM_MAX_SIZE-1
file.puts format("\t\tX\"%2.2X\" -- 0x%2.2X\n", first_pass.xmem[i], i) file.puts format("\t\tX\"%2.2X\" -- 0x%2.2X\n", first_pass.xmem[i].to_i(), i)
file.puts format("\t);\n") file.puts format("\t);\n")
puts format("X-ROM (loadable) file written to \"%s\"\n",filename) puts format("X-ROM (loadable) file written to \"%s\"\n",filename)
file.close file.close