Advertisement
samuelask

Bootloader

Mar 8th, 2025 (edited)
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.48 KB | None | 0 0
  1. -- EEPROM Bootloader for Kino Drone (Minimalist)
  2. local drone = component.list("drone")()
  3. local chunkloader = component.list("chunkloader")()
  4. drone = drone and component.proxy(drone)
  5. chunkloader = chunkloader and component.proxy(chunkloader)
  6. drone.setStatusText("Waiting")
  7. drone.setLightColor(16711680)
  8.  
  9. if not chunkloader then
  10.     drone.setStatusText("ER-ChkL")
  11.     computer.shutdown()
  12. elseif chunkloader then
  13.     chunkloader.setActive(true)
  14. end
  15.  
  16. local function boot()
  17.     local e = {} -- Event buffer
  18.     local modem = component.list("modem")()
  19.     if not modem then return end -- No modem found, exit
  20.     modem = modem and component.proxy(modem)
  21.     modem.open(123)  -- Open the wireless communication port
  22.     modem.setWakeMessage("kino_wake")
  23.     modem.broadcast(123, "wake_ack")
  24.     while true do
  25.         local _, _, sender, _, _, message = computer.pullSignal()
  26.         if message == "upload" then
  27.             local program = ""
  28.             while true do
  29.                 local _, _, _, _, _, chunk = computer.pullSignal()
  30.                 if chunk == "end" then break end -- End of transmission
  31.                 program = program .. chunk
  32.             end
  33.            
  34.             local func, err = load(program)
  35.             if func then
  36.                 func() -- Run the Kino script
  37.             else
  38.                 modem.send(sender, 123, "kino_update_error: " .. err)
  39.             end
  40.         elseif message == "kino_wake" then
  41.             modem.send(sender, 123, "wake_ack")
  42.         end
  43.     end
  44. end
  45.  
  46. boot()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement