From a3f93518cc4c41d9bff0e2fbccef3924ee8d0a21 Mon Sep 17 00:00:00 2001 From: Jane Roxanne Date: Mon, 9 Mar 2020 21:42:47 -0500 Subject: [PATCH] We romfs now bois --- lib/fs_foxfs/inode.lua | 11 ++++++++--- release.lua | 1 + src/loader.lua | 2 +- src/lzss.lua | 12 +++++++++++- src/zy-neo/builtins/init_managed/init.lua | 7 ++++--- src/zy-neo/builtins/util_romfs.lua | 18 ++++++++++++++---- src/zy-neo/utils.lua | 6 ++---- src/zy-neo/zinit.lua | 7 +++++-- utils/makezbios.lua | 6 +++--- utils/ser.lua | 6 ++++-- 10 files changed, 53 insertions(+), 23 deletions(-) diff --git a/lib/fs_foxfs/inode.lua b/lib/fs_foxfs/inode.lua index c716daf..8ab5f89 100644 --- a/lib/fs_foxfs/inode.lua +++ b/lib/fs_foxfs/inode.lua @@ -1,11 +1,16 @@ local function foxfs_getnodes(prox, sec) - +[] end local function foxfs_readnode(prox, sec) - + local dat = prox.readSector(sec) + local node = {pointers={}} + local size + node.size, node.namesize, node.mode, node.user, node.group, node.pointers[1], node.pointers[2], node.pointers[3], node.pointers[4], node.pointers[5], node.pointers[6], node.pointers[7], node.pointers[8], node.pointers[9], node.sip, node.dip, node.tip, size = string.unpack(" 4096 ]]")) then io.stderr:write("WARNING: BIOS is over 4KiB!\n") end diff --git a/src/loader.lua b/src/loader.lua index e578f7f..1a26008 100644 --- a/src/loader.lua +++ b/src/loader.lua @@ -1,2 +1,2 @@ --#include "src/lzss.lua" -return load(lzss_decompress($[[luacomp src/zy-neo/zinit.lua -mluamin 2>/dev/null | sed "s/\]\]/]\ ]/g" | lua5.3 utils/makezbios.lua ]]), "=bios.lua")(lzss_decompress) \ No newline at end of file +return assert(load(lzss_decompress($[[luacomp src/zy-neo/zinit.lua 2>/dev/null | sed "s/\]\]/]\ ]/g" | lua5.3 utils/makezbios.lua ]]), "=bios.lua"))(lzss_decompress) \ No newline at end of file diff --git a/src/lzss.lua b/src/lzss.lua index 9006799..27d4317 100644 --- a/src/lzss.lua +++ b/src/lzss.lua @@ -1 +1,11 @@ -local function lzss_decompress(a)local b,c,d,e,f,g,h,i=1,'',''while b<=#a do e=c.byte(a,b)b=b+1;for j=0,7 do h=c.sub;i=h(a,b,b)if e>>j&1<1 and b<#a then g=c.unpack('>I2',a,b)f=1+g>>4;i=h(d,f,f+g&15+2)b=b+1 end;b=b+1;c=c..i;d=h(d..i,-4^6)end end;return c end \ No newline at end of file +function lzss_decompress(a)local b,c,d,e,j,i,h,g=1,'',''while b<=#a do +e=c.byte(a,b)b=b+1 +for k=0,7 do h=c.sub +g=h(a,b,b)if e>>k&1<1 and b<#a then +i=c.unpack('>I2',a,b)j=1+(i>>4)g=h(d,j,j+(i&15)+2)b=b+1 +end +b=b+1 +c=c..g +d=h(d..g,-4^6)end +end +return c end \ No newline at end of file diff --git a/src/zy-neo/builtins/init_managed/init.lua b/src/zy-neo/builtins/init_managed/init.lua index 94f1e62..323712f 100644 --- a/src/zy-neo/builtins/init_managed/init.lua +++ b/src/zy-neo/builtins/init_managed/init.lua @@ -19,7 +19,9 @@ local cfg = component.proxy(component.list("eeprom")()).getData() local baddr = cfg:sub(1, 36) local bootfs = component.proxy(baddr) -local romfs_file = component.invoke(baddr, "open", ".zy2/bootimage.romfs") +assert(bootfs.exists(".zy2/image.romfs"), "No boot image!") + +local romfs_file = assert(bootfs.open(".zy2/image.romfs", "rb")) local romfs_dev = romfs.read(function(a) return bootfs.read(romfs_file, a) @@ -39,8 +41,7 @@ end function bfs.getcfg() local h = assert(bootfs.open(".zy2/cfg.lua", "r")) - readfile(bootfs, h) - return + return readfile(bootfs, h) end bfs.addr = baddr \ No newline at end of file diff --git a/src/zy-neo/builtins/util_romfs.lua b/src/zy-neo/builtins/util_romfs.lua index 913b9d0..1479c16 100644 --- a/src/zy-neo/builtins/util_romfs.lua +++ b/src/zy-neo/builtins/util_romfs.lua @@ -2,28 +2,38 @@ local romfs = {} local arc = {} local function readint(r, n) - return string.unpack("