diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0bbb68b..018f345 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -26,11 +26,11 @@
       FORCE)
 ENDIF(NOT CMAKE_BUILD_TYPE)
 
-set (YASM_VERSION_MAJOR 0)
-set (YASM_VERSION_MINOR 6)
-set (YASM_VERSION_SUBMINOR 99)
+set (YASM_VERSION_MAJOR 1)
+set (YASM_VERSION_MINOR 0)
+set (YASM_VERSION_SUBMINOR 0)
 set (PACKAGE_INTVER "${YASM_VERSION_MAJOR}.${YASM_VERSION_MINOR}.${YASM_VERSION_SUBMINOR}")
-set (PACKAGE_BUILD "HEAD")
+set (PACKAGE_BUILD "BRANCH")
 set (PACKAGE_VERSION ${PACKAGE_BUILD})
 set (PACKAGE_STRING "yasm ${PACKAGE_VERSION}")
 
diff --git a/Mkfiles/dj/config.h b/Mkfiles/dj/config.h
index 0ce8a3f..2383b19 100644
--- a/Mkfiles/dj/config.h
+++ b/Mkfiles/dj/config.h
@@ -119,22 +119,22 @@
 #define PACKAGE_BUGREPORT "bug-yasm@tortall.net"
 
 /* Define to build version of this package. */
-#define PACKAGE_BUILD "HEAD"
+#define PACKAGE_BUILD "BRANCH"
 
 /* Define to internal version of this package. */
-#define PACKAGE_INTVER "0.7.99"
+#define PACKAGE_INTVER "1.0.0"
 
 /* Define to the full name of this package. */
 #define PACKAGE_NAME "yasm"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "yasm HEAD"
+#define PACKAGE_STRING "yasm 1.0.x"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "yasm"
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "HEAD"
+#define PACKAGE_VERSION "1.0.x"
 
 /* Define if the C compiler supports function prototypes. */
 #define PROTOTYPES 1
@@ -158,7 +158,7 @@
 #define STDC_HEADERS 1
 
 /* Version number of package */
-#define VERSION "HEAD"
+#define VERSION "1.0.x"
 
 /* Define if using the dmalloc debugging malloc package */
 /* #undef WITH_DMALLOC */
diff --git a/Mkfiles/vc10/config.h b/Mkfiles/vc10/config.h
index 96e2ddd..100c87d 100644
--- a/Mkfiles/vc10/config.h
+++ b/Mkfiles/vc10/config.h
@@ -117,22 +117,22 @@
 #define PACKAGE_BUGREPORT "bug-yasm@tortall.net"
 
 /* Define to build version of this package. */
-#define PACKAGE_BUILD "HEAD"
+#define PACKAGE_BUILD "BRANCH"
 
 /* Define to internal version of this package. */
-#define PACKAGE_INTVER "0.7.99"
+#define PACKAGE_INTVER "1.0.0"
 
 /* Define to the full name of this package. */
 #define PACKAGE_NAME "yasm"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "yasm HEAD"
+#define PACKAGE_STRING "yasm 1.0.x"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "yasm"
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "HEAD"
+#define PACKAGE_VERSION "1.0.x"
 
 /* Define if the C compiler supports function prototypes. */
 #define PROTOTYPES 1
@@ -156,7 +156,7 @@
 #define STDC_HEADERS 1
 
 /* Version number of package */
-#define VERSION "HEAD"
+#define VERSION "1.0.x"
 
 /* Define if using the dmalloc debugging malloc package */
 /* #undef WITH_DMALLOC */
diff --git a/Mkfiles/vc9/config.h b/Mkfiles/vc9/config.h
index 96e2ddd..100c87d 100644
--- a/Mkfiles/vc9/config.h
+++ b/Mkfiles/vc9/config.h
@@ -117,22 +117,22 @@
 #define PACKAGE_BUGREPORT "bug-yasm@tortall.net"
 
 /* Define to build version of this package. */
-#define PACKAGE_BUILD "HEAD"
+#define PACKAGE_BUILD "BRANCH"
 
 /* Define to internal version of this package. */
-#define PACKAGE_INTVER "0.7.99"
+#define PACKAGE_INTVER "1.0.0"
 
 /* Define to the full name of this package. */
 #define PACKAGE_NAME "yasm"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "yasm HEAD"
+#define PACKAGE_STRING "yasm 1.0.x"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "yasm"
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "HEAD"
+#define PACKAGE_VERSION "1.0.x"
 
 /* Define if the C compiler supports function prototypes. */
 #define PROTOTYPES 1
@@ -156,7 +156,7 @@
 #define STDC_HEADERS 1
 
 /* Version number of package */
-#define VERSION "HEAD"
+#define VERSION "1.0.x"
 
 /* Define if using the dmalloc debugging malloc package */
 /* #undef WITH_DMALLOC */
diff --git a/configure.ac b/configure.ac
index 638d654..628e734 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,7 +5,7 @@
 # autoconf setup
 #
 AC_PREREQ(2.53)
-AC_INIT([yasm], [HEAD], [bug-yasm@tortall.net])
+AC_INIT([yasm], [1.0.x], [bug-yasm@tortall.net])
 #AC_CONFIG_SRCDIR([src/main.c])
 AC_CONFIG_AUX_DIR(config)
 AC_CONFIG_HEADER([config.h])
@@ -13,9 +13,9 @@
 AM_INIT_AUTOMAKE([1.9.6 foreign])
 AM_MAINTAINER_MODE
 
-AC_DEFINE(PACKAGE_INTVER, ["0.7.99"],
+AC_DEFINE(PACKAGE_INTVER, ["1.0.0"],
 	  [Define to internal version of this package.])
-AC_DEFINE(PACKAGE_BUILD, ["HEAD"], [Define to build version of this package.])
+AC_DEFINE(PACKAGE_BUILD, ["BRANCH"], [Define to build version of this package.])
 
 #
 # autoconf command-line options
diff --git a/modules/parsers/nasm/nasm-parse.c b/modules/parsers/nasm/nasm-parse.c
index 8cbbe53..1fcffe0 100644
--- a/modules/parsers/nasm/nasm-parse.c
+++ b/modules/parsers/nasm/nasm-parse.c
@@ -1337,7 +1337,47 @@
     yasm_expr *e;
     yasm_symrec *sym;
 
-    switch (curtok) {
+    /* directives allow very little and handle IDs specially */
+    if (type == DIR_EXPR) {
+        switch (curtok) {
+        case '~':
+            get_next_token();
+            e = parse_expr6(parser_nasm, type);
+            if (!e) {
+                yasm_error_set(YASM_ERROR_SYNTAX,
+                               N_("expected expression after %s"), "`~'");
+                return NULL;
+            }
+            return p_expr_new_branch(YASM_EXPR_NOT, e);
+        case '(':
+            get_next_token();
+            e = parse_expr(parser_nasm, type);
+            if (!e) {
+                yasm_error_set(YASM_ERROR_SYNTAX,
+                               N_("expected expression after %s"), "`('");
+                return NULL;
+            }
+            if (!expect(')')) {
+                yasm_error_set(YASM_ERROR_SYNTAX, N_("missing parenthesis"));
+                return NULL;
+            }
+            get_next_token();
+            return e;
+        case INTNUM:
+            e = p_expr_new_ident(yasm_expr_int(INTNUM_val));
+            break;
+        case REG:
+            e = p_expr_new_ident(yasm_expr_reg(REG_val));
+            break;
+        case ID:
+            sym = yasm_symtab_use(p_symtab, ID_val, cur_line);
+            e = p_expr_new_ident(yasm_expr_sym(sym));
+            yasm_xfree(ID_val);
+            break;
+        default:
+            return NULL;
+        }
+    } else switch (curtok) {
         case '+':
             get_next_token();
             e = parse_expr6(parser_nasm, type);
@@ -1413,8 +1453,10 @@
             return e;
         case INTNUM:
             e = p_expr_new_ident(yasm_expr_int(INTNUM_val));
-            get_next_token();
-            return e;
+            break;
+        case FLTNUM:
+            e = p_expr_new_ident(yasm_expr_float(FLTNUM_val));
+            break;
         case REG:
             if (type == DV_EXPR) {
                 yasm_error_set(YASM_ERROR_SYNTAX,
@@ -1422,24 +1464,6 @@
                 return NULL;
             }
             e = p_expr_new_ident(yasm_expr_reg(REG_val));
-            get_next_token();
-            return e;
-    }
-
-    /* directives allow very little and handle IDs specially */
-    if (type == DIR_EXPR) {
-        switch (curtok) {
-        case ID:
-            sym = yasm_symtab_use(p_symtab, ID_val, cur_line);
-            e = p_expr_new_ident(yasm_expr_sym(sym));
-            yasm_xfree(ID_val);
-            break;
-        default:
-            return NULL;
-        }
-    } else switch (curtok) {
-        case FLTNUM:
-            e = p_expr_new_ident(yasm_expr_float(FLTNUM_val));
             break;
         case STRING:
         {
@@ -1490,7 +1514,6 @@
         default:
             return NULL;
     }
-
     get_next_token();
     return e;
 }
