picolisp

Unnamed repository; edit this file to name it for gitweb.
git clone https://logand.com/git/picolisp.git/
Log | Files | Refs | README | LICENSE

commit 74e466ac34596d5a9a8624a1ca5275d1a8a39cf0
parent e4cffa81c4333fd387da6f6c420154435974cb54
Author: Alexander Burger <abu@software-lab.de>
Date:   Mon, 23 Apr 2012 10:46:32 +0200

Native 'struct' function (64-bit)
Diffstat:
MCHANGES | 3++-
Mdoc/refN.html | 17+++++++++--------
Mdoc/refS.html | 71++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------
Mersatz/picolisp.jar | 0
Mlib/map | 37+++++++++++++++++++------------------
Msrc/vers.h | 2+-
Msrc64/glob.l | 3++-
Msrc64/main.l | 245+++++++++++++++++++++++++++++++++++++++++++++++--------------------------------
Msrc64/tags | 406++++++++++++++++++++++++++++++++++++++++---------------------------------------
Msrc64/version.l | 4++--
10 files changed, 444 insertions(+), 344 deletions(-)

diff --git a/CHANGES b/CHANGES @@ -1,5 +1,6 @@ * DDmmm12 picoLisp-3.1.1 - double/float in 'native' structures + Native 'struct' function (64-bit) + double/float in 'native' structures (64-bit) Allow 'zap' protected symbols outside 'pico' namespace (64-bit) Bug in 'who' diff --git a/doc/refN.html b/doc/refN.html @@ -128,7 +128,7 @@ NIL -> T </code></pre> -<dt><a name="native"><code>(native 'cnt1|sym1 'cnt2|sym2 'sym|lst 'any ..) -> any</code></a> +<dt><a name="native"><code>(native 'cnt1|sym1 'cnt2|sym2 'any 'any ..) -> any</code></a> <dd>(64-bit version only) Calls a native C function. The first argument should specify a shared object library, either <code>"@"</code> (the current main program), <code>sym1</code> (a library path name), or <code>cnt1</code> (a @@ -137,10 +137,11 @@ symbol name <code>sym2</code>, or a function pointer <code>cnt2</code> obtained by a previous call). Practically, the first two arguments will be always passed as transient symbols, which will get the library handle and function pointer assigned as values to be cached and used in subsequent calls. The third -<code>sym|lst</code> argument is a return value specification, while all -following arguments are the arguments to the native function. +argument <code>any</code> is a result specification, while all following +arguments are the arguments to the native function. -<p>The return value specification may either be one of the atoms +<p><a name="natResult">The result specification</a> may either be one of the +atoms <pre><code> NIL void @@ -173,10 +174,10 @@ structures, e.g. <ul> <li>a variable in the CAR (to recieve the returned structure data, ignored when the CAR is <code>NIL</code>) - <li>a cons pair for the size and value specification in the CADR (see above), - and - <li>an optional sequence of initialization items in the CDDR, where each - may be + <li>a cons pair for the size and result specification in the CADR (see + above), and + <li>an optional sequence of <a name="natItem">initialization items</a> in the + CDDR, where each may be <ul> <li>a positive number, stored as an unsigned byte value <li>a negative number, whose absolute value is stored as an unsigned diff --git a/doc/refS.html b/doc/refS.html @@ -759,6 +759,24 @@ href="refS.html#sym">sym</a></code>. -> (a "*" 3 "+" b "*" 4) </code></pre> +<dt><a name="str?"><code>(str? 'any) -> sym | NIL</code></a> +<dd>Returns the argument <code>any</code> when it is a transient symbol +(string), otherwise <code>NIL</code>. See also <code><a +href="refS.html#sym?">sym?</a></code>, <code><a +href="refB.html#box?">box?</a></code> and <code><a +href="refE.html#ext?">ext?</a></code>. + +<pre><code> +: (str? 123) +-> NIL +: (str? '{ABC}) +-> NIL +: (str? 'abc) +-> NIL +: (str? "abc") +-> "abc" +</code></pre> + <dt><a name="strDat"><code>(strDat 'sym) -> dat</code></a> <dd>Converts a string <code>sym</code> in the date format of the current <code><a href="refL.html#locale">locale</a></code> to a <code><a @@ -792,22 +810,49 @@ href="refD.html#datStr">datStr</a></code>. -> (a b c) </code></pre> -<dt><a name="str?"><code>(str? 'any) -> sym | NIL</code></a> -<dd>Returns the argument <code>any</code> when it is a transient symbol -(string), otherwise <code>NIL</code>. See also <code><a -href="refS.html#sym?">sym?</a></code>, <code><a -href="refB.html#box?">box?</a></code> and <code><a -href="refE.html#ext?">ext?</a></code>. +<dt><a name="struct"><code>(struct 'num 'any 'any ..) -> any</code></a> +<dd>Creates or extracts data structures, suitable to be passed to or returned +from <code><a href="refN.html#native">native</a></code> C functions. The first +<code>num</code> argument should be a native value, either a scalar, or a +pointer obtained by calling functions like <code>malloc()</code>. The second +argument <code>any</code> is a <a href="refN.html#natResult">result +specification</a>, while all following <a +href="refN.html#natItem">initialization items</a> are data items are stored in +the structure pointed to by the first argument. <pre><code> -: (str? 123) --> NIL -: (str? '{ABC}) --> NIL -: (str? 'abc) +: (scl 2) +-> 2 + +## /* We assume the following C structure */ +## typedef struct value { +## int x, y; +## double a, b, c; +## long z; +## char nm[4]; +## } value; + +# Allocate structure +: (setq P (native "@" "malloc" 'N 44)) +-> 9204032 + +# Store to integers, three doubles, a long, and four characters +: (struct P 'N -7 -4 (1.0 0.11 0.22 0.33) (7 . 8) 65 66 67 0) +-> 9204032 + +# Extract the structure +: (struct P '((I . 2) (1.0 . 3) N (C . 4))) +-> ((7 4) (11 22 33) 7 ("A" "B" "C" NIL)) + +# Do both in a single call (allows conversions of data types) +: (struct P + '((I . 2) (1.0 . 3) N (C . 4)) + -7 -4 (1.0 0.11 0.22 0.33) (7 . 8) 65 66 67 0 ) +-> ((7 4) (11 22 33) 7 ("A" "B" "C" NIL)) + +# De-allocate structure +: (native "@" "free" NIL P) -> NIL -: (str? "abc") --> "abc" </code></pre> <dt><a name="sub?"><code>(sub? 'any1 'any2) -> any2 | NIL</code></a> diff --git a/ersatz/picolisp.jar b/ersatz/picolisp.jar Binary files differ. diff --git a/lib/map b/lib/map @@ -32,9 +32,9 @@ and (1613 . "@src64/flow.l") any (3965 . "@src64/io.l") append (1338 . "@src64/subr.l") apply (713 . "@src64/apply.l") -arg (2323 . "@src64/main.l") -args (2299 . "@src64/main.l") -argv (2943 . "@src64/main.l") +arg (2372 . "@src64/main.l") +args (2348 . "@src64/main.l") +argv (2992 . "@src64/main.l") as (139 . "@src64/flow.l") asoq (3008 . "@src64/subr.l") assoc (2973 . "@src64/subr.l") @@ -65,7 +65,7 @@ call (3079 . "@src64/flow.l") car (5 . "@src64/subr.l") case (1954 . "@src64/flow.l") catch (2456 . "@src64/flow.l") -cd (2698 . "@src64/main.l") +cd (2747 . "@src64/main.l") cdaaar (464 . "@src64/subr.l") cdaadr (487 . "@src64/subr.l") cdaar (179 . "@src64/subr.l") @@ -88,7 +88,7 @@ circ (816 . "@src64/subr.l") circ? (2402 . "@src64/subr.l") clip (1799 . "@src64/subr.l") close (4381 . "@src64/io.l") -cmd (2925 . "@src64/main.l") +cmd (2974 . "@src64/main.l") cnt (1413 . "@src64/apply.l") co (2537 . "@src64/flow.l") commit (1498 . "@src64/db.l") @@ -99,9 +99,9 @@ connect (224 . "@src64/net.l") cons (747 . "@src64/subr.l") copy (1225 . "@src64/subr.l") ctl (4254 . "@src64/io.l") -ctty (2723 . "@src64/main.l") +ctty (2772 . "@src64/main.l") cut (1922 . "@src64/sym.l") -date (2437 . "@src64/main.l") +date (2486 . "@src64/main.l") dbck (2113 . "@src64/db.l") de (532 . "@src64/flow.l") dec (2323 . "@src64/big.l") @@ -111,7 +111,7 @@ del (1977 . "@src64/sym.l") delete (1401 . "@src64/subr.l") delq (1452 . "@src64/subr.l") diff (2589 . "@src64/subr.l") -dir (2856 . "@src64/main.l") +dir (2905 . "@src64/main.l") dm (545 . "@src64/flow.l") do (2130 . "@src64/flow.l") e (2911 . "@src64/flow.l") @@ -128,7 +128,7 @@ extern (1023 . "@src64/sym.l") extra (1258 . "@src64/flow.l") extract (1218 . "@src64/apply.l") fifo (2088 . "@src64/sym.l") -file (2803 . "@src64/main.l") +file (2852 . "@src64/main.l") fill (3243 . "@src64/subr.l") filter (1161 . "@src64/apply.l") fin (2033 . "@src64/subr.l") @@ -166,7 +166,7 @@ ifn (1854 . "@src64/flow.l") in (4194 . "@src64/io.l") inc (2256 . "@src64/big.l") index (2637 . "@src64/subr.l") -info (2760 . "@src64/main.l") +info (2809 . "@src64/main.l") intern (998 . "@src64/sym.l") ipid (3198 . "@src64/flow.l") isa (961 . "@src64/flow.l") @@ -183,7 +183,7 @@ lieu (1157 . "@src64/db.l") line (3699 . "@src64/io.l") lines (3852 . "@src64/io.l") link (1172 . "@src64/subr.l") -lisp (1995 . "@src64/main.l") +lisp (2044 . "@src64/main.l") list (887 . "@src64/subr.l") listen (157 . "@src64/net.l") lit (150 . "@src64/flow.l") @@ -225,7 +225,7 @@ nand (1648 . "@src64/flow.l") native (1376 . "@src64/main.l") need (919 . "@src64/subr.l") new (835 . "@src64/flow.l") -next (2306 . "@src64/main.l") +next (2355 . "@src64/main.l") nil (1731 . "@src64/flow.l") nond (1931 . "@src64/flow.l") nor (1669 . "@src64/flow.l") @@ -239,7 +239,7 @@ onOff (1738 . "@src64/sym.l") one (1771 . "@src64/sym.l") open (4338 . "@src64/io.l") opid (3214 . "@src64/flow.l") -opt (3046 . "@src64/main.l") +opt (3095 . "@src64/main.l") or (1629 . "@src64/flow.l") out (4214 . "@src64/io.l") pack (1270 . "@src64/sym.l") @@ -272,7 +272,7 @@ push (1813 . "@src64/sym.l") push1 (1849 . "@src64/sym.l") put (2835 . "@src64/sym.l") putl (3113 . "@src64/sym.l") -pwd (2687 . "@src64/main.l") +pwd (2736 . "@src64/main.l") queue (2045 . "@src64/sym.l") quit (1083 . "@src64/main.l") quote (134 . "@src64/flow.l") @@ -283,7 +283,7 @@ raw (449 . "@src64/main.l") rd (5163 . "@src64/io.l") read (2656 . "@src64/io.l") replace (1499 . "@src64/subr.l") -rest (2352 . "@src64/main.l") +rest (2401 . "@src64/main.l") reverse (1678 . "@src64/subr.l") rewind (5129 . "@src64/io.l") rollback (1898 . "@src64/db.l") @@ -309,6 +309,7 @@ stem (1989 . "@src64/subr.l") str (4019 . "@src64/io.l") str? (1136 . "@src64/sym.l") strip (1576 . "@src64/subr.l") +struct (1835 . "@src64/main.l") sub? (1569 . "@src64/sym.l") sum (1460 . "@src64/apply.l") super (1214 . "@src64/flow.l") @@ -324,7 +325,7 @@ text (1398 . "@src64/sym.l") throw (2482 . "@src64/flow.l") tick (3166 . "@src64/flow.l") till (3610 . "@src64/io.l") -time (2570 . "@src64/main.l") +time (2619 . "@src64/main.l") touch (1172 . "@src64/sym.l") trim (1759 . "@src64/subr.l") try (1168 . "@src64/flow.l") @@ -337,9 +338,9 @@ up (691 . "@src64/main.l") upp? (3393 . "@src64/sym.l") uppc (3460 . "@src64/sym.l") use (1562 . "@src64/flow.l") -usec (2675 . "@src64/main.l") +usec (2724 . "@src64/main.l") val (1588 . "@src64/sym.l") -version (3060 . "@src64/main.l") +version (3109 . "@src64/main.l") wait (3150 . "@src64/io.l") when (1873 . "@src64/flow.l") while (2050 . "@src64/flow.l") diff --git a/src/vers.h b/src/vers.h @@ -1 +1 @@ -static byte Version[4] = {3,1,0,2}; +static byte Version[4] = {3,1,0,3}; diff --git a/src64/glob.l b/src64/glob.l @@ -1,4 +1,4 @@ -# 20oct11abu +# 22apr12abu # (c) Software Lab. Alexander Burger (data 'Data) @@ -192,6 +192,7 @@ initFun NIL "quit" doQuit initFun NIL "errno" doErrno initFun NIL "native" doNative + initFun NIL "struct" doStruct initFun NIL "lisp" doLisp initFun NIL "args" doArgs initFun NIL "next" doNext diff --git a/src64/main.l b/src64/main.l @@ -1,4 +1,4 @@ -# 16apr12abu +# 23apr12abu # (c) Software Lab. Alexander Burger (code 'Code) @@ -1372,7 +1372,7 @@ or E CNT ret -# (native 'cnt1|sym1 'cnt2|sym2 'sym|lst 'any ..) -> any +# (native 'cnt1|sym1 'cnt2|sym2 'any 'any ..) -> any (code 'doNative 2) push X push Y @@ -1525,102 +1525,8 @@ atom E # Fill structure? while z # Yes ld A (E) # Next value - atom A # Byte or unsigned? - if nz # Yes - shr A 4 # Byte? - if nc # Yes - ld (Z) B # Store byte in buffer - inc Z # Increment buffer pointer - dec C # Buffer full? - else - st4 (Z) # Store unsigned in buffer - add Z 4 # Size of unsigned - sub C 4 # Buffer full? - end - else # (num|sym . cnt) or ([-]1.0 . lst) - push X - ld X (A CDR) # 'cnt' or 'lst' - ld A (A) # 'num', 'sym' or [-]1.0 - cnt X # 'cnt'? - if nz # Yes - push Y - ld Y Z # Y on buffer - shr X 4 # Normalize length - add Z X # Field width - sub C X # New buffer size - num A # (num . cnt)? - if nz # Yes - cnt A # Short? - if nz # Yes - shr A 4 # Normalize - if c # Sign? - neg A # Yes - end - else - test A SIGN # Sign? - if z # No - ld A (A DIG) - else - ld A (A (- DIG SIGN)) - neg A # Negate - end - end - ? *LittleEndian - do - ld (Y) B # Store byte - inc Y # Increment pointer - shr A 8 - dec X # Done? - until z # Yes - = - ? (not *LittleEndian) - ld Y Z - do - dec Y # Decrement pointer - ld (Y) B # Store byte - shr A 8 - dec X # Done? - until z # Yes - = - else - sym A # (sym . cnt)? - if nz # Yes - push C - ld X (A TAIL) # Get name - call nameX_X - ld C 0 - do - call symByteCX_FACX # Next byte - while nz - ld (Y) B # Store it - inc Y # Increment pointer - loop - set (Y) 0 # Null byte - pop C - end - end - pop Y - else # ([-]1.0 . lst) - do - atom X # More fixpoint numbers? - while z # Yes - float # Convert to floating point - test A SIGN # Scale negative? - if z # No - std # Store double value - add Z 8 # Size of double - sub C 8 # Decrement buffer size - else - stf # Store float value - add Z 4 # Size of float - sub C 4 # Decrement buffer size - end - ld X (X CDR) - loop - end - pop X - null C # Buffer full? - end + call natBufACZ_CZ # Store in buffer + null C # Buffer full? until z # Yes pop Z end @@ -1678,6 +1584,105 @@ pop X ret +(code 'natBufACZ_CZ 0) + atom A # Byte or unsigned? + if nz # Yes + shr A 4 # Byte? + if nc # Yes + ld (Z) B # Store byte in buffer + inc Z # Increment buffer pointer + dec C # Decrement size + ret + end + st4 (Z) # Store unsigned in buffer + add Z 4 # Size of unsigned + sub C 4 # Decrement size + ret + end + # (num|sym . cnt) or ([-]1.0 . lst) + push X + ld X (A CDR) # 'cnt' or 'lst' + ld A (A) # 'num', 'sym' or [-]1.0 + cnt X # 'cnt'? + if nz # Yes + push Y + ld Y Z # Y on buffer + shr X 4 # Normalize length + add Z X # Field width + sub C X # New buffer size + num A # (num . cnt)? + if nz # Yes + cnt A # Short? + if nz # Yes + shr A 4 # Normalize + if c # Sign? + neg A # Yes + end + else + test A SIGN # Sign? + if z # No + ld A (A DIG) + else + ld A (A (- DIG SIGN)) + neg A # Negate + end + end + ? *LittleEndian + do + ld (Y) B # Store byte + inc Y # Increment pointer + shr A 8 + dec X # Done? + until z # Yes + = + ? (not *LittleEndian) + ld Y Z + do + dec Y # Decrement pointer + ld (Y) B # Store byte + shr A 8 + dec X # Done? + until z # Yes + = + else + sym A # (sym . cnt)? + if nz # Yes + push C + ld X (A TAIL) # Get name + call nameX_X + ld C 0 + do + call symByteCX_FACX # Next byte + while nz + ld (Y) B # Store it + inc Y # Increment pointer + loop + set (Y) 0 # Null byte + pop C + end + end + pop Y + else # ([-]1.0 . lst) + do + atom X # More fixpoint numbers? + while z # Yes + float # Convert to floating point + test A SIGN # Scale negative? + if z # No + std # Store double value + add Z 8 # Size of double + sub C 8 # Decrement buffer size + else + stf # Store float value + add Z 4 # Size of float + sub C 4 # Decrement buffer size + end + ld X (X CDR) + loop + end + pop X + ret + (code 'natRetACE_CE 0) cmp E Nil # NIL? if ne @@ -1826,6 +1831,50 @@ end ret +# (struct 'num 'any 'any ..) -> any +(code 'doStruct 2) + push X + push Y + push Z + ld X E + ld Y (E CDR) # Y on args + ld E (Y) # Eval native value (pointer or scalar) + eval + num E # Number? + jz numErrEX # No + cnt E # Short? + if nz # Yes + shr E 4 # Normalize + ld Z E # Native value in Z + else + ld Z (E DIG) # Native value in Z + end + ld Y (Y CDR) # Next arg + ld E (Y) + eval # Eval 'any' + link + push E # <L I> Result specification + link + push Z # Save native value + do + ld Y (Y CDR) # Arguments? + atom Y + while z # Yes + ld E (Y) # Eval next struct element + eval + ld A E # in A (unused C) + call natBufACZ_CZ # Store in buffer + loop + pop A # Get native value + ld C 0 # No pointer yet + ld E (L I) # Result specification + call natRetACE_CE # Extract return value + drop + pop Z + pop Y + pop X + ret + (code 'fetchCharC_AC 0) ld B (C) # Fetch first byte zxt diff --git a/src64/tags b/src64/tags @@ -16,16 +16,16 @@ AI_NEXT sys/x86-64.linux.defs.l 148 AI_SOCKTYPE sys/x86-64.linux.defs.l 145 AV glob.l 7 AV0 glob.l 8 -Addr glob.l 616 +Addr glob.l 617 Adr glob.l 178 Alarm glob.l 77 -AllocErr glob.l 1159 -ArgErr glob.l 1188 -Arrow glob.l 1175 +AllocErr glob.l 1160 +ArgErr glob.l 1189 +Arrow glob.l 1176 At glob.l 158 At2 glob.l 159 At3 glob.l 160 -AtomErr glob.l 1194 +AtomErr glob.l 1195 Avail glob.l 11 BEG defs.l 44 BIG defs.l 35 @@ -34,15 +34,15 @@ BLKSIZE defs.l 54 BLKTAG defs.l 55 BSym glob.l 154 BUFSIZ sys/x86-64.linux.defs.l 26 -BadChain glob.l 1180 -BadCount glob.l 1181 -BadDot glob.l 1214 -BadFdErr glob.l 1209 -BadInput glob.l 1213 +BadChain glob.l 1181 +BadCount glob.l 1182 +BadDot glob.l 1215 +BadFdErr glob.l 1210 +BadInput glob.l 1214 BlkIndex glob.l 68 BlkLink glob.l 69 Break glob.l 50 -BrkErr glob.l 1203 +BrkErr glob.l 1204 Buf glob.l 12 BufEnd glob.l 54 Bye glob.l 180 @@ -57,20 +57,20 @@ CSym glob.l 153 C_CC sys/x86-64.linux.defs.l 73 C_IFLAG sys/x86-64.linux.defs.l 71 C_LFLAG sys/x86-64.linux.defs.l 72 -CaseBlocks glob.l 623 -CaseData glob.l 753 -CaseLower glob.l 1114 -CaseUpper glob.l 1090 +CaseBlocks glob.l 624 +CaseData glob.l 754 +CaseLower glob.l 1115 +CaseUpper glob.l 1091 Catch glob.l 20 -CbErr glob.l 1162 -CellErr glob.l 1193 +CbErr glob.l 1163 +CellErr glob.l 1194 Child glob.l 44 Children glob.l 43 -Chr glob.l 584 -CircFree glob.l 1179 +Chr glob.l 585 +CircFree glob.l 1180 Class glob.l 167 -CloseErr glob.l 1205 -CntErr glob.l 1190 +CloseErr glob.l 1206 +CntErr glob.l 1191 Code main.l 4 DB glob.l 144 DB1 defs.l 11 @@ -78,24 +78,24 @@ DBs glob.l 63 DIG defs.l 36 DOT defs.l 45 D_NAME sys/x86-64.linux.defs.l 122 -Dashes glob.l 1184 +Dashes glob.l 1185 Data glob.l 4 -Db1 glob.l 563 +Db1 glob.l 564 DbBlock glob.l 66 DbFile glob.l 64 DbFiles glob.l 65 DbJnl glob.l 70 DbLog glob.l 71 -DbRdErr glob.l 1228 -DbSizErr glob.l 1230 -DbSyncErr glob.l 1222 -DbWrErr glob.l 1229 -DbfErr glob.l 1225 +DbRdErr glob.l 1229 +DbSizErr glob.l 1231 +DbSyncErr glob.l 1223 +DbWrErr glob.l 1230 +DbfErr glob.l 1226 Dbg glob.l 163 -Delim glob.l 1173 -DelimEnd glob.l 1174 -DivErr glob.l 1197 -DlErr glob.l 1240 +Delim glob.l 1174 +DelimEnd glob.l 1175 +DivErr glob.l 1198 +DlErr glob.l 1241 EACCES sys/x86-64.linux.defs.l 9 EAGAIN sys/x86-64.linux.defs.l 8 EBADF sys/x86-64.linux.defs.l 7 @@ -105,40 +105,40 @@ END defs.l 46 ENOENT sys/x86-64.linux.defs.l 5 EPIPE sys/x86-64.linux.defs.l 10 EXTERN defs.l 50 -Env glob.l 589 -EnvApply glob.l 600 -EnvArgs glob.l 596 -EnvBind glob.l 590 -EnvCls glob.l 598 -EnvCo glob.l 583 -EnvCo7 glob.l 607 -EnvCtlFrames glob.l 594 -EnvEnd glob.l 611 -EnvErrFrames glob.l 593 -EnvInFrames glob.l 591 -EnvIntern glob.l 595 -EnvKey glob.l 599 -EnvMake glob.l 601 -EnvMid glob.l 606 -EnvNext glob.l 597 -EnvOutFrames glob.l 592 -EnvParseC glob.l 604 -EnvParseEOF glob.l 605 -EnvParseX glob.l 603 -EnvProtect glob.l 609 -EnvTask glob.l 608 -EnvTrace glob.l 610 -EnvYoke glob.l 602 -EofErr glob.l 1211 +Env glob.l 590 +EnvApply glob.l 601 +EnvArgs glob.l 597 +EnvBind glob.l 591 +EnvCls glob.l 599 +EnvCo glob.l 584 +EnvCo7 glob.l 608 +EnvCtlFrames glob.l 595 +EnvEnd glob.l 612 +EnvErrFrames glob.l 594 +EnvInFrames glob.l 592 +EnvIntern glob.l 596 +EnvKey glob.l 600 +EnvMake glob.l 602 +EnvMid glob.l 607 +EnvNext glob.l 598 +EnvOutFrames glob.l 593 +EnvParseC glob.l 605 +EnvParseEOF glob.l 606 +EnvParseX glob.l 604 +EnvProtect glob.l 610 +EnvTask glob.l 609 +EnvTrace glob.l 611 +EnvYoke glob.l 603 +EofErr glob.l 1212 Err glob.l 173 -ErrTok glob.l 1183 -ExecErr glob.l 1158 +ErrTok glob.l 1184 +ExecErr glob.l 1159 Ext glob.l 165 -ExtErr glob.l 1192 +ExtErr glob.l 1193 ExtN glob.l 45 -Extern glob.l 565 +Extern glob.l 566 Extn glob.l 46 -ExtraErr glob.l 1167 +ExtraErr glob.l 1168 FD_CLOEXEC sys/x86-64.linux.defs.l 23 FD_SET sys/x86-64.linux.defs.l 111 FLOCK sys/x86-64.linux.defs.l 36 @@ -153,18 +153,18 @@ F_SETLKW sys/x86-64.linux.defs.l 51 F_SETOWN sys/x86-64.linux.defs.l 52 F_UNLCK sys/x86-64.linux.defs.l 46 F_WRLCK sys/x86-64.linux.defs.l 45 -Flock glob.l 614 +Flock glob.l 615 Fork glob.l 179 -ForkErr glob.l 1207 +ForkErr glob.l 1208 GcCount glob.l 51 GcMark glob.l 74 GcMarkEnd glob.l 129 -GcSymEnd glob.l 569 +GcSymEnd glob.l 570 GetBinZ_FB glob.l 30 -Get_A glob.l 586 -Giveup glob.l 1157 +Get_A glob.l 587 +Giveup glob.l 1158 HEAP defs.l 5 -HashBlank glob.l 1164 +HashBlank glob.l 1165 Heaps glob.l 10 Hear glob.l 39 Home glob.l 9 @@ -180,20 +180,20 @@ ISIG sys/x86-64.linux.defs.l 74 ISym glob.l 150 IV defs.l 17 IX defs.l 22 -IdErr glob.l 1227 -IgnLog glob.l 1178 -InBye glob.l 1144 +IdErr glob.l 1228 +IgnLog glob.l 1179 +InBye glob.l 1145 InFDs glob.l 25 -InFile glob.l 587 +InFile glob.l 588 InFiles glob.l 26 -IpBindErr glob.l 1236 -IpGetsocknameErr glob.l 1233 -IpListenErr glob.l 1237 -IpReuseaddrErr glob.l 1235 -IpSocketErr glob.l 1232 -IpV6onlyErr glob.l 1234 -Jam glob.l 1143 -JnlErr glob.l 1226 +IpBindErr glob.l 1237 +IpGetsocknameErr glob.l 1234 +IpListenErr glob.l 1238 +IpReuseaddrErr glob.l 1236 +IpSocketErr glob.l 1233 +IpV6onlyErr glob.l 1235 +Jam glob.l 1144 +JnlErr glob.l 1227 L_LEN sys/x86-64.linux.defs.l 40 L_PID sys/x86-64.linux.defs.l 41 L_START sys/x86-64.linux.defs.l 39 @@ -205,25 +205,25 @@ LineX glob.l 79 Link glob.l 19 Lisp glob.l 80 LispEnd glob.l 128 -LockErr glob.l 1224 -LstErr glob.l 1195 +LockErr glob.l 1225 +LstErr glob.l 1196 MAXPATHLEN sys/x86-64.linux.defs.l 29 -MakeErr glob.l 1199 +MakeErr glob.l 1200 MaxBlkSize glob.l 67 Meth glob.l 145 Mic glob.l 37 -Month glob.l 1146 +Month glob.l 1147 Msg glob.l 174 -MsgErr glob.l 1202 +MsgErr glob.l 1203 NIX defs.l 43 NI_MAXHOST sys/x86-64.linux.defs.l 135 NI_NAMEREQD sys/x86-64.linux.defs.l 136 NSym glob.l 151 NUMBER defs.l 47 Nil glob.l 134 -NoFdErr glob.l 1210 +NoFdErr glob.l 1211 NoMemory main.l 211 -NumErr glob.l 1189 +NumErr glob.l 1190 ONE defs.l 9 OS glob.l 143 O_APPEND sys/x86-64.linux.defs.l 20 @@ -235,32 +235,32 @@ O_RDONLY sys/x86-64.linux.defs.l 14 O_RDWR sys/x86-64.linux.defs.l 16 O_TRUNC sys/x86-64.linux.defs.l 19 O_WRONLY sys/x86-64.linux.defs.l 15 -OpenErr glob.l 1204 -OrgTermio glob.l 613 +OpenErr glob.l 1205 +OrgTermio glob.l 614 OutFDs glob.l 27 -OutFile glob.l 588 +OutFile glob.l 589 OutFiles glob.l 28 PIPE_BUF sys/x86-64.linux.defs.l 27 PPid glob.l 156 -PRepl glob.l 1142 +PRepl glob.l 1143 Penv glob.l 56 Pico glob.l 137 Pid glob.l 157 -PidSigMsg glob.l 1160 -PipeErr glob.l 1206 +PidSigMsg glob.l 1161 +PipeErr glob.l 1207 Pnl glob.l 57 Prompt glob.l 162 -ProtErr glob.l 1185 -PutB glob.l 585 +ProtErr glob.l 1186 +PutB glob.l 586 PutBinBZ glob.l 29 -QuitMsg glob.l 1161 +QuitMsg glob.l 1162 Quote glob.l 146 RTLD_GLOBAL sys/x86-64.linux.defs.l 33 RTLD_LAZY sys/x86-64.linux.defs.l 32 -Redefined glob.l 1165 -ReentErr glob.l 1200 -RenErr glob.l 1198 -Repl glob.l 1141 +Redefined glob.l 1166 +ReentErr glob.l 1201 +RenErr glob.l 1199 +Repl glob.l 1142 Ret main.l 8 RetE_E main.l 28 RetNil main.l 22 @@ -269,7 +269,7 @@ Retc main.l 10 Retnc main.l 13 Retnz main.l 19 Retz main.l 16 -RolbLog glob.l 1177 +RolbLog glob.l 1178 Run glob.l 168 SA_FLAGS sys/x86-64.linux.defs.l 84 SA_HANDLER sys/x86-64.linux.defs.l 82 @@ -316,10 +316,10 @@ S_IFDIR sys/x86-64.linux.defs.l 62 S_IFMT sys/x86-64.linux.defs.l 61 Scl glob.l 166 Seed glob.l 31 -SelectErr glob.l 1215 +SelectErr glob.l 1216 Sep0 glob.l 52 Sep3 glob.l 53 -SetFD glob.l 1172 +SetFD glob.l 1173 Sig1 glob.l 170 Sig2 glob.l 171 Sigio glob.l 78 @@ -330,20 +330,20 @@ SpMiPipe glob.l 38 Spkr glob.l 36 Stack0 glob.l 15 Stacks glob.l 16 -StkErr glob.l 1187 +StkErr glob.l 1188 StkLimit glob.l 18 StkSize glob.l 17 StrC glob.l 48 StrX glob.l 47 -SuparErr glob.l 1212 -SuperErr glob.l 1166 -SymErr glob.l 1191 -SymNsErr glob.l 1186 +SuparErr glob.l 1213 +SuperErr glob.l 1167 +SymErr glob.l 1192 +SymNsErr glob.l 1187 SymTab glob.l 133 -SymTabEnd glob.l 556 -Sync glob.l 1145 +SymTabEnd glob.l 557 +Sync glob.l 1146 TAIL defs.l 40 -TBuf glob.l 618 +TBuf glob.l 619 TCSADRAIN sys/x86-64.linux.defs.l 77 TERMIOS sys/x86-64.linux.defs.l 70 TMS sys/x86-64.linux.defs.l 65 @@ -361,27 +361,27 @@ TSym glob.l 147 Talking glob.l 42 Tell glob.l 40 TellBuf glob.l 41 -TellErr glob.l 1231 +TellErr glob.l 1232 Termio glob.l 21 -TgOS glob.l 559 +TgOS glob.l 560 This glob.l 161 -ThrowErr glob.l 1168 +ThrowErr glob.l 1169 TickS glob.l 34 TickU glob.l 33 Time glob.l 22 -Tio glob.l 1139 -Tms glob.l 615 -TrSyncErr glob.l 1223 +Tio glob.l 1140 +Tms glob.l 616 +TrSyncErr glob.l 1224 Transient glob.l 75 -Trc1 glob.l 1169 -Trc2 glob.l 1170 -TruncErr glob.l 1221 +Trc1 glob.l 1170 +Trc2 glob.l 1171 +TruncErr glob.l 1222 Tsm glob.l 177 TtyPid glob.l 24 UDPMAX defs.l 58 USec glob.l 23 -UdpOvflErr glob.l 1238 -UndefErr glob.l 1239 +UdpOvflErr glob.l 1239 +UndefErr glob.l 1240 Uni glob.l 175 Up glob.l 172 V defs.l 18 @@ -390,24 +390,24 @@ VII defs.l 20 VIII defs.l 21 VMIN sys/x86-64.linux.defs.l 75 VTIME sys/x86-64.linux.defs.l 76 -VarErr glob.l 1196 -Version glob.l 572 +VarErr glob.l 1197 +Version glob.l 573 WNOHANG sys/x86-64.linux.defs.l 107 WUNTRACED sys/x86-64.linux.defs.l 108 -WaitPidErr glob.l 1208 -WrBytesErr glob.l 1216 -WrChildErr glob.l 1217 -WrJnlErr glob.l 1219 -WrLogErr glob.l 1220 -WrSyncErr glob.l 1218 -YieldErr glob.l 1201 +WaitPidErr glob.l 1209 +WrBytesErr glob.l 1217 +WrChildErr glob.l 1218 +WrJnlErr glob.l 1220 +WrLogErr glob.l 1221 +WrSyncErr glob.l 1219 +YieldErr glob.l 1202 ZERO defs.l 8 Zap glob.l 164 -_a_ glob.l 1151 -_ap_ glob.l 1152 -_dot_ glob.l 1153 -_r_ glob.l 1149 -_w_ glob.l 1150 +_a_ glob.l 1152 +_ap_ glob.l 1153 +_dot_ glob.l 1154 +_r_ glob.l 1150 +_w_ glob.l 1151 addAE_A big.l 1517 adduAE_A big.l 540 allocAE_A main.l 207 @@ -425,12 +425,12 @@ badFdErrEX err.l 525 badInputErrB err.l 545 balanceCEY sym.l 910 balanceXY sym.l 892 -begString main.l 2261 +begString main.l 2310 binPrintEZ io.l 730 binReadZ_FE io.l 519 blkPeekCEZ db.l 392 blkPokeCEZ db.l 403 -boxE_E main.l 2229 +boxE_E main.l 2278 boxNumA_A gc.l 872 boxNumE_E gc.l 886 boxNum_A gc.l 824 @@ -446,31 +446,31 @@ byteNumBCX_CX io.l 463 byteSymBCX_CX io.l 1291 caseDataA_AC sym.l 3366 caught flow.l 2472 -cbl main.l 1864 -cbl1 main.l 1897 -cbl10 main.l 1933 -cbl11 main.l 1937 -cbl12 main.l 1941 -cbl13 main.l 1945 -cbl14 main.l 1949 -cbl15 main.l 1953 -cbl16 main.l 1957 -cbl17 main.l 1961 -cbl18 main.l 1965 -cbl19 main.l 1969 -cbl2 main.l 1901 -cbl20 main.l 1973 -cbl21 main.l 1977 -cbl22 main.l 1981 -cbl23 main.l 1985 -cbl24 main.l 1989 -cbl3 main.l 1905 -cbl4 main.l 1909 -cbl5 main.l 1913 -cbl6 main.l 1917 -cbl7 main.l 1921 -cbl8 main.l 1925 -cbl9 main.l 1929 +cbl main.l 1913 +cbl1 main.l 1946 +cbl10 main.l 1982 +cbl11 main.l 1986 +cbl12 main.l 1990 +cbl13 main.l 1994 +cbl14 main.l 1998 +cbl15 main.l 2002 +cbl16 main.l 2006 +cbl17 main.l 2010 +cbl18 main.l 2014 +cbl19 main.l 2018 +cbl2 main.l 1950 +cbl20 main.l 2022 +cbl21 main.l 2026 +cbl22 main.l 2030 +cbl23 main.l 2034 +cbl24 main.l 2038 +cbl3 main.l 1954 +cbl4 main.l 1958 +cbl5 main.l 1962 +cbl6 main.l 1966 +cbl7 main.l 1970 +cbl8 main.l 1974 +cbl9 main.l 1978 cellErrAX err.l 438 cellErrEX err.l 440 charSymACX_CX io.l 1256 @@ -534,7 +534,7 @@ ctOpenEXY io.l 1670 currFdX_C io.l 1333 currFd_C io.l 1337 cutLocalCX flow.l 2824 -dateXYZ_E main.l 2376 +dateXYZ_E main.l 2425 dbAEX db.l 1331 dbFetchEX db.l 1319 dbFileBlkY_AC db.l 246 @@ -564,9 +564,9 @@ doAnd flow.l 1613 doAny io.l 3965 doAppend subr.l 1338 doApply apply.l 713 -doArg main.l 2323 -doArgs main.l 2299 -doArgv main.l 2943 +doArg main.l 2372 +doArgs main.l 2348 +doArgv main.l 2992 doArrow subr.l 3916 doAs flow.l 139 doAsoq subr.l 3008 @@ -602,7 +602,7 @@ doCall flow.l 3079 doCar subr.l 5 doCase flow.l 1954 doCatch flow.l 2456 -doCd main.l 2698 +doCd main.l 2747 doCdaaar subr.l 464 doCdaadr subr.l 487 doCdaar subr.l 179 @@ -625,7 +625,7 @@ doCirc subr.l 816 doCircQ subr.l 2402 doClip subr.l 1799 doClose io.l 4381 -doCmd main.l 2925 +doCmd main.l 2974 doCnt apply.l 1413 doCo flow.l 2537 doCol sym.l 3051 @@ -637,9 +637,9 @@ doConnect net.l 224 doCons subr.l 747 doCopy subr.l 1225 doCtl io.l 4254 -doCtty main.l 2723 +doCtty main.l 2772 doCut sym.l 1922 -doDate main.l 2437 +doDate main.l 2486 doDbck db.l 2113 doDe flow.l 532 doDec big.l 2323 @@ -649,7 +649,7 @@ doDel sym.l 1977 doDelete subr.l 1401 doDelq subr.l 1452 doDiff subr.l 2589 -doDir main.l 2856 +doDir main.l 2905 doDiv big.l 2513 doDm flow.l 545 doDo flow.l 2130 @@ -671,7 +671,7 @@ doExtern sym.l 1023 doExtra flow.l 1258 doExtract apply.l 1218 doFifo sym.l 2088 -doFile main.l 2803 +doFile main.l 2852 doFill subr.l 3243 doFilter apply.l 1161 doFin subr.l 2033 @@ -712,7 +712,7 @@ doIfn flow.l 1854 doIn io.l 4194 doInc big.l 2256 doIndex subr.l 2637 -doInfo main.l 2760 +doInfo main.l 2809 doIntern sym.l 998 doIpid flow.l 3198 doIsa flow.l 961 @@ -730,7 +730,7 @@ doLieu db.l 1157 doLine io.l 3699 doLines io.l 3852 doLink subr.l 1172 -doLisp main.l 1995 +doLisp main.l 2044 doList subr.l 887 doListen net.l 157 doLit flow.l 150 @@ -776,7 +776,7 @@ doNand flow.l 1648 doNative main.l 1376 doNeed subr.l 919 doNew flow.l 835 -doNext main.l 2306 +doNext main.l 2355 doNil flow.l 1731 doNond flow.l 1931 doNor flow.l 1669 @@ -790,7 +790,7 @@ doOnOff sym.l 1738 doOne sym.l 1771 doOpen io.l 4338 doOpid flow.l 3214 -doOpt main.l 3046 +doOpt main.l 3095 doOr flow.l 1629 doOut io.l 4214 doPack sym.l 1270 @@ -824,7 +824,7 @@ doPush sym.l 1813 doPush1 sym.l 1849 doPut sym.l 2835 doPutl sym.l 3113 -doPwd main.l 2687 +doPwd main.l 2736 doQueue sym.l 2045 doQuit main.l 1083 doQuote flow.l 134 @@ -836,7 +836,7 @@ doRd io.l 5163 doRead io.l 2656 doRem big.l 2572 doReplace subr.l 1499 -doRest main.l 2352 +doRest main.l 2401 doReverse subr.l 1678 doRewind io.l 5129 doRollback db.l 1898 @@ -865,6 +865,7 @@ doStem subr.l 1989 doStr io.l 4019 doStrQ sym.l 1136 doStrip subr.l 1576 +doStruct main.l 1835 doSub big.l 2209 doSubQ sym.l 1569 doSum apply.l 1460 @@ -881,7 +882,7 @@ doText sym.l 1398 doThrow flow.l 2482 doTick flow.l 3166 doTill io.l 3610 -doTime main.l 2570 +doTime main.l 2619 doTouch sym.l 1172 doTrace flow.l 2950 doTrim subr.l 1759 @@ -895,9 +896,9 @@ doUp main.l 691 doUppQ sym.l 3393 doUppc sym.l 3460 doUse flow.l 1562 -doUsec main.l 2675 +doUsec main.l 2724 doVal sym.l 1588 -doVersion main.l 3060 +doVersion main.l 3109 doWait io.l 3150 doWhen flow.l 1873 doWhile flow.l 2050 @@ -910,7 +911,7 @@ doYield flow.l 2706 doYoke subr.l 1196 doZap sym.l 1186 doZero sym.l 1756 -endString_E main.l 2272 +endString_E main.l 2321 eofErr err.l 534 eolA_F io.l 3684 equalAE_F main.l 770 @@ -919,15 +920,15 @@ errEXYZ err.l 33 errnoC sys/x86-64.linux.code.l 10 errnoEXY err.l 24 errno_A sys/x86-64.linux.code.l 5 -evCntEX_FE main.l 2200 -evCntXY_FE main.l 2198 +evCntEX_FE main.l 2249 +evCntXY_FE main.l 2247 evExprCE_E main.l 1101 evListE_E main.l 1245 evMethodACXYZ_E flow.l 645 -evSymE_E main.l 2175 -evSymX_E main.l 2170 -evSymY_E main.l 2173 -execE main.l 2084 +evSymE_E main.l 2224 +evSymX_E main.l 2219 +evSymY_E main.l 2222 +execE main.l 2133 execErrS main.l 187 extErrEX err.l 434 extNmCE_X db.l 64 @@ -937,7 +938,7 @@ fdRdSetCZL io.l 2718 fdSetCL_X io.l 2706 fdSetC_Y io.l 3309 fdWrSetCZL io.l 2725 -fetchCharC_AC main.l 1829 +fetchCharC_AC main.l 1878 fileObjE_AC db.l 237 fileObjX_AC db.l 211 fillE_FE subr.l 3261 @@ -955,7 +956,7 @@ fmtWordACX_CX big.l 2046 forkErrX err.l 515 forkLispX_FE flow.l 3266 fsyncDB db.l 932 -funqE_FE main.l 2108 +funqE_FE main.l 2157 gc gc.l 65 getAdrZ_A db.l 6 getBinaryZ_FB io.l 447 @@ -997,7 +998,7 @@ isaCE_F flow.l 1012 jnlErrX err.l 618 jnlFileno_A db.l 344 joinLocalCX flow.l 2837 -lisp main.l 2038 +lisp main.l 2087 loadAllX_E main.l 162 loadBEX_E io.l 4072 lockErr err.l 607 @@ -1021,7 +1022,7 @@ methodEY_FCYZ flow.l 791 mkCharA_A sym.l 573 mkStrEZ_A sym.l 650 mkStrE_E sym.l 623 -msec_A main.l 2286 +msec_A main.l 2335 msgErrAX err.l 488 msgErrEX err.l 490 msgErrYX err.l 486 @@ -1030,7 +1031,8 @@ nameA_A sym.l 469 nameE_E sym.l 477 nameX_X sym.l 485 nameY_Y sym.l 493 -natRetACE_CE main.l 1681 +natBufACZ_CZ main.l 1587 +natRetACE_CE main.l 1686 needC gc.l 54 needSymAX err.l 323 needSymEX err.l 335 @@ -1086,7 +1088,7 @@ putACE sym.l 2491 putBlockBZ db.l 612 putSrcEC_E flow.l 25 putStdoutB io.l 4625 -putStringB main.l 2249 +putStringB main.l 2298 putTellBZ io.l 996 putUdpBZ net.l 377 rdAtomBY_E io.l 2117 @@ -1123,7 +1125,7 @@ retnc err.l 710 retnz err.l 716 retz err.l 713 rewindLog db.l 928 -runE_E main.l 2096 +runE_E main.l 2145 rwUnlockDbA db.l 269 s_isdirS_F sys/x86-64.linux.code.l 16 selectErrX err.l 558 @@ -1173,8 +1175,8 @@ tellErr err.l 646 tenfoldA_A big.l 157 testEscA_F io.l 2050 throwErrZX flow.l 2507 -tmDateC_E main.l 2366 -tmTimeY_E main.l 2553 +tmDateC_E main.l 2415 +tmTimeY_E main.l 2602 tokenCE_E io.l 2522 trSyncErrX err.l 602 traceCY flow.l 3022 @@ -1215,10 +1217,10 @@ wrOpenEXY io.l 1495 wrSetCL_F io.l 2737 wrSyncErrX err.l 575 wtermsigS_A sys/x86-64.linux.code.l 34 -xCntAX_FA main.l 2220 -xCntCX_FC main.l 2211 -xCntEX_FE main.l 2202 -xSymE_E main.l 2177 +xCntAX_FA main.l 2269 +xCntCX_FC main.l 2260 +xCntEX_FE main.l 2251 +xSymE_E main.l 2226 xoruAE_A big.l 465 yieldErrEX err.l 482 yieldErrX err.l 480 diff --git a/src64/version.l b/src64/version.l @@ -1,6 +1,6 @@ -# 17apr12abu +# 23apr12abu # (c) Software Lab. Alexander Burger -(de *Version 3 1 0 2) +(de *Version 3 1 0 3) # vi:et:ts=3:sw=3