]> git.sur5r.net Git - cc65/commitdiff
Added the .TIME pseudo function
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 26 Nov 2002 13:44:35 +0000 (13:44 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 26 Nov 2002 13:44:35 +0000 (13:44 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@1651 b7a2c559-68d2-44c3-8de9-860c34a00d81

doc/ca65.sgml
src/ca65/expr.c
src/ca65/pseudo.c
src/ca65/scanner.c
src/ca65/scanner.h

index 83eb7fe8d89ed1c8d38ef8bec44cbf979df9359e..83f5ab230e5ccd11d316090bafde7ff1d2d7eb18 100644 (file)
@@ -1,3 +1,4 @@
+
 <!doctype linuxdoc system>
 
 <article>
@@ -406,6 +407,7 @@ Available operators sorted by precedence:
     .DEFINED           Builtin function                        1
     .MATCH             Builtin function                        1
     .TCOUNT            Builtin function                        1
+    .TIME      Builtin function                        1
     .XMATCH            Builtin function                        1
     .PARAMCOUNT Builtin pseudo variable        (r/o)           1
     .REFERENCED Builtin function                       1
@@ -2139,17 +2141,33 @@ Here's a list of all control commands and a description, what they do:
 
   <tscreen><verb>
        .macro  ldax    arg
-               .if (.match (.mid (0, 1, arg), #))
-               ; ldax called with immidiate operand
-               lda     #<(.right (.tcount (arg)-1, arg))
-               ldx     #>(.right (.tcount (arg)-1, arg))
-               .else
-               ...
-               .endif
+               .if (.match (.mid (0, 1, arg), #))
+               ; ldax called with immidiate operand
+               lda     #<(.right (.tcount (arg)-1, arg))
+               ldx     #>(.right (.tcount (arg)-1, arg))
+               .else
+               ...
+               .endif
                .endmacro
   </verb></tscreen>
 
 
+<sect1><tt>.TIME</tt><label id=".TIME"><p>
+
+  Reading this pseudo variable will give a constant integer value that
+  represents the current time in POSIX standard (as seconds since the 
+  Epoch).
+
+  It may be used to encode the time of translation somewhere in the created
+  code.
+
+  Example:
+
+  <tscreen><verb>
+        .dword  .time   ; Place time here
+  </verb></tscreen>
+
+
 <sect1><tt>.WARNING</tt><label id=".WARNING"><p>
 
   Force an assembly warning. The assembler will output a warning message
index ce37e9ba7d0edc22a85569037a0683823b41e4f3..0c394b26b8ecaf77b4ed22faf53529bd4aa51c62 100644 (file)
@@ -34,6 +34,7 @@
 
 
 #include <string.h>
+#include <time.h>
 
 /* common */
 #include "check.h"
@@ -660,6 +661,11 @@ static ExprNode* Factor (void)
            N = Function (FuncTCount);
            break;
 
+       case TOK_TIME:
+           N = LiteralExpr (time (0));
+           NextTok ();
+           break;
+
        case TOK_XMATCH:
            N = Function (FuncXMatch);
            break;
index e521fdbe97e74f411d02a808578ba0cc87bed876..f1ed0a139cb3d380decd145222572ad094f55683 100644 (file)
@@ -1430,6 +1430,7 @@ static CtrlDesc CtrlCmdTab [] = {
     { ccNone,          DoUnexpected    },      /* .STRLEN */
     { ccNone,          DoSunPlus       },
     { ccNone,          DoUnexpected    },      /* .TCOUNT */
+    { ccNone,                  DoUnexpected    },      /* .TIME */
     { ccNone,          DoWarning       },
     { ccNone,          DoWord          },
     { ccNone,                  DoUnexpected    },      /* .XMATCH */
index 05e6820d00ded7730de0686a17a2604e094b1a64..8ccc1f6a6f31233f219c5447bce575fb60944ea5 100644 (file)
@@ -228,6 +228,7 @@ struct DotKeyword {
     { ".STRLEN",       TOK_STRLEN      },
     { ".SUNPLUS",      TOK_SUNPLUS     },
     { ".TCOUNT",       TOK_TCOUNT      },
+    { ".TIME",                 TOK_TIME        },
     { ".WARNING",      TOK_WARNING     },
     { ".WORD",                 TOK_WORD        },
     { ".XMATCH",       TOK_XMATCH      },
index e243970780091027ce47e7fe377e857c532b1276..720748937f247fcaacf8aa7fbaf3ab70003ea5d4 100644 (file)
@@ -201,6 +201,7 @@ enum Token {
     TOK_STRLEN,
     TOK_SUNPLUS,
     TOK_TCOUNT,
+    TOK_TIME,
     TOK_WARNING,
     TOK_WORD,
     TOK_XMATCH,