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