commit 256e488c82d15b0f26ae09f942ff009df2d03fbf
parent 8612883c26040fbf8e72165d237cdd17da0584d4
Author: Alexander Burger <abu@software-lab.de>
Date:   Sun, 19 May 2013 18:19:58 +0200
Default coroutine stack segment size 1 MB
Diffstat:
10 files changed, 646 insertions(+), 637 deletions(-)
diff --git a/CHANGES b/CHANGES
@@ -1,4 +1,5 @@
 * DDjun13 picoLisp-3.1.3
+   Default coroutine stack segment size 1 MB
    JavaScript canvas library
    '+OnClick' GUI prefix class
    Flight Simulator in "misc/rcsim.l" (64-bit)
diff --git a/doc/refS.html b/doc/refS.html
@@ -602,32 +602,27 @@ href="refS.html#stem">stem</a></code>.
 </code></pre>
 
 <dt><a name="stack"><code>(stack ['cnt]) -> cnt | (.. sym . cnt)</code></a>
-<dd>(64-bit version only) Maintains the stack segment size for coroutines. If
-called without a <code>cnt</code> argument, or if already one or more <a
-href="ref.html#coroutines">coroutines</a> are running, the current size in
-megabytes is returned. Otherwise, the stack segment size is set to the new value
-(default 4 MB). If there are running coroutines, their tags will be <code><a
-href="refC.html#cons">cons</a></code>ed in front of the size. See also <code><a
-href="refH.html#heap">heap</a></code>.
+<dd>(64-bit version only) Maintains the stack segment size for <a
+href="ref.html#coroutines">coroutines</a> (the main stack segment is limited -
+while at least one coroutine is running - to four times that size). If called
+without a <code>cnt</code> argument, or if already one or more coroutines are
+running, the current size in megabytes is returned. Otherwise, the stack segment
+size is set to the new value (default 1 MB). If there are running coroutines,
+their tags will be <code><a href="refC.html#cons">cons</a></code>ed in front of
+the size. See also <code><a href="refH.html#heap">heap</a></code>.
 
 <pre><code>
-: (stack)         # Get current stack segment size
+$ ulimit -s unlimited  &&  pil +  # Guarantee stack space
+: (stack)      # Current size
+-> 1
+: (stack 4)    # Set to 4 MB
 -> 4
-: (stack 10)      # Set to 10 MB
--> 10
-: (let N 0 (recur (N) (recurse (inc N))))
-!? (recurse (inc N))
-Stack overflow
-? N
--> 109181
-?
-
-: (co "routine" (yield 7))  # Create two coroutines
--> 7
-: (co "routine2" (yield 8))
--> 8
+: (co 'inc (let N 0 (loop (yield (inc 'N)))))  # Create two coroutines
+-> 1
+: (co 'dec (let N 0 (loop (yield (dec 'N)))))
+-> -1
 : (stack)
--> ("routine2" "routine" . 4)
+-> (dec inc . 4)
 </code></pre>
 
 <dt><a name="stamp"><code>(stamp ['dat 'tim]|['T]) -> sym</code></a>
diff --git a/lib/map b/lib/map
@@ -1,5 +1,5 @@
-! (2865 . "@src64/flow.l")
-$ (2967 . "@src64/flow.l")
+! (2867 . "@src64/flow.l")
+$ (2969 . "@src64/flow.l")
 % (2572 . "@src64/big.l")
 & (2807 . "@src64/big.l")
 * (2389 . "@src64/big.l")
@@ -25,16 +25,16 @@ $ (2967 . "@src64/flow.l")
 >> (2627 . "@src64/big.l")
 abs (2731 . "@src64/big.l")
 accept (148 . "@src64/net.l")
-adr (588 . "@src64/main.l")
-alarm (474 . "@src64/main.l")
+adr (596 . "@src64/main.l")
+alarm (477 . "@src64/main.l")
 all (788 . "@src64/sym.l")
 and (1624 . "@src64/flow.l")
 any (3999 . "@src64/io.l")
 append (1339 . "@src64/subr.l")
 apply (713 . "@src64/apply.l")
-arg (2605 . "@src64/main.l")
-args (2581 . "@src64/main.l")
-argv (3233 . "@src64/main.l")
+arg (2613 . "@src64/main.l")
+args (2589 . "@src64/main.l")
+argv (3241 . "@src64/main.l")
 as (139 . "@src64/flow.l")
 asoq (3021 . "@src64/subr.l")
 assoc (2986 . "@src64/subr.l")
@@ -46,7 +46,7 @@ bool (1724 . "@src64/flow.l")
 box (828 . "@src64/flow.l")
 box? (1131 . "@src64/sym.l")
 by (1669 . "@src64/apply.l")
-bye (3415 . "@src64/flow.l")
+bye (3417 . "@src64/flow.l")
 bytes (2973 . "@src64/subr.l")
 caaaar (271 . "@src64/subr.l")
 caaadr (288 . "@src64/subr.l")
@@ -62,11 +62,11 @@ caddar (409 . "@src64/subr.l")
 cadddr (435 . "@src64/subr.l")
 caddr (156 . "@src64/subr.l")
 cadr (45 . "@src64/subr.l")
-call (3067 . "@src64/flow.l")
+call (3069 . "@src64/flow.l")
 car (5 . "@src64/subr.l")
 case (1965 . "@src64/flow.l")
 catch (2467 . "@src64/flow.l")
-cd (2985 . "@src64/main.l")
+cd (2993 . "@src64/main.l")
 cdaaar (464 . "@src64/subr.l")
 cdaadr (487 . "@src64/subr.l")
 cdaar (179 . "@src64/subr.l")
@@ -89,7 +89,7 @@ circ (817 . "@src64/subr.l")
 circ? (2403 . "@src64/subr.l")
 clip (1800 . "@src64/subr.l")
 close (4412 . "@src64/io.l")
-cmd (3215 . "@src64/main.l")
+cmd (3223 . "@src64/main.l")
 cnt (1413 . "@src64/apply.l")
 co (2548 . "@src64/flow.l")
 commit (1403 . "@src64/db.l")
@@ -100,9 +100,9 @@ connect (227 . "@src64/net.l")
 cons (747 . "@src64/subr.l")
 copy (1226 . "@src64/subr.l")
 ctl (4285 . "@src64/io.l")
-ctty (3010 . "@src64/main.l")
+ctty (3018 . "@src64/main.l")
 cut (1931 . "@src64/sym.l")
-date (2719 . "@src64/main.l")
+date (2727 . "@src64/main.l")
 dbck (2018 . "@src64/db.l")
 de (532 . "@src64/flow.l")
 dec (2323 . "@src64/big.l")
@@ -112,16 +112,16 @@ del (1986 . "@src64/sym.l")
 delete (1402 . "@src64/subr.l")
 delq (1453 . "@src64/subr.l")
 diff (2590 . "@src64/subr.l")
-dir (3145 . "@src64/main.l")
+dir (3153 . "@src64/main.l")
 dm (545 . "@src64/flow.l")
 do (2141 . "@src64/flow.l")
-e (2928 . "@src64/flow.l")
+e (2930 . "@src64/flow.l")
 echo (4443 . "@src64/io.l")
-env (600 . "@src64/main.l")
+env (608 . "@src64/main.l")
 eof (3558 . "@src64/io.l")
 eol (3549 . "@src64/io.l")
 err (4265 . "@src64/io.l")
-errno (1605 . "@src64/main.l")
+errno (1613 . "@src64/main.l")
 eval (175 . "@src64/flow.l")
 ext (5177 . "@src64/io.l")
 ext? (1166 . "@src64/sym.l")
@@ -129,7 +129,7 @@ extern (1032 . "@src64/sym.l")
 extra (1269 . "@src64/flow.l")
 extract (1218 . "@src64/apply.l")
 fifo (2097 . "@src64/sym.l")
-file (3092 . "@src64/main.l")
+file (3100 . "@src64/main.l")
 fill (3256 . "@src64/subr.l")
 filter (1161 . "@src64/apply.l")
 fin (2034 . "@src64/subr.l")
@@ -141,13 +141,13 @@ flip (1700 . "@src64/subr.l")
 flush (5152 . "@src64/io.l")
 fold (3521 . "@src64/sym.l")
 for (2230 . "@src64/flow.l")
-fork (3241 . "@src64/flow.l")
+fork (3243 . "@src64/flow.l")
 format (2089 . "@src64/big.l")
 free (1960 . "@src64/db.l")
 from (3577 . "@src64/io.l")
 full (1076 . "@src64/subr.l")
 fun? (750 . "@src64/sym.l")
-gc (435 . "@src64/gc.l")
+gc (436 . "@src64/gc.l")
 ge0 (2707 . "@src64/big.l")
 get (2903 . "@src64/sym.l")
 getd (758 . "@src64/sym.l")
@@ -156,7 +156,7 @@ glue (1369 . "@src64/sym.l")
 gt0 (2718 . "@src64/big.l")
 hash (2976 . "@src64/big.l")
 head (1821 . "@src64/subr.l")
-heap (520 . "@src64/main.l")
+heap (523 . "@src64/main.l")
 hear (3262 . "@src64/io.l")
 host (193 . "@src64/net.l")
 id (1028 . "@src64/db.l")
@@ -167,14 +167,14 @@ ifn (1865 . "@src64/flow.l")
 in (4225 . "@src64/io.l")
 inc (2256 . "@src64/big.l")
 index (2638 . "@src64/subr.l")
-info (3047 . "@src64/main.l")
+info (3055 . "@src64/main.l")
 intern (1007 . "@src64/sym.l")
-ipid (3186 . "@src64/flow.l")
+ipid (3188 . "@src64/flow.l")
 isa (967 . "@src64/flow.l")
 job (1429 . "@src64/flow.l")
 journal (971 . "@src64/db.l")
 key (3410 . "@src64/io.l")
-kill (3218 . "@src64/flow.l")
+kill (3220 . "@src64/flow.l")
 last (2045 . "@src64/subr.l")
 le0 (2693 . "@src64/big.l")
 length (2742 . "@src64/subr.l")
@@ -184,7 +184,7 @@ lieu (1157 . "@src64/db.l")
 line (3733 . "@src64/io.l")
 lines (3886 . "@src64/io.l")
 link (1173 . "@src64/subr.l")
-lisp (2274 . "@src64/main.l")
+lisp (2282 . "@src64/main.l")
 list (888 . "@src64/subr.l")
 listen (160 . "@src64/net.l")
 lit (150 . "@src64/flow.l")
@@ -223,10 +223,10 @@ n== (2088 . "@src64/subr.l")
 nT (2199 . "@src64/subr.l")
 name (502 . "@src64/sym.l")
 nand (1659 . "@src64/flow.l")
-native (1613 . "@src64/main.l")
+native (1621 . "@src64/main.l")
 need (920 . "@src64/subr.l")
 new (839 . "@src64/flow.l")
-next (2588 . "@src64/main.l")
+next (2596 . "@src64/main.l")
 nil (1742 . "@src64/flow.l")
 nond (1942 . "@src64/flow.l")
 nor (1680 . "@src64/flow.l")
@@ -239,8 +239,8 @@ on (1717 . "@src64/sym.l")
 onOff (1747 . "@src64/sym.l")
 one (1780 . "@src64/sym.l")
 open (4369 . "@src64/io.l")
-opid (3202 . "@src64/flow.l")
-opt (3336 . "@src64/main.l")
+opid (3204 . "@src64/flow.l")
+opt (3344 . "@src64/main.l")
 or (1640 . "@src64/flow.l")
 out (4245 . "@src64/io.l")
 pack (1279 . "@src64/sym.l")
@@ -267,24 +267,24 @@ prog (1760 . "@src64/flow.l")
 prog1 (1768 . "@src64/flow.l")
 prog2 (1785 . "@src64/flow.l")
 prop (2934 . "@src64/sym.l")
-protect (510 . "@src64/main.l")
+protect (513 . "@src64/main.l")
 prove (3543 . "@src64/subr.l")
 push (1822 . "@src64/sym.l")
 push1 (1858 . "@src64/sym.l")
 put (2844 . "@src64/sym.l")
 putl (3122 . "@src64/sym.l")
-pwd (2974 . "@src64/main.l")
+pwd (2982 . "@src64/main.l")
 queue (2054 . "@src64/sym.l")
-quit (1315 . "@src64/main.l")
+quit (1323 . "@src64/main.l")
 quote (134 . "@src64/flow.l")
 rand (3003 . "@src64/big.l")
 range (998 . "@src64/subr.l")
 rank (3049 . "@src64/subr.l")
-raw (452 . "@src64/main.l")
+raw (455 . "@src64/main.l")
 rd (5194 . "@src64/io.l")
 read (2674 . "@src64/io.l")
 replace (1500 . "@src64/subr.l")
-rest (2634 . "@src64/main.l")
+rest (2642 . "@src64/main.l")
 reverse (1679 . "@src64/subr.l")
 rewind (5160 . "@src64/io.l")
 rollback (1803 . "@src64/db.l")
@@ -297,20 +297,20 @@ send (1134 . "@src64/flow.l")
 seq (1084 . "@src64/db.l")
 set (1616 . "@src64/sym.l")
 setq (1649 . "@src64/sym.l")
-sigio (490 . "@src64/main.l")
+sigio (493 . "@src64/main.l")
 size (2809 . "@src64/subr.l")
 skip (3535 . "@src64/io.l")
 sort (3978 . "@src64/subr.l")
 sp? (727 . "@src64/sym.l")
 space (5094 . "@src64/io.l")
 split (1593 . "@src64/subr.l")
-stack (549 . "@src64/main.l")
+stack (552 . "@src64/main.l")
 state (2009 . "@src64/flow.l")
 stem (1990 . "@src64/subr.l")
 str (4053 . "@src64/io.l")
 str? (1145 . "@src64/sym.l")
 strip (1577 . "@src64/subr.l")
-struct (2065 . "@src64/main.l")
+struct (2073 . "@src64/main.l")
 sub? (1578 . "@src64/sym.l")
 sum (1460 . "@src64/apply.l")
 super (1225 . "@src64/flow.l")
@@ -318,17 +318,17 @@ sym (4039 . "@src64/io.l")
 sym? (2435 . "@src64/subr.l")
 symbols (942 . "@src64/sym.l")
 sync (3222 . "@src64/io.l")
-sys (847 . "@src64/main.l")
+sys (855 . "@src64/main.l")
 t (1751 . "@src64/flow.l")
 tail (1912 . "@src64/subr.l")
 tell (3294 . "@src64/io.l")
 text (1407 . "@src64/sym.l")
 throw (2493 . "@src64/flow.l")
-tick (3154 . "@src64/flow.l")
+tick (3156 . "@src64/flow.l")
 till (3644 . "@src64/io.l")
-time (2852 . "@src64/main.l")
+time (2860 . "@src64/main.l")
 touch (1181 . "@src64/sym.l")
-trail (699 . "@src64/main.l")
+trail (707 . "@src64/main.l")
 trim (1760 . "@src64/subr.l")
 try (1177 . "@src64/flow.l")
 type (920 . "@src64/flow.l")
@@ -336,13 +336,13 @@ udp (304 . "@src64/net.l")
 unify (3951 . "@src64/subr.l")
 unless (1901 . "@src64/flow.l")
 until (2085 . "@src64/flow.l")
-up (767 . "@src64/main.l")
+up (775 . "@src64/main.l")
 upp? (3402 . "@src64/sym.l")
 uppc (3469 . "@src64/sym.l")
 use (1573 . "@src64/flow.l")
-usec (2956 . "@src64/main.l")
+usec (2964 . "@src64/main.l")
 val (1597 . "@src64/sym.l")
-version (3350 . "@src64/main.l")
+version (3358 . "@src64/main.l")
 wait (3184 . "@src64/io.l")
 when (1884 . "@src64/flow.l")
 while (2061 . "@src64/flow.l")
@@ -352,7 +352,7 @@ wr (5277 . "@src64/io.l")
 xchg (1672 . "@src64/sym.l")
 xor (1701 . "@src64/flow.l")
 x| (2887 . "@src64/big.l")
-yield (2720 . "@src64/flow.l")
+yield (2722 . "@src64/flow.l")
 yoke (1197 . "@src64/subr.l")
 zap (1195 . "@src64/sym.l")
 zero (1765 . "@src64/sym.l")
diff --git a/src64/defs.l b/src64/defs.l
@@ -1,10 +1,10 @@
-# 07jun12abu
+# 19may13abu
 # (c) Software Lab. Alexander Burger
 
 # Constants
 (equ HEAP (* 1024 1024))      # Heap size in bytes
 (equ CELLS (/ HEAP 16))       # Number of cells in a single heap (65536)
-(equ STACK (* 4 1024 1024))   # Default stack segment size
+(equ STACK (* 1024 1024))     # Default coroutine stack segment size (1 MB)
 (equ ZERO (short 0))          # Short number '0'
 (equ ONE (short 1))           # Short number '1'
 (equ TOP (hex "10000"))       # Character top
diff --git a/src64/err.l b/src64/err.l
@@ -1,4 +1,4 @@
-# 12jan13abu
+# 19may13abu
 # (c) Software Lab. Alexander Burger
 
 # Debug print routine
@@ -259,12 +259,12 @@
       do
          cmp Z (X (pack III "+(EnvCo7-Env)"))  # Skipped?
       while ne  # Yes
-         ld C (Stack0)  # Find stack segment
+         ld C (Stack1)  # Find stack segment
          ld A 1
          do
-            sub C (StkSize)  # Next segment
             cmp C (Z II)  # Found 'seg'?
          while ne  # No
+            sub C (StkSize)  # Next segment
             add A A
          loop
          xor (Stacks) A  # Clear in segment bitmask
diff --git a/src64/flow.l b/src64/flow.l
@@ -1,4 +1,4 @@
-# 06may13abu
+# 19may13abu
 # (c) Software Lab. Alexander Burger
 
 (code 'redefMsgEC)
@@ -2555,105 +2555,107 @@
       push Z
       push L
       sub S "EnvMid-EnvCo"  # Space for env
-      ld Y (Stack0)  # Search through stack segments
+      ld Y (Stack1)  # Search through stack segments
       ld C (Stacks)  # Segment bitmask
       do
-         sub Y (StkSize)  # Next segment
          shr C 1  # In use?
          if c  # Yes
             cmp E (Y -I)  # Found tag?
-            continue ne  # No
-            null (Y -II)  # Already active?
-            jz reentErrEX  # Yes
-            push Y  # Resume coroutine: Save 'seg'
-            push (StkLimit)  # and 'lim'
-            push (EnvCo7)  # Link
-            ld (EnvCo7) S  # Close coroutine frame
-            ld Z S  # Point Z to main frame
-            save (EnvCo) (EnvMid) (Z III)  # Save environment
+            if eq  # Yes
+               null (Y -II)  # Already active?
+               jz reentErrEX  # Yes
+               push Y  # Resume coroutine: Save 'seg'
+               push (StkLimit)  # and 'lim'
+               push (EnvCo7)  # Link
+               ld (EnvCo7) S  # Close coroutine frame
+               ld Z S  # Point Z to main frame
+               save (EnvCo) (EnvMid) (Z III)  # Save environment
 : resumeCoroutine
-            ld S (Y -II)  # Restore stack pointer
-            ld (Y -II) 0  # Mark as active
-            lea A (Y 4096)  # Set stack limit
-            sub A (StkSize)
-            ld (StkLimit) A
-            load (EnvCo) (EnvMid) (Y (pack -II "-(EnvMid-EnvCo)"))  # Restore environment
-            ld X (EnvBind)  # Reversed bindings
-            ld C (Z (pack III "+(EnvBind-EnvCo)"))  # Main bindings
-            do
-               null X  # More reversed bindings?
-            while nz  # Yes
-               ld Y (X)  # Link address in Y
-               null (X -I)  # Env swap zero?
-               if z  # Yes
-                  lea A (Y -II)  # End of bindings in A
-                  do
-                     xchg ((A)) (A I)  # Exchange symbol value with saved value
-                     sub A II
-                     cmp A X  # More?
-                  until lt  # No
-               end
-               ld A (Y I)  # Get down link
-               ld (Y I) C  # Undo reversal
-               ld C X
-               ld X A
-            loop
-            ld (EnvBind) C  # Set local bindings
-            ld X EnvInFrames  # Pointer to input frames
-            ld C (Z (pack III "+(EnvInFrames-EnvCo)"))  # Local input frames
-            call joinLocalCX  # Join locals
-            ld X EnvOutFrames  # Pointer to output frames
-            ld C (Z (pack III "+(EnvOutFrames-EnvCo)"))  # Local output frames
-            call joinLocalCX  # Join locals
-            ld X EnvErrFrames  # Pointer to error frames
-            ld C (Z (pack III "+(EnvErrFrames-EnvCo)"))  # Local error frames
-            call joinLocalCX  # Join locals
-            ld X EnvCtlFrames  # Pointer to control frames
-            ld C (Z (pack III "+(EnvCtlFrames-EnvCo)"))  # Local control frames
-            call joinLocalCX  # Join locals
-            ld X EnvApply  # Local apply stack
-            do
-               null (X)  # Any?
-            while nz  # Yes
-               ld X ((X))  # Follow link
-            loop
-            ld (X) (Z (pack III "+(EnvApply-EnvCo)"))  # Join
-            pop X  # Get saved L
-            null X  # Any?
-            if nz  # Yes
-               ld Y (X)  # Pointer to link
+               ld S (Y -II)  # Restore stack pointer
+               ld (Y -II) 0  # Mark as active
+               lea A (Y 4096)  # Set stack limit
+               sub A (StkSize)
+               ld (StkLimit) A
+               load (EnvCo) (EnvMid) (Y (pack -II "-(EnvMid-EnvCo)"))  # Restore environment
+               ld X (EnvBind)  # Reversed bindings
+               ld C (Z (pack III "+(EnvBind-EnvCo)"))  # Main bindings
                do
-                  ld A (Y)  # Get link
-                  null A  # Found end?
-               while nz  # No
-                  ld Y (A)  # Next frame
+                  null X  # More reversed bindings?
+               while nz  # Yes
+                  ld Y (X)  # Link address in Y
+                  null (X -I)  # Env swap zero?
+                  if z  # Yes
+                     lea A (Y -II)  # End of bindings in A
+                     do
+                        xchg ((A)) (A I)  # Exchange symbol value with saved value
+                        sub A II
+                        cmp A X  # More?
+                     until lt  # No
+                  end
+                  ld A (Y I)  # Get down link
+                  ld (Y I) C  # Undo reversal
+                  ld C X
+                  ld X A
                loop
-               ld (Y) (Z (pack III "+(EnvMid-EnvCo)"))  # Link to main stack
-               ld L X
-            end
-            pop Z
-            pop Y
-            pop X
-            ret
+               ld (EnvBind) C  # Set local bindings
+               ld X EnvInFrames  # Pointer to input frames
+               ld C (Z (pack III "+(EnvInFrames-EnvCo)"))  # Local input frames
+               call joinLocalCX  # Join locals
+               ld X EnvOutFrames  # Pointer to output frames
+               ld C (Z (pack III "+(EnvOutFrames-EnvCo)"))  # Local output frames
+               call joinLocalCX  # Join locals
+               ld X EnvErrFrames  # Pointer to error frames
+               ld C (Z (pack III "+(EnvErrFrames-EnvCo)"))  # Local error frames
+               call joinLocalCX  # Join locals
+               ld X EnvCtlFrames  # Pointer to control frames
+               ld C (Z (pack III "+(EnvCtlFrames-EnvCo)"))  # Local control frames
+               call joinLocalCX  # Join locals
+               ld X EnvApply  # Local apply stack
+               do
+                  null (X)  # Any?
+               while nz  # Yes
+                  ld X ((X))  # Follow link
+               loop
+               ld (X) (Z (pack III "+(EnvApply-EnvCo)"))  # Join
+               pop X  # Get saved L
+               null X  # Any?
+               if nz  # Yes
+                  ld Y (X)  # Pointer to link
+                  do
+                     ld A (Y)  # Get link
+                     null A  # Found end?
+                  while nz  # No
+                     ld Y (A)  # Next frame
+                  loop
+                  ld (Y) (Z (pack III "+(EnvMid-EnvCo)"))  # Link to main stack
+                  ld L X
+               end
+               pop Z
+               pop Y
+               pop X
+               ret
+            end  # nz
          end
-      until z
-      ld Y (Stack0)  # Find unused stack segment
+      while nz
+         sub Y (StkSize)  # Next segment
+      loop
+      ld Y (Stack1)  # Find unused stack segment
       ld Z 1  # New mask
       ld C (Stacks)  # Segment bitmask
       null C  # Starting first coroutine?
       if z  # Yes
-         lea A ((Stack0) 4096)  # Set stack limit
-         sub A (StkSize)
+         ld A Y  # Set stack limit
+         add A 4096
          cmp S A  # Check it
          jlt stkErr
          ld (StkLimit) A
       end
       do
-         sub Y (StkSize)  # Next segment
          test C Z  # Free?
       while nz  # No
          add Z Z  # Next bit
          jc stkErrEX  # Overflow
+         sub Y (StkSize)  # Next segment
       loop
       or (Stacks) Z  # Mark segment as used
       push Y  # Save 'seg'
@@ -2687,11 +2689,10 @@
       pop X
       ret
    end
-   ld X (Stack0)  # Search through stack segments
+   ld X (Stack1)  # Search through stack segments
    ld C (Stacks)  # Segment bitmask
    ld A 1
    do
-      sub X (StkSize)  # Next segment
       shr C 1  # In use?
       if c  # Yes
          cmp E (X -I)  # Found tag?
@@ -2707,9 +2708,10 @@
             end
             pop X
             ret
-         end
+         end  # nz
       end
    while nz
+      sub X (StkSize)  # Next segment
       add A A
    loop
    ld E Nil  # Return NIL
@@ -2737,19 +2739,19 @@
    ld Y 0  # Preload "no target"
    cmp E Nil  # Any?
    if ne  # Yes
-      ld Y (Stack0)  # Search for target coroutine
+      ld Y (Stack1)  # Search for target coroutine
       ld C (Stacks)  # Segment bitmask
       do
-         sub Y (StkSize)  # Next segment
          shr C 1  # In use?
          if c  # Yes
             cmp E (Y -I)  # Found tag?
-            continue ne  # No
+            jne 10  # No
             null (Y -II)  # Already active?
             jz reentErrEX  # Yes
             break T
          end
          jz yieldErrEX
+10       sub Y (StkSize)  # Next segment
       loop
    end
    ld E (L I)  # Get result
@@ -2764,7 +2766,7 @@
          do
             ld A (X)  # Get link
             null A  # Any?
-            jz 10  # No
+            jz 20  # No
             cmp A C  # Reached main routine's link?
          while ne  # No
             ld X A  # Follow link
@@ -2772,7 +2774,7 @@
          ld (X) 0  # Clear link
       end
    end
-10 push L  # End of segment
+20 push L  # End of segment
    push Y  # Save taget coroutine
    ld X EnvApply  # Pointer to apply stack
    do
diff --git a/src64/gc.l b/src64/gc.l
@@ -1,4 +1,4 @@
-# 07jun12abu
+# 19may13abu
 # (c) Software Lab. Alexander Burger
 
 # Mark data
@@ -129,10 +129,9 @@
       call markE
       ld Y (Y)  # Next frame
    loop
-   ld Y (Stack0)  # Search through stack segments
+   ld Y (Stack1)  # Search through stack segments
    ld C (Stacks)  # Segment bitmask
    do
-      sub Y (StkSize)  # Next segment
       shr C 1  # In use?
       if c  # Yes
          push C
@@ -159,9 +158,11 @@
             pop Y
          end
          pop C
-         continue T
+         jmp 10
       end
-   until z
+   while nz
+10    sub Y (StkSize)  # Next segment
+   loop
    # Mark externals
    ld Y Extern
    ld Z 0  # Clear TOS
@@ -209,7 +210,7 @@
          do
             ld A Z  # TOS
             null A  # Empty?
-            jeq 10  # Done
+            jeq 20  # Done
             sym A  # Second visit?
             if z  # Yes
                ld C (A CDR)  # Nodes
@@ -226,7 +227,7 @@
          loop
       loop
    loop
-10 ld A Db1  # DB root object
+20 ld A Db1  # DB root object
    ld (DB) A  # Restore '*DB'
    test (A) 1  # Marked?
    if nz  # No
@@ -235,7 +236,7 @@
    end
    ld Y Extern  # Clean up
    ld Z 0  # Clear TOS
-20 do
+30 do
       do
          ld A (Y CDR)
          atom (A CDR)  # Right subtree?
@@ -253,19 +254,19 @@
             if nz  # No
                or (Y CDR) 1  # Set mark bit again
                ld Y A  # Use NIL
-               jmp 40  # Already traversed
+               jmp 50  # Already traversed
             end
             atom (A)  # Left branch?
             if nz  # No
                or (Y CDR) 1  # Set mark bit again
                ld Y (A CDR)  # Use right branch
-               jmp 40  # Already traversed
+               jmp 50  # Already traversed
             end
             atom (A CDR)  # Right branch?
             if nz  # No
                or (Y CDR) 1  # Set mark bit again
                ld Y (A)  # Use left branch
-               jmp 20
+               jmp 30
             end
             ld A (A CDR)  # A on right branch
             ld X (A CDR)  # X on sub-branches
@@ -273,7 +274,7 @@
             if nz  # No
                ld (Y) (A)  # Insert right sub-branch
                ld ((Y CDR) CDR) (X CDR)
-               jmp 30  # Traverse left branch
+               jmp 40  # Traverse left branch
             end
             ld X (X)  # Left sub-branch
             do
@@ -286,7 +287,7 @@
             ld (Y) (X)  # Insert left sub-branch
             ld ((A CDR)) (C CDR)
          end
-30       ld A (Y CDR)  # Left subtree?
+40       ld A (Y CDR)  # Left subtree?
          atom (A)
          if z  # Yes
             ld C Y  # Go left
@@ -296,10 +297,10 @@
             ld Z C
             break T
          end
-40       do
+50       do
             ld A Z  # TOS
             null A  # Empty?
-            jeq 50  # Done
+            jeq 60  # Done
             sym A  # Second visit?
             if z  # Yes
                ld C (A CDR)  # Nodes
@@ -316,12 +317,11 @@
          loop
       loop
    loop
-50 ### Clean up ###
-   ld Y (Stack0)  # Search through stack segments
+60 ### Clean up ###
+   ld Y (Stack1)  # Search through stack segments
    ld C (Stacks)  # Segment bitmask
    ld A 1
    do
-      sub Y (StkSize)  # Next segment
       shr C 1  # In use?
       if c  # Yes
          test ((Y -I)) 1  # 'tag' symbol gone?
@@ -348,10 +348,11 @@
                loop
             end
          end
-         jmp 60
+         jmp 70
       end
    while nz
-60    add A A
+70    sub Y (StkSize)  # Next segment
+      add A A
    loop
    ld Y (EnvApply)  # Apply stack
    do
diff --git a/src64/glob.l b/src64/glob.l
@@ -1,4 +1,4 @@
-# 06may13abu
+# 19may13abu
 # (c) Software Lab. Alexander Burger
 
 (data 'Data)
@@ -13,9 +13,10 @@
                word  0
 
 : Stack0       word  0           # Initial stack pointer
+: Stack1       word  0           # Coroutine stack base
 : Stacks       word  0           # Stack segment bitmask
-: StkSize      word  STACK       # Stack segment size
-: StkLimit     word  0           # Stack limit: StackN-StkSize+4096
+: StkSize      word  STACK       # Coroutine stack segment size
+: StkLimit     word  0           # Stack limit: StackN-Size+4096
 : Link         word  0           # Saved link register
 : Catch        word  0           # Catch frames
 : Termio       word  0           # Raw mode terminal I/O
diff --git a/src64/main.l b/src64/main.l
@@ -1,4 +1,4 @@
-# 06may13abu
+# 19may13abu
 # (c) Software Lab. Alexander Burger
 
 (code 'Code)
@@ -85,6 +85,9 @@
    or A CNT
    ld (Pid) A
    ld (Stack0) S  # Save top level stack pointer
+   ld A S  # Stack top in A
+   sub A (* 4 STACK)  # Decrement by main segment size
+   ld (Stack1) A  # Set coroutine stack base
    ld (StkLimit) 0  # Initially without stack limit
    ld L 0  # Init link register
    call heapAlloc  # Allocate initial heap
@@ -556,7 +559,11 @@
       if z  # No
          ld E (E)  # Eval 'cnt'
          call evCntEX_FE
-         shl E 20  # [MB]
+         shl E 22  # Main stack segment size [times 4 MB]
+         ld A (Stack0)  # Get stack top
+         sub A E  # Decrement by main segment size
+         ld (Stack1) A  # New coroutine stack base
+         shr E 2  # [to MB]
          ld (StkSize) E  # Set new stack size
          shr E 16  # Make short number [MB]
          or E CNT
@@ -567,19 +574,20 @@
    ld E (StkSize)  # Return current stack size
    shr E 16  # Make short number [MB]
    or E CNT
-   ld X (Stack0)  # Collect coroutines
+   ld X (Stack1)  # Collect coroutines
    ld C (Stacks)  # Segment bitmask
    do
-      sub X (StkSize)  # Next segment
       shr C 1  # In use?
       if c  # Yes
          call consE_A  # Cons 'tag'
          ld (A) (X -I)
          ld (A CDR) E
          ld E A
-         continue T
+         jmp 10
       end
-   until z
+   while nz
+10    sub X (StkSize)  # Next segment
+   loop
    pop X
    ret
 
diff --git a/src64/tags b/src64/tags
@@ -1,52 +1,52 @@
 
-./defs.l,638
+./defs.l,639
 HEAP5,63
 CELLS6,114
 STACK7,187
-ZERO8,246
-ONE9,295
-TOP10,344
-DB111,390
-I14,455
-II15,465
-III16,477
-IV17,490
-V18,502
-VI19,513
-VII20,525
-VIII21,538
-IX22,552
--I24,565
--II25,579
--III26,595
--IV27,612
--V28,628
--VI29,643
--VII30,659
--VIII31,676
-CNT34,710
-BIG35,737
-DIG36,784
-CDR37,829
-SIGN38,870
-SYM39,908
-TAIL40,936
-NIX43,984
-BEG44,1008
-DOT45,1039
-END46,1071
-NUMBER47,1100
-INTERN48,1127
-TRANSIENT49,1163
-EXTERN50,1200
-BLK53,1246
-BLKSIZE54,1285
-BLKTAG55,1324
-UDPMAX58,1373
-CHAR_UPPERCASE61,1453
-CHAR_LOWERCASE62,1476
-CHAR_LETTER63,1499
-CHAR_DIGIT64,1520
+ZERO8,263
+ONE9,312
+TOP10,361
+DB111,407
+I14,472
+II15,482
+III16,494
+IV17,507
+V18,519
+VI19,530
+VII20,542
+VIII21,555
+IX22,569
+-I24,582
+-II25,596
+-III26,612
+-IV27,629
+-V28,645
+-VI29,660
+-VII30,676
+-VIII31,693
+CNT34,727
+BIG35,754
+DIG36,801
+CDR37,846
+SIGN38,887
+SYM39,925
+TAIL40,953
+NIX43,1001
+BEG44,1025
+DOT45,1056
+END46,1088
+NUMBER47,1117
+INTERN48,1144
+TRANSIENT49,1180
+EXTERN50,1217
+BLK53,1263
+BLKSIZE54,1302
+BLKTAG55,1341
+UDPMAX58,1390
+CHAR_UPPERCASE61,1470
+CHAR_LOWERCASE62,1493
+CHAR_LETTER63,1516
+CHAR_DIGIT64,1537
 
 sys/x86-64.linux.defs.l,1959
 ENOENT5,59
@@ -162,7 +162,7 @@ sys/x86-64.linux.defs.l,1959
 AI_ADDR147,2488
 AI_NEXT148,2505
 
-./glob.l,4310
+./glob.l,4326
 Data4,51
 AV7,77
 AV08,141
@@ -171,243 +171,244 @@ sys/x86-64.linux.defs.l,1959
 Avail11,284
 Buf12,330
 Stack015,412
-Stacks16,469
-StkSize17,526
-StkLimit18,580
-Link19,648
-Catch20,703
-Termio21,751
-Tv22,808
-Time24,886
-USec25,947
-TtyPid26,1003
-InFDs27,1058
-InFiles28,1122
-OutFDs29,1169
-OutFiles30,1234
-PutBinBZ31,1282
-GetBinZ_FB32,1340
-Seed33,1397
-TickU35,1500
-TickS36,1554
-Slot37,1610
-Spkr38,1657
-Mic39,1708
-SpMiPipe40,1758
-Hear41,1817
-Tell42,1865
-TellBuf43,1916
-Talking44,1962
-Children45,2010
-Child46,2071
-ExtN47,2118
-Extn48,2176
-StrX49,2199
-StrC50,2248
-LineC51,2271
-Break52,2295
-GcCount53,2341
-Sep054,2392
-Sep355,2445
-BufEnd56,2499
-Penv58,2561
-Pnl59,2614
-Signal62,2650
-DBs65,2697
-DbFile66,2758
-DbFiles67,2801
-DbBlock68,2845
-MaxBlkSize69,2893
-BlkIndex70,2947
-BlkLink71,2994
-DbJnl72,3040
-DbLog73,3088
-GcMark76,3164
-Transient77,3173
-Alarm79,3286
-Sigio80,3335
-LineX81,3384
-Lisp82,3432
-LispEnd130,4957
-GcMarkEnd131,4967
-SymTab135,4996
-Nil136,5013
-Pico139,5170
-pico144,5312
-CPU145,5350
-OS146,5389
-DB147,5427
-Meth148,5464
-Quote149,5504
-TSym150,5545
-ISym153,5604
-NSym154,5641
-SSym155,5678
-CSym156,5715
-BSym157,5752
-Solo158,5789
-PPid159,5827
-Pid160,5864
-At161,5899
-At2162,5936
-At3163,5973
-This164,6010
-Prompt165,6047
-Dbg166,6084
-Zap167,6121
-Ext168,6158
-Scl169,6195
-Class170,6233
-Run171,6270
-Hup172,6307
-Sig1173,6344
-Sig2174,6381
-Up175,6418
-Err176,6455
-Msg177,6492
-Uni178,6529
-Led179,6566
-Tsm180,6603
-Adr181,6640
-Fork182,6677
-Bye183,6714
-SymTabEnd562,21276
-TgCPU565,21309
-TgOS566,21351
-Db1570,21442
-Extern572,21469
-GcSymEnd576,21540
-Version579,21569
-EnvCo590,21776
-Chr591,21809
-PutB592,21863
-Get_A593,21924
-InFile594,21984
-OutFile595,22030
-Env596,22077
-EnvBind597,22110
-EnvInFrames598,22183
-EnvOutFrames599,22231
-EnvErrFrames600,22280
-EnvCtlFrames601,22328
-EnvIntern602,22378
-EnvArgs603,22451
-EnvNext604,22500
-EnvCls605,22547
-EnvKey606,22595
-EnvApply607,22641
-EnvMake608,22689
-EnvYoke609,22735
-EnvParseX610,22758
-EnvParseC611,22807
-EnvParseEOF612,22830
-EnvMid613,22854
-EnvCo7614,22882
-EnvTask615,22928
-EnvProtect616,22973
-EnvTrace617,23026
-EnvEnd618,23073
-OrgTermio620,23102
-Flock621,23163
-Tms622,23218
-Addr623,23271
-TBuf625,23331
-CaseBlocks630,23468
-CaseData760,38851
-CaseUpper1097,78732
-CaseLower1121,80558
-Tio1146,82264
-Repl1148,82313
-PRepl1149,82358
-Jam1150,82405
-InBye1151,82450
-Sync1152,82497
-Month1153,82559
-_r_1156,82625
-_w_1157,82642
-_a_1158,82659
-_ap_1159,82676
-_dot_1160,82695
-Giveup1164,82748
-ExecErr1165,82774
-AllocErr1166,82810
-PidSigMsg1167,82839
-QuitMsg1168,82872
-CbErr1169,82893
-HashBlank1171,82937
-Redefined1172,82960
-SuperErr1173,82994
-ExtraErr1174,83023
-ThrowErr1175,83052
-Trc11176,83085
-Trc21177,83103
-SetFD1179,83129
-Delim1180,83154
-DelimEnd1181,83195
-Arrow1182,83206
-RolbLog1184,83233
-IgnLog1185,83294
-CircFree1186,83348
-BadChain1187,83386
-BadCount1188,83415
-ErrTok1190,83452
-Dashes1191,83473
-ProtErr1192,83495
-SymNsErr1193,83530
-StkErr1194,83570
-ArgErr1195,83602
-NumErr1196,83632
-CntErr1197,83665
-SymErr1198,83704
-ExtErr1199,83737
-PairErr1200,83779
-AtomErr1201,83816
-LstErr1202,83848
-VarErr1203,83879
-DivErr1204,83914
-RenErr1205,83937
-MakeErr1206,83967
-ReentErr1207,83996
-YieldErr1208,84035
-MsgErr1209,84067
-BrkErr1210,84096
-OpenErr1211,84122
-CloseErr1212,84155
-PipeErr1213,84190
-ForkErr1214,84223
-WaitPidErr1215,84252
-BadFdErr1216,84282
-NoFdErr1217,84308
-EofErr1218,84340
-SuparErr1219,84369
-BadInput1220,84415
-BadDot1221,84449
-SelectErr1222,84482
-WrBytesErr1223,84519
-WrChildErr1224,84556
-WrSyncErr1225,84593
-WrJnlErr1226,84628
-WrLogErr1227,84665
-TruncErr1228,84698
-DbSyncErr1229,84740
-TrSyncErr1230,84779
-LockErr1231,84827
-DbfErr1232,84859
-JnlErr1233,84888
-IdErr1234,84917
-DbRdErr1235,84940
-DbWrErr1236,84970
-DbSizErr1237,85001
-TellErr1238,85032
-IpSocketErr1239,85064
-IpGetsocknameErr1240,85106
-IpV6onlyErr1241,85158
-IpReuseaddrErr1242,85205
-IpBindErr1243,85256
-IpListenErr1244,85294
-UdpOvflErr1245,85336
-UndefErr1246,85370
-DlErr1247,85399
+Stack116,469
+Stacks17,525
+StkSize18,582
+StkLimit19,646
+Link20,711
+Catch21,766
+Termio22,814
+Tv23,871
+Time25,949
+USec26,1010
+TtyPid27,1066
+InFDs28,1121
+InFiles29,1185
+OutFDs30,1232
+OutFiles31,1297
+PutBinBZ32,1345
+GetBinZ_FB33,1403
+Seed34,1460
+TickU36,1563
+TickS37,1617
+Slot38,1673
+Spkr39,1720
+Mic40,1771
+SpMiPipe41,1821
+Hear42,1880
+Tell43,1928
+TellBuf44,1979
+Talking45,2025
+Children46,2073
+Child47,2134
+ExtN48,2181
+Extn49,2239
+StrX50,2262
+StrC51,2311
+LineC52,2334
+Break53,2358
+GcCount54,2404
+Sep055,2455
+Sep356,2508
+BufEnd57,2562
+Penv59,2624
+Pnl60,2677
+Signal63,2713
+DBs66,2760
+DbFile67,2821
+DbFiles68,2864
+DbBlock69,2908
+MaxBlkSize70,2956
+BlkIndex71,3010
+BlkLink72,3057
+DbJnl73,3103
+DbLog74,3151
+GcMark77,3227
+Transient78,3236
+Alarm80,3349
+Sigio81,3398
+LineX82,3447
+Lisp83,3495
+LispEnd131,5020
+GcMarkEnd132,5030
+SymTab136,5059
+Nil137,5076
+Pico140,5233
+pico145,5375
+CPU146,5413
+OS147,5452
+DB148,5490
+Meth149,5527
+Quote150,5567
+TSym151,5608
+ISym154,5667
+NSym155,5704
+SSym156,5741
+CSym157,5778
+BSym158,5815
+Solo159,5852
+PPid160,5890
+Pid161,5927
+At162,5962
+At2163,5999
+At3164,6036
+This165,6073
+Prompt166,6110
+Dbg167,6147
+Zap168,6184
+Ext169,6221
+Scl170,6258
+Class171,6296
+Run172,6333
+Hup173,6370
+Sig1174,6407
+Sig2175,6444
+Up176,6481
+Err177,6518
+Msg178,6555
+Uni179,6592
+Led180,6629
+Tsm181,6666
+Adr182,6703
+Fork183,6740
+Bye184,6777
+SymTabEnd563,21339
+TgCPU566,21372
+TgOS567,21414
+Db1571,21505
+Extern573,21532
+GcSymEnd577,21603
+Version580,21632
+EnvCo591,21839
+Chr592,21872
+PutB593,21926
+Get_A594,21987
+InFile595,22047
+OutFile596,22093
+Env597,22140
+EnvBind598,22173
+EnvInFrames599,22246
+EnvOutFrames600,22294
+EnvErrFrames601,22343
+EnvCtlFrames602,22391
+EnvIntern603,22441
+EnvArgs604,22514
+EnvNext605,22563
+EnvCls606,22610
+EnvKey607,22658
+EnvApply608,22704
+EnvMake609,22752
+EnvYoke610,22798
+EnvParseX611,22821
+EnvParseC612,22870
+EnvParseEOF613,22893
+EnvMid614,22917
+EnvCo7615,22945
+EnvTask616,22991
+EnvProtect617,23036
+EnvTrace618,23089
+EnvEnd619,23136
+OrgTermio621,23165
+Flock622,23226
+Tms623,23281
+Addr624,23334
+TBuf626,23394
+CaseBlocks631,23531
+CaseData761,38914
+CaseUpper1098,78795
+CaseLower1122,80621
+Tio1147,82327
+Repl1149,82376
+PRepl1150,82421
+Jam1151,82468
+InBye1152,82513
+Sync1153,82560
+Month1154,82622
+_r_1157,82688
+_w_1158,82705
+_a_1159,82722
+_ap_1160,82739
+_dot_1161,82758
+Giveup1165,82811
+ExecErr1166,82837
+AllocErr1167,82873
+PidSigMsg1168,82902
+QuitMsg1169,82935
+CbErr1170,82956
+HashBlank1172,83000
+Redefined1173,83023
+SuperErr1174,83057
+ExtraErr1175,83086
+ThrowErr1176,83115
+Trc11177,83148
+Trc21178,83166
+SetFD1180,83192
+Delim1181,83217
+DelimEnd1182,83258
+Arrow1183,83269
+RolbLog1185,83296
+IgnLog1186,83357
+CircFree1187,83411
+BadChain1188,83449
+BadCount1189,83478
+ErrTok1191,83515
+Dashes1192,83536
+ProtErr1193,83558
+SymNsErr1194,83593
+StkErr1195,83633
+ArgErr1196,83665
+NumErr1197,83695
+CntErr1198,83728
+SymErr1199,83767
+ExtErr1200,83800
+PairErr1201,83842
+AtomErr1202,83879
+LstErr1203,83911
+VarErr1204,83942
+DivErr1205,83977
+RenErr1206,84000
+MakeErr1207,84030
+ReentErr1208,84059
+YieldErr1209,84098
+MsgErr1210,84130
+BrkErr1211,84159
+OpenErr1212,84185
+CloseErr1213,84218
+PipeErr1214,84253
+ForkErr1215,84286
+WaitPidErr1216,84315
+BadFdErr1217,84345
+NoFdErr1218,84371
+EofErr1219,84403
+SuparErr1220,84432
+BadInput1221,84478
+BadDot1222,84512
+SelectErr1223,84545
+WrBytesErr1224,84582
+WrChildErr1225,84619
+WrSyncErr1226,84656
+WrJnlErr1227,84691
+WrLogErr1228,84728
+TruncErr1229,84761
+DbSyncErr1230,84803
+TrSyncErr1231,84842
+LockErr1232,84890
+DbfErr1233,84922
+JnlErr1234,84951
+IdErr1235,84980
+DbRdErr1236,85003
+DbWrErr1237,85033
+DbSizErr1238,85064
+TellErr1239,85095
+IpSocketErr1240,85127
+IpGetsocknameErr1241,85169
+IpV6onlyErr1242,85221
+IpReuseaddrErr1243,85268
+IpBindErr1244,85319
+IpListenErr1245,85357
+UdpOvflErr1246,85399
+UndefErr1247,85433
+DlErr1248,85462
 
 ./main.l,2242
 Code4,51
@@ -420,114 +421,114 @@ sys/x86-64.linux.defs.l,1959
 RetT25,285
 RetE_E28,320
 main33,402
-restart154,4013
-loadAllX_E162,4175
-giveupX180,4583
-execErrS187,4696
-iSignalCE192,4796
-allocC_A202,5079
-allocAE_A207,5188
-NoMemory211,5302
-heapAlloc217,5381
-sighandler0238,5885
-sighandlerX245,5962
-sighandlerE252,6039
-sig345,9371
-sigTerm357,9595
-sigChld368,9813
-tcSetC389,10321
-sigTermStop402,10588
-setRaw418,11081
-setCooked444,11880
-doRaw452,12047
-doAlarm474,12450
-doSigio490,12734
-doProtect510,13201
-doHeap520,13361
-doStack549,13985
-doAdr588,14828
-doEnv600,15046
-doTrail699,17756
-doUp767,19354
-doSys847,21069
-circE_YF875,21728
-equalAE_F907,22468
-compareAE_F1040,25677
-binSizeX_A1202,29153
-memberXY_FY1297,31763
-doQuit1315,32114
-evExprCE_E1333,32531
-evListE_E1481,36165
-sharedLibC_FA1534,37301
-doErrno1605,38945
-doNative1613,39109
-natBufACZ_CZ1817,44911
-natRetACE_CE1916,47396
-doStruct2065,52796
-fetchCharC_AC2108,53676
-cbl2143,54545
-cbl12176,55261
-cbl22180,55377
-cbl32184,55423
-cbl42188,55475
-cbl52192,55527
-cbl62196,55579
-cbl72200,55631
-cbl82204,55683
-cbl92208,55735
-cbl102212,55787
-cbl112216,55840
-cbl122220,55894
-cbl132224,55948
-cbl142228,56002
-cbl152232,56056
-cbl162236,56110
-cbl172240,56164
-cbl182244,56218
-cbl192248,56272
-cbl202252,56326
-cbl212256,56380
-cbl222260,56434
-cbl232264,56488
-cbl242268,56542
-doLisp2274,56625
-lisp2318,57651
-execE2364,58765
-runE_E2376,58920
-funqE_FE2388,59072
-evSymX_E2450,60495
-evSymY_E2453,60553
-evSymE_E2455,60595
-xSymE_E2457,60632
-evCntXY_FE2478,60997
-evCntEX_FE2480,61041
-xCntEX_FE2482,61080
-xCntCX_FC2491,61257
-xCntAX_FA2500,61434
-boxE_E2509,61611
-putStringB2529,62068
-begString2541,62282
-endString_E2552,62508
-doArgs2581,63165
-doNext2588,63279
-doArg2605,63595
-doRest2634,64237
-tmDateC_E2648,64484
-dateXYZ_E2658,64661
-doDate2719,66022
-tmTimeY_E2835,69633
-doTime2852,69966
-doUsec2956,72944
-doPwd2974,73361
-doCd2985,73616
-doCtty3010,74232
-doInfo3047,75166
-doFile3092,76261
-doDir3145,77497
-doCmd3215,79115
-doArgv3233,79574
-doOpt3336,82120
-doVersion3350,82451
+restart157,4141
+loadAllX_E165,4303
+giveupX183,4711
+execErrS190,4824
+iSignalCE195,4924
+allocC_A205,5207
+allocAE_A210,5316
+NoMemory214,5430
+heapAlloc220,5509
+sighandler0241,6013
+sighandlerX248,6090
+sighandlerE255,6167
+sig348,9499
+sigTerm360,9723
+sigChld371,9941
+tcSetC392,10449
+sigTermStop405,10716
+setRaw421,11209
+setCooked447,12008
+doRaw455,12175
+doAlarm477,12578
+doSigio493,12862
+doProtect513,13329
+doHeap523,13489
+doStack552,14113
+doAdr596,15163
+doEnv608,15381
+doTrail707,18091
+doUp775,19689
+doSys855,21404
+circE_YF883,22063
+equalAE_F915,22803
+compareAE_F1048,26012
+binSizeX_A1210,29488
+memberXY_FY1305,32098
+doQuit1323,32449
+evExprCE_E1341,32866
+evListE_E1489,36500
+sharedLibC_FA1542,37636
+doErrno1613,39280
+doNative1621,39444
+natBufACZ_CZ1825,45246
+natRetACE_CE1924,47731
+doStruct2073,53131
+fetchCharC_AC2116,54011
+cbl2151,54880
+cbl12184,55596
+cbl22188,55712
+cbl32192,55758
+cbl42196,55810
+cbl52200,55862
+cbl62204,55914
+cbl72208,55966
+cbl82212,56018
+cbl92216,56070
+cbl102220,56122
+cbl112224,56175
+cbl122228,56229
+cbl132232,56283
+cbl142236,56337
+cbl152240,56391
+cbl162244,56445
+cbl172248,56499
+cbl182252,56553
+cbl192256,56607
+cbl202260,56661
+cbl212264,56715
+cbl222268,56769
+cbl232272,56823
+cbl242276,56877
+doLisp2282,56960
+lisp2326,57986
+execE2372,59100
+runE_E2384,59255
+funqE_FE2396,59407
+evSymX_E2458,60830
+evSymY_E2461,60888
+evSymE_E2463,60930
+xSymE_E2465,60967
+evCntXY_FE2486,61332
+evCntEX_FE2488,61376
+xCntEX_FE2490,61415
+xCntCX_FC2499,61592
+xCntAX_FA2508,61769
+boxE_E2517,61946
+putStringB2537,62403
+begString2549,62617
+endString_E2560,62843
+doArgs2589,63500
+doNext2596,63614
+doArg2613,63930
+doRest2642,64572
+tmDateC_E2656,64819
+dateXYZ_E2666,64996
+doDate2727,66357
+tmTimeY_E2843,69968
+doTime2860,70301
+doUsec2964,73279
+doPwd2982,73696
+doCd2993,73951
+doCtty3018,74567
+doInfo3055,75501
+doFile3100,76596
+doDir3153,77832
+doCmd3223,79450
+doArgv3241,79909
+doOpt3344,82455
+doVersion3358,82786
 
 ./big.l,1059
 zapZeroA_A6,106
@@ -997,46 +998,46 @@ sys/x86-64.linux.defs.l,1959
 markE5,63
 needC54,1336
 gc65,1529
-doGc435,11224
-cons_A458,11745
-cons_C470,12009
-cons_E482,12273
-cons_X494,12537
-cons_Y506,12801
-cons_Z518,13065
-consA_A530,13329
-consC_A546,13652
-consE_A562,13961
-consX_A578,14270
-consA_C594,14579
-consC_C610,14888
-consE_C626,15211
-consA_E642,15520
-consC_E658,15829
-consE_E674,16138
-consX_E690,16461
-consA_X706,16770
-consE_X722,17079
-consY_X738,17388
-consA_Y754,17697
-consA_Z770,18006
-consAC_E786,18315
-consSymX_E804,18668
-boxNum_A824,19118
-boxNum_C836,19403
-boxNum_E848,19688
-boxNum_X860,19973
-boxNumA_A872,20258
-boxNumE_E886,20587
-consNumAC_A900,20916
-consNumAE_A918,21292
-consNumCA_C936,21668
-consNumCE_A954,22044
-consNumCE_C971,22411
-consNumCE_E989,22787
-consNumEA_A1006,23137
-consNumEA_E1023,23487
-consNumEC_E1041,23863
+doGc436,11229
+cons_A459,11750
+cons_C471,12014
+cons_E483,12278
+cons_X495,12542
+cons_Y507,12806
+cons_Z519,13070
+consA_A531,13334
+consC_A547,13657
+consE_A563,13966
+consX_A579,14275
+consA_C595,14584
+consC_C611,14893
+consE_C627,15216
+consA_E643,15525
+consC_E659,15834
+consE_E675,16143
+consX_E691,16466
+consA_X707,16775
+consE_X723,17084
+consY_X739,17393
+consA_Y755,17702
+consA_Z771,18011
+consAC_E787,18320
+consSymX_E805,18673
+boxNum_A825,19123
+boxNum_C837,19408
+boxNum_E849,19693
+boxNum_X861,19978
+boxNumA_A873,20263
+boxNumE_E887,20592
+consNumAC_A901,20921
+consNumAE_A919,21297
+consNumCA_C937,21673
+consNumCE_A955,22049
+consNumCE_C972,22416
+consNumCE_E990,22792
+consNumEA_A1007,23142
+consNumEA_E1024,23492
+consNumEC_E1042,23868
 
 ./flow.l,1632
 redefMsgEC4,51
@@ -1105,25 +1106,25 @@ sys/x86-64.linux.defs.l,1959
 throwErrZX2518,58492
 doFinally2524,58583
 doCo2548,59123
-resumeCoroutine2574,59960
-doYield2720,64803
-cutLocalCX2841,68288
-joinLocalCX2854,68518
-doBreak2865,68700
-brkLoadE_E2873,68852
-doE2928,70452
-doTrace2967,71218
-traceCY3039,73133
-doCall3067,73621
-doTick3154,75813
-doIpid3186,76810
-doOpid3202,77098
-doKill3218,77393
-doFork3241,77828
-forkLispX_FE3254,78049
-doBye3415,82609
-byeE3427,82781
-finishE3439,83092
+resumeCoroutine2573,59938
+doYield2722,65031
+cutLocalCX2843,68511
+joinLocalCX2856,68741
+doBreak2867,68923
+brkLoadE_E2875,69075
+doE2930,70675
+doTrace2969,71441
+traceCY3041,73356
+doCall3069,73844
+doTick3156,76036
+doIpid3188,77033
+doOpid3204,77321
+doKill3220,77616
+doFork3243,78051
+forkLispX_FE3256,78272
+doBye3417,82832
+byeE3429,83004
+finishE3441,83315
 
 ./subr.l,2147
 doCar5,71