local counter = 0 local td = {} local function addNode(addr) devfs.register("tape"..tonumber(counter),function() local tape = component.proxy(addr) tape.seek(-math.huge) return tape.read, tape.write, function() end, tape.seek end) devfs.register("tapen"..tonumber(counter),function() local tape = component.proxy(addr) return tape.read, tape.write, function() end, tape.seek end) td[addr] = counter counter = counter + 1 end for addr in component.list("tape_drive") do addNode(addr) end while true do local tE = {coroutine.yield()} if tE[1] == "component_added" and tE[3] == "tape_drive" then addNode(tE[2]) elseif tE[1] == "component_removed" and tE[3] == "tape_drive" then if td[tE[2]] then fs.remove("/dev/tape"..tostring(td[tE[2]])) end end end