add c func and data
This commit is contained in:
parent
f347d1f17d
commit
75299209b8
@ -144,8 +144,10 @@ void sim_gate_set_port(struct Gate* gate, int port, int state) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int sim_gate_get_data(struct Gate* gate, int addr) {
|
int sim_gate_get_data(struct Gate* gate, int addr) {
|
||||||
|
assert(addr>=0 && addr<gate->data_size);
|
||||||
return gate->data[addr];
|
return gate->data[addr];
|
||||||
}
|
}
|
||||||
void sim_gate_set_data(struct Gate* gate, int addr, int val) {
|
void sim_gate_set_data(struct Gate* gate, int addr, int val) {
|
||||||
|
assert(addr>=0 && addr<gate->data_size);
|
||||||
gate->data[addr] = val;
|
gate->data[addr] = val;
|
||||||
}
|
}
|
||||||
|
Binary file not shown.
@ -10,8 +10,8 @@ GATEFUNC(Not) {
|
|||||||
|
|
||||||
enum GateFuncs {
|
enum GateFuncs {
|
||||||
GateFunc_None,
|
GateFunc_None,
|
||||||
GateFunc_Diode,
|
GateFunc_Diode = 1,
|
||||||
GateFunc_Not,
|
GateFunc_Not = 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
GateFunc sim_logic_functions[] = {
|
GateFunc sim_logic_functions[] = {
|
||||||
|
@ -7,7 +7,7 @@ GateDefinition = {
|
|||||||
input = function(gate, argv) end
|
input = function(gate, argv) end
|
||||||
}
|
}
|
||||||
|
|
||||||
function GateDefinition.new(objref, name, description, init, logic, input, global, ports)
|
function GateDefinition.new(objref, name, description, init, logic, input, global, ports, datasize, logicfuncc)
|
||||||
|
|
||||||
name = collapseescape(name)
|
name = collapseescape(name)
|
||||||
init = collapseescape(init)
|
init = collapseescape(init)
|
||||||
@ -23,8 +23,8 @@ function GateDefinition.new(objref, name, description, init, logic, input, globa
|
|||||||
ports = ports or {},
|
ports = ports or {},
|
||||||
num_in_ports = 0,
|
num_in_ports = 0,
|
||||||
num_out_ports = 0,
|
num_out_ports = 0,
|
||||||
data_size_c = 0, -- todo
|
data_size_c = datasize,
|
||||||
logic_function_c = 0, -- todo
|
logic_function_c = logicfuncc,
|
||||||
}
|
}
|
||||||
|
|
||||||
local initfunc = loadstring(tostring(init))
|
local initfunc = loadstring(tostring(init))
|
||||||
|
@ -75,10 +75,13 @@ function network_update()
|
|||||||
local logic = data[i+5]
|
local logic = data[i+5]
|
||||||
local input = data[i+6]
|
local input = data[i+6]
|
||||||
local global = data[i+7]
|
local global = data[i+7]
|
||||||
local numports = tonumber(data[i+8])
|
local datasize = tonumber(data[i+8])
|
||||||
|
local logicfuncc = tonumber(data[i+9])
|
||||||
|
local numports = tonumber(data[i+10])
|
||||||
local ports = {}
|
local ports = {}
|
||||||
|
i = i + 10
|
||||||
|
|
||||||
for a = i+9, numports*5+i+8, 5 do
|
for a = i+1, numports*5+i, 5 do
|
||||||
local portd = {
|
local portd = {
|
||||||
type = tonumber(data[a]),
|
type = tonumber(data[a]),
|
||||||
position = vectotable(data[a+1]),
|
position = vectotable(data[a+1]),
|
||||||
@ -91,10 +94,10 @@ function network_update()
|
|||||||
if not portd.direction then print(line) end
|
if not portd.direction then print(line) end
|
||||||
end
|
end
|
||||||
|
|
||||||
local definition = GateDefinition.new(objref, name, desc, init, logic, input, global, ports)
|
local definition = GateDefinition.new(objref, name, desc, init, logic, input, global, ports, datasize, logicfuncc)
|
||||||
Simulation.addgatedefinition(sim, definition)
|
Simulation.addgatedefinition(sim, definition)
|
||||||
|
|
||||||
i = i + 8 + numports*5
|
i = i + numports*5
|
||||||
elseif data[i] == "SL" then
|
elseif data[i] == "SL" then
|
||||||
local wire = Simulation.getwirebyref(sim, tonumber(data[i+1]))
|
local wire = Simulation.getwirebyref(sim, tonumber(data[i+1]))
|
||||||
if wire ~= nil then
|
if wire ~= nil then
|
||||||
|
Loading…
x
Reference in New Issue
Block a user