From 3050a9253437f4a4b5ad4bf3b3efdc3c660a5137 Mon Sep 17 00:00:00 2001 From: Sebastian Schmelzer Date: Mon, 25 Oct 2010 16:53:54 +0200 Subject: initial import of sc2010 scripts .. --- contrib/syslinux-4.02/com32/lua/test/README | 26 +++++ contrib/syslinux-4.02/com32/lua/test/bisect.lua | 27 +++++ contrib/syslinux-4.02/com32/lua/test/cf.lua | 16 +++ contrib/syslinux-4.02/com32/lua/test/dmi.lua | 21 ++++ contrib/syslinux-4.02/com32/lua/test/echo.lua | 5 + contrib/syslinux-4.02/com32/lua/test/env.lua | 7 ++ contrib/syslinux-4.02/com32/lua/test/factorial.lua | 32 ++++++ contrib/syslinux-4.02/com32/lua/test/fib.lua | 40 ++++++++ contrib/syslinux-4.02/com32/lua/test/fibfor.lua | 13 +++ contrib/syslinux-4.02/com32/lua/test/globals.lua | 13 +++ contrib/syslinux-4.02/com32/lua/test/hello.lua | 3 + contrib/syslinux-4.02/com32/lua/test/life.lua | 111 +++++++++++++++++++++ contrib/syslinux-4.02/com32/lua/test/luac.lua | 7 ++ contrib/syslinux-4.02/com32/lua/test/pci.lua | 34 +++++++ contrib/syslinux-4.02/com32/lua/test/printf.lua | 7 ++ contrib/syslinux-4.02/com32/lua/test/readonly.lua | 12 +++ contrib/syslinux-4.02/com32/lua/test/sieve.lua | 29 ++++++ contrib/syslinux-4.02/com32/lua/test/sort.lua | 66 ++++++++++++ .../com32/lua/test/syslinux-derivative.lua | 38 +++++++ contrib/syslinux-4.02/com32/lua/test/syslinux.lua | 1 + contrib/syslinux-4.02/com32/lua/test/table.lua | 12 +++ .../syslinux-4.02/com32/lua/test/trace-calls.lua | 32 ++++++ .../syslinux-4.02/com32/lua/test/trace-globals.lua | 38 +++++++ contrib/syslinux-4.02/com32/lua/test/vesa.lua | 55 ++++++++++ contrib/syslinux-4.02/com32/lua/test/xd.lua | 14 +++ 25 files changed, 659 insertions(+) create mode 100644 contrib/syslinux-4.02/com32/lua/test/README create mode 100644 contrib/syslinux-4.02/com32/lua/test/bisect.lua create mode 100644 contrib/syslinux-4.02/com32/lua/test/cf.lua create mode 100644 contrib/syslinux-4.02/com32/lua/test/dmi.lua create mode 100644 contrib/syslinux-4.02/com32/lua/test/echo.lua create mode 100644 contrib/syslinux-4.02/com32/lua/test/env.lua create mode 100644 contrib/syslinux-4.02/com32/lua/test/factorial.lua create mode 100644 contrib/syslinux-4.02/com32/lua/test/fib.lua create mode 100644 contrib/syslinux-4.02/com32/lua/test/fibfor.lua create mode 100644 contrib/syslinux-4.02/com32/lua/test/globals.lua create mode 100644 contrib/syslinux-4.02/com32/lua/test/hello.lua create mode 100644 contrib/syslinux-4.02/com32/lua/test/life.lua create mode 100644 contrib/syslinux-4.02/com32/lua/test/luac.lua create mode 100644 contrib/syslinux-4.02/com32/lua/test/pci.lua create mode 100644 contrib/syslinux-4.02/com32/lua/test/printf.lua create mode 100644 contrib/syslinux-4.02/com32/lua/test/readonly.lua create mode 100644 contrib/syslinux-4.02/com32/lua/test/sieve.lua create mode 100644 contrib/syslinux-4.02/com32/lua/test/sort.lua create mode 100644 contrib/syslinux-4.02/com32/lua/test/syslinux-derivative.lua create mode 100644 contrib/syslinux-4.02/com32/lua/test/syslinux.lua create mode 100644 contrib/syslinux-4.02/com32/lua/test/table.lua create mode 100644 contrib/syslinux-4.02/com32/lua/test/trace-calls.lua create mode 100644 contrib/syslinux-4.02/com32/lua/test/trace-globals.lua create mode 100644 contrib/syslinux-4.02/com32/lua/test/vesa.lua create mode 100644 contrib/syslinux-4.02/com32/lua/test/xd.lua (limited to 'contrib/syslinux-4.02/com32/lua/test') diff --git a/contrib/syslinux-4.02/com32/lua/test/README b/contrib/syslinux-4.02/com32/lua/test/README new file mode 100644 index 0000000..0c7f38b --- /dev/null +++ b/contrib/syslinux-4.02/com32/lua/test/README @@ -0,0 +1,26 @@ +These are simple tests for Lua. Some of them contain useful code. +They are meant to be run to make sure Lua is built correctly and also +to be read, to see how Lua programs look. + +Here is a one-line summary of each program: + + bisect.lua bisection method for solving non-linear equations + cf.lua temperature conversion table (celsius to farenheit) + echo.lua echo command line arguments + env.lua environment variables as automatic global variables + factorial.lua factorial without recursion + fib.lua fibonacci function with cache + fibfor.lua fibonacci numbers with coroutines and generators + globals.lua report global variable usage + hello.lua the first program in every language + life.lua Conway's Game of Life + luac.lua bare-bones luac + printf.lua an implementation of printf + readonly.lua make global variables readonly + sieve.lua the sieve of of Eratosthenes programmed with coroutines + sort.lua two implementations of a sort function + table.lua make table, grouping all data for the same item + trace-calls.lua trace calls + trace-globals.lua trace assigments to global variables + xd.lua hex dump + diff --git a/contrib/syslinux-4.02/com32/lua/test/bisect.lua b/contrib/syslinux-4.02/com32/lua/test/bisect.lua new file mode 100644 index 0000000..f91e69b --- /dev/null +++ b/contrib/syslinux-4.02/com32/lua/test/bisect.lua @@ -0,0 +1,27 @@ +-- bisection method for solving non-linear equations + +delta=1e-6 -- tolerance + +function bisect(f,a,b,fa,fb) + local c=(a+b)/2 + io.write(n," c=",c," a=",a," b=",b,"\n") + if c==a or c==b or math.abs(a-b) posted to lua-l +-- modified to use ANSI terminal escape sequences +-- modified to use for instead of while + +local write=io.write + +ALIVE="¥" DEAD="þ" +ALIVE="O" DEAD="-" + +function delay() -- NOTE: SYSTEM-DEPENDENT, adjust as necessary + for i=1,10000 do end + -- local i=os.clock()+1 while(os.clock() 0 do + local xm1,x,xp1,xi=self.w-1,self.w,1,self.w + while xi > 0 do + local sum = self[ym1][xm1] + self[ym1][x] + self[ym1][xp1] + + self[y][xm1] + self[y][xp1] + + self[yp1][xm1] + self[yp1][x] + self[yp1][xp1] + next[y][x] = ((sum==2) and self[y][x]) or ((sum==3) and 1) or 0 + xm1,x,xp1,xi = x,xp1,xp1+1,xi-1 + end + ym1,y,yp1,yi = y,yp1,yp1+1,yi-1 + end +end + +-- output the array to screen +function _CELLS:draw() + local out="" -- accumulate to reduce flicker + for y=1,self.h do + for x=1,self.w do + out=out..(((self[y][x]>0) and ALIVE) or DEAD) + end + out=out.."\n" + end + write(out) +end + +-- constructor +function CELLS(w,h) + local c = ARRAY2D(w,h) + c.spawn = _CELLS.spawn + c.evolve = _CELLS.evolve + c.draw = _CELLS.draw + return c +end + +-- +-- shapes suitable for use with spawn() above +-- +HEART = { 1,0,1,1,0,1,1,1,1; w=3,h=3 } +GLIDER = { 0,0,1,1,0,1,0,1,1; w=3,h=3 } +EXPLODE = { 0,1,0,1,1,1,1,0,1,0,1,0; w=3,h=4 } +FISH = { 0,1,1,1,1,1,0,0,0,1,0,0,0,0,1,1,0,0,1,0; w=5,h=4 } +BUTTERFLY = { 1,0,0,0,1,0,1,1,1,0,1,0,0,0,1,1,0,1,0,1,1,0,0,0,1; w=5,h=5 } + +-- the main routine +function LIFE(w,h) + -- create two arrays + local thisgen = CELLS(w,h) + local nextgen = CELLS(w,h) + + -- create some life + -- about 1000 generations of fun, then a glider steady-state + thisgen:spawn(GLIDER,5,4) + thisgen:spawn(EXPLODE,25,10) + thisgen:spawn(FISH,4,12) + + -- run until break + local gen=1 + write("\027[2J") -- ANSI clear screen + while 1 do + thisgen:evolve(nextgen) + thisgen,nextgen = nextgen,thisgen + write("\027[H") -- ANSI home cursor + thisgen:draw() + write("Life - generation ",gen,"\n") + gen=gen+1 + if gen>2000 then break end + --delay() -- no delay + end +end + +LIFE(40,20) diff --git a/contrib/syslinux-4.02/com32/lua/test/luac.lua b/contrib/syslinux-4.02/com32/lua/test/luac.lua new file mode 100644 index 0000000..96a0a97 --- /dev/null +++ b/contrib/syslinux-4.02/com32/lua/test/luac.lua @@ -0,0 +1,7 @@ +-- bare-bones luac in Lua +-- usage: lua luac.lua file.lua + +assert(arg[1]~=nil and arg[2]==nil,"usage: lua luac.lua file.lua") +f=assert(io.open("luac.out","wb")) +assert(f:write(string.dump(assert(loadfile(arg[1]))))) +assert(f:close()) diff --git a/contrib/syslinux-4.02/com32/lua/test/pci.lua b/contrib/syslinux-4.02/com32/lua/test/pci.lua new file mode 100644 index 0000000..8d7f7d4 --- /dev/null +++ b/contrib/syslinux-4.02/com32/lua/test/pci.lua @@ -0,0 +1,34 @@ +-- get nice output +printf = function(s,...) + return io.write(s:format(...)) + end + +-- get device info +pciinfo = pci.getinfo() + +-- get plain text device description +pciids = pci.getidlist("/pci.ids") + +-- list all pci busses +for dind,device in pairs(pciinfo) do + + -- search for device description + search = string.format("%04x%04x", device['vendor'], device['product']) + + printf(" %04x:%04x:%04x:%04x = ", device['vendor'], device['product'], + device['sub_vendor'], device['sub_product']) + + if ( pciids[search] ) then + printf("%s\n", pciids[search]) + else + printf("Unknown\n") + end +end + +-- print(pciids["8086"]) +-- print(pciids["10543009"]) +-- print(pciids["00700003"]) +-- print(pciids["0070e817"]) +-- print(pciids["1002437a1002437a"]) + + diff --git a/contrib/syslinux-4.02/com32/lua/test/printf.lua b/contrib/syslinux-4.02/com32/lua/test/printf.lua new file mode 100644 index 0000000..58c63ff --- /dev/null +++ b/contrib/syslinux-4.02/com32/lua/test/printf.lua @@ -0,0 +1,7 @@ +-- an implementation of printf + +function printf(...) + io.write(string.format(...)) +end + +printf("Hello %s from %s on %s\n",os.getenv"USER" or "there",_VERSION,os.date()) diff --git a/contrib/syslinux-4.02/com32/lua/test/readonly.lua b/contrib/syslinux-4.02/com32/lua/test/readonly.lua new file mode 100644 index 0000000..85c0b4e --- /dev/null +++ b/contrib/syslinux-4.02/com32/lua/test/readonly.lua @@ -0,0 +1,12 @@ +-- make global variables readonly + +local f=function (t,i) error("cannot redefine global variable `"..i.."'",2) end +local g={} +local G=getfenv() +setmetatable(g,{__index=G,__newindex=f}) +setfenv(1,g) + +-- an example +rawset(g,"x",3) +x=2 +y=1 -- cannot redefine `y' diff --git a/contrib/syslinux-4.02/com32/lua/test/sieve.lua b/contrib/syslinux-4.02/com32/lua/test/sieve.lua new file mode 100644 index 0000000..0871bb2 --- /dev/null +++ b/contrib/syslinux-4.02/com32/lua/test/sieve.lua @@ -0,0 +1,29 @@ +-- the sieve of of Eratosthenes programmed with coroutines +-- typical usage: lua -e N=1000 sieve.lua | column + +-- generate all the numbers from 2 to n +function gen (n) + return coroutine.wrap(function () + for i=2,n do coroutine.yield(i) end + end) +end + +-- filter the numbers generated by `g', removing multiples of `p' +function filter (p, g) + return coroutine.wrap(function () + while 1 do + local n = g() + if n == nil then return end + if math.mod(n, p) ~= 0 then coroutine.yield(n) end + end + end) +end + +N=N or 1000 -- from command line +x = gen(N) -- generate primes up to N +while 1 do + local n = x() -- pick a number until done + if n == nil then break end + print(n) -- must be a prime number + x = filter(n, x) -- now remove its multiples +end diff --git a/contrib/syslinux-4.02/com32/lua/test/sort.lua b/contrib/syslinux-4.02/com32/lua/test/sort.lua new file mode 100644 index 0000000..0bcb15f --- /dev/null +++ b/contrib/syslinux-4.02/com32/lua/test/sort.lua @@ -0,0 +1,66 @@ +-- two implementations of a sort function +-- this is an example only. Lua has now a built-in function "sort" + +-- extracted from Programming Pearls, page 110 +function qsort(x,l,u,f) + if ly end) + show("after reverse selection sort",x) + qsort(x,1,n,function (x,y) return x>> ",string.rep(" ",level)) + if t~=nil and t.currentline>=0 then io.write(t.short_src,":",t.currentline," ") end + t=debug.getinfo(2) + if event=="call" then + level=level+1 + else + level=level-1 if level<0 then level=0 end + end + if t.what=="main" then + if event=="call" then + io.write("begin ",t.short_src) + else + io.write("end ",t.short_src) + end + elseif t.what=="Lua" then +-- table.foreach(t,print) + io.write(event," ",t.name or "(Lua)"," <",t.linedefined,":",t.short_src,">") + else + io.write(event," ",t.name or "(C)"," [",t.what,"] ") + end + io.write("\n") +end + +debug.sethook(hook,"cr") +level=0 diff --git a/contrib/syslinux-4.02/com32/lua/test/trace-globals.lua b/contrib/syslinux-4.02/com32/lua/test/trace-globals.lua new file mode 100644 index 0000000..295e670 --- /dev/null +++ b/contrib/syslinux-4.02/com32/lua/test/trace-globals.lua @@ -0,0 +1,38 @@ +-- trace assigments to global variables + +do + -- a tostring that quotes strings. note the use of the original tostring. + local _tostring=tostring + local tostring=function(a) + if type(a)=="string" then + return string.format("%q",a) + else + return _tostring(a) + end + end + + local log=function (name,old,new) + local t=debug.getinfo(3,"Sl") + local line=t.currentline + io.write(t.short_src) + if line>=0 then io.write(":",line) end + io.write(": ",name," is now ",tostring(new)," (was ",tostring(old),")","\n") + end + + local g={} + local set=function (t,name,value) + log(name,g[name],value) + g[name]=value + end + setmetatable(getfenv(),{__index=g,__newindex=set}) +end + +-- an example + +a=1 +b=2 +a=10 +b=20 +b=nil +b=200 +print(a,b,c) diff --git a/contrib/syslinux-4.02/com32/lua/test/vesa.lua b/contrib/syslinux-4.02/com32/lua/test/vesa.lua new file mode 100644 index 0000000..8913acc --- /dev/null +++ b/contrib/syslinux-4.02/com32/lua/test/vesa.lua @@ -0,0 +1,55 @@ +-- get nice output +printf = function(s,...) + return io.write(s:format(...)) + end + +-- list available vesa modes +-- only one supported right now, not of much use +modes = vesa.getmodes() + +for mind,mode in pairs(modes) do + printf("%04x: %dx%dx%d\n", mode['mode'], mode['hres'], mode['vres'], mode['bpp']) +end + +printf("Hello World! - text mode") + +-- lets go to graphics land +vesa.setmode() + +printf("Hello World! - VESA mode") + +syslinux.sleep(1) + +-- some text to display "typing style" +textline=[[ + +From syslinux GSOC 2009 home page: + +Finish the Lua engine + +We already have a Lua interpreter integrated with the Syslinux build. However, right now it is not very useful. We need to create a set of bindings to the Syslinux functionality, and have an array of documentation and examples so users can use them. + +This is not a documentation project, but the documentation deliverable will be particularly important for this one, since the intended target is system administrators, not developers. +]] + + +-- do display loop +-- keep in mind: background change will not erase text! +while ( true ) do + +vesa.load_background("/PXE-RRZE_small.jpg") + +syslinux.sleep(1) + +for i = 1, #textline do + local c = textline:sub(i,i) + printf("%s", c) + syslinux.msleep(200) +end + +syslinux.sleep(10) + +vesa.load_background("/sample2.jpg") +syslinux.sleep(10) + +end diff --git a/contrib/syslinux-4.02/com32/lua/test/xd.lua b/contrib/syslinux-4.02/com32/lua/test/xd.lua new file mode 100644 index 0000000..ebc3eff --- /dev/null +++ b/contrib/syslinux-4.02/com32/lua/test/xd.lua @@ -0,0 +1,14 @@ +-- hex dump +-- usage: lua xd.lua < file + +local offset=0 +while true do + local s=io.read(16) + if s==nil then return end + io.write(string.format("%08X ",offset)) + string.gsub(s,"(.)", + function (c) io.write(string.format("%02X ",string.byte(c))) end) + io.write(string.rep(" ",3*(16-string.len(s)))) + io.write(" ",string.gsub(s,"%c","."),"\n") + offset=offset+16 +end -- cgit v1.2.3-55-g7522