mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-20 18:22:07 +00:00
Deprecate DEF-less definitions (#1193)
This commit is contained in:
@@ -956,29 +956,58 @@ compoundeq : T_POP_ADDEQ { $$ = RPN_ADD; }
|
||||
| T_POP_SHREQ { $$ = RPN_SHR; }
|
||||
;
|
||||
|
||||
equ : T_LABEL T_POP_EQU const { sym_AddEqu($1, $3); }
|
||||
equ : T_LABEL T_POP_EQU const {
|
||||
warning(WARNING_OBSOLETE, "`%s EQU` is deprecated; use `DEF %s EQU`\n", $1, $1);
|
||||
sym_AddEqu($1, $3);
|
||||
}
|
||||
;
|
||||
|
||||
assignment : T_LABEL T_POP_EQUAL const { sym_AddVar($1, $3); }
|
||||
| T_LABEL compoundeq const { compoundAssignment($1, $2, $3); }
|
||||
assignment : T_LABEL T_POP_EQUAL const {
|
||||
warning(WARNING_OBSOLETE, "`%s =` is deprecated; use `DEF %s =`\n", $1, $1);
|
||||
sym_AddVar($1, $3);
|
||||
}
|
||||
| T_LABEL compoundeq const {
|
||||
static const char *compoundEqOperators[] = {
|
||||
[RPN_ADD] = "+=",
|
||||
[RPN_SUB] = "-=",
|
||||
[RPN_MUL] = "*=",
|
||||
[RPN_DIV] = "/=",
|
||||
[RPN_MOD] = "%=",
|
||||
[RPN_XOR] = "^=",
|
||||
[RPN_OR] = "|=",
|
||||
[RPN_AND] = "&=",
|
||||
[RPN_SHL] = "<<=",
|
||||
[RPN_SHR] = ">>=",
|
||||
};
|
||||
|
||||
warning(WARNING_OBSOLETE, "`%s %s` is deprecated; use `DEF %s %s`\n",
|
||||
$1, compoundEqOperators[$2], $1, compoundEqOperators[$2]);
|
||||
compoundAssignment($1, $2, $3);
|
||||
}
|
||||
;
|
||||
|
||||
equs : T_LABEL T_POP_EQUS string { sym_AddString($1, $3); }
|
||||
equs : T_LABEL T_POP_EQUS string {
|
||||
warning(WARNING_OBSOLETE, "`%s EQUS` is deprecated; use `DEF %s EQUS`\n", $1, $1);
|
||||
sym_AddString($1, $3);
|
||||
}
|
||||
;
|
||||
|
||||
rb : T_LABEL T_POP_RB rs_uconst {
|
||||
warning(WARNING_OBSOLETE, "`%s RB` is deprecated; use `DEF %s RB`\n", $1, $1);
|
||||
sym_AddEqu($1, sym_GetConstantValue("_RS"));
|
||||
sym_AddVar("_RS", sym_GetConstantValue("_RS") + $3);
|
||||
}
|
||||
;
|
||||
|
||||
rw : T_LABEL T_POP_RW rs_uconst {
|
||||
warning(WARNING_OBSOLETE, "`%s RW` is deprecated; use `DEF %s RW`\n", $1, $1);
|
||||
sym_AddEqu($1, sym_GetConstantValue("_RS"));
|
||||
sym_AddVar("_RS", sym_GetConstantValue("_RS") + 2 * $3);
|
||||
}
|
||||
;
|
||||
|
||||
rl : T_LABEL T_Z80_RL rs_uconst {
|
||||
warning(WARNING_OBSOLETE, "`%s RL` is deprecated; use `DEF %s RL`\n", $1, $1);
|
||||
sym_AddEqu($1, sym_GetConstantValue("_RS"));
|
||||
sym_AddVar("_RS", sym_GetConstantValue("_RS") + 4 * $3);
|
||||
}
|
||||
|
||||
@@ -10,9 +10,9 @@ ENDM
|
||||
|
||||
MACRO mac
|
||||
println \<2__> + \<1_2> + \<\1>
|
||||
x = 2
|
||||
def x = 2
|
||||
println \<{d:x}> + \<1_{d:x}> + \<\<\<13>>>
|
||||
y equs "NARG"
|
||||
def y equs "NARG"
|
||||
println \<x> + \<1_{d:x}_> + \<\<\<_{y}>>>
|
||||
ENDM
|
||||
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
X = 42
|
||||
DEF X = 42
|
||||
PRINTLN "{X}"
|
||||
PRINTLN "{x:X}"
|
||||
PRINTLN "{X:X}"
|
||||
PRINTLN "{d:X}"
|
||||
PRINTLN "{b:X}"
|
||||
|
||||
Y equ 1337
|
||||
DEF Y EQU 1337
|
||||
PRINTLN "{b:Y}"
|
||||
|
||||
rsreset
|
||||
R rb 0
|
||||
DEF R RB 0
|
||||
PRINTLN "{d:R}"
|
||||
|
||||
S equs "You can't format me!"
|
||||
DEF S EQUS "You can't format me!"
|
||||
PRINTLN "{X:S}"
|
||||
|
||||
SECTION "Test", ROM0
|
||||
|
||||
@@ -2,17 +2,6 @@ macro tickle
|
||||
; There once was a bug where overwriting worked only on the second try, so
|
||||
; try everything twice for good measure
|
||||
|
||||
; Skip this syntax for EQUS, as it is invalid
|
||||
IF \2
|
||||
\1 = 0
|
||||
\1 = 0
|
||||
PRINTLN \1
|
||||
|
||||
\1 EQU 0
|
||||
\1 EQU 0
|
||||
PRINTLN \1
|
||||
ENDC
|
||||
|
||||
PURGE \1
|
||||
PURGE \1
|
||||
PRINTLN \1
|
||||
|
||||
@@ -1,57 +1,49 @@
|
||||
error: builtin-overwrite.asm(43) -> builtin-overwrite.asm::tickle(7):
|
||||
'__UTC_YEAR__' already defined as constant at <command-line>
|
||||
error: builtin-overwrite.asm(43) -> builtin-overwrite.asm::tickle(8):
|
||||
'__UTC_YEAR__' already defined as constant at <command-line>
|
||||
error: builtin-overwrite.asm(43) -> builtin-overwrite.asm::tickle(11):
|
||||
'__UTC_YEAR__' already defined at <command-line>
|
||||
error: builtin-overwrite.asm(43) -> builtin-overwrite.asm::tickle(12):
|
||||
'__UTC_YEAR__' already defined at <command-line>
|
||||
error: builtin-overwrite.asm(43) -> builtin-overwrite.asm::tickle(16):
|
||||
error: builtin-overwrite.asm(32) -> builtin-overwrite.asm::tickle(5):
|
||||
Built-in symbol '__UTC_YEAR__' cannot be purged
|
||||
error: builtin-overwrite.asm(43) -> builtin-overwrite.asm::tickle(17):
|
||||
error: builtin-overwrite.asm(32) -> builtin-overwrite.asm::tickle(6):
|
||||
Built-in symbol '__UTC_YEAR__' cannot be purged
|
||||
error: builtin-overwrite.asm(43) -> builtin-overwrite.asm::tickle(20):
|
||||
error: builtin-overwrite.asm(32) -> builtin-overwrite.asm::tickle(9):
|
||||
'__UTC_YEAR__' already defined at <command-line>
|
||||
error: builtin-overwrite.asm(43) -> builtin-overwrite.asm::tickle(21):
|
||||
error: builtin-overwrite.asm(32) -> builtin-overwrite.asm::tickle(10):
|
||||
'__UTC_YEAR__' already defined at <command-line>
|
||||
error: builtin-overwrite.asm(43) -> builtin-overwrite.asm::tickle(24):
|
||||
error: builtin-overwrite.asm(32) -> builtin-overwrite.asm::tickle(13):
|
||||
'__UTC_YEAR__' already defined as constant at <command-line>
|
||||
error: builtin-overwrite.asm(43) -> builtin-overwrite.asm::tickle(25):
|
||||
error: builtin-overwrite.asm(32) -> builtin-overwrite.asm::tickle(14):
|
||||
'__UTC_YEAR__' already defined as constant at <command-line>
|
||||
error: builtin-overwrite.asm(43) -> builtin-overwrite.asm::tickle(28):
|
||||
error: builtin-overwrite.asm(32) -> builtin-overwrite.asm::tickle(17):
|
||||
'__UTC_YEAR__' already defined at <command-line>
|
||||
error: builtin-overwrite.asm(43) -> builtin-overwrite.asm::tickle(29):
|
||||
error: builtin-overwrite.asm(32) -> builtin-overwrite.asm::tickle(18):
|
||||
'__UTC_YEAR__' already defined at <command-line>
|
||||
error: builtin-overwrite.asm(43) -> builtin-overwrite.asm::tickle(32):
|
||||
error: builtin-overwrite.asm(32) -> builtin-overwrite.asm::tickle(21):
|
||||
'__UTC_YEAR__' already defined as constant at <command-line>
|
||||
error: builtin-overwrite.asm(43) -> builtin-overwrite.asm::tickle(33):
|
||||
error: builtin-overwrite.asm(32) -> builtin-overwrite.asm::tickle(22):
|
||||
'__UTC_YEAR__' already defined as constant at <command-line>
|
||||
error: builtin-overwrite.asm(43) -> builtin-overwrite.asm::tickle(36):
|
||||
error: builtin-overwrite.asm(32) -> builtin-overwrite.asm::tickle(25):
|
||||
'__UTC_YEAR__' already defined as non-EQUS at <command-line>
|
||||
error: builtin-overwrite.asm(43) -> builtin-overwrite.asm::tickle(37):
|
||||
error: builtin-overwrite.asm(32) -> builtin-overwrite.asm::tickle(26):
|
||||
'__UTC_YEAR__' already defined as non-EQUS at <command-line>
|
||||
error: builtin-overwrite.asm(44) -> builtin-overwrite.asm::tickle(16):
|
||||
error: builtin-overwrite.asm(33) -> builtin-overwrite.asm::tickle(5):
|
||||
Built-in symbol '__ISO_8601_UTC__' cannot be purged
|
||||
error: builtin-overwrite.asm(44) -> builtin-overwrite.asm::tickle(17):
|
||||
error: builtin-overwrite.asm(33) -> builtin-overwrite.asm::tickle(6):
|
||||
Built-in symbol '__ISO_8601_UTC__' cannot be purged
|
||||
error: builtin-overwrite.asm(44) -> builtin-overwrite.asm::tickle(20):
|
||||
error: builtin-overwrite.asm(33) -> builtin-overwrite.asm::tickle(9):
|
||||
'__ISO_8601_UTC__' already defined at <command-line>
|
||||
error: builtin-overwrite.asm(44) -> builtin-overwrite.asm::tickle(21):
|
||||
error: builtin-overwrite.asm(33) -> builtin-overwrite.asm::tickle(10):
|
||||
'__ISO_8601_UTC__' already defined at <command-line>
|
||||
error: builtin-overwrite.asm(44) -> builtin-overwrite.asm::tickle(24):
|
||||
error: builtin-overwrite.asm(33) -> builtin-overwrite.asm::tickle(13):
|
||||
'__ISO_8601_UTC__' already defined as constant at <command-line>
|
||||
error: builtin-overwrite.asm(44) -> builtin-overwrite.asm::tickle(25):
|
||||
error: builtin-overwrite.asm(33) -> builtin-overwrite.asm::tickle(14):
|
||||
'__ISO_8601_UTC__' already defined as constant at <command-line>
|
||||
error: builtin-overwrite.asm(44) -> builtin-overwrite.asm::tickle(28):
|
||||
error: builtin-overwrite.asm(33) -> builtin-overwrite.asm::tickle(17):
|
||||
'__ISO_8601_UTC__' already defined at <command-line>
|
||||
error: builtin-overwrite.asm(44) -> builtin-overwrite.asm::tickle(29):
|
||||
error: builtin-overwrite.asm(33) -> builtin-overwrite.asm::tickle(18):
|
||||
'__ISO_8601_UTC__' already defined at <command-line>
|
||||
error: builtin-overwrite.asm(44) -> builtin-overwrite.asm::tickle(32):
|
||||
error: builtin-overwrite.asm(33) -> builtin-overwrite.asm::tickle(21):
|
||||
'__ISO_8601_UTC__' already defined as constant at <command-line>
|
||||
error: builtin-overwrite.asm(44) -> builtin-overwrite.asm::tickle(33):
|
||||
error: builtin-overwrite.asm(33) -> builtin-overwrite.asm::tickle(22):
|
||||
'__ISO_8601_UTC__' already defined as constant at <command-line>
|
||||
error: builtin-overwrite.asm(44) -> builtin-overwrite.asm::tickle(36):
|
||||
error: builtin-overwrite.asm(33) -> builtin-overwrite.asm::tickle(25):
|
||||
Built-in symbol '__ISO_8601_UTC__' cannot be redefined
|
||||
error: builtin-overwrite.asm(44) -> builtin-overwrite.asm::tickle(37):
|
||||
error: builtin-overwrite.asm(33) -> builtin-overwrite.asm::tickle(26):
|
||||
Built-in symbol '__ISO_8601_UTC__' cannot be redefined
|
||||
error: Assembly aborted (28 errors)!
|
||||
error: Assembly aborted (24 errors)!
|
||||
|
||||
@@ -4,8 +4,6 @@ $7C5
|
||||
$7C5
|
||||
$7C5
|
||||
$7C5
|
||||
$7C5
|
||||
$7C5
|
||||
1989-04-21T12:34:56Z
|
||||
1989-04-21T12:34:56Z
|
||||
1989-04-21T12:34:56Z
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
SECTION "test", ROM0
|
||||
|
||||
S EQUS "XBold<NULL>ABC"
|
||||
DEF S EQUS "XBold<NULL>ABC"
|
||||
|
||||
assert CHARLEN("{S}") == 6
|
||||
println CHARSUB("{S}", 2)
|
||||
|
||||
@@ -30,8 +30,8 @@ endm
|
||||
try "def ", q
|
||||
try "redef ", r
|
||||
|
||||
_RS += 100
|
||||
def _RS += 100
|
||||
println _RS
|
||||
|
||||
UnDeFiNeD ^= 300
|
||||
def UnDeFiNeD ^= 300
|
||||
println UnDeFiNeD
|
||||
|
||||
@@ -1,3 +1,25 @@
|
||||
warning: compound-assignment.asm(29) -> compound-assignment.asm::try(4): [-Wobsolete]
|
||||
`p =` is deprecated; use `DEF p =`
|
||||
warning: compound-assignment.asm(29) -> compound-assignment.asm::try(6): [-Wobsolete]
|
||||
`p +=` is deprecated; use `DEF p +=`
|
||||
warning: compound-assignment.asm(29) -> compound-assignment.asm::try(8): [-Wobsolete]
|
||||
`p -=` is deprecated; use `DEF p -=`
|
||||
warning: compound-assignment.asm(29) -> compound-assignment.asm::try(10): [-Wobsolete]
|
||||
`p *=` is deprecated; use `DEF p *=`
|
||||
warning: compound-assignment.asm(29) -> compound-assignment.asm::try(12): [-Wobsolete]
|
||||
`p /=` is deprecated; use `DEF p /=`
|
||||
warning: compound-assignment.asm(29) -> compound-assignment.asm::try(14): [-Wobsolete]
|
||||
`p %=` is deprecated; use `DEF p %=`
|
||||
warning: compound-assignment.asm(29) -> compound-assignment.asm::try(16): [-Wobsolete]
|
||||
`p |=` is deprecated; use `DEF p |=`
|
||||
warning: compound-assignment.asm(29) -> compound-assignment.asm::try(18): [-Wobsolete]
|
||||
`p ^=` is deprecated; use `DEF p ^=`
|
||||
warning: compound-assignment.asm(29) -> compound-assignment.asm::try(20): [-Wobsolete]
|
||||
`p &=` is deprecated; use `DEF p &=`
|
||||
warning: compound-assignment.asm(29) -> compound-assignment.asm::try(22): [-Wobsolete]
|
||||
`p <<=` is deprecated; use `DEF p <<=`
|
||||
warning: compound-assignment.asm(29) -> compound-assignment.asm::try(24): [-Wobsolete]
|
||||
`p >>=` is deprecated; use `DEF p >>=`
|
||||
error: compound-assignment.asm(36):
|
||||
Expected constant expression: 'UnDeFiNeD' is not constant at assembly time
|
||||
error: Assembly aborted (1 error)!
|
||||
|
||||
@@ -28,3 +28,22 @@ redef string equs "there"
|
||||
|
||||
redef constant equ 6*9
|
||||
println constant
|
||||
|
||||
old_constant EQU 42
|
||||
old_string EQUS "hello"
|
||||
|
||||
old_variable = 2 + 2
|
||||
old_variable += 3
|
||||
old_variable *= 4
|
||||
old_variable -= 1
|
||||
old_variable /= 5
|
||||
old_variable %= 7
|
||||
old_variable &= $ffff
|
||||
old_variable |= %1010
|
||||
old_variable ^= &123
|
||||
old_variable <<= 2
|
||||
old_variable >>= 1
|
||||
|
||||
old_byte rb
|
||||
old_word rw
|
||||
old_long rl
|
||||
|
||||
@@ -1,3 +1,35 @@
|
||||
error: def.asm(23):
|
||||
'constant' already defined at def.asm(10)
|
||||
warning: def.asm(32): [-Wobsolete]
|
||||
`old_constant EQU` is deprecated; use `DEF old_constant EQU`
|
||||
warning: def.asm(33): [-Wobsolete]
|
||||
`old_string EQUS` is deprecated; use `DEF old_string EQUS`
|
||||
warning: def.asm(35): [-Wobsolete]
|
||||
`old_variable =` is deprecated; use `DEF old_variable =`
|
||||
warning: def.asm(36): [-Wobsolete]
|
||||
`old_variable +=` is deprecated; use `DEF old_variable +=`
|
||||
warning: def.asm(37): [-Wobsolete]
|
||||
`old_variable *=` is deprecated; use `DEF old_variable *=`
|
||||
warning: def.asm(38): [-Wobsolete]
|
||||
`old_variable -=` is deprecated; use `DEF old_variable -=`
|
||||
warning: def.asm(39): [-Wobsolete]
|
||||
`old_variable /=` is deprecated; use `DEF old_variable /=`
|
||||
warning: def.asm(40): [-Wobsolete]
|
||||
`old_variable %=` is deprecated; use `DEF old_variable %=`
|
||||
warning: def.asm(41): [-Wobsolete]
|
||||
`old_variable &=` is deprecated; use `DEF old_variable &=`
|
||||
warning: def.asm(42): [-Wobsolete]
|
||||
`old_variable |=` is deprecated; use `DEF old_variable |=`
|
||||
warning: def.asm(43): [-Wobsolete]
|
||||
`old_variable ^=` is deprecated; use `DEF old_variable ^=`
|
||||
warning: def.asm(44): [-Wobsolete]
|
||||
`old_variable <<=` is deprecated; use `DEF old_variable <<=`
|
||||
warning: def.asm(45): [-Wobsolete]
|
||||
`old_variable >>=` is deprecated; use `DEF old_variable >>=`
|
||||
warning: def.asm(47): [-Wobsolete]
|
||||
`old_byte RB` is deprecated; use `DEF old_byte RB`
|
||||
warning: def.asm(48): [-Wobsolete]
|
||||
`old_word RW` is deprecated; use `DEF old_word RW`
|
||||
warning: def.asm(49): [-Wobsolete]
|
||||
`old_long RL` is deprecated; use `DEF old_long RL`
|
||||
error: Assembly aborted (1 error)!
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
IF 1
|
||||
X = 0
|
||||
DEF X = 0
|
||||
INCLUDE "endc-eof-newline.inc"
|
||||
INCLUDE "endc-eof-newline-else.inc"
|
||||
X = 1
|
||||
DEF X = 1
|
||||
INCLUDE "endc-eof-newline.inc"
|
||||
INCLUDE "endc-eof-newline-else.inc"
|
||||
ENDC
|
||||
@@ -1,4 +1,4 @@
|
||||
charmap "A", 1
|
||||
SECTION "sec", ROM0[0]
|
||||
_A_ EQU "A"
|
||||
DEF _A_ EQU "A"
|
||||
db _A_
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
DEFINE equs "MACRO mac\nPRINTLN \"Hello :D\"\nENDM"
|
||||
def DEFINE equs "MACRO mac\nPRINTLN \"Hello :D\"\nENDM"
|
||||
DEFINE
|
||||
mac
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
X1 equs "Y1 equs \"\\\"Success!\\\\n\\\"\""
|
||||
Y1 equs "Z1"
|
||||
; the nested EQUS can't use DEF because Y1 would not be expanded
|
||||
def X1 equs "Y1 equs \"\\\"Success!\\\\n\\\"\""
|
||||
def Y1 equs "Z1"
|
||||
X1
|
||||
PRINT Z1
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
warning: equs-nest.asm(4): [-Wobsolete]
|
||||
`Z1 EQUS` is deprecated; use `DEF Z1 EQUS`
|
||||
while expanding symbol "X1"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
ACT equs "WARN \"First\"\nWARN \"Second\""
|
||||
def ACT equs "WARN \"First\"\nWARN \"Second\""
|
||||
ACT
|
||||
WARN "Third"
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
BYE equs "PURGE BYE\nWARN \"Crash?\"\n \n"
|
||||
def BYE equs "PURGE BYE\nWARN \"Crash?\"\n \n"
|
||||
BYE
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
recurse EQUS "recurse"
|
||||
DEF recurse EQUS "recurse"
|
||||
recurse
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
MACRO test
|
||||
v equs "X"
|
||||
X equs "" ; should not be expanded
|
||||
def v equs "X"
|
||||
def X equs "" ; should not be expanded
|
||||
\1
|
||||
ENDM
|
||||
test v 0
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
CONSTANT equ 42
|
||||
def CONSTANT equ 42
|
||||
PRINTLN $ff00 + CONSTANT
|
||||
|
||||
SECTION "Overreading much?", ROM0[0]
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
f1 = 3.1
|
||||
f2 = 5.2
|
||||
pm = MUL(f1, f2)
|
||||
pr = 16.12
|
||||
def f1 = 3.1
|
||||
def f2 = 5.2
|
||||
def pm = MUL(f1, f2)
|
||||
def pr = 16.12
|
||||
println "`3.1`: {9.6f:f1} -> ${08x:f1}"
|
||||
println "`5.2`: {9.6f:f2} -> ${08x:f2}"
|
||||
println "`MUL`: {9.6f:pm} -> ${08x:pm}"
|
||||
println "`16.12`: {9.6f:pr} -> ${08x:pr}"
|
||||
|
||||
fl = 6.283185
|
||||
def fl = 6.283185
|
||||
println "`6.283185`: {.6f:fl} -> ${08x:fl}"
|
||||
|
||||
fr = MUL(20.0, 0.32)
|
||||
def fr = MUL(20.0, 0.32)
|
||||
println "32% of 20 = {f:fr} (~{.2f:fr}) (~~{.0f:fr})"
|
||||
|
||||
q8 = 1.25q8
|
||||
q16 = 1.25Q16
|
||||
q24 = 1.25q.24
|
||||
def q8 = 1.25q8
|
||||
def q16 = 1.25Q16
|
||||
def q24 = 1.25q.24
|
||||
println "Q8 ${x:q8} Q16 ${x:q16} Q24 ${x:q24}"
|
||||
|
||||
qerr = 1.25q32
|
||||
def qerr = 1.25q32
|
||||
println qerr
|
||||
|
||||
@@ -26,7 +26,7 @@ endr
|
||||
|
||||
for v, 10, -1, -1
|
||||
print "{d:v} "
|
||||
v = 42
|
||||
def v = 42
|
||||
endr
|
||||
println "-> {d:v}"
|
||||
|
||||
@@ -36,7 +36,7 @@ purge q
|
||||
endr
|
||||
println "-> {d:q}"
|
||||
|
||||
s EQUS "x"
|
||||
DEF s EQUS "x"
|
||||
for {s}, 3, 30, 3
|
||||
print "{d:x} "
|
||||
endr
|
||||
@@ -46,7 +46,7 @@ for v, 10
|
||||
println "{d:v}"
|
||||
if v == 3
|
||||
purge v
|
||||
v equ 42 ; causes a fatal error
|
||||
def v equ 42 ; causes a fatal error
|
||||
endc
|
||||
endr
|
||||
println "-> {d:v}"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
num equ 42
|
||||
fix equ 123.0
|
||||
str equs "hello"
|
||||
def num equ 42
|
||||
def fix equ 123.0
|
||||
def str equs "hello"
|
||||
|
||||
println "{#0260x:num}"
|
||||
println "{#-260x:num}"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
; It seems that \1 was the easiest way to notice the memory corruption that
|
||||
; resulted from this overflow
|
||||
x = 0
|
||||
def x = 0
|
||||
{.99999999f:x}\1
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
recurse EQUS "\{recurse\}"
|
||||
DEF recurse EQUS "\{recurse\}"
|
||||
{recurse}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
SECTION "Test", ROM0
|
||||
|
||||
NAME equs "ITEM"
|
||||
FMT equs "d"
|
||||
ZERO_NUM equ 0
|
||||
ZERO_STR equs "0"
|
||||
def NAME equs "ITEM"
|
||||
def FMT equs "d"
|
||||
def ZERO_NUM equ 0
|
||||
def ZERO_STR equs "0"
|
||||
; Defines INDEX as 100
|
||||
INDEX = 1{ZERO_STR}{{FMT}:ZERO_NUM}
|
||||
def INDEX = 1{ZERO_STR}{{FMT}:ZERO_NUM}
|
||||
; Defines ITEM_100 as "\"hundredth\""
|
||||
{NAME}_{d:INDEX} equs "\"hundredth\""
|
||||
def {NAME}_{d:INDEX} equs "\"hundredth\""
|
||||
; Prints "ITEM_100 is hundredth"
|
||||
PRINTLN STRCAT("{NAME}_{d:INDEX}", " is ", {NAME}_{d:INDEX})
|
||||
; Purges ITEM_100
|
||||
|
||||
@@ -11,13 +11,13 @@
|
||||
; 10: invalid bytes 0xE6 0xF0
|
||||
; 11: invalid byte 0xA2
|
||||
; 12: U+0021 !
|
||||
invalid EQUS "aäb漢,a<><61>b<EFBFBD><62><EFBFBD>!"
|
||||
DEF invalid EQUS "aäb漢,a<><61>b<EFBFBD><62><EFBFBD>!"
|
||||
|
||||
n = STRLEN("{invalid}")
|
||||
copy EQUS STRSUB("{invalid}", 1)
|
||||
DEF n = STRLEN("{invalid}")
|
||||
DEF copy EQUS STRSUB("{invalid}", 1)
|
||||
|
||||
println "\"{invalid}\" == \"{copy}\" ({d:n})"
|
||||
|
||||
mid1 EQUS STRSUB("{invalid}", 5, 2)
|
||||
mid2 EQUS STRSUB("{invalid}", 9, 1)
|
||||
DEF mid1 EQUS STRSUB("{invalid}", 5, 2)
|
||||
DEF mid2 EQUS STRSUB("{invalid}", 9, 1)
|
||||
println "\"{mid2}{mid1}\""
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
|
||||
TEST_NUM = 0
|
||||
DEF TEST_NUM = 0
|
||||
|
||||
MACRO test_expr
|
||||
TEST_NUM = TEST_NUM + 1
|
||||
DEF TEST_NUM = TEST_NUM + 1
|
||||
|
||||
IS_CONST = ISCONST(\1)
|
||||
DEF IS_CONST = ISCONST(\1)
|
||||
PRINTLN "Test #{d:TEST_NUM}: ISCONST reports {IS_CONST}"
|
||||
IF (\1) || 1 ; Only test if the expression can be evaluated
|
||||
WARN "Test #{d:TEST_NUM}: Compile-time constant"
|
||||
|
||||
@@ -2,5 +2,5 @@ SECTION "Test", ROM0
|
||||
|
||||
Label:
|
||||
jr Label
|
||||
DIFF equ Label - @
|
||||
def DIFF equ Label - @
|
||||
PRINTLN "{DIFF}"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
MACRO m1
|
||||
x\1
|
||||
def x\1
|
||||
ENDM
|
||||
|
||||
S EQUS "y"
|
||||
S2 EQUS "yy"
|
||||
DEF S EQUS "y"
|
||||
DEF S2 EQUS "yy"
|
||||
|
||||
MACRO m2
|
||||
S\1
|
||||
S\1 ; can't use DEF, so this will EQUS expand
|
||||
ENDM
|
||||
|
||||
m1 = 5
|
||||
@@ -21,12 +21,12 @@ ENDM
|
||||
|
||||
|
||||
MACRO test_char
|
||||
VAR_DEF equs "sizeof_\1something = 0"
|
||||
DEF VAR_DEF equs "DEF sizeof_\1something = 0"
|
||||
VAR_DEF
|
||||
sizeof_\1something = 1
|
||||
DEF sizeof_\1something = 1
|
||||
PURGE VAR_DEF
|
||||
|
||||
VAR_PRINT equs "println \"sizeof_\1something equals {sizeof_\1something}\""
|
||||
DEF VAR_PRINT equs "println \"sizeof_\1something equals {sizeof_\1something}\""
|
||||
VAR_PRINT
|
||||
PURGE VAR_PRINT
|
||||
ENDM
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
warning: label-macro-arg.asm(13) -> label-macro-arg.asm::m2(9): [-Wobsolete]
|
||||
`y =` is deprecated; use `DEF y =`
|
||||
warning: label-macro-arg.asm(15) -> label-macro-arg.asm::m2(9): [-Wobsolete]
|
||||
`yy =` is deprecated; use `DEF yy =`
|
||||
error: label-macro-arg.asm(38) -> label-macro-arg.asm::test_char(25):
|
||||
syntax error, unexpected =
|
||||
syntax error, unexpected local identifier, expecting identifier
|
||||
while expanding symbol "VAR_DEF"
|
||||
error: label-macro-arg.asm(38) -> label-macro-arg.asm::test_char(26):
|
||||
syntax error, unexpected =
|
||||
syntax error, unexpected local identifier, expecting identifier
|
||||
error: label-macro-arg.asm(38) -> label-macro-arg.asm::test_char(29):
|
||||
Interpolated symbol "sizeof_.something" does not exist
|
||||
error: label-macro-arg.asm(39) -> label-macro-arg.asm::test_char(25):
|
||||
Label "sizeof_" created outside of a SECTION
|
||||
syntax error, unexpected label, expecting identifier
|
||||
while expanding symbol "VAR_DEF"
|
||||
error: label-macro-arg.asm(39) -> label-macro-arg.asm::test_char(25):
|
||||
Macro "something" not defined
|
||||
error: label-macro-arg.asm(39) -> label-macro-arg.asm::test_char(26):
|
||||
'sizeof_' already defined at label-macro-arg.asm(39) -> label-macro-arg.asm::test_char(25)
|
||||
error: label-macro-arg.asm(39) -> label-macro-arg.asm::test_char(26):
|
||||
Macro "something" not defined
|
||||
syntax error, unexpected label, expecting identifier
|
||||
error: label-macro-arg.asm(39) -> label-macro-arg.asm::test_char(29):
|
||||
Invalid format spec 'sizeof_'
|
||||
error: label-macro-arg.asm(39) -> label-macro-arg.asm::test_char(29):
|
||||
Interpolated symbol "something" does not exist
|
||||
error: Assembly aborted (9 errors)!
|
||||
error: Assembly aborted (7 errors)!
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
warning: label-macro-arg.asm(13) -> label-macro-arg.asm::m2(9): [-Wobsolete]
|
||||
`y =` is deprecated; use `DEF y =`
|
||||
warning: label-macro-arg.asm(15) -> label-macro-arg.asm::m2(9): [-Wobsolete]
|
||||
`yy =` is deprecated; use `DEF yy =`
|
||||
error: label-macro-arg.asm(38) -> label-macro-arg.asm::test_char(25):
|
||||
Local label 'sizeof_.something' in main scope
|
||||
while expanding symbol "VAR_DEF"
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
SECTION "sec", ROM0
|
||||
|
||||
X0 EQUS "0"
|
||||
DEF X0 EQUS "0"
|
||||
|
||||
MACRO m
|
||||
\1 EQUS STRCAT("{X\2}", "+1")
|
||||
DEF \1 EQUS STRCAT("{X\2}", "+1")
|
||||
ENDM
|
||||
|
||||
FOR n, $7E
|
||||
n1 = n + 1
|
||||
DEF n1 = n + 1
|
||||
m X{X:n1}, {X:n}
|
||||
ENDR
|
||||
|
||||
; string of 127 zeros separated by plus signs
|
||||
X EQUS "{X7E}"
|
||||
DEF X EQUS "{X7E}"
|
||||
|
||||
db x+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+\
|
||||
X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+\
|
||||
|
||||
@@ -17,8 +17,8 @@ MACRO person
|
||||
ENDM
|
||||
|
||||
MACRO object
|
||||
x = \1
|
||||
y = \2
|
||||
DEF x = \1
|
||||
DEF y = \2
|
||||
shift 2
|
||||
person y, x, \#
|
||||
ENDM
|
||||
@@ -30,7 +30,7 @@ MACRO echo
|
||||
println "\#"
|
||||
ENDM
|
||||
|
||||
R EQUS "S"
|
||||
DEF R EQUS "S"
|
||||
|
||||
echo P
|
||||
echo Q,R, {R}, T
|
||||
|
||||
@@ -16,12 +16,12 @@ MACRO iprint
|
||||
PRINTLN "{\1}"
|
||||
ENDM
|
||||
|
||||
s EQUS "hello"
|
||||
DEF s EQUS "hello"
|
||||
iprint s
|
||||
|
||||
MACRO symprint
|
||||
PRINTLN {\1}
|
||||
ENDM
|
||||
|
||||
hello EQUS "\"goodbye\""
|
||||
DEF hello EQUS "\"goodbye\""
|
||||
symprint s
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
MACRO addargs
|
||||
sum = 0
|
||||
def sum = 0
|
||||
rept _NARG
|
||||
sum = sum + \1
|
||||
def sum = sum + \1
|
||||
shift
|
||||
endr
|
||||
dw sum & $FFFF
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
X equ 0
|
||||
def X equ 0
|
||||
|
||||
MACRO test
|
||||
; Test RGBASM
|
||||
v equs "X +"
|
||||
def v equs "X +"
|
||||
static_assert \#
|
||||
purge v
|
||||
; Test RGBLINK
|
||||
v equs "Y +"
|
||||
def v equs "Y +"
|
||||
assert \#
|
||||
purge v
|
||||
ENDM
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
m = $8000_0000
|
||||
def m = $8000_0000
|
||||
assert m == 1 << 31
|
||||
assert m == -(1 << 31)
|
||||
assert m == (-2)**31
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
S EQUS "Hello"
|
||||
DEF S EQUS "Hello"
|
||||
|
||||
PRINT "\"\"\"\n"
|
||||
|
||||
@@ -24,11 +24,11 @@ ENDM
|
||||
printarg """multi-line
|
||||
string argument"""
|
||||
|
||||
EMPTY1 EQUS ""
|
||||
EMPTY2 EQUS "\ ; comment
|
||||
DEF EMPTY1 EQUS ""
|
||||
DEF EMPTY2 EQUS "\ ; comment
|
||||
"
|
||||
EMPTY3 EQUS """"""
|
||||
EMPTY4 EQUS """\ ; comment
|
||||
DEF EMPTY3 EQUS """"""
|
||||
DEF EMPTY4 EQUS """\ ; comment
|
||||
"""
|
||||
PRINTLN STRCAT("(", "{EMPTY1}", "{EMPTY2}", "{EMPTY3}", "{EMPTY4}", ")")
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ MACRO pop_
|
||||
ENDM
|
||||
|
||||
MACRO print_mapped
|
||||
x = \1
|
||||
def x = \1
|
||||
println "{x}"
|
||||
ENDM
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
STRING equs "OK"
|
||||
WRAPPER equs "TRIN"
|
||||
def STRING equs "OK"
|
||||
def WRAPPER equs "TRIN"
|
||||
PRINTLN "{S{WRAPPER}G}"
|
||||
|
||||
PRINTLN "{S{WRAPPER}G"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
n=1
|
||||
def n=1
|
||||
rept 10
|
||||
print "A"
|
||||
for x, 10
|
||||
@@ -12,6 +12,6 @@ rept 10
|
||||
break
|
||||
endc
|
||||
println "Z"
|
||||
n=n+1
|
||||
def n=n+1
|
||||
endr
|
||||
println "\nn={d:n} x={d:x}"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
MACRO outer_ok
|
||||
definition equs "MACRO inner_ok\nPRINTLN \"Hello!\"\nENDM"
|
||||
def definition equs "MACRO inner_ok\nPRINTLN \"Hello!\"\nENDM"
|
||||
definition
|
||||
PURGE definition
|
||||
ENDM
|
||||
@@ -9,7 +9,7 @@ ENDM
|
||||
|
||||
|
||||
MACRO outer_arg
|
||||
definition equs "MACRO inner_arg\nPRINTLN \"outer: \1\\ninner: \\1\"\nENDM"
|
||||
def definition equs "MACRO inner_arg\nPRINTLN \"outer: \1\\ninner: \\1\"\nENDM"
|
||||
definition
|
||||
PURGE definition
|
||||
ENDM
|
||||
|
||||
@@ -4,38 +4,38 @@ MACRO print_x
|
||||
println x
|
||||
ENDM
|
||||
|
||||
x = 2147483647
|
||||
x = x + 1
|
||||
def x = 2147483647
|
||||
def x = x + 1
|
||||
dl 2147483647+1
|
||||
print_x
|
||||
|
||||
x = -2147483648
|
||||
x = x - 1
|
||||
def x = -2147483648
|
||||
def x = x - 1
|
||||
dl -2147483648-1
|
||||
print_x
|
||||
|
||||
x = -2147483648
|
||||
x = x * -1
|
||||
def x = -2147483648
|
||||
def x = x * -1
|
||||
dl -2147483648 * -1
|
||||
print_x
|
||||
|
||||
x = -2147483648
|
||||
x = x / -1
|
||||
def x = -2147483648
|
||||
def x = x / -1
|
||||
dl -2147483648 / -1
|
||||
print_x
|
||||
|
||||
x = -2147483648
|
||||
x = x % -1
|
||||
def x = -2147483648
|
||||
def x = x % -1
|
||||
dl -2147483648 % -1
|
||||
print_x
|
||||
|
||||
x = -1
|
||||
x = x << 1
|
||||
def x = -1
|
||||
def x = x << 1
|
||||
dl -1 << 1
|
||||
print_x
|
||||
|
||||
x = 4294967295
|
||||
x = 4294967296
|
||||
def x = 4294967295
|
||||
def x = 4294967296
|
||||
|
||||
x = `33333333
|
||||
x = `333333333
|
||||
def x = `33333333
|
||||
def x = `333333333
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
SECTION "Fixed bank", ROMX,BANK[42]
|
||||
ldh a, [BANK(@) * 256] ; This should be complained about at assembly time
|
||||
|
||||
X = BANK(@)
|
||||
DEF X = BANK(@)
|
||||
|
||||
SECTION "Something else", ROMX
|
||||
Y = BANK("Fixed bank")
|
||||
DEF Y = BANK("Fixed bank")
|
||||
|
||||
PRINTLN "@: {X}\nStr: {Y}"
|
||||
|
||||
ERR = BANK(@)
|
||||
DEF ERR = BANK(@)
|
||||
|
||||
@@ -12,8 +12,8 @@ MACRO printlit
|
||||
endr
|
||||
ENDM
|
||||
|
||||
NUM EQU 42
|
||||
STR EQUS "str\"ing"
|
||||
DEF NUM EQU 42
|
||||
DEF STR EQUS "str\"ing"
|
||||
|
||||
printargs NUM
|
||||
printargs "{d:NUM}"
|
||||
|
||||
@@ -4,7 +4,7 @@ REDEF n EQU 1
|
||||
PRINTLN n
|
||||
|
||||
MACRO list
|
||||
LIST_NAME EQUS "\1"
|
||||
DEF LIST_NAME EQUS "\1"
|
||||
DEF LENGTH_{LIST_NAME} EQU 0
|
||||
ENDM
|
||||
|
||||
@@ -19,5 +19,5 @@ ENDM
|
||||
item 9
|
||||
println LENGTH_SQUARES, SQUARES_1, SQUARES_2, SQUARES_3
|
||||
|
||||
N EQUS "X"
|
||||
DEF N EQUS "X"
|
||||
REDEF N EQU 42
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
s EQUS "Hello, "
|
||||
DEF s EQUS "Hello, "
|
||||
REDEF s EQUS "{s}world!"
|
||||
; prints "Hello, world!"
|
||||
PRINTLN "{s}"
|
||||
|
||||
MACRO list
|
||||
LIST_NAME EQUS "\1"
|
||||
DEF LIST_NAME EQUS "\1"
|
||||
REDEF {LIST_NAME} EQUS "["
|
||||
REPT _NARG - 1
|
||||
REDEF {LIST_NAME} EQUS "{{LIST_NAME}}\2;"
|
||||
@@ -19,5 +19,5 @@ ENDM
|
||||
list FOO, 1, A, 2, B
|
||||
PRINTLN "{FOO}"
|
||||
|
||||
N EQU 42
|
||||
DEF N EQU 42
|
||||
REDEF N EQUS "X"
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
SECTION "Bad!", ROM0
|
||||
|
||||
db W
|
||||
W equ 0 ; OK
|
||||
def W equ 0 ; OK
|
||||
|
||||
db X
|
||||
X equs "0" ; Not OK
|
||||
def X equs "0" ; Not OK
|
||||
|
||||
db Y
|
||||
macro Y ; Not ok
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
SECTION "Test", ROM0[0]
|
||||
db CONSTANT
|
||||
|
||||
CONSTANT equ 42
|
||||
def CONSTANT equ 42
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
a1 rb 1
|
||||
a2 rw 1
|
||||
a3 rl 1
|
||||
def a1 rb 1
|
||||
def a2 rw 1
|
||||
def a3 rl 1
|
||||
|
||||
PRINTLN "a1 = ", a1
|
||||
PRINTLN "a2 = ", a2
|
||||
@@ -9,9 +9,9 @@ PRINTLN "a3 = ", a3
|
||||
PRINTLN "_RS = ", _RS
|
||||
|
||||
|
||||
b1 rb 1
|
||||
b2 rw 1
|
||||
b3 rl 1
|
||||
def b1 rb 1
|
||||
def b2 rw 1
|
||||
def b3 rl 1
|
||||
|
||||
PRINTLN "b1 = ", b1
|
||||
PRINTLN "b2 = ", b2
|
||||
@@ -20,9 +20,9 @@ PRINTLN "_RS = ", _RS
|
||||
|
||||
|
||||
rsset 42
|
||||
c1 rb 1
|
||||
c2 rw 1
|
||||
c3 rl 1
|
||||
def c1 rb 1
|
||||
def c2 rw 1
|
||||
def c3 rl 1
|
||||
|
||||
PRINTLN "c1 = ", c1
|
||||
PRINTLN "c2 = ", c2
|
||||
@@ -31,13 +31,11 @@ PRINTLN "_RS = ", _RS
|
||||
|
||||
|
||||
rsreset
|
||||
d1 rb 1
|
||||
d2 rw 1
|
||||
d3 rl 1
|
||||
def d1 rb 1
|
||||
def d2 rw 1
|
||||
def d3 rl 1
|
||||
|
||||
PRINTLN "d1 = ", d1
|
||||
PRINTLN "d2 = ", d2
|
||||
PRINTLN "d3 = ", d3
|
||||
PRINTLN "_RS = ", _RS
|
||||
|
||||
|
||||
|
||||
@@ -1,33 +1,33 @@
|
||||
SECTION "sect", ROMX[$4567], BANK[$23]
|
||||
ds 42
|
||||
|
||||
W = BANK("sect")
|
||||
X = SIZEOF("sect") ; unknown
|
||||
Y = STARTOF("sect")
|
||||
DEF W = BANK("sect")
|
||||
DEF X = SIZEOF("sect") ; unknown
|
||||
DEF Y = STARTOF("sect")
|
||||
|
||||
println "sect1: {W} {X} {Y}"
|
||||
|
||||
SECTION "sect2", ROMX
|
||||
|
||||
W = BANK("sect")
|
||||
X = SIZEOF("sect")
|
||||
Y = STARTOF("sect")
|
||||
DEF W = BANK("sect")
|
||||
DEF X = SIZEOF("sect")
|
||||
DEF Y = STARTOF("sect")
|
||||
|
||||
println "sect1: {W} {X} {Y}"
|
||||
|
||||
PUSHS
|
||||
SECTION FRAGMENT "sect3", ROMX[$4567], BANK[$12]
|
||||
|
||||
W = BANK("sect2") ; unknown
|
||||
X = SIZEOF("sect2") ; unknown
|
||||
Y = STARTOF("sect2") ; unknown
|
||||
DEF W = BANK("sect2") ; unknown
|
||||
DEF X = SIZEOF("sect2") ; unknown
|
||||
DEF Y = STARTOF("sect2") ; unknown
|
||||
|
||||
println "sect2: {W} {X} {Y}"
|
||||
|
||||
POPS
|
||||
|
||||
W = BANK("sect3")
|
||||
X = SIZEOF("sect3") ; unknown
|
||||
Y = STARTOF("sect3")
|
||||
DEF W = BANK("sect3")
|
||||
DEF X = SIZEOF("sect3") ; unknown
|
||||
DEF Y = STARTOF("sect3")
|
||||
|
||||
println "sect3: {W} {X} {Y}"
|
||||
|
||||
@@ -17,11 +17,11 @@ SECTION UNION "test", WRAM0,ALIGN[9]
|
||||
|
||||
|
||||
MACRO check_label
|
||||
EXPECTED equ \2
|
||||
def EXPECTED equ \2
|
||||
IF \1 == EXPECTED
|
||||
RESULT equs "OK!"
|
||||
def RESULT equs "OK!"
|
||||
ELSE
|
||||
RESULT equs "expected {EXPECTED}"
|
||||
def RESULT equs "expected {EXPECTED}"
|
||||
ENDC
|
||||
PURGE EXPECTED
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
MACRO reverse
|
||||
for i, _NARG
|
||||
i = _NARG - i - 1
|
||||
def i = _NARG - i - 1
|
||||
shift i
|
||||
println \1
|
||||
shift -i
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
VAL EQUS STRFMT("Hello %s! I am %d years old today!", "world", $f)
|
||||
DEF VAL EQUS STRFMT("Hello %s! I am %d years old today!", "world", $f)
|
||||
PRINTLN "{VAL}"
|
||||
|
||||
N = -42
|
||||
DEF N = -42
|
||||
PRINTLN STRFMT("signed %010d == unsigned %010u", N, N)
|
||||
|
||||
N = 112
|
||||
FMT EQUS "X"
|
||||
DEF N = 112
|
||||
DEF FMT EQUS "X"
|
||||
PRINTLN STRFMT("\tdb %#03{s:FMT} %% 26\t; %#03{FMT}", N, N % 26)
|
||||
|
||||
TEMPLATE EQUS "\"%s are %s\\n\""
|
||||
DEF TEMPLATE EQUS "\"%s are %s\\n\""
|
||||
PRINT STRFMT(TEMPLATE, "roses", "red")
|
||||
PRINT STRFMT(TEMPLATE, "violets", "blue")
|
||||
PRINT STRFMT(TEMPLATE, "void", 0, "extra")
|
||||
@@ -16,7 +16,7 @@ PRINT STRFMT(TEMPLATE, "void", 0, "extra")
|
||||
PRINTLN STRCAT(STRFMT(STRFMT("%%%s.%d%s", "", 9, "f"), 3.14159), \
|
||||
STRFMT(" ~ %s", STRFMT("%s%x", "thr", 238)))
|
||||
|
||||
N = 1.23456
|
||||
DEF N = 1.23456
|
||||
PRINTLN STRFMT("%.f -> %.3f -> %f", N, N, N)
|
||||
|
||||
PRINTLN STRFMT("%d eol %", 1)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
n equ 300
|
||||
m equ -42
|
||||
f equ -123.0456
|
||||
pi equ 3.14159
|
||||
s equs "hello"
|
||||
def n equ 300
|
||||
def m equ -42
|
||||
def f equ -123.0456
|
||||
def pi equ 3.14159
|
||||
def s equs "hello"
|
||||
|
||||
println "<{ -6d:n}> <{+06u:n}> <{5x:n}> <{#16b:n}>"
|
||||
println "<{u:m}> <{+3d:m}> <{#016o:m}>"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
foo equs strupr("xii")
|
||||
bar equs strlwr("LOL")
|
||||
def foo equs strupr("xii")
|
||||
def bar equs strlwr("LOL")
|
||||
|
||||
println "foo={foo} bar={bar}"
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
x\0 = 10
|
||||
def x\0 = 10
|
||||
println x
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
V = 0
|
||||
V = 1
|
||||
def V = 0
|
||||
def V = 1
|
||||
PRINTLN "V={V}"
|
||||
|
||||
W equ 1
|
||||
W = 0
|
||||
def W equ 1
|
||||
def W = 0
|
||||
|
||||
rsset 1
|
||||
X rb 0
|
||||
X = 0
|
||||
def X rb 0
|
||||
def X = 0
|
||||
|
||||
SECTION "Test", ROM0[1]
|
||||
Y:
|
||||
Y = 0
|
||||
def Y = 0
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
newline equs "\n"
|
||||
def newline equs "\n"
|
||||
|
||||
def x = 1 newline def y = 2
|
||||
println "x={d:x}, y={d:y}"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
warn_unique EQUS "WARN \"\\@!\""
|
||||
DEF warn_unique EQUS "WARN \"\\@!\""
|
||||
|
||||
macro m
|
||||
warn_unique
|
||||
|
||||
@@ -9,6 +9,6 @@ ENDM
|
||||
between 0, __UTC_MINUTE__, 59
|
||||
between 0, __UTC_SECOND__, 60 ; leap seconds!
|
||||
|
||||
UTC_TIME EQUS STRCAT("{04d:__UTC_YEAR__}-{02d:__UTC_MONTH__}-{02d:__UTC_DAY__}T", \
|
||||
DEF UTC_TIME EQUS STRCAT("{04d:__UTC_YEAR__}-{02d:__UTC_MONTH__}-{02d:__UTC_DAY__}T", \
|
||||
"{02d:__UTC_HOUR__}:{02d:__UTC_MINUTE__}:{02d:__UTC_SECOND__}Z")
|
||||
assert !STRCMP("{UTC_TIME}", __ISO_8601_UTC__)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
FOO_F EQU 5
|
||||
BAR_F EQU 7
|
||||
DEF FOO_F EQU 5
|
||||
DEF BAR_F EQU 7
|
||||
|
||||
|
||||
SECTION "RAM", WRAMX[$d500]
|
||||
|
||||
@@ -57,7 +57,7 @@ ENDM
|
||||
; Bit Operations Instructions
|
||||
|
||||
MACRO bitop_u3_instruction_list
|
||||
NBIT = 0
|
||||
DEF NBIT = 0
|
||||
REPT 8
|
||||
\1 NBIT,a
|
||||
\1 NBIT,b
|
||||
@@ -67,7 +67,7 @@ NBIT = 0
|
||||
\1 NBIT,h
|
||||
\1 NBIT,[hl]
|
||||
\1 NBIT,l
|
||||
NBIT = NBIT + 1
|
||||
DEF NBIT = NBIT + 1
|
||||
ENDR
|
||||
ENDM
|
||||
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
CONSTANT equ 0
|
||||
def CONSTANT equ 0
|
||||
EXPORT CONSTANT
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
IF !DEF(SECOND)
|
||||
ATTRS equs ",ALIGN[2]"
|
||||
def ATTRS equs ",ALIGN[2]"
|
||||
ELSE
|
||||
ATTRS equs "[$CAFE]"
|
||||
def ATTRS equs "[$CAFE]"
|
||||
ENDC
|
||||
|
||||
SECTION UNION "conflicting alignment", WRAM0 ATTRS
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
IF !DEF(SECOND)
|
||||
ATTRS equs ",ALIGN[3,7]"
|
||||
def ATTRS equs ",ALIGN[3,7]"
|
||||
ELSE
|
||||
ATTRS equs ",ALIGN[4,14]"
|
||||
def ATTRS equs ",ALIGN[4,14]"
|
||||
ENDC
|
||||
|
||||
SECTION UNION "conflicting alignment", WRAM0 ATTRS
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
IF !DEF(SECOND)
|
||||
OFS = 42
|
||||
def OFS = 42
|
||||
ELSE
|
||||
OFS = 69
|
||||
def OFS = 69
|
||||
ENDC
|
||||
|
||||
BASE = $C0DE
|
||||
def BASE = $C0DE
|
||||
|
||||
SECTION UNION "assertions in unions", WRAM0
|
||||
IF DEF(SECOND)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
IF !DEF(SECOND)
|
||||
TYPE equs "HRAM"
|
||||
def TYPE equs "HRAM"
|
||||
ELSE
|
||||
TYPE equs "WRAM0"
|
||||
def TYPE equs "WRAM0"
|
||||
ENDC
|
||||
|
||||
SECTION UNION "conflicting types", TYPE
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
IF !DEF(SECOND)
|
||||
SECOND equs "4"
|
||||
def SECOND equs "4"
|
||||
ENDC
|
||||
|
||||
SECTION UNION "conflicting banks", WRAMX, BANK[SECOND]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
IF !DEF(SECOND)
|
||||
DATA equs "ds 4"
|
||||
def DATA equs "ds 4"
|
||||
ELSE
|
||||
DATA equs "db $aa, $bb, $cc, $dd"
|
||||
def DATA equs "db $aa, $bb, $cc, $dd"
|
||||
ENDC
|
||||
|
||||
SECTION UNION "overlaid data", ROM0
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
IF !DEF(SECOND)
|
||||
DATA = 1
|
||||
def DATA = 1
|
||||
ELSE
|
||||
DATA = 2
|
||||
def DATA = 2
|
||||
ENDC
|
||||
|
||||
SECTION UNION "different data", ROM0
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
IF !DEF(SECOND)
|
||||
ATTRS equs ",ALIGN[3,7]"
|
||||
def ATTRS equs ",ALIGN[3,7]"
|
||||
ELSE
|
||||
ATTRS equs ",ALIGN[3,6]"
|
||||
def ATTRS equs ",ALIGN[3,6]"
|
||||
ENDC
|
||||
|
||||
SECTION UNION "conflicting alignment", WRAM0 ATTRS
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
IF !DEF(SECOND)
|
||||
SIZE = 69
|
||||
def SIZE = 69
|
||||
ELSE
|
||||
SIZE = 420
|
||||
def SIZE = 420
|
||||
ENDC
|
||||
|
||||
SECTION UNION "different section sizes", ROM0
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
IF !DEF(SECOND)
|
||||
INSTR equs "sbc a"
|
||||
def INSTR equs "sbc a"
|
||||
ELSE
|
||||
INSTR equs "db $9f"
|
||||
def INSTR equs "db $9f"
|
||||
ENDC
|
||||
|
||||
SECTION UNION "different syntaxes", ROM0
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
IF !DEF(SECOND)
|
||||
ADDR = $BEEF
|
||||
def ADDR = $BEEF
|
||||
ELSE
|
||||
ADDR = $BABE
|
||||
def ADDR = $BABE
|
||||
ENDC
|
||||
|
||||
SECTION UNION "conflicting address", SRAM[ADDR]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
IF !DEF(SECOND)
|
||||
DATA equs "ds 1\ndb $aa"
|
||||
def DATA equs "ds 1\ndb $aa"
|
||||
ELSE
|
||||
DATA equs "db $bb\nds 1"
|
||||
def DATA equs "db $bb\nds 1"
|
||||
ENDC
|
||||
|
||||
SECTION UNION "mutually-overlaid data", ROM0
|
||||
|
||||
@@ -177,7 +177,7 @@ for i in section-union/*.asm; do
|
||||
fi
|
||||
echo --- >> $outtemp
|
||||
# Ensure RGBASM also errors out
|
||||
cat $i - $i <<<'SECOND equs "1"' | $RGBASM - 2>> $outtemp
|
||||
cat $i - $i <<<'def SECOND equs "1"' | $RGBASM - 2>> $outtemp
|
||||
tryDiff ${i%.asm}.out $outtemp
|
||||
rc=$(($? || $rc))
|
||||
done
|
||||
|
||||
Reference in New Issue
Block a user