summaryrefslogtreecommitdiff
path: root/macros/enum.asm
diff options
context:
space:
mode:
authoryenatch <yenatch@gmail.com>2015-04-13 21:30:51 -0700
committeryenatch <yenatch@gmail.com>2015-04-13 21:41:32 -0700
commite7a3ba05929c27b3cc5b1f5c2725ab8dba9efb43 (patch)
tree678a49cd546a3e24fb63e8547b5b0ce2ef63948d /macros/enum.asm
parent50734c961c436c4e4a996f120befcab5ee74d15e (diff)
Add a macro for enumeration.
"enum" is like "const" but uses variables instead. This might not be desired. It has been moved to the top of macros.asm so that included macros can be enumerated.
Diffstat (limited to 'macros/enum.asm')
-rw-r--r--macros/enum.asm31
1 files changed, 31 insertions, 0 deletions
diff --git a/macros/enum.asm b/macros/enum.asm
new file mode 100644
index 000000000..0a72d49d8
--- /dev/null
+++ b/macros/enum.asm
@@ -0,0 +1,31 @@
+; Enumerate variables
+
+enum_start: macro
+if _NARG >= 1
+__enum__ = \1
+else
+__enum__ = 0
+endc
+if _NARG >= 2
+__enumdir__ = \2
+else
+__enumdir__ = +1
+endc
+endm
+
+enum: macro
+\1 = __enum__
+__enum__ = __enum__ + __enumdir__
+endm
+
+
+; Enumerate constants
+
+const_def: MACRO
+const_value = 0
+ENDM
+
+const: MACRO
+\1 EQU const_value
+const_value = const_value + 1
+ENDM