aboutsummaryrefslogtreecommitdiffstats
path: root/macros/asserts.asm
diff options
context:
space:
mode:
Diffstat (limited to 'macros/asserts.asm')
-rw-r--r--macros/asserts.asm44
1 files changed, 20 insertions, 24 deletions
diff --git a/macros/asserts.asm b/macros/asserts.asm
index 7b41a654..e2de1505 100644
--- a/macros/asserts.asm
+++ b/macros/asserts.asm
@@ -1,18 +1,14 @@
; Macros to verify assumptions about the data or code
-MACRO _redef_current_label
+MACRO? _redef_current_label
IF DEF(\1)
PURGE \1
ENDC
IF _NARG == 3 + (\3)
DEF \1 EQUS "\<_NARG>"
- ELIF DEF(..)
- IF .. - @ == 0
- DEF \1 EQUS "{..}"
- ENDC
- ELIF DEF(.)
- if . - @ == 0
- DEF \1 EQUS "{.}"
+ ELIF STRLEN(#__SCOPE__)
+ IF {{__SCOPE__}} - @ == 0
+ DEF \1 EQUS #{__SCOPE__}
ENDC
ENDC
if !DEF(\1)
@@ -21,12 +17,12 @@ MACRO _redef_current_label
ENDC
ENDM
-MACRO table_width
+MACRO? table_width
DEF CURRENT_TABLE_WIDTH = \1
_redef_current_label CURRENT_TABLE_START, "._table_width\@", 2, \#
ENDM
-MACRO assert_table_length
+MACRO? assert_table_length
DEF w = \1
DEF x = w * CURRENT_TABLE_WIDTH
DEF y = @ - {CURRENT_TABLE_START}
@@ -34,7 +30,7 @@ MACRO assert_table_length
"bytes, for {d:x} total; but got {d:y} bytes"
ENDM
-MACRO assert_max_table_length
+MACRO? assert_max_table_length
DEF w = \1
DEF x = w * CURRENT_TABLE_WIDTH
DEF y = @ - {CURRENT_TABLE_START}
@@ -42,24 +38,24 @@ MACRO assert_max_table_length
"{d:CURRENT_TABLE_WIDTH} bytes, for maximum {d:x} total; but got {d:y} bytes"
ENDM
-MACRO list_start
+MACRO? list_start
DEF list_index = 0
_redef_current_label CURRENT_LIST_START, "._list_start\@", 1, \#
ENDM
-MACRO li
+MACRO? li
ASSERT STRFIND(\1, "@") == -1, "String terminator \"@\" in list entry: \1"
db \1, "@"
DEF list_index += 1
ENDM
-MACRO assert_list_length
+MACRO? assert_list_length
DEF x = \1
ASSERT x == list_index, \
"{CURRENT_LIST_START}: expected {d:x} entries, got {d:list_index}"
ENDM
-MACRO nybble_array
+MACRO? nybble_array
DEF CURRENT_NYBBLE_ARRAY_VALUE = 0
DEF CURRENT_NYBBLE_ARRAY_LENGTH = 0
IF _NARG == 1
@@ -70,7 +66,7 @@ MACRO nybble_array
ENDC
ENDM
-MACRO nybble
+MACRO? nybble
ASSERT 0 <= (\1) && (\1) < $10, "nybbles must be 0-15"
DEF CURRENT_NYBBLE_ARRAY_VALUE = (\1) | (CURRENT_NYBBLE_ARRAY_VALUE << 4)
DEF CURRENT_NYBBLE_ARRAY_LENGTH += 1
@@ -80,7 +76,7 @@ MACRO nybble
ENDC
ENDM
-MACRO end_nybble_array
+MACRO? end_nybble_array
IF CURRENT_NYBBLE_ARRAY_LENGTH % 2
db CURRENT_NYBBLE_ARRAY_VALUE << 4
ENDC
@@ -94,7 +90,7 @@ MACRO end_nybble_array
ENDC
ENDM
-MACRO bit_array
+MACRO? bit_array
DEF CURRENT_BIT_ARRAY_VALUE = 0
DEF CURRENT_BIT_ARRAY_LENGTH = 0
IF _NARG == 1
@@ -105,7 +101,7 @@ MACRO bit_array
ENDC
ENDM
-MACRO dbit
+MACRO? dbit
ASSERT (\1) == 0 || (\1) == 1, "bits must be 0 or 1"
DEF CURRENT_BIT_ARRAY_VALUE |= (\1) << (CURRENT_BIT_ARRAY_LENGTH % 8)
DEF CURRENT_BIT_ARRAY_LENGTH += 1
@@ -115,7 +111,7 @@ MACRO dbit
ENDC
ENDM
-MACRO end_bit_array
+MACRO? end_bit_array
IF CURRENT_BIT_ARRAY_LENGTH % 8
db CURRENT_BIT_ARRAY_VALUE
ENDC
@@ -129,7 +125,7 @@ MACRO end_bit_array
ENDC
ENDM
-MACRO def_grass_wildmons
+MACRO? def_grass_wildmons
;\1: encounter rate
DEF CURRENT_GRASS_WILDMONS_RATE = \1
REDEF CURRENT_GRASS_WILDMONS_LABEL EQUS "._def_grass_wildmons_\1"
@@ -137,7 +133,7 @@ MACRO def_grass_wildmons
db \1
ENDM
-MACRO end_grass_wildmons
+MACRO? end_grass_wildmons
DEF x = @ - {CURRENT_GRASS_WILDMONS_LABEL}
IF CURRENT_GRASS_WILDMONS_RATE == 0
ASSERT 1 == x, \
@@ -148,7 +144,7 @@ MACRO end_grass_wildmons
ENDC
ENDM
-MACRO def_water_wildmons
+MACRO? def_water_wildmons
;\1: encounter rate
DEF CURRENT_WATER_WILDMONS_RATE = \1
REDEF CURRENT_WATER_WILDMONS_LABEL EQUS "._def_water_wildmons_\1"
@@ -156,7 +152,7 @@ MACRO def_water_wildmons
db \1
ENDM
-MACRO end_water_wildmons
+MACRO? end_water_wildmons
DEF x = @ - {CURRENT_WATER_WILDMONS_LABEL}
IF CURRENT_WATER_WILDMONS_RATE == 0
ASSERT 1 == x, \