Advertisement
Guest User

JBIOS

a guest
Jan 13th, 2016
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.03 KB | None | 0 0
  1. function invoke(address,method,...)
  2. local result = table.pack(pcall(component.invoke,address,method,...))
  3. if not result[1] then
  4. return nil,result[2]
  5. else
  6. return table.unpack(result,2,result.n)
  7. end
  8. end
  9.  
  10. local cp = 1
  11. local gpu = component.list("gpu")()
  12. local screen = component.list("screen")()
  13. invoke(screen,"turnOff")
  14. invoke(screen,"turnOn")
  15. if gpu and screen then
  16. invoke(gpu,"bind",screen)
  17. end
  18. function print(string)
  19. invoke(gpu,"set",1,cp,string)
  20. cp=cp+1
  21. end
  22.  
  23. function loadOS(address)
  24. local handle = invoke(address,"open","/init.lua")
  25. local data = invoke(address,"read",handle,math.huge)
  26. invoke(address,"close,handle")
  27. load(data,"=init")
  28. init()
  29. end
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38. print("Loading JBIOS....")
  39. print("Finding Bootable Devices....")
  40. filesys = {}
  41. c=1
  42. for addr in component.list("filesystem")do
  43. filesys[c]=address-------------<<<Always empty
  44. print(address)--------<<<<<<<always blank
  45. c=c+1
  46. end
  47. i=1
  48. i0=1
  49. boots = {}
  50. while i<11 do
  51. if filesys[i] then
  52. bool = invoke(filesys[i],"exists","/init.lua")
  53. if bool then
  54. boots[i0]=filesys[i]
  55. i0=i0+1
  56. end
  57. end
  58. i=i+1
  59. end
  60. print("Found: "..#boots.." Bootable Filesystems")-----------always 0
  61. i=1
  62. print("Please Select Filesystem to boot from")
  63. while boots[i] do
  64. label = invoke(boots[i],"getLabel")
  65. print(i..": "..label)
  66. i=i+1
  67. end
  68. print("b: Boot Now")
  69. print("Will auto boot in ten seconds if you dont select a system to boot.")
  70. time = os.time()+11
  71. codes = {0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x30}
  72. code = 0x00
  73. while os.time()<=time do
  74. local ev,addr,char,code,name = computer.pullSignal(10)
  75. if(ev=="key_down")then
  76. i1=1
  77. if code==0x02 or code==0x03 or code==0x04 or code==0x05 or code==0x06 or code==0x07 or code==0x08 or code==0x09 or code==0x0A or code==0x0B then
  78. loadOS(boots[code])
  79. break
  80. elseif code==11 then
  81. char0=char
  82. break
  83. end
  84. end
  85. end
  86. if not computer.getBootAddress() then
  87. loadOS(computer.getBootAddress())
  88. else
  89. loadOS(boots[1])
  90. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement