commit 662edcf44c7f123e33e220e9ee4fa87fc926d28b
parent 04fced5627613e3b95297f0d5eee6fb069c93671
Author: Commit-Bot <unknown>
Date:   Thu,  5 Aug 2010 11:00:52 +0000
Automatic commit from picoLisp.tgz, From: Thu, 05 Aug 2010 11:00:52 GMT
Diffstat:
| M | lib/tags |  |  | 34 | +++++++++++++++++----------------- | 
| M | src64/main.l |  |  | 43 | ++++++++++++++++++++++--------------------- | 
2 files changed, 39 insertions(+), 38 deletions(-)
diff --git a/lib/tags b/lib/tags
@@ -32,9 +32,9 @@ and (1643 . "@src64/flow.l")
 any (3792 . "@src64/io.l")
 append (1329 . "@src64/subr.l")
 apply (597 . "@src64/apply.l")
-arg (2241 . "@src64/main.l")
-args (2217 . "@src64/main.l")
-argv (2862 . "@src64/main.l")
+arg (2242 . "@src64/main.l")
+args (2218 . "@src64/main.l")
+argv (2863 . "@src64/main.l")
 as (146 . "@src64/flow.l")
 asoq (2942 . "@src64/subr.l")
 assoc (2907 . "@src64/subr.l")
@@ -65,7 +65,7 @@ call (3102 . "@src64/flow.l")
 car (5 . "@src64/subr.l")
 case (1984 . "@src64/flow.l")
 catch (2484 . "@src64/flow.l")
-cd (2617 . "@src64/main.l")
+cd (2618 . "@src64/main.l")
 cdaaar (464 . "@src64/subr.l")
 cdaadr (487 . "@src64/subr.l")
 cdaar (179 . "@src64/subr.l")
@@ -87,7 +87,7 @@ chop (1093 . "@src64/sym.l")
 circ (816 . "@src64/subr.l")
 clip (1786 . "@src64/subr.l")
 close (4180 . "@src64/io.l")
-cmd (2844 . "@src64/main.l")
+cmd (2845 . "@src64/main.l")
 cnt (1297 . "@src64/apply.l")
 co (2566 . "@src64/flow.l")
 commit (1503 . "@src64/db.l")
@@ -98,9 +98,9 @@ connect (201 . "@src64/net.l")
 cons (747 . "@src64/subr.l")
 copy (1216 . "@src64/subr.l")
 ctl (4120 . "@src64/io.l")
-ctty (2642 . "@src64/main.l")
+ctty (2643 . "@src64/main.l")
 cut (1797 . "@src64/sym.l")
-date (2356 . "@src64/main.l")
+date (2357 . "@src64/main.l")
 dbck (2092 . "@src64/db.l")
 de (549 . "@src64/flow.l")
 dec (2323 . "@src64/big.l")
@@ -110,7 +110,7 @@ del (1852 . "@src64/sym.l")
 delete (1392 . "@src64/subr.l")
 delq (1443 . "@src64/subr.l")
 diff (2563 . "@src64/subr.l")
-dir (2775 . "@src64/main.l")
+dir (2776 . "@src64/main.l")
 dm (561 . "@src64/flow.l")
 do (2158 . "@src64/flow.l")
 e (2932 . "@src64/flow.l")
@@ -126,7 +126,7 @@ extern (900 . "@src64/sym.l")
 extra (1284 . "@src64/flow.l")
 extract (1102 . "@src64/apply.l")
 fifo (1963 . "@src64/sym.l")
-file (2722 . "@src64/main.l")
+file (2723 . "@src64/main.l")
 fill (3177 . "@src64/subr.l")
 filter (1045 . "@src64/apply.l")
 fin (2020 . "@src64/subr.l")
@@ -163,7 +163,7 @@ ifn (1884 . "@src64/flow.l")
 in (4016 . "@src64/io.l")
 inc (2256 . "@src64/big.l")
 index (2611 . "@src64/subr.l")
-info (2679 . "@src64/main.l")
+info (2680 . "@src64/main.l")
 intern (875 . "@src64/sym.l")
 ipid (3214 . "@src64/flow.l")
 isa (978 . "@src64/flow.l")
@@ -221,7 +221,7 @@ nand (1678 . "@src64/flow.l")
 native (1366 . "@src64/main.l")
 need (918 . "@src64/subr.l")
 new (852 . "@src64/flow.l")
-next (2224 . "@src64/main.l")
+next (2225 . "@src64/main.l")
 nil (1761 . "@src64/flow.l")
 nond (1961 . "@src64/flow.l")
 nor (1699 . "@src64/flow.l")
@@ -235,7 +235,7 @@ onOff (1613 . "@src64/sym.l")
 one (1646 . "@src64/sym.l")
 open (4142 . "@src64/io.l")
 opid (3230 . "@src64/flow.l")
-opt (2965 . "@src64/main.l")
+opt (2966 . "@src64/main.l")
 or (1659 . "@src64/flow.l")
 out (4036 . "@src64/io.l")
 pack (1144 . "@src64/sym.l")
@@ -268,7 +268,7 @@ push (1688 . "@src64/sym.l")
 push1 (1724 . "@src64/sym.l")
 put (2698 . "@src64/sym.l")
 putl (2950 . "@src64/sym.l")
-pwd (2606 . "@src64/main.l")
+pwd (2607 . "@src64/main.l")
 queue (1920 . "@src64/sym.l")
 quit (1075 . "@src64/main.l")
 quote (141 . "@src64/flow.l")
@@ -279,7 +279,7 @@ raw (465 . "@src64/main.l")
 rd (4953 . "@src64/io.l")
 read (2530 . "@src64/io.l")
 replace (1490 . "@src64/subr.l")
-rest (2270 . "@src64/main.l")
+rest (2271 . "@src64/main.l")
 reverse (1665 . "@src64/subr.l")
 rewind (4919 . "@src64/io.l")
 rollback (1885 . "@src64/db.l")
@@ -320,7 +320,7 @@ text (1272 . "@src64/sym.l")
 throw (2510 . "@src64/flow.l")
 tick (3182 . "@src64/flow.l")
 till (3437 . "@src64/io.l")
-time (2489 . "@src64/main.l")
+time (2490 . "@src64/main.l")
 touch (1049 . "@src64/sym.l")
 trim (1746 . "@src64/subr.l")
 try (1191 . "@src64/flow.l")
@@ -333,9 +333,9 @@ up (712 . "@src64/main.l")
 upp? (3232 . "@src64/sym.l")
 uppc (3296 . "@src64/sym.l")
 use (1592 . "@src64/flow.l")
-usec (2594 . "@src64/main.l")
+usec (2595 . "@src64/main.l")
 val (1463 . "@src64/sym.l")
-version (2979 . "@src64/main.l")
+version (2980 . "@src64/main.l")
 wait (3016 . "@src64/io.l")
 when (1903 . "@src64/flow.l")
 while (2080 . "@src64/flow.l")
diff --git a/src64/main.l b/src64/main.l
@@ -1920,30 +1920,31 @@
 (code 'doLisp 2)
    push X
    push Y
-   push Z
-   ld X (E CDR)  # Get tag
-   call evSymX_E  # Evaluate to a symbol
-   ld Y Lisp  # Search lisp callback definitions
-   ld Z cbl1
+   ld X E
+   ld Y (E CDR)  # Get tag
+   call evSymY_E  # Evaluate to a symbol
+   ld A Lisp  # Search lisp callback definitions
+   ld C cbl1
    do
-      cmp E (Y)  # Found tag?
+      cmp E (A)  # Found tag?
       jeq  10  # Yes
-      add Y II  # Next entry
-      add Z "cbl2-cbl1"
-      cmp Y LispEnd
+      add A II  # Next entry
+      add C "cbl2-cbl1"
+      cmp A LispEnd
    until eq
-   ld Y Lisp  # Not found, search for empty slot
-   ld Z cbl1
+   ld A Lisp  # Not found, search for empty slot
+   ld C cbl1
    do
-      cmp (Y I) Nil  # Empty?
+      cmp (A I) Nil  # Empty?
       if eq  # Yes
-         ld (Y) E  # Store tag
-10       ld X (X CDR)  # X on 'fun'
-         ld E (X)  # Eval 'fun'
+10       push C  # Save function pointer
+         push A  # And callback entry
+         ld (A) E  # Store tag
+         ld E ((Y CDR))  # Eval 'fun'
          eval
-         ld (Y I) E  # Store in slot
-         ld E Z
-         pop Z
+         pop A
+         ld (A I) E  # Store in slot
+         pop E  # Get function pointer
          pop Y
          pop X
          test E (hex "F000000000000000")  # Fit in short number?
@@ -1952,9 +1953,9 @@
          or E CNT
          ret
       end
-      add Y II  # Next entry
-      add Z "cbl2-cbl1"
-      cmp Y LispEnd
+      add A II  # Next entry
+      add C "cbl2-cbl1"
+      cmp A LispEnd
    until eq
    ld Y CbErr
    jmp errEXYZ